如何减少 ASA 5510 WAN 链路的延迟?

网络工程 思科 ipv4 思科 潜伏 服务质量
2021-07-21 16:57:23

我有一个 Cisco ASA 5510 通过 2Mbit/s 互联网连接我们的办公室。当 Internet 链接填满时,Internet 上连接良好的主机的延迟从 5-8 毫秒变为 500-800 毫秒。使用 ping,它可能看起来像这样(TCP 性能似乎与此匹配):

64 bytes from X: icmp_req=242 ttl=59 time=450 ms
64 bytes from X: icmp_req=243 ttl=59 time=458 ms
64 bytes from X: icmp_req=244 ttl=59 time=495 ms
64 bytes from X: icmp_req=245 ttl=59 time=186 ms
64 bytes from X: icmp_req=246 ttl=59 time=103 ms
64 bytes from X: icmp_req=247 ttl=59 time=5.18 ms
64 bytes from X: icmp_req=248 ttl=59 time=4.94 ms
64 bytes from X: icmp_req=249 ttl=59 time=4.65 ms
64 bytes from X: icmp_req=250 ttl=59 time=4.85 ms

我认为这是因为 2 Mbit 链路上的大型发送队列。由于这主要是办公室 IT(从 < 20 ppl),延迟比吞吐量更重要。

我如何衡量此延迟在出站和入站支路之间的划分方式?如果结果证明它是在入站流量中同等或主要生成的,我可以影响它(即入口节流)还是我必须联系我的 ISP?如何在 ASA 8.2 上最好地实现这一目标?

更新:短拓扑:

Ping node -[gbit]->
  ProCurve dist -[gbit]->
    ProCurve core -[gbit]->
      ASA -[100 mbit]->
        DSL -[copper]->
          upstream

ASA 接口上行:

asa# show interface Ethernet 0/3
Interface Ethernet0/3 "outside", is up, line protocol is up
Hardware is i82546GB rev03, BW 100 Mbps, DLY 100 usec
    Auto-Duplex(Full-duplex), Auto-Speed(100 Mbps)
    Input flow control is unsupported, output flow control is off
    Description: ### Upstream ###
    MAC address X, MTU 1500
    IP address X, subnet mask 255.255.255.252
    3480433364 packets input, 2625479988848 bytes, 0 no buffer
    Received 1010728 broadcasts, 0 runts, 11 giants
    11 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
    0 pause input, 0 resume input
    0 L2 decode drops
    3160567056 packets output, 1537515646562 bytes, 0 underruns
    0 pause output, 0 resume output
    0 output errors, 0 collisions, 15 interface resets
    0 late collisions, 0 deferred
    6 input reset drops, 0 output reset drops, 0 tx hangs
    input queue (blocks free curr/low): hardware (255/240)
    output queue (blocks free curr/low): hardware (255/109)
Traffic Statistics for "outside":
    3487933998 packets input, 2561681053821 bytes
    3160334264 packets output, 1477359288037 bytes
    57746233 packets dropped
  1 minute input rate 193 pkts/sec,  209755 bytes/sec
  1 minute output rate 122 pkts/sec,  12734 bytes/sec
  1 minute drop rate, 1 pkts/sec
  5 minute input rate 177 pkts/sec,  174578 bytes/sec
  5 minute output rate 131 pkts/sec,  17600 bytes/sec
  5 minute drop rate, 2 pkts/sec
2个回答

我如何衡量此延迟在出站和入站支路之间的划分方式?

您可以在 linux / cygwin 上使用 hping 找到拥塞的 ping 方向

如果结果证明它是在入站流量中同等或主要生成的,我可以影响它(即入口节流)还是我必须联系我的 ISP?

您可以采用任何一种方式,但 ISP 方法更好,因为它不会在控制流量之前通过 DSL 传输。但是,在 ASA 上控制两个方向从根本上没有错(只要您正确实施)。我同意您的观点,即linux 不是一个好的企业 qos 解决方案,因为任何必须维护iptables策略的人都存在重要的可支持性问题

如何在 ASA 8.2 上最好地实现这一目标?

首先确保您知道在 Tx/Rx 方向上有多少带宽。请注意,DSL 使用 ATM,由于ATM 信元税,这可能有点棘手

然后,在 ASA 上使用分层优先级队列(又名分层 QoS,或 HQoS);这是一个示例政策:

class-map CLASS_VOICE
 match dscp ef
 exit
class-map CLASS_VOICE_SIGNAL
 match dscp af31
 exit
!
policy-map POLICY_PRIORITIZE_VOICE
 ! Give VOICE and VOICE SIGNAL priority
 class CLASS_VOICE
  priority
 class CLASS_VOICE_SIGNAL
  priority
 class class-default
policy-map POLICY_TRAFFIC_SHAPE_INSIDE
 ! Shape all traffic to slightly less than the DSL modem's ingress bandwidth
 ! I assume you have 2Mbps here, but please measure what you have
 class class-default
  shape average 2000000 16000
  service-policy POLICY_PRIORITIZE_VOICE
!
policy-map POLICY_TRAFFIC_SHAPE_OUTSIDE
 ! Shape all traffic to slightly less than the DSL modem's egress bandwidth
 ! I assume you have 512Kbps here, but please measure what you have
 class class-default
  shape average 512000
  service-policy POLICY_PRIORITIZE_VOICE
!
service-policy POLICY_TRAFFIC_SHAPE_INSIDE interface INSIDE
service-policy POLICY_TRAFFIC_SHAPE_OUTSIDE interface OUTSIDE

此示例假设您在 ASA 上同时实施 Tx 和 Rx HQoS(并且您仅在 ASA 上使用两个接口)。它还假设您已经正确标记了您的流量。但是,当您尝试在电源连接上标记流量时,您可能会认为将真正的 Cisco 路由器串联起来为您进行标记会更容易。如果你把路由器内联,通常最好在路由器上做qos。

从您的 ASA 统计数据来看,似乎大部分流量都在入站路径上。如果您打算进行某种监管或整形,则必须在远端(即 WAN 另一端的输出)进行。ASA 对输入队列没有调度控制,但即使有,队列也永远不会填满,因为瓶颈是 WAN 链接,而不是您的输入队列。