网络延迟的定义
数据(报文)在传输介质中传输所用的时间,即报文从发送者一方开始进入网络到它离开网络进入接收者一方所花费的时间。造成网络延迟的因素主要有六点:
1. Serialization Delay (也叫Transmission Delay)
2. Propagation Delay
3. Packet Switching
4. Queueing
5. Packet Drop
6. Processing
如何降低(优化)网络延迟?
1.Serialization Delay(SD)指的是数据进入传输介质(网线)所花费的时间,数据大小和传输介质能提供的带宽(bandwidth)决定了SD的长短。下图为数据的大小和传输介质能够提供的带宽(bandwidth)所对应的SD值(注:ms=毫秒,µs=微秒,ns=纳秒)。结论:数据包越小,传输介质带宽越高,Serialization Delay越小。
2.Propagation Delay (PD)和传输介质的类型/传输距离(尤其是物理距离,比如中国到美国西海岸的延迟怎么也得有个100ms以上,到东海岸怎么也得有个150ms以上)有关,从速度上来讲,常用的传输介质中,Passive Twinax CX-1 (SFP+) cables快过光纤,而光纤又快过RJ-45网线(注:微波(Microwave)快过光纤)。
3.Packet Switching受交换模式(switching mode)的影响,毋庸置疑,Cut-through mode(又分为Fast-forward和Fragment-free两种mode) 比Store-and-Forward mode快,但是在处理64 Byte和512byte这些小型数据包时,Store-and-Forward比Cut-through快。
4. Queueing,两个因素:
a. 网络设备的缓存(buffer)是否足够。
b. 当网络使用量饱和,链路出现拥塞的时候,网络设备采用了什么样的队列方式,对路由器来说,FIFO?WFQ?CBWFQ?LLQ?对交换机来说,WRR有几个queue? 不同类别的CoS是否划入了不同的WRR queue? 除了priority queue外,其他每个queue的权重(weight)设置是否合理?WRED阀值(threshold)的设置是否合理?以上是关于QOS中队列(Queueing)和拥塞避免(Congestion Avoidance)的大话题,这里不做详细讨论,但是需要知道的是:当网络出现拥塞时,良好的队列机制能够起到降低(优化)网络延迟的作用。
5. Packet Drop, 两个因素: a. 硬件故障 ,NIC(网卡)和传输介质(线路质量、ISP设备)的故障导致丢包。b. 人为失误,端口的速率和双工模式配置错误导致丢包,进而加重网络延迟。
6.Processing, 优化方式繁多,如下:1) 关闭网络中不需要的功能(feature),比如CDP, IP Redirect, Finger, Proxy ARP, IP BOOTP Server等等,以降低不必要的链路开销。**注:思科的Nexus 3548交换机(Ultra low latency switch)不受此影响,也就是说无论在N3548里面打开多少feature, 也不会对它造成网络延迟的影响,具体原理不在此讨论,有兴趣的可以去看下N3548的设计原理。2) 网络设计:大型网络内,是否严格采用传统的层级结构(介入,汇聚,核心三层)?传统的Hub and spoke 类型网络中,边缘站点是否被设置为末节区域(OSPF/EIGRP: stub area)以减少路由表的条目以达到优化网络设备处理数据的能力?3) 适配器(Adapter): 大多数情况下,独立网卡优于集成网卡,原因很复杂,不作讨论。4) 网络安全:从网络延迟的角度看,使用路由器自带的安全功能(ACL, PVLAN,以及其他各种security feature)比使用防火墙等专业安全设备造成的网络延迟更少。