sdn默认路由算法与拥塞相关问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sdn默认路由算法与拥塞相关问题相关的知识,希望对你有一定的参考价值。
SDN默认的路由算法是迪杰斯特拉算法吗?
SDN在拥塞控制方面相比与传统网络有哪些优势呢?
了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动
(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传
(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了
改进,近些年又出现了选择性应答( selective acknowledgement,SACK)算法,还有其他方面的大大小小的改进,成为网络研究
的一个热点。
TCP的
拥塞控制主要原理依赖于一个拥塞窗口(cwnd)来控制,在之前我们还讨论过TCP还有一个对端通告的接收窗口(rwnd)用于流量控制。窗口值的大小就
代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那
么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。TCP的拥塞控制算法就是要在这两者之间权
衡,选取最好的cwnd值,从而使得网络吞吐量最大化且不产生拥塞。
由
于需要考虑拥塞控制和流量控制两个方面的内容,因此TCP的真正的发送窗口=min(rwnd, cwnd)。但是rwnd是由对端确定的,网络环境对其
没有影响,所以在考虑拥塞的时候我们一般不考虑rwnd的值,我们暂时只讨论如何确定cwnd值的大小。关于cwnd的单位,在TCP中是以字节来做单位
的,我们假设TCP每次传输都是按照MSS大小来发送数据的,因此你可以认为cwnd按照数据包个数来做单位也可以理解,所以有时我们说cwnd增加1也
就是相当于字节数增加1个MSS大小。
慢
启动:最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始
就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,cwnd初始化为1个最大报文段
(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS大小。这样cwnd的值就随着网络往返时间
(Round Trip Time,RTT)呈指数级增长,事实上,慢启动的速度一点也不慢,只是它的起点比较低一点而已。我们可以简单计算下:
开始 ---> cwnd = 1
经过1个RTT后 ---> cwnd = 2*1 = 2
经过2个RTT后 ---> cwnd = 2*2= 4
经过3个RTT后 ---> cwnd = 4*2 = 8
如果带宽为W,那么经过RTT*log2W时间就可以占满带宽。
拥
塞避免:从慢启动可以看到,cwnd可以很快的增长上来,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制。
TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。对于大多数TCP实现来
说,ssthresh的值是65536(同样以字节计算)。拥塞避免的主要思想是加法增大,也就是cwnd的值不再指数级往上升,开始加法增加。此时当窗
口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的
最佳值。
上面讨论的两个机制都是没有检测到拥塞的情况下的行为,那么当发现拥塞了cwnd又该怎样去调整呢?
首
先来看TCP是如何确定网络进入了拥塞状态的,TCP认为网络拥塞的主要依据是它重传了一个报文段。上面提到过,TCP对每一个报文段都有一个定时器,称
为重传定时器(RTO),当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的可能性就很大,某个报文段
可能在网络中某处丢失,并且后续的报文段也没有了消息,在这种情况下,TCP反应比较“强烈”:
1.把ssthresh降低为cwnd值的一半
2.把cwnd重新设置为1
3.重新进入慢启动过程。
从整体上来讲,TCP拥塞控制窗口变化的原则是AIMD原则,即加法增大、乘法减小。可以看出TCP的该原则可以较好地保证流之间的公平性,因为一旦出现丢包,那么立即减半退避,可以给其他新建的流留有足够的空间,从而保证整个的公平性。
其实TCP还有一种情况会进行重传:那就是收到3个相同的ACK。TCP在收到乱序到达包时就会立即发送ACK,TCP利用3个相同的ACK来判定数据包的丢失,此时进行快速重传,快速重传做的事情有:
1.把ssthresh设置为cwnd的一半
2.把cwnd再设置为ssthresh的值(具体实现有些为ssthresh+3)
3.重新进入拥塞避免阶段。
后
来的“快速恢复”算法是在上述的“快速重传”算法后添加的,当收到3个重复ACK时,TCP最后进入的不是拥塞避免阶段,而是快速恢复阶段。快速重传和快
速恢复算法一般同时使用。快速恢复的思想是“数据包守恒”原则,即同一个时刻在网络中的数据包数量是恒定的,只有当“老”数据包离开了网络后,才能向网络
中发送一个“新”的数据包,如果发送方收到一个重复的ACK,那么根据TCP的ACK机制就表明有一个数据包离开了网络,于是cwnd加1。如果能够严格
按照该原则那么网络中很少会发生拥塞,事实上拥塞控制的目的也就在修正违反该原则的地方。
具体来说快速恢复的主要步骤是:
1.当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络。
2.再收到重复的ACK时,拥塞窗口增加1。
3.当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。
快速重传算法首次出现在4.3BSD的Tahoe版本,快速恢复首次出现在4.3BSD的Reno版本,也称之为Reno版的TCP拥塞控制算法。
可
以看出Reno的快速重传算法是针对一个包的重传情况的,然而在实际中,一个重传超时可能导致许多的数据包的重传,因此当多个数据包从一个数据窗口中丢失
时并且触发快速重传和快速恢复算法时,问题就产生了。因此NewReno出现了,它在Reno快速恢复的基础上稍加了修改,可以恢复一个窗口内多个包丢失
的情况。具体来讲就是:Reno在收到一个新的数据的ACK时就退出了快速恢复状态了,而NewReno需要收到该窗口内所有数据包的确认后才会退出快速
恢复状态,从而更一步提高吞吐量。
SACK就
是改变TCP的确认机制,最初的TCP只确认当前已连续收到的数据,SACK则把乱序等信息会全部告诉对方,从而减少数据发送方重传的盲目性。比如说序号
1,2,3,5,7的数据收到了,那么普通的ACK只会确认序列号4,而SACK会把当前的5,7已经收到的信息在SACK选项里面告知对端,从而提高性
能,当使用SACK的时候,NewReno算法可以不使用,因为SACK本身携带的信息就可以使得发送方有足够的信息来知道需要重传哪些包,而不需要重传
哪些包。
计算机网络学习笔记——网络层虚电路和数据报交换路由(距离矢量链路状态算法)IP编址网络拥塞控制网络互联
文章目录
前言
笔者系电子科技大学2019级在读本科生,针对本学期学校开设的计算机通信网课程,将学习笔记以博客形式上传到CSDN上以便日后复习整理,其中的瑕疵欢迎大家向我指正,在评论区多多交流讨论。(考后整理笔记,这波是《朝 花 夕夕夕夕夕 拾》)
概念
一、网络层相关概述
(一)三大核心功能
- 路由功能
- 拥塞控制
- 网络互联
(二)通信两大阵营
(1) 电信-网络复杂,终端简单;面向连接;通信子网为主干,客户端为接入
(2) IETF-网络简单、高效,终端复杂;对等的互联结构
二、交换技术
(一)交换技术的分类
(二)电路交换和分组交换
🔺交换是路由功能的基础
电路交换和分组交换对比
电路交换(时分复用,各通信放在各时隙):
(1) 通信期间具有一条专用的线路
(2) 通信三阶段:呼叫、维持、拆除
(3) 面向流,数据在经过交换节点时只有传播延迟
(4) 不适合现代计算机处理
分组交换:
(1) 以分组为单位,将数据切分成较小的分组(分组过小会增加开销)
(2) 各分组在每个节点上独立存储转发,逐站寻径
(3) 分组经过节点时有存储转发延迟和寻径的延迟
比较:电路交换透明性强,分组交换适应性强,带宽利用率高
时序图
端到端的延时计算
(1)电路交换
(2)分组交换
(三)虚电路与数据报
数据报交换——标准的分组交换技术(无连接)
————存储转发,逐站寻径(查路由表)
(1) 存储转发:需要提取地址信息再查表,路由器需要校验分组,产生传输延时:存储后再转发
(2) 逐站寻径:理论上对资源的最大利用;源同目的的不同分组传输路径可能不同;可以临时避开“坏道”;可能存在乱序;产生寻径延时
虚电路交换——(面向连接)传输时带上虚电路号可以替代分组的源、目的地址
(1) 虚电路表表项只需要保持当前连接,规模小,查表快
(2) 利用索引号可以获得高速查表速率
(3) 虚电路的连接建立就是各节点根据“连接建立请求”查询路由表;连接拆除,各节点删除虚电路映射表
虚电路小结
(1) 缩小查表规模,提高查表效率
(2) 需要面向连接的支持,路径固定不灵活,首份分组的延时大
(3) 虚电路可以进行差控和流量控制
(4) 虚电路不一定与信道资源相关,不需要专用信道
数据报交换的发展
(1) 快速转发表
特殊硬件(cache等)、快速算法、仅放入当前正在通信的少量源、目的地址对
(2) SDN——流标记
(3) 多标签交换——MPLS
边缘路由器查询路由表,算出路径,分配“标签”;核心网路由器按标签(查标签表)进行交换
三、路由
(一)路由功能概述
路由功能要素:
- 编址和寻址
- 路由的最优化原则
- 路由表
- Routed,转发技术
- 路由选择算法及特征
路由核心:把分组送上“最优路由”。
路由的最优化原则——收敛法则
- 若J位于从I到K的最优路径上,则从J到K的最优路径也位于之上——收敛性。
路由表要素
- 目的
- 下一站地址——根据最优化法则,不需要记录路由的完整序列,也不用告诉后续路由器这条路径。
- 连接接口号
- 度量
路由选择问题的复杂性
- 存在多条路径
- 最优路径随网络拓扑变化而变化——可能问题-变化了不更新:断路或环路;变化了立即更新:路由振荡。
- 网络结构一般是逐级汇聚的——可能造成网络拥塞
路由选择技术分类
(1)表驱动路由
- 事先计算好节点之间路由表。
- 根据路由表进行PDU转发。
(2)按需路由
- 仅在需要转发分组时,才发起路由查找过程,生成路由。
- 或者路由表中没有目的地路由时。
- 多用于拓扑变化频繁的无线网络。
表驱动路由技术
- 静态路由——路由表的路由不自动改变,除非人工改变。
- 独立路由——路由自动变化,但不与其他路由器交流路由信息。
- 动态路由——路由随网络拓扑变化而自动变化
- 集中式路由——中心路由器计算
- 分布式路由——每个路由器分别计算路由(链路状态算法、距离矢量算法)
(二)IP编址和寻址
IP地址——点分十进制法
地址由网络号+主机号形成,网络号是路由器寻址的主要判决依据。
IP地址分类
D类、E类地址
判断IP地址的类别——地址首个字节的数值
A:0~127
B:128~191
C:192~223
D:224~239
无分类地址
- 子网:将分类网络划分为更小
- 超网:将几个连续的分类网合并成一个更大的网
网络号的计算方法——IP地址和掩码按位相与
子网掩码特点
寻址模型
IP设定的网络节点模型中,每个接口有一个不同的IP地址
- 每个路由器就拥有了多个网络地址
IP地址的编址规范
- 互联网设备和上网计算机均统一编址
- 一个节点至少一个IP地址:路由器一个网络接口连接一个不同的网络;每个接口一个IP地址
寻址与转发
- 物理网内,依靠物理网自身机制
- 路由器在两个网络之间,根据目的地地址选择路径并转发
- 需要一种机制在IP地址和物理网地址之间进行映射
①ARP,广播询问,知者应答
②HSS,询问HSS服务器,获得IP地址对应的物理网地址
🔺转发过程中,经过交换机:数据包MAC、IP地址不变;经过路由器:数据包源目的MAC地址改变、IP地址不变
(三)寻径与转发
路由表类型
- 基本信息表(本地表)——直接相连的节点
- 路由信息表(库)——收集到的路由信息
- 数据转发表(Forwarding Table)——多数时又称路由表,由前两者组合而来
①最佳路由
②缺省路由(Default Route)
查表方法
- 最短适配:从高地址部分开始适配,即从最大范围开始,然后缩小范围
- 最长适配【IP使用】:从低地址部分开始适配,掩码最长的地址开始匹配,即从最接近主机的路由开始,逐渐增大范围
- 其他查找算法:顺序、折半、哈希……通常与最短最长配合使用提高效率
- 完整适配:逐个全址比对——效率低
①多条同目路由:按最佳、公平、稳定等原则选择
②多条同目同值路由:可考虑负载均衡
最长适配原则——从子网掩码最长的开始比较,做到“尽可能精确”
(四)不同类型的路由
1、静态路由
关键:不测量也不利用网络信息,而是采用固定规则选择路由
- 路由表由人工设置,事先由人工计算出最优路径,路由表不会自动改变
- 网络变化时,人工修改路由
- 简单,灵活性差
- 适用于小型、简单网络
2、独立路由
(1)洪泛(flooding)——将PDU转发到其余所有接口
- 目的节点受到多个重复报文
- 不需要网络拓扑信息
- 优良的健壮性
- 可用于广播
- 防止无休止的转发PDU——PDU生命期(TTL,Time To Live)
- 网络负担重,开销大,小网可用
- 适合树型,星型网络
- 数据冗余量太大,会在会路上无限循环
- 减轻泛射冗余量的方法
①不向来路转发
②延迟发送——比较接收报文(序号)以确定重复
③丢弃超时报文——报文生存时限
④丢弃重复报文——报文序号
a.(不转发重复报文最显著减少冗余信息量)
b.(不转发过时信息实现难度和开销最大)
(2)随机路由——从多个(能到达目的地)出口随机选择一个转发
- 随机概率的设定——根据信道负载
- 特点
①不需要网络拓扑信息——网络结构无关性
②每次路径随机变化
③适合树型、星型网络
④一般不单独使用,配合其他协议-如,达到多条路径负载均衡时进行随机路由
(3)最短等待法——根据接口当前状态选择队列长度最短(链路度量权值、链路通断等)的出口
一般不单独使用,配合其他协议——避免拥塞、多条路径的负载均衡等
(4)反向地址学习
- 记录分组中的源地址和接收接口
- 分组中增加距离记录,每经过一个节点,距离加1,供反向学习选择最佳路由
- 特点
①自适应路由算法,能逐渐形成最佳路由
②动态适应新节点的加入
③对节点、链路故障反应迟钝
④使用拓扑稳定的小型网络
3、中心路由(集中路由)
中心路由(集中路由)
工作方式:各节点定期把自己的信道、相邻节点的情况报告中心路由计算机,由计算机算出各节点到其余节点的最佳路由,然后把路由表分发到各个节点上。
特点:
- 能形成最佳路由——理想路由(收敛性最高)
- 路由信息上报、更新、同步困难
- 中心节点可靠性影响全网
SDN——软件定义网络(Software Defined Network)
- 将路由的控制和执行分离🔺
①SDN域控制器生成各路由器(交换机)的流表
②由OpenFlow协议将流表发布到各SDN交换机 - 传统路由器既包含路由的建立(控制),也包含按路径的转发(执行)
OpenFlow是控制器与转发器之间的通信接口标准
- 此标准上控制器和转发器可以是不同厂商,不同设计的设备
- 转发器专注于快速的交换
- 控制器专注于复杂的路由策略,为转发器生成流表
- 应用与控制器之间也有此思路
①应用通过开放API向控制器提出公众与路由有关需求
②应用还可以通过开放API修改、更新控制策略
4、分布式路由
(1)分布式算法
- 各路由器各自计算路由
- 可靠性高、扩展性强、以局部最优代替全局最优——全局优化计算复杂
- 全网路由理论上是收敛的(收敛法则反证),但工程实践中存在不收敛的风险(如交换路由信息不及时等)
(2)分布式动态路由
基本原理
- 各路由器主动与其他节点交换信息——路由协议
- 节点独立计算最优路由——路由算法
- 不断更新路由信息,不断改变路由以适应变化——动态
工程实践风险点
1. 交换的路由信息可能不及时:不全、过时——导致不收敛
2. 交换的信息越详细、交换的频率越快,路由信息一致性就越好,网络的额外开销越大
3. 在额外开销和反应速度间寻找平衡
(3)常见的分布式路由算法:
基于网络距离的分布式路由算法——距离矢量法
基于信道状态的分布式路由算法——链路状态法
(五)两种重要的路由算法
1、距离矢量算法
距离矢量
- 矢量(距离、方向)
①方向——下一跳
②距离——路由的度量(两部分,我到邻居的距离+邻居到目的的距离)
- 路由表的每一项都是一个距离矢量
距离矢量算法步骤
- 初始化——各节点形成本地路由信息表,即邻接路由器表
- 扩散路由信息——各节点向邻居节点扩散路由表
- 计算路由——各节点根据邻居扩散来的信息,计算路由
距离更新=我到邻居的距离+邻居到目的的距离 - 不断扩散,不断计算——各节点定期不断扩散
2、距离矢量算法分析
特点
- 只与邻居节点交换路由信息
- 各节点独立计算最优路径
- 能适应网络拓扑的变化
- 稳定后,形成最短路径
- 算法简单
无穷计数问题
无穷计数问题无法解决,但可以通过一定方法降低其发生的概率
①水平分割技术
节点没有必要将从某节点收到的信息再回传给该节点——减少多余信息,在某些时候可能降低错误概率
②毒性反转技术
将水平分割技术中去掉的冗余信息改为无穷大,阻塞回来的路径
距离矢量算法缺点
- 网络的变化扩散到全网速度慢
①容易引起连锁反应,产生大量更新——过度依赖“别人的正确”
②产生路由更新的振荡——更新一点,发布一点 - 路由收敛速度慢
收敛速度——全网重新统一的速度 - 容易形成路由环——在网络变化未扩散完全时
3、链路状态算法
特征:向全网宣告“相邻”,不同于距离矢量算法:向相邻宣告全网
步骤
- 与全网所有节点——交换临近链路质量
- 充实路由信息库——各路由器各自绘制出网络拓扑
- 计算路由表
工作方式:
- 每个节点测试相邻节点,得到每条链路状态(延时)初始值
- 每个节点定期和所有节点交换自己的链路状态
- 根据收集到的各节点的链路及状态,计算到其他节点的路径
最小延时路径-》最短路径-》最佳路由
链路状态算法关键理解
- 链路状态——用链路的质量评估链路状态:包括延时、节点数量、距离、速率、带宽、可靠性等。常用链路的延时作为链路质量的度量。
- 为什么常用线路延时作为链路质量的主要指标
①延时比路径上的节点数更能反映网络和信道实际状况
②具有一定的综合性,影响延时的指标比较多
③延时容易测量——从发出PDU到收到应答来测量延时及变化 - 如何测量线路延时
①利用echo分组的往返延时来评估
②是否计入载荷——从开始排队等待发送算起or开始发送信号算起
③动态变化——怎样平滑多次测量的不同结果
计算最佳路由——图论算法中的各种路由算法
链路状态算法特点
- 能适应网络拓扑的变化,稳定后能形成最短路径
- 各节点独立计算最优路径——一致性、准确性有较好保证;不是建立在其他节点的计算结果以上
- 收敛速度快——适合大网使用(由于扩散完再计算,计算结果和过程不影响扩散,同时不依赖于其他节点的计算结果)
- 算法复杂,存储空间需求大
①扩散过程需要特别控制以降低信息冗余量
②需要记录全网所有链路状态,算法实现逻辑复杂 - 可用于大规模网络
4、链路状态算法和距离矢量算法的比较
(六)分级路由体系
简化:不在域间暴露域内路由细节,只有可达性的信息
抽象:将一个网络抽象成一个“节点”
归并:IP网络的“超网”,将多个网络归并称一个超网,域间只有一条路由
策略路由
负载分担路由协议
①按一定策略同时使用两条以上的路径
②如根据源地址,业务类型决定走不同路径——不仅是根据目的地址
③或平均分配——轮流使用、按宽带分配、随机分配……
应用场景
多种接入方式的融合——WiFi、LTE、卫星、有线……
(七)组播、移动路由
网状拓扑广播的关键问题:网状拓扑上拥有很多回路
广播实现方法
- 向每个目的单独各发送一份拷贝
- 有控制的洪泛
- 多目的分组路由
①将所有站点分成多个组
②广播分组带有所有希望的目的地址,分组投放
③路由器选择适当路由,经过该组的所有站 - 生成树(STP)
①将网络拓扑简化为树状
②按树的路径
③没有回路
多播树(多点播送树)
- 有源树
组播组里,每个发送源都形成一颗组播树;即每个源一个树表
- 共享树
①组播组里,大家遵循一颗组播树——共享树
②组播源站先将数据发送到共享树的根节点,由根节点再沿着树,转发数据
③减少树表的数量,节省空间,但转发路径和开销不是最优
组播树上转发方法——反向路径转发法
①路由器收到组播分组时,在树表中查本机到达源地址所用接口
②若收到分组的接口与查到的接口一致,则转发;不一致则丢弃(避免多次重复转发)
关于主机移动的路由策略——重定向的路径可以不经过原先的本地代理。
无限多跳路由技术
四、网络拥塞
(一)网络拥塞概述
排队论中平均到达速率小于平均服务速率时,也会出现排队
拥塞无法自愈——一个点的拥塞会向全网蔓延,需要尽快找到源头控制
拥塞的两种控制策略
- 开环策略:不使问题出现的方法
预防和避免拥塞
- 闭环策略:问题可能出现,通过反馈进行控制
检测和解决拥塞
开环策略及方法(开环策略:不使问题出现,代价太大)
- 缓冲区预分配给用户
- 网络分组定额控制
- 分组丢弃——丢弃超过限度或容量的分组;随机丢弃用户分组,降低总负载
闭环策略及方法
- 拥塞的检测
①路由器参数的持续性陡升
线路利用率——负载率上升,利用率下降
缓冲队列长度
分组因缓存满的丢弃率
②源端感知
应答分组返回时间的加大
要求重传次数增多
③目的端感知
流量的下降
丢包率的上升 - 拥塞的反馈
隐式反馈——立足于自己的观察结果,如确认分组的延时加大
显示反馈——从拥塞点向源端发出警告信息 - 拥塞解除的常用措施
增加线路、设备
另选路径——分散流量到不同路径
拒绝为新用户服务——较严重时
降低对当前用户的服务质量,要求源降速——严重时
丢弃拥塞点内所有的分组,载荷脱落——特别严重时(最坏的方案)
(二)网络拥塞控制技术
1、网络供给调整
- 思路:增加网络供给,缓解拥塞
- 方法
冗余——冗余线路或设备
增购——向运营商购买更多带宽
升级——长期观察后,对承载流量大的线路或设备进行升级 - 特点:长期演进
2、流量感知路由
- 思路:改变路由的度量,重新选路;重新选路绕开拥塞点
- 方法:将负载和度量关联起来
- 问题:
①简单改变负载容易导致路由振荡
②把不同负载均匀地加载到不同链路上需要时间逐步调整——流量工程
3、准入控制
- 思路:
如果链路只能容纳10条虚电路的带宽,那么第11条就不允许建立了;结合流量感知,让第11条路换个路径 - 方法:
通过虚电路或“流”,将控制准确施加到具体的对象
流说明——描述流的带宽需求
流量整形——将流尽量整形成匀速
通过观测用户过去行为,预估用户流量特征,从而可以估算准入的虚电路数量
4、流量整形
- 基本思想
强迫分组以某种可预见的速率传送
调整用户数据为可控的匀速速率 - 方法
流说明:①用户与网络之间协商控制参数;②允许传输速率、突发特性、丢失允许情况
漏桶算法:①设置足够缓冲;②可以任意速率接收用户数据,但是以匀速间隔向网络注入定量数据
5、流量限制
- 思路
预测快要拥塞了,像源端发送抑制分组,让源调整流量减速 - 方法
路由器通知——各路由器都要发送抑制分组,对源的抑制过狠
目的端通知——反应速度过慢
逐跳后压——可能导致过早的形成拥塞
6、负载脱落
- 思路
路由器来不及处理分组,快发生拥塞时,将这些分组丢弃 - 方法
①牛奶策略:保留新分组,丢弃老分组
适用:老分组作用小,比如实时视频
问题:就分组可能就要超时,源头马上重传,丢弃无意义
②葡萄酒策略:保留老分组,丢弃新分组
问题:由于分组按序使用,接收到被丢弃的分组的后续分组依然无法使用
③重要性策略:分析不同应用确定分组的重要性,或者由用户自己标定
问题:用户可能“贪婪”,全部标记为“重要”
④随机丢弃策略:提前随机丢弃分组,会导致发送方降速(由于TCP拥塞控制导致降速)
(三)网络服务质量
描述服务质量
-
流
端到端的数据序列看作一个“流”
流面向“应用”的
流可管,可控
流的概念在不同层可以不同——多数是指传输层的流
-
服务质量QoS与流的描述——指标化、等级化、量化
①典型参数指标
②不同应用的质量需求不同
恒定速率(电话、视频监控)
实时可变(压缩的视频会议)
非实时可变(视频点播)
可用(文件)
③实现方式
用户传输前设定
期望值和可接受的值
选项协商 -
规范进入网络的流量
①流量整形——先约定,后监管
②漏桶、令牌桶
利用缓存区
漏桶在出口定时取定量
令牌桶入口处包括一个恒定速率的、可积累的令牌流(限定一定范围B),出口可不恒定 -
调度资源满足流质量的需求
①从流质量需求——》虚电路确定路由器及接口——》接口队列调度
②算法
[1] FIFO,公平队列算法
[2] 加权公平队列
Fi = max(Ai,F(i-1))+ Li/W
W:权重,希望给予更高优先级
Ai:到达时间
Li:帧长
本来到达时间Ai越晚,帧长Li越大,服务Fi越晚,将Li取权值,可以提前服务
[3] 赤字循环、时间戳算法…… -
安全地接收更多流量
准入控制——保障不会发生拥塞-安全;而非信息数据安全
-
资源预留协议
(RSVP,Resource reSerVation Protocol)
适合电视会议,视频点播地多点播送拥塞控制
多源对多组接收
接收者可自由切换“频道”
-
区分服务
①区分:对不同类别的业务,采取不同服务方式
②快速型转发
将业务区分为常规业务、快速业务
快速业务预留更多的带宽
快速业务在拥塞时,仍然得到保障
③确保型转发
分组带有优先级区分标记
路由器对应有多条队列
确保优先级队列分组的处理
五、网络互联
(一)网络互联概述
关键问题:影响网络性能的主要参数在各网络中不同,是网络互联问题复杂性的主要方面
网络的差异因素
1、服务不同
虚电路+数据报——》更像数据报的网络(数据报更是一种底线策略)
2、协议不同
就算功能相似,但是:帧格式不同;操作过程、处理方式不同……
3、寻址方式不同
地址结构和编址不同;地址之间的映射关系复杂
4、是否支持组播和广播
如:电话网络不支持广播,也无法迁移过来ARP的广播方式寻址
5、MTU(Max Transmission Unit)不一样
[1] 影响MTU的参数:编码方式、传输方式、误码率,时钟……
[2] MTU的产生
硬件:①TDM下的时隙长度;②存储转发时缓冲区的大小
操作系统:软件编写最大程度适应系统能力,8、16、32位
协议:①ATM规定了固定信元长度②IP:长度字段为2字节,最长为65536(或65536-1)字节
遵从某种标准:千兆以太网的最大帧长遵从10兆以太网的规定
①差错处理上MTU缩小错误影响范围
②共享信道上MTU防止分组占用信道时间过长
[3] MTU对网络互联的影响
必须将较长的数据包分段,以在MTU较小的网络中传输
分段技术
① 透明分段:数据包进入网络时,第一个网关将其分段,出口处网关进行重装
② 不透明分段:进入网络时第一个网关分段,最终目的地负责重装分段,递交给高层
技术:分段编号技术、分段重装技术
[4] 透明分段和不透明分段的比较
🔺IP网络采不透明分段
6、是否支持服务质量保障、差错控制、流量控制、网络安全、工作参数、记账管理方式用的是不透明分段
互联方式
[1] 连锁虚电路——各网络中的虚电路连接起来,建立从源到目的的虚电路
连锁虚电路性能继承网络中最差的那段虚电路
如何协调不同的工作参数
连锁虚电路连接维持率=pn
[2] 无连接互联(IP网络采用的方式)
尽力传输,逐站寻径体现灵活性,对网络互联多样性(无连接、面向连接……)适应力更强
互联网层面较难提供服务质量的保障
协议实体间虚通信规则——异构系统互联的理论基础
[1] 对等实体才能通信
[2] 每一个实体,一定有一个对等实体存在
[3] 对等实体之间依靠底层服务,同时底层实体的不同可以对高层屏蔽
(二)网络互联技术
1、协议转换技术进行互联
2、隧道技术实现互联
理论基础——透明通信
两个同构网络之间是异构网络提供服务——异构网建立隧道传输数据
🔺可以把隧道两端的网络视作上层,隧道是下层
3、协议转换技术实现互联
隧道技术的缺点:
只适应两个相同网络之间通过第三方网络互联:需要互联的望楼并不个个相同;每两个需要互联的网络之间建立隧道:n(n-1)/2——O(n2)
1、协议覆盖方式——上层寻求统一
[1] 分层结构中上下层透明通信原则和各层独立性原则
[2] 具备统一的上一层、下层和本层可以不同(覆盖层具备一定的选路功能和与不同底层网络实体适配的能力)
网络IP化
覆盖技术利用网络层的路由功能实现网间互联实现O(n-1)
2、OSI和TCP/IP模型不同的互联思想
OSI思想:
[1] 为网络互联处定义标准的接口模型
[2] 网络接口符合接口标准的网络成为开放系统
TCP/IP思想:
[1] 协议覆盖
网络层以上是同一种协议——TCP/IP
TCP/UDP上层应用丰富(被广泛推广的重要原因)
[2] IP协议具有分层地址结构,适合大规模组网
[3] IP协议向下定义了灵活的网络接口层-适应网络的多样性
[4] IP协议簇中有很实用的路由选择协议
[5] TCP/IP协议源码公开
六、网络层实例:IP协议、IPv6协议、LTE等
TOS:标识不同的服务
Identifier:唯一性标识,识别不同的分组,便于重装同一个IP的分组
Flags:特殊控制
HCS:头部校验——校验和法
Protocol:上层实体的协议
IPv6更大的地址空间,头部长度固定,便于硬件快速交换
网络虚拟化
NFV——网络功能虚拟化
①在x86结构下,采用开放的标准和软件结构,灵活实现和配置各种网络功能
②用计算机来虚拟化各种网络设备
参考资料
中国大学MOOC电子科技大学计算机通信网络
计算机网络(第五版) 清华大学出版社 严伟、潘爱民 译
以上是关于sdn默认路由算法与拥塞相关问题的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络学习笔记——网络层虚电路和数据报交换路由(距离矢量链路状态算法)IP编址网络拥塞控制网络互联
计算机网络学习笔记——网络层虚电路和数据报交换路由(距离矢量链路状态算法)IP编址网络拥塞控制网络互联
SDN之QoS--4: 基于蚁群算法实现多约束下的路由下发策略