QoS 问题 - 托管 IP VPN

网络工程 思科 服务质量 阿瓦亚
2021-07-10 20:31:33

(首先,我很抱歉这堵文字墙。我不知道如何在不丢失重要信息的情况下缩短它。我本来想使用聊天室来做这个的,就像我们在 serverfault 上做的那样问题,但网络工程室没有人)。

我们是一家拥有多家子公司的公司,在那里我们有一个相当大的托管 IP-VPN,大约有 70 个不同的位置,从 2Mbps SHDSL 到 100Mbps 光纤不等。IP-VPN 承载多个 VPN(或确切地说是隧道)。

从管理和设计的角度来看,流量的优先级是这样的:

  1. VoIP(Avaya 和 Lync)
  2. 视频 (Lync)
  3. 研发计划
  4. 内部服务(文件服务器、Active Directory、Intranet 等)
  5. 非优先内部服务(互联网使用的代理服务器、Windows 更新服务、系统中心配置管理、防病毒更新代理等)
  6. 不匹配的流量(互联网)

VoIP 仅用于某些用户较少的办公室。目前使用 VoIP 的最大远程办公​​室拥有 4mbps SHDSL,有 5 名员工和 5 部运行 G.711 ALAW 64K 编解码器的 avaya IP 电话。这不应使 voip 数据流量超过 320kbps。我已经验证电话使用 DSCP 46 进行音频,因此它与 EF 正确匹配(请参阅下面的配置)。然而,信令与 DSCP 24 相匹配,我不确定我们的 QoS 配置文件是否接受..

所有远程位置都针对我们总部的多个 RDS 场使用 RDP(2x100Mbit 光纤)。用于 RDP 的带宽不是那么容易计算出来的,因为它基本上使用了它获得的一切。我们确实设置了某些限制以确保它不会太消耗资源,但这可能超出了本站点的范围。我们最近确实在 RDP 方面遇到了一些相当严重的问题(https://serverfault.com/questions/515809/mouse-cursor-jumps-around-when-using-rdp),这就是我在网络工程上发布此内容的原因。

Lync 对音频使用 DSCP 46,对视频使用 DSCP 34。内部服务和非优先内部服务只按子网匹配,其他的就匹配any。

这是最新 QoS 配置修订版的副本,我对其稍作修改以隐藏某些名称和 IP 地址:

!
class-map match-any INTERNAL-PRI
 match access-group name CUST-INT-PRI
 match access-group name CUST-DMZ
class-map match-any INTERNAL-NOPRI
 match access-group name CUST-INT-NOPRI
class-map match-any REMOTEDESKTOP
 match access-group name RDP
class-map match-any ALL
 match any
class-map match-any NETWORK
 match ip precedence 6
 match ip precedence 7
class-map match-any EF
 match ip dscp ef
 match ip dscp cs5
class-map match-any AF-HIGH
 match ip dscp af41
 match ip dscp cs4
class-map match-any AF-MEDHI
 match ip dscp af31
 match ip dscp cs3
class-map match-any AF-MEDIUM
 match ip dscp af21
 match ip dscp cs2
class-map match-any AF-LOW
 match ip dscp af11
 match ip dscp cs1
class-map match-any BE
 match ip dscp default
!
!
policy-map setTos
 class EF
 class REMOTEDESKTOP
  set ip dscp af31
 class INTERNAL-PRI
  set ip dscp af21
 class INTERNAL-NONPRI
  set ip dscp af11
 class class-default
  set ip dscp default
policy-map useTos
 class EF
  priority percent 10
 class AF-HIGH
  bandwidth remaining percent 35
 class AF-MEDHI
  bandwidth remaining percent 25
 class AF-LOW
  bandwidth remaining percent 20
 class BE
  bandwidth remaining percent 10
 class NETWORK
policy-map QOS
 class ALL
  shape average 4096000
  service-policy useTos
!
!         
ip access-list standard CUST-DMZ
 permit 123.123.123.0 0.0.0.255
!
ip access-list standard CUST-INT-PRI
 permit 10.50.0.0 0.0.0.255
 permit 10.51.0.0 0.0.0.255
!
ip access-list standard CUST-INT-NOPRI
 permit 10.50.10.0 0.0.0.255
 permit 10.51.10.0 0.0.0.255
!
ip access-list extended RDP
 permit tcp any eq 3389 any
 permit tcp any any eq 3389
!

如您所见,这是一个相当大的 QoS 配置。请注意,此配置不是我们自己创建的,而是由我们 IP-VPN 提供商的前任员工完成的。另请注意,形状值会根据其连接类型(2mbps、4mbps、8mbps 和 10mbps)而改变。

现在你可能想知道 - 这里有什么问题?开始..

  1. 就像我之前提到的,我们淹没在 RDP 用户关于无法识别延迟/用户输入的抱怨中。我们没有正确地优先考虑它吗?是否可以确保 RDP 获得最少的丢包、延迟和抖动,但仍然受到带宽限制?
  2. 我在此配置中没有看到任何提及队列的内容。我已经阅读了一些 Microsoft 文档,他们建议在 VoIP 上使用优先队列,在视频上使用 WRED。我该如何做到这一点?
  3. 正如配置所示,没有一个 AF 分类使用中或高下降。哪些服务可以安全丢弃?RDP、视频和 voip 不能很好地与滴..
  4. 带宽百分比是否有序?总使用率为 100%

欢迎任何其他建议,因为我很想解决这个问题。如果您认为在问答网站上回答太多了,我会忍住并从我们的思科金牌合作伙伴那里聘请一名顾问,这在财务上是可以的 - 如果可以的话,我只想学习这个。

2个回答

我首先想到的是,您似乎正在将所有内容调整为 4 Mbps。我认为具有不同电路速度的路由器/站点上的速率会发生变化,但是在处理对延迟敏感的应用程序(如 VoIP 和 RDP)时,您通常希望避免整形,因为它会在拥塞期间导致过度缓冲和抖动。

此外,该bandwidth remaining percent命令有点棘手:每个实例实际上分配了剩余可用带宽的 n%,而不是总数的 n%。这从图形由雅顿Packeer的文章应该帮助说明的想法:

“带宽”与“剩余带宽”

请务必注意,您定义的任何分类都需要与您的 WAN 提供商支持的内容相匹配。大多数提供商仅提供少量预配置的 QoS 配置文件,您必须从中选择最适合您需求的配置文件。您可以根据需要对 WAN 边缘的传入流量进行分类,但提供商的 QoS 控制控制着跨 WAN 传输期间的流量处理。

回答您的问题:

  • RDP 流量应达到剩余带宽的 25%。其中已保留的带宽为 35%(默认情况下 class-default 为25%,EF 为 10%)。所以,如果我是对的,您为 RDP 分配了约 665Kbps。无论如何,您应该检查是否正在丢弃发出以下命令的数据包:

show policy-map <your wan interface> output class REMOTEDESKTOP

并检查丢弃的数据包。

  • Cisco 为每个用户定义的类别分配一个队列,其中包括带宽警察命令。为了使长话故事变得简单,这些命令定义了在拥塞期间分配给每个队列的带宽量。

  • 理论上,每个基于 TCP 的流都应该可以接受丢弃。在实践中,其中一些不是。在拥塞发生之前,丢弃优先位告诉路由器在给定的类别内应该丢弃哪些数据包。由于 RDP 是您的REMOTEDESKTOP类中定义的唯一流量类型,因此您不必担心。

  • 带宽百分比不合理(正如 Jeremy 所说)。

也就是说,我会在您的配置中更改很多内容:

  • setTosuseTos策略映射的某些类之间没有匹配项例如,名为 AF-HIGH 的一个不处理数据包,因为setTos 中没有类将 DSCP 设置为 AF41。

  • setTos 中的BE类在某种程度上是弄巧成拙的,因为它使类默认类无用。请注意,class-default是唯一系统定义的类,默认情况下会获得 25% 的带宽 ( 100 - max-reserved-bandwidth ) 。

  • 带宽剩余百分比不是最佳选择(正如 Jeremy 解释的那样)。我会将其更改为带宽百分比

  • 我更愿意自己标记 EF 数据包,而不是依赖于手机的设置。