《清华大学计算机网络net优秀课件》由会员分享,可在线阅读,更多相关《清华大学计算机网络net优秀课件(60页珍藏版)》请在金锄头文库上搜索。
1、计计计计 算算算算 机机机机 网网网网 络络络络 原原原原 理理理理网网网网 络络络络 层层层层尹尹 霞霞清华大学计算机科学与技术系清华大学计算机科学与技术系计算机网络技术研究所计算机网络技术研究所2000 年年 11 月月14日日网络层主要内容网络层主要内容n网络层概述 n网络层的地位n网络层需要解决的问题n数据报和虚电路n网络层提供的服务n路由算法 n最优化原则n最短路径路由算法n洪泛算法n基于流量的路由算法n距离向量路由算法n链路状态路由算法n分级路由n拥塞控制算法 n拥塞控制的基本原理n开环控制n拥塞预防策略n通信量整形(漏桶和令牌桶)n流说明n闭环控制n虚电路网络中的拥塞控制n抑制分
2、组n负载丢弃n网络互联技术 n级联虚电路n无连接网络互联n隧道技术n互联网路由n分段n防火墙nInternet网络层协议 n支撑协议nIP/ICMP协议nARP/RARP协议n内部网关路由协议nRIP,OSPFn外部网关路由协议nBGP清华大学计算机网络net优秀 网网 络络 层层清华大学计算机网络net优秀 网网 络络 层层网络层的位置网络层的位置n当今流行的通信技术n传统的电信网络:线路交换、x.25、帧中继、ATM。n计算机网络:ARPANET、INTERNET等。n有线电视网络。n计算机网络中的网络层至关重要n网络层是通信子网的最高层,关系着整个网络的运行控制。n网络层需要解决的问题是
3、确定分组从源地址到目的地址是如何路由的。n网络层利用数据链路层提供的服务,为传输层提供服务。网络层处理端到端传输的最低层。n在广播网络中,路由选择很简单,所以网络层也很薄,甚至不存在。而在大型网络中,分组不得不跨越若干个网络到达目的地址,这其中的种种问题就需要由网络层来解决。清华大学计算机网络net优秀 网网 络络 层层网络层需要解决的问题网络层需要解决的问题n网络层为了能够了解通信子网的拓扑结构,以便选择路由,需要解决以下问题:n屏蔽各种不同类型网络之间的差异n需要统一数据格式n需要统一网络地址n实现全网的数据传输n建立跨越网络的虚电路n网络之间实现分组的寻址和转发n网络层的两种实现方式n虚
4、电路(virtual circuit):提供面向连接的服务。n类似于电话,先建立连接,之后依次发送分组,最后关闭连接。n避免对每个分组进行路由。n数据报(datagram):提供无连接的服务。n类似于发送信件。对每个数据报(对于无连接中的独立分组称作数据报)分别进行路由。清华大学计算机网络net优秀 网网 络络 层层通信交换技术通信交换技术n计算机网络总是由资源子网和通信子网组成。通信交换技术是指数据信息如何在通信子网的各个结点之间进行传输的。通常存在三种交换技术:线路交换、报文交换和分组交换。还存在某几个技术的融合,即混合交换。n线路交换(circuit switching)在网络中利用可切
5、换的物理通信线路直接连接通信双方。n最常见的例子是电话系统。n线路交换包括三种状态:线路建立、数据传送、线路拆除。n线路交换方式中通道是专用的,利用效率低,并存在延迟。n报文交换(message switching)是指信息以报文(逻辑上完整的信息段)为单位进行存储转发存储转发。清华大学计算机网络net优秀 网网 络络 层层HHHAR5R2R3Router1R4HBMMMMM存储转发存储转发 (Store and Forward)n发送报文的主机在发送之前,要将报文的目的地址附加在报文前面。然后将报文发送到网络中的结点中。n每个网络中的结点将完整地接收报文,暂存报文,然后将报文发送到下一个更接
6、近目的主机的结点中。如此操作,直至将报文发送到目的主机为止。清华大学计算机网络net优秀 网网 络络 层层分组交换分组交换(packet switching)n分组交换结合报文交换和线路交换的优点,采用存储转发机制,但是规定了传输数据的单位长度。n过长的报文被分成较小的单位(分组packet),依次发送。n如何管理这些分组的正确传输:数据报和虚电路。n数据报(datagram):每个分组被单独处理。n每个分组带有自己的目的地址和序号被发出,由通信子网中的结点进行路由选择。n在所有分组到达了目的主机后,再将各个分组按照序号编排起来。n虚电路(virtual circuit):n在发送任何分组之前
7、,首先在发送主机和目的主机之间建立一条逻辑连接,即在通信子网中确定一条用于本次传输数据用的结点序列。n建立虚电路后,所有的分组都将按照循序依次被发送到目的主机。n当所有的分组都发送之后,虚电路将被拆除。在虚电路方法中,每个分组无须进行路径选择。n每个主机可以和另一个主机建立若干个虚电路,每个主机也可以同时和若干主机个建立虚电路。清华大学计算机网络net优秀 网网 络络 层层虚电路与数据报的比较虚电路与数据报的比较清华大学计算机网络net优秀 网网 络络 层层虚电路与数据报之间的权衡虚电路与数据报之间的权衡n路由器内存空间与带宽的权衡n虚电路占用路由器中的表空间n每个数据报都携带完整的目的/源地
8、址,浪费带宽n连接建立时间与地址查找时间的权衡n虚电路需要在建立连接时花费时间n数据报则在每次路由时过程复杂n服务质量和健壮性的权衡n虚电路方式很容易保证服务质量QoS(Quality of Service),适用于实时操作,但比较脆弱。通信线路的故障,对于虚电路而言有时是致命的。n数据报不太容易保证服务质量,但是对于通信线路的故障,却很容易得到补偿。清华大学计算机网络net优秀 网网 络络 层层MHHHAR5R2R1R3R4HBM1M3M2M1M2M3M1M2M3举例举例n请判断是虚电路还是数据报?清华大学计算机网络net优秀 网网 络络 层层网络层提供的服务网络层提供的服务n网络层为传输层
9、提供的服务n面向连接服务:将复杂的功能放在网络层(通信子网)。n建立连接n传输数据n拆除连接n无连接服务:将复杂的功能放在传输层。n只负责传输分组。n通信子网提供的服务(面向连接或无连接)与通信子网结构(虚电路或数据报)无关。n面向连接的服务用虚电路来实现(比较合理)n面向连接的服务用数据报来实现n面向无连接的服务用虚电路来实现n面向无连接的服务用数据报来实现(比较合理)清华大学计算机网络net优秀 网网 络络 层层通信子网结构及其提供的服务通信子网结构及其提供的服务清华大学计算机网络net优秀 网网 络络 层层小小 结结 网络层概述网络层概述n网络层的地位n确定分组从源地址到目的地址如何进行
10、路由。n网络层需要解决的问题n屏蔽各种不同类型网络之间的差异n实现全网的数据传输n网络层的两种实现方式 数据报和虚电路n都属于分组交换,采用存贮转发机制。n数据报(datagram):每个分组被单独处理,每个分组带有自己的目的地址和序号被发出。n虚电路(virtual circuit):先在发送主机和目的主机之间建立一条逻辑连接,所有的分组按照循序依次被发送。最后虚电路将被拆除。在虚电路方法中,每个分组无须进行路径选择。n网络层提供的服务n面向连接的服务和无连接的服务。清华大学计算机网络net优秀 网网 络络 层层清华大学计算机网络net优秀 网网 络络 层层路由算法路由算法n路由算法是网络层
11、软件的一部分n子网采用数据报方式,每个分组都要做路由选择。n子网采用虚电路方式,只需在建立连接时做一次路由选择。n路由算法应具有的特性n正确性(correctness)、简单性(simplicity)、健壮性(robustness)、稳定性(stability)、公平性(fairness)、最优性(optimality)n路由算法分类n非自适应算法(静态路由算法):按照预先计算好的(off-line)信息进行路由。n自适应算法(动态路由算法):根据网络拓扑结构,通信量等地变化来改变路由。清华大学计算机网络net优秀 网网 络络 层层最优化原则最优化原则n最优化原则(optimality pri
12、nciple)n如果路由器 J 在路由器 I 到 K 的最优路由上,那么从 J 到 K 的最优路由会落在同一路由上。n汇集树(sink tree)n路由算法的目的是找出并使用汇集树。n从所有的源结点到一个给定的目的结点的最优路由的集合形成了一个以目的结点为根的树,称为汇集树。清华大学计算机网络net优秀 网网 络络 层层几种常见的路由算法几种常见的路由算法n静态路由算法n最短路径选择(Shortest Path Routing) n洪泛算法(Flooding Routing) n基于流量的路由算法(Flow-Based Routing) n动态路由算法n距离向量路由算法(Distance Ve
13、ctor Routing) n链路状态路由算法(Link State Routing) n分级路由(Hierarchical Routing) 清华大学计算机网络net优秀 网网 络络 层层最短路径路由算法最短路径路由算法n基本思想n构建子网的拓扑图,图中的每个结点代表一个路由器,每条弧代表一条通信线路。n目的是构建两个路由器间的路由,算法是在子网拓扑图中找出最短路径。n得到最短路径,有不同的测量路径长度的方法:n计算结点数量n计算地理距离n计算传输延迟n计算距离、信道带宽等参数的加权函数nnDijkstra算法是其中的一种计算最短路径的算法。清华大学计算机网络net优秀 网网 络络 层层Di
14、jkstra算法算法n每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注。开始时,所有结点都为临时性标注,标注为无穷大。n源结点标注为0,且为永久性标注,令其为工作结点。n检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点。n在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点。n重复第三、四步,直到目的结点成为工作结点。nDijkstra算法的图例。nDijkstra算法的程序:与算法的区别是从目的结点开始。清华大学计算机网络net优秀 网网 络络
15、 层层Dijkstra算法图例算法图例清华大学计算机网络net优秀 网网 络络 层层Dijkstra算法程序算法程序清华大学计算机网络net优秀 网网 络络 层层洪泛算法洪泛算法n基本思想n把收到的每一个分组,向除了该分组到来的线路外的所有输出线路发送。n主要问题n洪泛要产生大量重复分组。n解决措施n每个报头包含站点计数器,每经过一站计数器减1,为0时则丢弃该分组。n记录下分组扩展的路径,防止它第二次扩散到已经扩散过的路径中。n较实用的方法选择性洪泛算法(selective flooding)n洪泛法的一种改进:将进来的每个分组仅发送到与正确方向接近的线路上。清华大学计算机网络net优秀 网网
16、 络络 层层洪泛算法洪泛算法n应用情况n洪泛算法由于过于浪费路由器和线路的资源,在实际应用中很难被直接采用,但还是有一些用处的。n在军事领域中,由于需要极好的健壮性,扩散法可以一展身手。n在分布式数据库中,有时需要并行地更新所有数据库,这时洪泛算法也是最佳方案。n因为洪泛算法总是能够选择最短的路径,可以产生一个最短的延迟。洪泛算法可以作为一种尺度衡量标准来评价其它路由算法。清华大学计算机网络net优秀 网网 络络 层层基于流量的路由算法基于流量的路由算法n基本思想n既考虑拓扑结构,又兼顾网络负荷。n前提:每对结点间平均数据流是相对稳定和可预测的。n根据网络带宽和平均流量,可得出平均分组延迟,因
17、此路由算法就演变为寻找网络中连接两个路由器的线路上具有最小平均分组延迟的问题。n需要预知的信息n网络拓扑结构。n通信量矩阵Fij,即线路ij之间的平均通信量。n线路带宽矩阵Cij,即线路ij 之间允许的最大通信量。n临时的路由算法。n图例。清华大学计算机网络net优秀 网网 络络 层层基于流量的路由算法图例基于流量的路由算法图例清华大学计算机网络net优秀 网网 络络 层层 根据队列原理,线路平均分组延迟的计算公式为: T=1/(C-) 1/=800 bit基于流量的路由算法图例基于流量的路由算法图例清华大学计算机网络net优秀 网网 络络 层层距离向量路由算法距离向量路由算法n属于动态路由算
18、法,最初用于ARPANET,DECnet等网络。n基本思想:每个路由器维护一张表,表中列出了到每个目的地址的最佳距离和线路,并通过与邻居结点交换信息来更新表。n表(路由表)的构成:以子网中其它路由器为表的索引,到达目的结点的最佳输出线路,和到达目的结点所需时间或距离。n路由器需要知晓自己到邻居结点的“距离”。所用的度量标准可以为站点、估计的时间延迟等。n如果为站点,本路由器到每个邻居结点的距离都为1。n如果是延迟,本路由器就发送一个要对方立即响应的ECHO分组,用来回时间除以2即得到延迟时间,n每隔一段时间,路由器向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表
19、。n邻居结点X发来的表中,X到路由器i的距离为Xi。本路由器到X的距离为m,则本路由器经过X到i的距离为Xi + m。根据不同邻居发来的信息,计算Xi + m,取最小值,更新本路由器的表。n注意:在计算中不使用本路由器中的老路由表。清华大学计算机网络net优秀 网网 络络 层层距离向量路由算法图例距离向量路由算法图例路由器J计算到达路由器C的最新路由nJAC=8+25=33msnJIC=10+18=28msnJHC=12+19=31msnJKC=6+36=42ms其中JIC是最好的。因此在路由器J的新路由表中填上到C的延迟为28ms,经过路由器I。清华大学计算机网络net优秀 网网 络络 层层
20、距离向量路由算法的缺陷距离向量路由算法的缺陷n缺陷无穷计算问题n对好消息反应迅速:在最长路径为N各结点的子网中,在N次交换之内,所有的路由器都会指导新增的线路和路由器。n对坏消息反应迟钝:对于已经消失的结点,相互欺骗。n图例如下。清华大学计算机网络net优秀 网网 络络 层层n水平分裂算法基本思想n工作过程与距离向量算法相同,区别在于到X的距离不向真正通向X的邻居结点报告。从而使得坏消息以每次一个结点的速度传播。n举例:如右图。n在路由信息的交换中,B知道可以直达A,并告诉C,通过B到C路径为1。C得到B发来的路由信息后,告诉D通过C到达A距离为2,告诉B通过C到达A为无穷。D得到C发来的路由
21、信息后,告诉E通过D到达A距离为3,告诉C通过D到达A为无穷。n当A下网后,n第一次交换:B发现到达A的直达路线没有了,而且C也向B说到达A为无穷,故B将其到达A的距离设置为无穷。n第二次交换:C得到B的通知,B到达A为无穷;同时D也告诉C,通过D到达A为无穷,故C将其到达A的距离设置为无穷。n以次类推,在第四次交换的时候,E也知道A不可达了。解决方案之一水平分裂解决方案之一水平分裂ABCDE清华大学计算机网络net优秀 网网 络络 层层水平分裂不能解决所有的问题水平分裂不能解决所有的问题n水平分裂虽然广泛使用,但有时候会失败。n如右图。n开始时,A和B到D的举例都为2,C到D的举例为1。n假
22、设CD线路断了,使用水平分裂,A和B都告诉C,它们不能到达D,同时C自己也发现直达D的线路断了,于是C很快认定D不可达了。n但是,A认为B有一条通向D长度为2的路径,通过B经过3个结点可到达D。类似,B也这样认为。于是两个结点每交换一次信息,到达D的距离就增加1,直至加大无穷。清华大学计算机网络net优秀 网网 络络 层层链路状态路由算法链路状态路由算法n距离向量路由算法的主要问题n由于延迟度量仅仅是队列长度,在选择路由时没有考虑线路带宽。n即使使用了水平分裂,路由收敛速度依然慢。n在1979年前,ARPANET上都采用距离向量路由算法,但是之后,即为链路状态路由算法所替代。n链路状态路由算法
23、的简单步骤n发现邻居结点,并学习它们的网络地址。n测量到每个邻居结点的延迟或开销。n将所有学习到的内容封装成一个分组。n将这个分组发送给所有其它路由器。n计算到每个其它路由器的最短路径。清华大学计算机网络net优秀 网网 络络 层层步骤步骤1:发现邻居结点:发现邻居结点n发现邻居结点,并学习它们的网络地址。n路由器启动后,通过发送HELLO分组,并得到邻居路由器的响应来发现邻居结点。n路由器的名称必须是唯一的。n当两个或多个路由器连在一个LAN时,引入人工结点。n图例。清华大学计算机网络net优秀 网网 络络 层层步骤步骤2/3:测量线路开销和封装分组:测量线路开销和封装分组n测量到每个邻居结
24、点的延迟或开销,一种直接的方法是:发送一个要对方立即响应的ECHO分组,来回时间除以2即为延迟时间。n如果在测量延迟时间的时候,考虑负载,会是什么情况?(自学)n将所有学习到的内容封装成一个分组,即在信息收集完毕后,构造一个包含所有数据的分组。n该分组的结构为:发送方的标识符、序号、年龄、邻居结点列表(邻居结点标识符,线路开销值)。n创建链路状态分组的时机:一是定期创建,一是在发生重大事件后创建。清华大学计算机网络net优秀 网网 络络 层层步骤步骤4:发布链路状态分组:发布链路状态分组n链路状态分组的发布算法n基本思想:洪泛链路状态分组。n为控制洪泛,每个分组中增加一个序号域,每次发送新分组
25、时加1。n路由器记录信息对(源路由器,序号),当一个链路状态分组到达时,若是新的,则分发;若是重复的,则丢弃;若序号比路由器记录中的最大序号小,则认为过时而丢弃。n基本算法所产生的问题n序号循环使用会混淆。n路由器崩溃后,所有的序号丢失,从0开始记,以后所有的新到分组都可能被当作重复分组而被拒绝。n序号在发送出去后出现错误。清华大学计算机网络net优秀 网网 络络 层层步骤步骤4:发布链路状态分组:发布链路状态分组n基本算法的改进方案n为了避免序号重复,使用32位的序号。n解决序号丢失和出错的方法是增加年龄(age)域,每秒钟年龄减1,至零则丢弃。n链路状态分组到达后,延迟一段时间(被放置在一
26、个保持区中),并与其它已到达的来自同一路由器的链路状态分组比较序号,丢弃重复分组和超龄分组。n为了防止链路出错,所有的链路状态分组都需要应答。清华大学计算机网络net优秀 网网 络络 层层步骤步骤5:计算新路由:计算新路由n在路由器积累了一整套网络的链路状态分组后,就可以通过计算得到整个网络的结构。可以利用Dijkstra算法计算得到每个其它路由器的最短路径。n基于链路状态的路由协议nOpen Shortest Path First (OSPF)nIntermediate System-Intermediate System (IS-IS)清华大学计算机网络net优秀 网网 络络 层层分级路由
27、分级路由n网络规模增长带来的问题n路由器中的路由表增大。n路由器为选择路由而占用的内存、CPU时间和网络带宽增大。n解决办法 分级路由n对于大型网络分而治之,每个路由器只知道自己所在子网的路由信息,而不去了解其他子网的内部结构。n根据需要,可以分成区域(regions)、聚类(clusters)、区(zones)和组(groups) n图例。n分级路由带来的问题n路由表中的路由不一定是最优路由。清华大学计算机网络net优秀 网网 络络 层层分级路由图例分级路由图例清华大学计算机网络net优秀 网网 络络 层层小结小结 路由算法路由算法n最优化原则n路由算法的目的是找出并使用汇集树。n最短路径路
28、由算法n目的是构建两个路由器间的路由,算法是在子网拓扑图中找出最短路径。Dijkstra算法。n洪泛算法n把收到的每一个分组,向除了该分组到来的线路外的所有输出线路发送。n基于流量的路由算法n根据网络带宽和平均流量,可得出平均延迟,因此路由问题归结为找产生网络最小延迟的路由算法。n距离向量路由算法n根据两个结点间的队列长度来完成路由选择,但是最大的问题是无穷计算,而且水平分裂也不能完全解决所有的问题。n链路状态路由算法n发现邻居结点n测量线路开销n将所有学习到的内容封装成一个分组n发布链路状态信息n计算新路由n分级路由n对于大型网络分而治之,每个路由器只知道自己所在子网的路由信息,而不去了解其
29、他子网的内部结构。清华大学计算机网络net优秀 网网 络络 层层清华大学计算机网络net优秀 网网 络络 层层拥塞的基本概念拥塞的基本概念n拥塞(congestion):网络中存在过多分组的时候,网络性能降低,这种情况被称为拥塞。图例n造成拥塞的原因n多个输入对应一个输出,只增加内存,并不能解决问题。n慢速处理器。n低带宽线路。n针对某个因素的解决方案,只能对提高网络性能起到一点点作用,甚至可能仅仅是转移了影响性能的瓶颈。n拥塞控制(congestion control)与流量控制(flow control)n拥塞控制需要确保通信子网能够承载用户提交的通信量,是一个全局性问题,涉及主机、路由器
30、等很多因素。n流量控制与点到点的通信量有关,主要解决快速发送方与慢速接收方的问题,是局部问题,一般都是基于反馈进行控制的。清华大学计算机网络net优秀 网网 络络 层层拥塞图例拥塞图例清华大学计算机网络net优秀 网网 络络 层层拥塞控制的分类拥塞控制的分类n根据控制论,拥塞控制可分为两类。n开环控制(防患于未然)n通过良好的设计解决问题,以避免拥塞发生。一旦运行,就不再做中间阶段的更正。n进行开环控制的工具需要决定何时接收新的分组、何时丢弃分组、丢弃哪些分组,制定网络中不同地点的计划表等。利用开环进行拥塞控制时,所有这些操作都不会考虑网络的当前状态。n闭环控制(因地制宜)n基于反馈机制。其工
31、作过程为: n监控系统,发现何时何地发生拥塞。n把发生拥塞的消息传给能采取动作的站点。n调整系统操作,解决拥塞问题。n闭环控制操作需要完成以下三个问题:何为拥塞、如何反馈和如何解决。清华大学计算机网络net优秀 网网 络络 层层闭环控制闭环控制n何为拥塞 衡量网络拥塞的参数n缺乏缓冲区造成的丢包率n平均队列长度n超时重传的分组数目n平均分组延迟n分组延迟变化(Jitter)n如何反馈 反馈方法n向负载的发生源发送一个报警分组,这同时加强了拥塞。n在分组结构中保留一个位或一个域来表示发生拥塞,一旦发生拥塞,路由器将所有输出分组的拥塞位填充,报警。n主机或路由器主动地、周期性地发送探报(probe
32、),查询是否发生拥塞。n如何解决 利用拥塞控制算法清华大学计算机网络net优秀 网网 络络 层层开环控制开环控制 拥塞预防策略拥塞预防策略n影响拥塞的网络设计策略n数据链路层n重传、乱序缓存、确认、流控n网络层n子网中的虚电路和数据报、分组排队和服务策略、分组丢弃策略、路由算法、分组的生存时间管理n传输层n重传、乱序缓存、确认、流控、超时中止清华大学计算机网络net优秀 网网 络络 层层开环控制开环控制 通信量整形通信量整形n通信量整形(Traffic Shaping)的基本思想n网络上,突发的通信量是造成拥塞的主要原因。n强迫分组以某种可以预见的速率传送,减少拥塞,这种方法就被称为通信量整形
33、。n此方法广泛应用于ATM网络中。n漏桶算法和令牌桶算法都可以实现通信量整形。n漏桶算法(The Leaky Bucket Algorithm)n基本原理:图例。n在计算机中的使用n漏桶有限内部队列;水 通信量,需要发送的分组n分组到达队列时,队列满,分组被丢弃;队列空,分组被放置在队列尾。n效果n将用户发出的不平滑的分组流转变成网络中平滑的分组流。n漏桶算法既可以用于分组长度固定的协议,如ATM,使用分组计数;也可用于可变长分组的协议,如IP,使用字节计数。清华大学计算机网络net优秀 网网 络络 层层无论水流进桶的速度为多少,只要桶中有水,水从桶中外漏的速度是恒定的。桶空了,速度为零。桶满
34、了,水外泄。漏桶算法漏桶算法清华大学计算机网络net优秀 网网 络络 层层令牌桶算法令牌桶算法n由于漏桶算法不够灵活,因此加入令牌机制。n令牌桶算法 (The Token Bucket Algorithm) n基本思想:漏桶存放令牌,每T秒产生一个令牌,分组发送传输之前必须获得一个令牌,传输之后删除该令牌。清华大学计算机网络net优秀 网网 络络 层层漏桶和令牌桶的结合算法漏桶和令牌桶的结合算法计算最大速率突发时间的长度:令令牌桶容量为C字节突发时间S秒令牌到达速率P字节/秒最大输出速率M字节/秒则有:C+PS=MS S=C/(M-P) 清华大学计算机网络net优秀 网网 络络 层层漏桶和令牌
35、桶算法的比较漏桶和令牌桶算法的比较n通信量整形策略不同n漏桶算法不允许空闲主机积累发送权。n令牌桶算法允许空闲主机积累发送权,以便以后发送大的突发数据,最大为桶的大小。n桶中存放的内容不同n漏桶中存放的是数据,桶满了丢弃数据。n令牌桶中存放的是令牌,桶满了丢弃令牌,不丢弃数据。清华大学计算机网络net优秀 网网 络络 层层开环控制开环控制 流说明流说明n流说明(Flow Specification)n当发送方、接收方和子网都达成一致后,通信量整形才能发挥最佳效果。所以,一个数据流的发送方、接收方和通信子网三方认可的、描述发送数据流的模式和希望得到的服务质量的数据结构,被称为流说明。n对发送方的
36、流说明,子网和接收方可以做出三种答复:同意、拒绝、其它建议。清华大学计算机网络net优秀 网网 络络 层层闭环控制闭环控制 虚电路子网中的拥塞控制虚电路子网中的拥塞控制n方法一 n许可控制(admission control):一旦发生拥塞,就不允许再建立新的虚电路,直到拥塞解除为止。n方法二n在发生拥塞后可以建立新的虚电路,但要绕开发生拥塞的地区。n方法三n资源预留:建立虚电路时,主机与子网达成协议,子网根据协议在虚电路上为此连接预留资源。清华大学计算机网络net优秀 网网 络络 层层闭环控制闭环控制 抑制分组抑制分组n抑制分组(Choke Packets)n路由器监控输出线路及其它资源的利
37、用情况,超过某个阈值,则此资源进入警戒状态。n每个新分组到来,检查它的输出线路是否处于警戒状态。若是,向源主机发送抑制分组,分组中指出发生拥塞的目的地址。同时将原分组打上标记(为了以后不再产生抑制分组)后,正常转发。n源主机收到抑制分组后,按一定比例减少发向特定目的地的通信量,并在固定时间间隔内忽略指示同一目的地的抑制分组。然后开始监听,若此线路仍然拥塞,则主机在固定时间内减轻负载、忽略抑制分组;若在监听周期内没有收到抑制分组,则增加通信量。n通常采用的通信量增减策略是:n减少时按一定比例减少,保证快速解除拥塞。n增加时以常量增加,防止很快导致拥塞。清华大学计算机网络net优秀 网网 络络 层
38、层加权公平队列加权公平队列n由于采用抑制分组时,源端的抑制行为是自愿的。为了公平地对待自觉和不自觉的源端,就提出公平队列(fair queueing)算法。n每个输出线存在多个队列,每个源端对应一个队列,当输出线空闲时,路由器将轮巡这几个队列,从下一个队列中选出第一个字节。n由于某些服务器非常重要,就可以对每个队列采用不同的优先权。例如:可以一次机会发送两个或者更多的字节。清华大学计算机网络net优秀 网网 络络 层层Hop-by-Hop抑制分组抑制分组n在高速、长距离的网络中,由于源主机响应太慢,抑制分组算法对拥塞控制的效果并不好,可采用Hop-by-Hop抑制分组算法。nHop-by-Ho
39、p Choke Packets的基本思想n抑制分组对它经过的每个路由器都起作用。n能够迅速缓解发生拥塞处的拥塞。n要求上游路由器有更多的缓冲区。清华大学计算机网络net优秀 网网 络络 层层清华大学计算机网络net优秀 网网 络络 层层闭环控制闭环控制 负载丢弃负载丢弃n当所有上述算法都不能消除拥塞时,路由器只得采用负载丢弃(Load Shedding),将分组丢弃。n路由器可以随意挑选分组来丢弃,但还可以根据不同的服务,采取不同丢弃策略n文件传输,优先丢弃新分组,wine策略;n多媒体服务,优先丢弃旧分组,milk策略;n早期丢弃分组,会减少拥塞发生的概率,提高网络性能。清华大学计算机网络n
40、et优秀 网网 络络 层层 小结小结 拥塞控制算法拥塞控制算法n拥塞控制的基本原理n网络中存在过多分组的时候,网络性能降低,产生拥塞。n开环控制 (通过良好的设计解决问题)n拥塞预防策略:数据链路层、网络层、传输层都策略可以进行预防n通信量整形n强迫分组以某种可以预见的速率传送。n漏桶和令牌桶均可实现通信量整形。n流说明n闭环控制n虚电路网络中的拥塞控制n许可控制、绕开拥塞、资源预留n抑制分组:向源主机发送抑制分组。n为了公平,可以采用加权公平算法(字节轮巡)。n为了得到快速的抑制效果,可采用Hop-by-Hop抑制分组,抑制分组对其所经过的路由器都起作用。n负载丢弃:对不同服务采用不同的丢弃策略。清华大学计算机网络net优秀 网网 络络 层层