一、路由算法
二、路由协议
一、路由算法
1、泛洪算法Flooding- 泛洪算法的具体的做法:
- 不需要网络信息
- 由源节点将分组发送给其邻近结点
- 结点接收到分组之后,在除接收链路之外的所有链路上进行转发
- 最终,分组的多个备份将到达目的节点
- 每个分组有唯一的序号,以消除重复的分组
- 结点可以记住哪个分组曾被转发过,将网络负载控制在一定的范围内
- 在分组中可以包含有关跳数的信息,一般是设定最大的跳数,每进行一跳,就将该跳数减少一,知道为0的时候就不可以再跳
- 泛洪算法的特点:
- 尝试所有可能的路由,很稳健
- 可以获得最小的跳数路由,可用于建立虚电路
- 可以获得所有结点信息,用于分组转发
- 多次复制并转发分组,增加了网络负载
- 集中:路由器有全部的拓扑及链路代价的完整信息,Dijkstra算法
- 分布:路由器知道其邻居结点,以及它到邻居结点,以及它到邻居结点的代价;通过邻居结点交换信息,通过迭代逐渐获得最小代价;Bellman-Ford算法
- 静态:路由岁时间的变化缓慢
- 动态:路由岁时间的变化很快,周期性更新,随链路代价的改变而变化
- 所有结点已知网络拓扑及链路代价;通过“链路状态广播"获得;所有的节点具有相同的信息
- 计算从一个源结点到其他结点的最小代价路径;给出对应结点的转发表
- 迭代:经过K此迭代,获得k个目的节点的最小代价路径
- 如果到达同一个目的的距离相同,但是经过的点不同,那么就选择最新的;感觉表中的都是下一跳(废话,不是下一跳路由表难道不就没有意义了!!!!)
4、距离矢量算法,Bellman-Ford算法
- 核心思想是根据其他的节点来更新自己
- 取最小的结点作为最短路径上的下一条-》转发表
- 迭代:出发迭代的原因:链路的代价变化;收到邻居的DV更新消息
- 异步:各节点独立计算,无需同步
- 分布式:只有当其DV改变时,才发送消息通知邻居;邻居再发消息通知其邻居结点
- 因为一般链路的代价是不变的,所以出发迭代是DV的改变,而DV指的就是距离矢量,也就是最短的,所以是当某结点的路由表法神改变的时候才向周围结点发送进行更新 ;而不是距离矩阵改变就想周围发送
二、路由协议
1、路由信息协议(RIP)- RIP是一种基于距离矢量的分布式路由协议
- 每个路由器维护其到每个目的网络的距离记录
- 定义:路由器到直连网络的距离为1,到非直连网络的距离为中间路由器的个数加上1,距离也成为跳数,选择具有最少跳数的路由
- 一条路径最多只包含15个路由器,距离为16的时候表示的是不可达
- 仅与相邻路由器交换路由表信息,路由表的信息为:目的网络 跳数 下一跳(其实与转发表也没有太大的差别)
- 按固定的时间间隔交换路由信息,例如每隔30秒
- 距离矢量算法
- 收到相邻路由器地址为X的RIP报文
- 修改此RIP报文中的所有项,将下一跳改为X,距离都增加1
- 如果在路由表中有的项那么就不变,如果有的目的地址RIP中有但是在路由表中没有的,那么就将RIP中的项增加到路由表中,得到新的路由表
- (选择最新原则)如果RIP的目的地址在路由表中,如果下一跳相同,那么用RIP的项代替路由表中的项(可能是因为该算法保证 了得到最新的RIP中的项为最小跳数的);如果目的地址相同下一跳不同,那么就选择跳数少的(总之就是跳数相同选最新,否则选择最少跳数的)
- 若三分钟为收到相邻路由器的更新路由表,则将此路由器记为不可达,即将距离设置为16(因为路由表中要有到达所有网络应该怎么走,如果某个路由器不给信息, 那么说明可能有些目的的路由就得不到,所以为了防止无限等待,就将距离设置为不可达)
- 返回
- RIP协议的特点:
- RIP协议采用广播或者组播进行路由更新,RIPv1使用的是广播,RIPv2使用的是组播
- RIP协议允许主机只接收和更新路由信息而不发送信息
- RIP协议支持默认路由
- RIP协议的网络不超过15跳,适合中小型网络
- RIPv1是有类的路由协议;RIPv2是无类(IP地址+掩码)路由协议,即RIPv2的报文中含有掩码信息
- RIP协议的问题:无穷计算
- RIP协议存在好消息传的快,坏消息传的慢的特点
- 当某个机器启动的时候,其消息会马上发送给其他的主机
- 但是当某个机器关机,由于其他的主机得不到这个信息,也就得不到完整的路由信息(也就是关机的主机的路径信息),那么就会无限重复计算
- 解决的方式:将无穷大的路由器的跳数设置为最大跳数+1;禁止路由器C向路由器B发送一个从邻居B获得的最佳路径
- LS的路由器的工作过程:
- 发现邻居结点:使用hello信息
- 测量链路代价
- 创建链路状态分组,定时或者发生时间时创建
- 发布链路状态分组:可靠发布
- 计算新的路由:采用最短路径算法
- LS的具体算法OSPF算法:
- 使用扩散法向所有(而不只是临近)路由器发送与其相邻路由器的链路状态
- 当链路状态发生改变时发送信息
- 定期(至少30分钟)发送一次
- 算法
- 主动测试邻接结点的状态
- 将与其相邻结点的状态信息传送给所有的节点
- 每个节点获得完整的网络拓扑信息,完后Dijkstra最短路径算法计算到每个节点的最佳路径
- 基本操作:物种分组类型:问候、链路状态描述、链路状态请求、链路状态更新、链路状态确认(ACK,所以是可靠的)
- OSPF特点:
- OSPF的数据报很短,减少路由信息量
- 每隔一段时间,刷新一次链路状态
- 由于一个路由器的链路状态值涉及与相邻路由器的连通状态,而与互联网的规模没有直接关系。当互联网的规模很大时,OSPF协议要比 距离向量协议RIP好很多
- OSPF没有好消息快,坏消息慢的特点
- DV仅与邻居交换信息,但提供到其他结点的DV的估计;而LS与网络所有结点交换代价信息,每个节点获得网络拓扑及链路代价的全部信息
- 发送的报文数:LS为N*E数量级,变化一个全部交换;DV是在邻居结点之间交换,变化则再交换
- 收敛时间:LS为n*n,DV的收敛时间收到很多的影响,一般较长
- 稳健性:LS为分别计算,一个错误不会影响全局,稳健;DV,一个结点的计算错误,会在结点之间扩散,影响整个网络,稳健性差