目录
写在前面的话
恶补网络知识~下文参考华为文档,具体细节见此链接。
网络拥塞及其对策
拥塞的产生
拥塞是在共享网络上多个用户竞争相同的资源(带宽、缓冲区等)时发生的问题。
例如,由于广域网的带宽通常要比局域网的带宽小,当一个局域网的用户向另一个局域网的用户发送数据时,由于广域网的带宽小于局域网的带宽,数据将不可能按局域网发送的速度在广域网上传输。此时,处在局域网和广域网之间的路由器将发生拥塞,如图1所示。

拥塞经常发生于图2所示的情况:
速率不匹配:分组从高速链路进入设备,再由低速链路转发出去。
汇聚问题:分组从多个接口同时进入设备,由一个没有足够带宽的接口转发出去。

不仅仅是链路带宽的瓶颈会导致拥塞,任何用于正常转发处理的资源的不足(如可分配的处理器时间、缓冲区、内存资源的不足)都会造成拥塞。此外,在某个时间内对所到达的流量控制不力,使之超出了可分配的网络资源,也是引发网络拥塞的一个因素。
拥塞的位置
如图3,根据设备所处网络位置及报文的收发方向,可以一台设备的报文转发途径划分为:
1.接入侧上行
2.接入侧下行
3.网络侧上行
4.网络侧下行

一般情况下,上行方向不会发生拥塞,因为上行方向还未涉及到速率不匹配、汇聚问题,也不涉及转发处理的资源。拥塞一般发生在下行方向。
拥塞的影响
1.拥塞增加了报文传输的延迟和延迟抖动。
2.过高的延迟会引起报文重传。
3.拥塞使网络的有效吞吐率降低,造成网络资源的损害。
4.拥塞加剧会耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
拥塞的管理和对策
1.拥塞管理:指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列技术,将从一个接口发出的所有报文放入多个队列,按照各个队列的优先级进行处理。不同的队列调度算法用来解决不同的问题,并产生不同的效果。
2.拥塞避免:通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。拥塞避免用于防止因为线路拥塞而使设备的队列溢出。
队列及拥塞管理
策略:决定报文转发的处理次序和丢弃原则(一般采用队列技术)。
队列技术:缓存中对报文进行排序的逻辑。
当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系则由队列调度算法决定。
高速缓存,用于报文的缓冲和转发,缓存由所有端口共享,各端口竞争使用。为了避免有的端口长时间抢不到缓存而出现断流,给每个端口分配了一块最小可用缓存,并且分配到端口的各个队列上,保证每个队列均有缓存可用。
当收到报文时,将报文放入缓存,网络不拥塞时,报文能被及时转发,不会在缓存中产生堆积。这种情况下报文在缓存中的时间为μs级,延迟时间可以忽略不计。
当网络拥塞时,报文在缓存中产生堆积,被延迟处理,延迟时间会大幅增加。延迟时间的大小主要取决于队列的缓存长度以及该队列获得的输出带宽,可以使用如下公式计算时延:
队列时延 = 队列缓存长度 / 队列输出带宽
单个队列的报文采用FIFO(First In First Out)原则入队和出队。
队列调度算法
1、先进先出FIFO(First In First Out)
2、严格优先级SP(Strict Priority)
3、轮询RR(Round Robin)
4、加权

本文介绍了网络拥塞产生的原因、位置及影响,并探讨了拥塞管理与避免的方法。包括不同队列调度算法如FIFO、SP、WRR、WFQ等的作用与优缺点,以及尾丢弃和WRED丢弃策略的应用。
最低0.47元/天 解锁文章
1万+





