>>所属分类 >> 通信技术    通信技术基础知识   

网络层

网络层(network layer )是OSI参考模型中的第三层,介于运输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若直干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。
目录

功能目的 编辑本段回目录

网络层网络层


网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使运输层不需要了解网络中的数据传输和交换技术。为了说明网络层的功能,如图4.1所示的交换网络拓扑结构,它是由若干个网络节点按照任意的拓扑结构相互连接而成的。网络层关系到通信子网的运行控制,体现了网络应用环境中资源子网访问通信子网的方式。网络层从物理上来讲一般分布地域宽广,从逻辑上来讲功能复杂,因此是OSI模型中面向数据通信的下三层(也即通信子网)中最为复杂也最关键的一层。

路由选择及其算法 编辑本段回目录

网络层网络层

通信子网络源节点和目的节点提供了多条传输路径的可能性。网络节点在收到一个分组后,要确定向下一节点传送的路径,这就是路由选择。在数据报方式中网络节点要为每个分组路由做出选择;而在虚电路方式中,只需在连接建立时确定路由。确定路由选择的策略称路由算法。设计路由算法时要考虑诸多技术要素。首先是路由算法所基于的性能指标,一种是选择最短路由,一种是选择最优路由;其次要考虑通信子网是采用虚电路还是数据报方式;其三,是采用分布式路由算法,即每节点均为到达的分组选择下一步的路由,还是采用集中式路由算法,即由中央点或始发节点来决定整个路由;其四,要考虑关于网络拓扑,流量和延迟等网络信息的来源;最后,确定是采用动态路由选择策略,还是选择静态路由选择策略。

1 、静态路由选择策略

 

网络层网络层

 静态路由选择策略不用测量也无须利用网络信息,这种策略按某种固定规则进行路由选择。其中还可分为泛射路由选择、固定路由选择和随机路由选择三种算法。 
(1)泛射路由选择法: 这是一种最简单的路由算法。一个网络节点从某条线路收到一个分组后,再向除该条线路外的所有线路重复发送收到的分组。结果,最先到达目的节点的一个或若干个分组肯定经过了最短的路线,而且所有可能的路径都被同时尝试过。这种方法可用于诸如军事网络等强壮性要求很高的场合,即使有的网络节点遭到破坏,只要源、目间有一条信道存在则泛射路由选择仍能保证数据的可靠传送。另外,这种方法也可用于将一条分组从数据源传送到所有其它节点的广播式数据交换中,它还可用来进行网络的最短传输延迟的测试。

(2)固定路由选择:这是一种使用较多的简单算法。每个网络节点存储一张表格,表格中每一项记录对应着某个目的节点或链路。当一个分组到达某节点时,该节点只要根据分组的地址信息便人固定的路由表中查出对应的目的节点及所应选择的下一节点。固定路由选择法的优点是简便易行,在负载稳定,拓扑结构变化不大的网络中运行效果很好。它的缺点是灵活性差,无法应付网络中发生的阻塞和故障。   

(3)随机路由选择:在这种方法中,收到分组的节点,在所有与之相邻的节点中为分组随机选择一个出路节点。方法虽然简单,也较可靠,但实际路由不是最佳路由,增加了不必要的负担,而且分组传输延迟也不可预测,故此法应用不广。

2 、动态路由选择策略

  节点路由选择要依靠网络当前的状态信息来决定的策略称动态路由选择策略,这种策略能较好地适应网络流量、拓扑结构的变化,有利于改善网络的性能。但由于算法复杂,会增加网络的负担,有时会因反应太快引起振荡或反应太慢不起作用。独立路由选择、集中路由选择和分布路由选择是三种动态路由选择策略的具体算法。

网络层网络层

(1)独立路由选择:在这类路由算法中,节点仅根据自己搜到的有关信息作出路由选择的决定,与其它节点不交换路由选择信息,虽然不能正确确定距离本节点较远的路由选择,但还是能较好地适应网络流量和拓扑结构的变化。一种简单的独立路由选择算法是Baran 在1964年提出的热土豆(Hot Potato)算法。当一个分组到来时,节点必须尽快脱手,将其放入输出列最短的方向上排队,而不管该方向通向何方。(2)集中路由选择:集中路由选择也象固定路由选择一样,在每个节点上存储一张路由表。不同的是,固定路由选择算法中的节点路由表由手工制作,而在集中路由选择算法中的节点路由表由路由控制中心RCC(Routing Control Center)定时根据网络状态计算、生成并分送各相应节点。由于RCC利用了整个网络的信息,所以得到的路由选择是完美的,同时也减轻了各节点计算路由选择的负担。 (3)分布路由选择:采用分布路由选择算法的网络,所有节点定其地与其每个相邻节点交换路由选择信息。每个节点均存储一张以网络中其它每个节点为索引的路由选择表,网络中每个节点占用表中一项,每一项又分为两个部分,即所希望使用的到目的节点的输出线路和估计到目的节点所需要的延迟或距离。度量标准可以是毫秒或链路段数、等待的分组数、剩余的线路和容量等。对于延迟,节点可以直接发送一个特殊的称作“回声”(echo)的分组,接收该分组的节点将其加上时间标记后尽快送回,这样便可测出延迟。有了以上信息,节点可由此确定路由选择。

阻塞控制 编辑本段回目录

网络层网络层

阻塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中通常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(局部死锁)。 通信子网吞吐量和通信子网负荷之间一般有如图4.3 所示的关系。当通信子网负荷(即通信子网正在传输的分组数)比较小时,网络的吞吐量(单位为分组数/秒)随网络负荷(可用每个节点中分组的平均数表示)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了阻塞现象。在一个出现阻塞现象的网络中,到达一个节点的分组将会遇到无缓冲区可用的情况,从而使帝些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当阻塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降,由此导致恶性循环,使通信子网的局部甚至全部处于死锁状态,网络有效吞吐量接近为零。在理想的情况下,整个网络的利用率为100%,但为了使网络在高负荷上能稳定运行,应控制网络节点的队列长度,以避免由于队列无限增长而产生通信量的崩溃。有控制的网络可以以接近于理想吞吐的状态稳定运行。

阻塞控制方法

(1)缓冲区预分配法:这种方法用于采用虚电路的分组交换网。在建立虚电路时,让呼叫请求分组途经的节点为虚电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个“忙”信号给呼叫者。这样,通过途经的各节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分组。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确认信息,该确认一方面意味着接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一分组。上面是“停-等”协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除阻塞的可能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源(线路容量或存储空间)被某个连接永久地占有。由于为每条连接分配了专用资源因此不可能有效地利用网络资源。此时的分组交换跟电路交换很相似。

(2)分组丢弃法:这种方法不用预先保留缓冲区,而在缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止阻塞发生不会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的拷贝,以便阻塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在尝试一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。但是不加分辩地随意丢弃分组也不妥,因为一个包含确认信息的分组可以释放节点的缓冲区,若因节点无空余缓冲区来接收含确认信息的分组,这便使节点缓冲区失去了一次释放的机会。解决这个问题的方法可以为每条输入链路永久地保留一块缓冲区,心用于接纳并检测所有进入的分组,对于捎带确认信息的分组,在利用了所捎带的确认释放了一个缓冲区后,再将该分组丢弃或将该捎带好消息的分组保存在刚空出的缓冲区中。   

(3)定额控制法:这种方法直接对通信子网中分组的数量进行严格、精确的限制,以防止阻塞的发生。从图4.3网络吞吐量与负荷的关系曲线中可看出,为避免阻塞,可将通信子网中正在传输的分组数保持在某一负荷值Lc以下。因此,可以设计在通信子网中存在Lc个称“许可证”的特殊信息,这些许可证中的一部分在通信子网开始工作之前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送一个刚从源端系统送来的分组时,它必须首先拥有这种许可证,并且每发送一个分组要注销一张许可证。而在目的节点方,则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。这样,便保证了子网中分组数量不会超过许可证的数量。   

死锁及其防止

  阻塞的极端后果是死锁。死锁是网络中容易发生的故障之一,即使在网络负荷不很重时也会发生。死锁发生时,一组节点由于没有空闲缓冲区而无法接收和转发分组,节点之间相互等待,即不能接收分组也不能转发分组,并永久保持这一状态,严重的甚至导致整个网络的瘫痪。此时,只能靠人工干预,重新启动网络解除死锁。但重新启动后并未消除引起死锁的隐患,所以可能再次发生死锁。死锁是由于控制技术方面的某些缺陷所引起的,起因通常难以难捉摸难以发现,即使发现,常常不能立即修复。因此,在各层协议中都必须考虑如何避免死锁的问题。    

存储转发死锁及其防止: 最常见的死锁是发生在两个节点之间的直接存储转发死锁。此时,A节点的所有缓冲区全部用于输出到B节点的队列上,而B节点的所有缓冲区也全部用于输出到A节点的队列上,A节点不能从B节点接收分组,B节点也不能从A节点接收分组,如图4.4(a)所示。这种情况也可能发生在一组节点之间,每个节点都企图向相邻节点发送分组,但每个节点都无空闲缓冲区用于接收分组,这种情形称作间接存储转发死锁,如图4.4(b)所示。当一个节点处于死锁状态时,与之相连的所有链路都将被完全阻塞。   

有一种防止存储转发死锁的方法。设一通信子网直径为M,即从任一源点到一目的节点的最大中间链路段数为M,每个节点需要M+1个缓冲区,以0到M编号。对于一个源节点,规定仅当其0号缓冲区空时才能接收源端系统来的分组,而此分组仅能转发给1号缓冲区空闲的相邻节点,再由该节点将分组转发给它的2号缓冲区空闲的相邻节点......。最后,该分组或者顺利到达目的节点,并被递交给目的端系统;或者到了某个节点编号为M的缓冲区中,再也转发不下去,此时,一定发生了循环,应该将该分组丢弃。由于每个分组都按照一定的顺序规则分配缓冲区,即分组所占用的缓冲区编号一直在递增,从而会使节点之间相互等待空闲缓冲区而发生死锁情况。   

重装死锁及其防止:死锁中一种比较严重的情况是生装死锁。假设发给一个端系统的报文很长,被源节点拆成若干个分组发送,目的节点要将所有具有相同报文编号的分组重新装配成报文递交给目的端系统。由于目的节点用于重装报文的缓冲区空间有限,而且它无法知道在接收的报文究竟被拆成多少个分组,此时,就可能发生严重的问题:为了接收更多的分组,该目的节点用完了它的缓冲空间,但它又不能将尚未接收并拼装完整的报文递送给目的端系统。而邻节点仍在不断地向它传送分组,但它却无法接收。   

这样,经过多次尝试后,邻节点就会绕道从其它途径再向该目的节点传送分组,但该目的节点已被牢牢锁死,其周围区域也由此发生了阻塞现象。下面几种方法可以用于免重装死锁的发生: 允许目的节点将不完整的报文递交给目的端系统。 一个不能完整重装的报文能被检测出来,并要求发送该报文的源端系统重新传送。 为每个节点配备一个后备缓冲空间,当重装死锁发生时,将不完整的报文暂移至后备缓冲区中。两种方法不能很满意地解决重装死锁,因为它们使端系统中的协议复杂化了。一般的设计中,网络层应该对端系统透明,也即端系统不该考虑诸如报文拆、装之类的事情。第三种方法虽然不涉及端系统,但每个点增加了开销,降低了可靠性。

附件列表


→如果您认为本词条还有待完善,请 编辑词条

下一篇USB On-The-Go

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

收藏到:  

词条信息

hanshuang
hanshuang
超级管理员
词条创建者 发短消息   
  • 浏览次数: 1265 次
  • 编辑次数: 1次 历史版本
  • 更新时间: 2011-10-08

相关词条