1.05k likes | 1.23k Views
3.3 网络层及其协议. 网络层概述 网络层是 OSI 参考模型中的第三层,它建立在数据链路层所提供的两个相邻端点之间的数据帧的传送功能之上,将数据从源端经过若干中间节点传送到目的端。从而向运输层提供最基本的端到端的数据传送服务。网络层是处理端到端数据传输的最底层,体现了网络应用环境中资源子网访问通信子网的方式。. 网络层的功能. 网络服务 路由控制 拥塞控制
E N D
3.3 网络层及其协议 • 网络层概述 网络层是OSI参考模型中的第三层,它建立在数据链路层所提供的两个相邻端点之间的数据帧的传送功能之上,将数据从源端经过若干中间节点传送到目的端。从而向运输层提供最基本的端到端的数据传送服务。网络层是处理端到端数据传输的最底层,体现了网络应用环境中资源子网访问通信子网的方式。
网络层的功能 • 网络服务 • 路由控制 • 拥塞控制 • 透明传输 透明传输就是不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧出现了与某一个控制信息完全一样时,必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输的透明的。·
网络层的功能 • 异种网络的互联 解决不同网络在寻址、分组大小、协议等方面的差异。不同类型的网络对分组大小,分组结构等的要求都不相同,因此要求在不同种类网络交界处的路由器能够对分组进行处理,使得分组能够在不同网络上传输。·分组生成和装配: 运输层报文与网络层分组间的相互转换。运输层报文通常很长,不适合直接在分组交换网络中传输。在发送端,网络层负责将运输层报文拆成一个个分组,再进行传输。在接收端,网络层负责将分组组装成报文交给运输层处理。
网络层的服务 • 对于网络层应提供的服务,两个观点争论得很激烈。一个观点认为不管怎样设计,通信子网注定是不可靠的,因此差错控制和流量控制必须由主机自己完成,即网络层提供的服务是无连接的。另一个观点认为,通信子网应该提供一种可靠的、面向连接的服务。面向连接的网络服务是在数据交换之前,必须先建立连接,当数据交换结束后,终止这个连接。无连接服务是两个实体之间的通信不需要事先建立好一个连接,通信所需的资源无需事先预定保留,所需的资源是在数据传输时动态地进行分配的。
网络层的服务 • 面向连接和面向无连接的服务各有其适用场合,面向连接的服务是可靠的报文序列服务;无连接服务却不能防止报文的丢失、重复或失序,但无连接服务灵活方便,并且迅速。因此,当前的网络层既提供面向连接的服务,即虚电路方式,又提供面向无连接的服务,即数据报方式。 • 面向连接和无连接两种服务方式的争论,实质就是将复杂的功能放在何处的问题。在面向连接服务中,它们被置于网络层(通信子网),而在面向无连接服务中,则被置于运输层(主机)。
网络服务模式 • 指整个通信子网向传输层或资源子网提供的服务规范。
分组交换,虚电路工作原理及其特性 • 从通信资源的分配角度来看,“交换”就是按照某种方式动态地分配传输线路的资源 。 • 分组交换又称包交换,它是现代计算机网络的技术基础。1966年6月,英国国家物理实验室(NPL)的戴维斯(Davies)首次提出"分组"(Packet)一词。1969年12月美国的分组交换网ARPANET投入运行。从此,计算机网络的发展就进入了一个新的纪元,分组交换网的出现成为现代电信时代的开始。分组交换方式又可分为虚电路方式和数据报方式。
虚电路 基本思想: 在虚电路方式中,为进行数据传输,源和目的节点间必须为分组的传输预先建立一条逻辑通路。这条传输数据的逻辑通道和电路交换中的连接类似,叫做虚电路。之所以是"虚"的,是因为这条电路不是专用的,分组仍然在每个节点处首先被缓冲,并排队等待转发。 呼叫分组:源主机首先发起一个虚呼叫,即发送一个特定格式的呼叫分组到目的主机,要求进行通信,同时也寻找一条合适的路由。若目的主机同意通信,就发回响应,这样在源主机和目的主机之间就建立了一条虚电路。 虚电路工作过程 虚电路建立: 通过呼叫分组 数据传输:源主机向目的主机传送的所有分组都必须沿着这条虚电 路进行数据传送 释放虚电路:在数据传送完毕后,还要将这条虚电路释放掉 虚电路分类: • 呼叫虚电路 • 永久虚电路
注意: • 每个节点到其他节点之间可能同时有若干条虚电路,也可能同时与多个节点间存在虚电路。 • 每条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务。 • 由于采用了存储转发技术,所以这种虚电路和电路交换的连接有很大的不同。 • 当我们占用一条虚电路进行计算机通信时,由于采用的是存储转发的分组交换,所以只是断续地占用一段又一段的链路。
H H B C A H D H E F H H 虚电路
呼叫分组:一个特殊的分组。携带全称地址,需要路由选择。呼叫分组:一个特殊的分组。携带全称地址,需要路由选择。 • 呼叫虚电路号 • 呼叫虚电路号的分配:选取当前尚未使用的最低的虚电路号。 • 虚电路表 • 数据传输:虚电路号的替换,不需要全称地址。
A B C A E A B H C 0 0 0 0 0 0 D B C H D H 0 0 0 0 0 0 B A H H C A 0 0 1 0 0 1 D F C E C H 1 1 0 0 1 1 D C F B H B 2 1 1 1 1 E A H D H 1 0 1 2 2 F H H 0 2 2 F H E 0 3 1 入口出口 入口出口 入口出口 入口出口 入口出口 入口出口 F E
数据报方式 • 在数据报方式中,每个分组的传输是被单独处理的,与先前传送的分组无关。每个分组被称为一个数据报。每个数据报自身必须包含有目的地的完整地址信息。主机只要想发送数据就随时可以发送。每个分组独立地选择路由。这样,先发送出去的分组不一定先到达目的站主机。 • 这就是说,数据报不能保证按发送数据顺序交付给目的站。当需要把数据按发送顺序交付给目的主机时,在目的站还必须把收到的分组缓存一下,等到能够按顺序交付主机时再进行交付。当网络发生拥塞时,网络中的某个节点可以将一些分组丢弃。所以,数据报提供的服务是不可靠的,它不能保证服务质量,而是一种"尽最大努力交付"的服务。
数据报 • 每个分组都有目的地址和源地址的全称地址 • 每个分组独立地送到目的地 • 发送分组的数量、分组的丢失或重发由主机负责 • 优点:灵活、可以很快地对拥塞做出反应
网络层提供的服务 • 网络层为传输层提供的服务 • 面向连接服务:将复杂的功能放在网络层(通信子网)。 • 建立连接 • 传输数据 • 拆除连接 • 无连接服务:将复杂的功能放在传输层。 • 只负责传输分组。
网络层提供的服务 • 通信子网提供的服务(面向连接或无连接)与通信子网结构(虚电路或数据报)无关。 • 面向连接的服务用虚电路来实现(比较合理) • 面向连接的服务用数据报来实现 • 面向无连接的服务用虚电路来实现 • 面向无连接的服务用数据报来实现(比较合理)
路由选择算法 路由选择算法概述 静态路由选择策略 动态路由选择策略 距离向量路由算法 链路状态路由算法 路由选择协议
路由选择算法概述 • 路由:网络中每个节点选择通往目的节点的最佳路径的过程 • 要求: • 选择路由要正确 • 选择路由要简单(运算简单、运算时间短、存储开销小、通信量小 ) • 满足设计目标 • 路径选择要公平及最优化 • 路径选择要可靠
路由选择算法概述 • 步骤: • 全局了解网络拓扑结构 • 确定路由选择原则 • 整个网络的路径选择不影响局部路径选择办法 • 网络的变化不影响原确定的路径选择方法 • 选择合适的路径选择算法 • 确定决策地点: • 各个节点都有路由选择的责任 • 由中心节点完成
路由选择算法概述 • 路径选择类型 路由选择算法可以分为两大类: 非自适应---事先脱线计算好或设定好的,在网络启动时就下载到路由器中 自适应---根据拓扑结构、通信量的变化来改变其路由选择。 。 路由选择算法应具有下列特性:正确性、简单性、健壮性、稳定性、公平性和最优性。
路由选择算法概述 • 路由算法中的度量标准 路径长度:hop数 可靠性:线路出错率 延迟时间:路径延迟(带宽、路由器的排队长度 ) 带宽:最大带宽 路由器的负载 通信成本
最优化原则 • 最优化原则(optimality principle) • 如果路由器 J 在路由器 I 到 K 的最优路由上,那么从 J 到 K 的最优路由会落在同一路由上。 • 汇集树(sink tree) • 路由算法的目的是找出并使用汇集树。 • 从所有的源结点到一个给定的目的结点的最优路由的集合形成了一个以目的结点为根的树,称为汇集树。
几种常见的路由算法 • 静态路由算法 • 最短路径选择(Shortest Path Routing) • 洪泛算法(Flooding Routing) • 基于流量的路由算法(Flow-Based Routing) • 动态路由算法 • 距离向量路由算法(Distance Vector Routing) • 链路状态路由算法(Link State Routing) • 分级路由(Hierarchical Routing)
最短路径路由算法 • 基本思想 • 构建子网的拓扑图,图中的每个结点代表一个路由器,每条弧代表一条通信线路。 • 目的是构建两个路由器间的路由,算法是在子网拓扑图中找出最短路径。 • 得到最短路径,有不同的测量路径长度的方法: • 计算结点数量 • 计算地理距离 • 计算传输延迟 • 计算距离、信道带宽等参数的加权函数 • …… • Dijkstra算法是其中的一种计算最短路径的算法。
Dijkstra算法 • 每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注。开始时,所有结点都为临时性标注,标注为无穷大。 • 源结点标注为0,且为永久性标注,令其为工作结点。 • 检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点。 • 在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点。 • 重复第三、四步,直到目的结点成为工作结点。 • Dijkstra算法的图例。 • Dijkstra算法的程序:与算法的区别是从目的结点开始。
洪泛算法 • 基本思想 • 把收到的每一个分组,向除了该分组到来的线路外的所有输出线路发送。 • 主要问题 • 洪泛要产生大量重复分组。 • 解决措施 • 每个报头包含站点计数器,每经过一站计数器减1,为0时则丢弃该分组。 • 记录下分组扩展的路径,防止它第二次扩散到已经扩散过的路径中。 • 较实用的方法——选择性洪泛算法(selective flooding) • 洪泛法的一种改进:将进来的每个分组仅发送到与正确方向接近的线路上。
洪泛算法 • 应用情况 • 洪泛算法由于过于浪费路由器和线路的资源,在实际应用中很难被直接采用,但还是有一些用处的。 • 在军事领域中,由于需要极好的健壮性,扩散法可以一展身手。 • 在分布式数据库中,有时需要并行地更新所有数据库,这时洪泛算法也是最佳方案。 • 因为洪泛算法总是能够选择最短的路径,可以产生一个最短的延迟。洪泛算法可以作为一种尺度衡量标准来评价其它路由算法。
随机走动式 • 随机走动式:类似分子的“布朗运动” 这种方法又称为随机徘徊,其特点是当分组到达某个节点时就随机地选择一条链路作为转发的路由。在非自适应的路由选择算法中,若可能发生节点或链路的故障,那么随机走动法已被证明是非常有效的,它使得路由算法具有较好的稳健性。
固定路由法 • 固定路由法 在每个节点保持一张路由表,这些表是在整个系统进行配置时生成的,并且在此后的一段时间内保持固定不变。 • 实现 将网络内任何两个节点之间的最短通路事先计算好,然后根据这些最短通路制成路由表,存放在各个节点中。每个分组都可以在所到达的节点中查找到下一站应转发到哪一个节点。可见这种路由选择策略的关键就是要算出给定网络中任意两个节点之间的最短通路。该算法就是Dijkstra算法。 特点 当网络拓扑结构固定不变并且通信量也相对稳定时,采用固定路由法是最好的。
基于流量的路由算法 • 基本思想 • 既考虑拓扑结构,又兼顾网络负荷。 • 前提:每对结点间平均数据流是相对稳定和可预测的。 • 根据网络带宽和平均流量,可得出平均分组延迟,因此路由算法就演变为寻找网络中连接两个路由器的线路上具有最小平均分组延迟的问题。
基于流量的路由算法 • 需要预知的信息 • 网络拓扑结构。 • 通信量矩阵Fij,即线路ij之间的平均通信量。 • 线路带宽矩阵Cij,即线路ij 之间允许的最大通信量。 • 临时的路由算法。 • 图例。
基于流量的路由算法图例 根据队列原理,线路平均分组延迟的计算公式为: T=1/(C-) 1/=800 bit
动态路由选择策略 • 独立路由:选择节点仅根据自己搜集到的有关信息做出路由选择的决定,与其它节点不交换路由选择信息。 • 集中路由选择:节点路由表由路由控制中心RCC(Routing Control Center)定时根据网络状态计算、生成并分送到各相应节点。 • 分布路由选择:所有节点定期地与其每个相邻节点交换路由选择信息。
D-V(距离矢量)算法(Distance Vector Routing) • 是动态、分布式算法,RIP协议中使用本算法,较小系统中常使用RIP • 实现分布式算法的三要素: The measurament process(测量) The update protocal(更新邻接点距离矢量) The calculation(计算)
距离向量路由算法 • 属于动态路由算法,最初用于ARPANET,DECnet等网络。 • 基本思想:每个路由器维护一张表,表中列出了到每个目的地址的最佳距离和线路,并通过与邻居结点交换信息来更新表。 • 表(路由表)的构成:以子网中其它路由器为表的索引,到达目的结点的最佳输出线路,和到达目的结点所需时间或距离。
距离向量路由算法 • 路由器需要知晓自己到邻居结点的“距离”。所用的度量标准可以为站点、估计的时间延迟等。 • 如果为站点,本路由器到每个邻居结点的距离都为1。 • 如果是延迟,本路由器就发送一个要对方立即响应的ECHO分组,用来回时间除以2即得到延迟时间, • 每隔一段时间,路由器向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。 • 邻居结点X发来的表中,X到路由器i的距离为Xi。本路由器到X的距离为m,则本路由器经过X到i的距离为Xi + m。根据不同邻居发来的信息,计算Xi + m,取最小值,更新本路由器的表。 • 注意:在计算中不使用本路由器中的老路由表。
距离向量路由算法图例 以J为例, • 以ECHO分组测出J到A,I,K,H的距离,J(A,I,K,H)=(8,10,12,6) • 利用相邻节点的清单,找出J到各目的节点的最新延迟线路 • 路由器J计算到达路由器C的最新路由 • JAC=8+25=33ms • JIC=10+18=28ms • JHC=12+19=31ms • JKC=6+36=42ms 其中JIC是最好的。 因此在路由器J的新路由表中填上到C的延迟为28ms,经过路由器I。
D-V算法的缺点 • 路径信息传播慢 • 路径信息不一致 • 交换的路径信息量大 • 不适合大型网络 • 收敛速度慢
无穷计算问题 • 好消息传播得快,坏消息传播得慢 A下网了
ABCDE 解决方案之一水平分裂 • 水平分裂算法基本思想 • 工作过程与距离向量算法相同,区别在于到X的距离不向真正通向X的邻居结点报告。从而使得坏消息以每次一个结点的速度传播。 • C告诉D到A的真实距离,告诉B为∞ • 举例:如右图。 • 在路由信息的交换中,B知道可以直达A,并告诉C,通过B到C路径为1。C得到B发来的路由信息后,告诉D通过C到达A距离为2,告诉B通过C到达A为无穷。D得到C发来的路由信息后,告诉E通过D到达A距离为3,告诉C通过D到达A为无穷。
解决方案之一水平分裂 • 当A下网后, • 第一次交换:B发现到达A的直达路线没有了,而且C也向B说到达A为无穷,故B将其到达A的距离设置为无穷。 • 第二次交换:C得到B的通知,B到达A为无穷;同时D也告诉C,通过D到达A为无穷,故C将其到达A的距离设置为无穷。 • 以次类推,在第四次交换的时候,E也知道A不可达了。
L-S(链路状态)算法(Link State Routing) • 基本思想 • 发现它的邻接节点,并得到其网络地址 • 测量它到各邻接节点的延迟或开销 • 组装一个分组以告知它刚知道的所有信息 • 将这个分组发给所有其他路由器 • 计算到每个其他路由器的最短路径
发现邻接节点 • 当一个路由器启动后,向每个点到点线路发送HELLO分组,另一端的路由器发送回来一个应答来说明它是谁
测量线路开销 • 发送一个ECHO分组要求对方立即响应,通过测量一个来回时间再除以2,发送方就可以得到一个延迟估计值,想要更精确些,可以重复这一过程,取其平均值
B C 2 4 3 A D 1 6 5 7 8 E F 构造分组 子网及其节点到其邻节点(路由器)的线路开销测量值(即延时,假设以ms计) 子网的链路、状态及分组情况: 节点A仅与节点B和E相邻 A B的时延为4ms A E的时延为5ms