深入理解计算机网络-8网络层5

目录

一、网络拥塞控制

(一)拥塞控制Congestion Control与流量控制Flow Control

1.产生拥塞的主要原因

2.解决拥塞的方法

(二)死锁及其预防

1.存储转发死锁及其防止

2.重装死锁及其防止

二、三层交换机与三层交换

(一)三层交换机硬件结构

1.纯软件路由模块的三层交换机

2.纯硬件路由模块的三层交换机

3.软硬件结合路由模块的三层交换机

(二)三层交换原理


一、网络拥塞控制

网络拥塞现象是指到达通信子网中某一部分的数据报数量过多,来不及处理(子网中所承受的负荷,超出了网络的吞吐能力(包数/秒)),引起这部分乃至整个网络性能下降的现象。当拥塞严重时,甚至会导致网络通信业务陷入停顿,即出现死锁现象。

在一个出现拥塞现象的网络中,到达某个结点的数据报将会遇到无缓冲区可用的情况,出现丢弃现象,从而使这些数据报不得不由源结点重传,从而使通信子网的有效吞吐量下降。由此引起而行循环,使通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近为零。

(一)拥塞控制Congestion Control与流量控制Flow Control

拥塞控制需要确保通信子网能够承载用户提交的通信量,是一个全局性问题,设计主机、路由器、以及与降低网络传输性能有关的所有因素等。

流量控制与点到点通信量有关,主要解决快速发送方与慢速接收方的问题,是局部问题,控制方式是抑制发送端发送数据的速率,以便使接收端来得及接收或处理,一般都是基于反馈的控制。

1.产生拥塞的主要原因

有3方面:结点缓冲区容量太小、输出链路的通信带宽不够、处理机的速度不够快。

2.解决拥塞的方法

有3种:

1.缓冲区预分配法Buffer Preallocation

常用于虚电路分组交换网。在虚电路建立时,要求呼叫请求分组所途经的每个结点为此条虚电路预先分配一个或多个数据缓冲区(即每个结点都要有缓冲区用于分配)。若某个结点当前没有可用的缓冲区(应答信号为“忙”),则在建立虚电路时让呼叫请求分组选择其他路径来建立虚电路。这样,通过途径的各个结点就可以为每条虚电路开设永久性的缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的数据报。当结点收到一个数据报并将它转发出去之后,该结点向发送结点返回一个确认信息(告知发送结点已发送可以再发一个过来)。该确认信息一方面接收结点已正确收到数据报,另一方面告诉发送结点,该结点已空出缓冲区以备接收下一个数据报。

若结点之间的协议允许多个未处理的数据报存在,则为了完全消除拥塞,每个结点要为每条虚电路保留窗口大小数量的缓冲区,而不管实际上有没有通信量。这样,就会以后非常多的资源被某个连接占用,网络资源的有效利用率较低。

该拥塞控制方法主要用于高带宽、低延迟的场合,如数字化语音。

2.分组丢弃法Packet Dropping

不必预先为数据报预留缓冲区,而是在路由器的缓冲区被占满时将后面来的数据报丢弃,仅在缓冲区腾出空间后再重新接收数据分组。

若网络采用数据报服务(不需要确认应答),采用该方法来防止拥塞不会引发大的影响:因为数据报服务的分组报文种每个分组都有完整的路由地址信息,可以独立地选择最佳路由,当发现原来的路径性能不佳时,会自动重新以其他更好的路径进行分组交换;再者,在数据报服务中不需要接收结点在接收到分组后进行确认,所以及时丢弃了,也不会引起发送结点长时间等待确认应答。

若网络采用虚电路服务(需要有确认应答),则必须在某个前面的结点种保存被丢弃数据报的备份,以便拥塞解决后重新发送。

3.定额控制法。

在通信子网中设置适当数量,即称为“许可证”的特殊信息来实现的。其中一部分许可证在通信子网开始工作前预先以某种策略分配给各个源结点,另一部分则在子网开始工作后在王忠四处环游。当源结点要发送来自源端系统的数据报时,它必须首先拥有许可证,并且每发送一个数据报注销一张许可证。目的结点方则每收到一个数据报并将其提交给目的端系统后,便生成一张许可证。这样可确保子网中的数据报数量不会超过许可证的数量,从而防止拥塞的发生。但网络的传输效率可能不能发挥到最佳。

这种控制方法有点像令牌环网上的介质争用解决方案。在令牌环网中,源结点要发送数据必须要获取网络中唯一的令牌,不同的是这里的证书不是唯一的,可以有许多(数据是一定的)。

(二)死锁及其预防

死锁就是一些结点由于没有空闲缓冲区而无法接收和转发数据报(转发时也需要一定的缓冲空间),这样的结果是结点间互相等待,都既不能接收数据报也不能转发数据报,并一直保持这一僵局,严重时甚至导致整个网络瘫痪。

常见死锁情况及预防方法

1.存储转发死锁及其防止

最常见的死锁是发生在两个结点之间的直接存储转发死锁。如A\B\C三个几点的缓存区都满了,A发往B,B满了要往外发一些分组释放空间后才能发送;B发往C,C也满了;C发往A,A也满了。这样A等B清缓冲区,B等C,C等A,但事实上当前情况下这3点结点的缓冲区都已无法清空了。当一个结点处于死锁状态时,所有与之相连的链路将完全被拥塞。

解决方案:

1.为每个结点设置m+1个缓冲区并顺序编号,m为通信子网的直径,即从任一源结点到任一目的结点间的最大链路段数。每个源结点仅当其0号缓冲区可用时才能接收源端系统来的数据报,而此数据报仅能转发给1号缓冲区空闲的相邻结点,再由该结点将数据报转发给它的2号缓冲区空闲的相邻结点。依此类推。最后,该数据报或顺利到达目的结点,或到了某个几点编号为m的缓冲区就无法转发了,此时一定发生了循环,应该秀气。由于每个数据报都是按编号递增规则分配缓冲区,所以结点之间不会相互等待空闲缓冲区而发生死锁。该方法不足之处在于当某个结点虽然由空闲缓冲,但正巧没有所需要的特定编号的缓冲区,数据报仍要等待,从而造成缓冲区和链路的浪费。

2.每一个数据报都携带一个全局性的唯一的“时间戳”,每个结点要为每条链路保留一个特殊的缓冲区,而其他缓冲区均可用于存放中转数据报,按每条输出链路队列上的数据报时间戳顺序排队。例如,A发往B,B没有空闲缓冲区,但正巧由要送到A的数据报,此时A\B可通过特殊的接收缓冲区交换数据报;若B既没有空闲缓冲区,也没有要发到A的数据报,B结点只好强行将一个出路方向大致与A结点方向相同的数据报与A结点数据报互相交换,但此时A结点中的数据报必须比B中的具有更早的时间戳,这样才能保证子网中某个最早的数据报不受阻挡地转发到目的地。这样,每个数据报最终总会一步一步的发送到目的结点,以此来避免死锁现象的发生。

2.重装死锁及其防止

就是在数据分组重新组装、恢复成原来数据报的过程中发生的死锁。

若目的结点用于重装报文的缓冲区空间有限,而且它无法知道正在接收的报文究竟被拆成多少个数据分组,则可能发生死锁,因为它没办法完成整个分组的重装,在缓冲的分组就不能被发送出去,而此时相邻结点仍在不断地向它传送数据分组,因没有可用的缓冲空间,本结点就无法继续接收后续的分组了。虽然相邻结点可以重发,但目的结点的缓冲区始终得不到清空,这样源结点在经过多次尝试后,相邻结点就会绕道从其他途径再向该目的端系统传送分组,但这样又会造成周边区域也发生拥塞。

解决方法:

1.允许目的结点将不完整的报文提交给目的端系统,只要按顺序发送即可,完整组装的任务交给目的端系统。该方法可能使端系统接收到不完整的数据报而使整个数据无效。

2.检测出不能完整重装的报文,然后要求源端系统重新发送。该方法复杂化了,同时家中了源端的负担。

3.每个结点配备一个专门的缓冲空间,用以暂存不完整的报文。该方法增加每个结点的开销,影响性能。

二、三层交换机与三层交换

大多数三层交换机采用ASIC硬件芯片来完成转发,ASIC芯片内部集成了IP三层转发的功能,包括检查IP报文头、修改存货时间TTL参数、重新计算IP头校验和、IP数据报的数据链路封装等。

(一)三层交换机硬件结构

1.纯软件路由模块的三层交换机

早期、目前比较低档的。通过CPU调用相关的软件功能,查询存储在内存中的CAM(Content Addressable Memory,内容可寻址记忆)表来获取对应目的IP地址的MAC地址。

2.纯硬件路由模块的三层交换机

技术复杂、成本高,但速度快、性能好、带负载能力强。其原理是采用专门的ASIC芯片进行路由表的查找和刷新。

与纯软件不同的是,在进行路由选择转发时采用的时ASICApplication Specific Integrated Circuit,应用专用集成电路)芯片,路由表信息存储在ASIC芯片中,执行效率高。

3.软硬件结合路由模块的三层交换机

目前更多采用。在ASIC芯片中同时存储二层CAM表和三层转发表,在内存中存储软件路由表和ARP映射表,由CPU调用,即利用硬件模块的高速交换性能,又利用软件模块的灵活性。

CPU主要用于转发的控制,维护一些软件表项(包括软件路由表、软件ARP表等),并根据软件表项的转发信息来配置ASIC的硬件三层转发表。

真正决定高速交换转发的是ASIC中的二、三层硬件表项。

(二)三层交换原理

总体原理:一次路由(第一个数据报由CPU的路由表转发并建立三层转发表项),多次交换(后续数据报由ASIC的三层转发表转发)。

猜你喜欢

转载自blog.csdn.net/hongdi/article/details/125979203
今日推荐