网络层路由算法

网络层主要关注,如何将分组packet从源端沿着网络路径送到目标端,其中可能要经过许多跳hop中间路由器。

数据链路层的目标是将帧frame从线的一端从到另一端。

网络层为了实现端到端的传输,必须知道通信子网(即所有路由器构成的集合)的拓扑结构,并且在拓扑结构中选择适当的路径。

 

 

路由算法Routing algorithm是网络层软件的一部分,它负责确定一个进来的分组应该被传送到哪一条线路上。

 

路由rout-----确定使用哪一条路径;

转发forward-----当一个分组到达的时候所采取的动作。

 

路由算法分为:非自适应性(静态路由)与自适应性(动态路由)

 

 

 

静态路由算法----Dijkstra算法(衡量路径长度的方法是跳数);扩散算法flooding。

 

 

动态路由算法一

扩散法flooding (军事方面运用,其他方面运用不大)

将每一个进来的分组都发送到除它进来的那条线路之外的每一条输出线路上。扩散法会产生大量的重复分组。采取一种抑制扩散方法,即跳计数器,理想情况下,跳计数器的初始值应该等于从源到目标之间的路径长度。如果发送方不知道该路径有多长的话,它可以将计数器的初始值设置为子网的长度,最坏情况下。

 

动态路由算法二

距离矢量路由Distance Vector Routing RIP内部网关协议,以跳数为衡量单位)

工作过程:每个路由器维护一张表,表中记录了当前已知的到达每个目标的最佳距离,以及使用的路线。通过与邻居之间交互信息,路由器不断更新自己内部的表,丢弃自己的旧表。

每个路由器维护一个表项,该表项包括两个部分:为了到达目标路由器首选的输出线路,以及到达该目标路由器的时间估计值或者距离估计值。

这个路由算法会有一个大问题:

无穷计算问题count-to-infinity

它虽然总是能够得到正确的答案,但是它的收敛速度可能非常慢。对于好消息反应快,坏消息(某条线路断或者某路由器崩溃)反应非常迟缓。

解决方案一:定义一个最大值作为无穷量;

解决方案二:水平分割Split Horizon(带毒性的水平分割)。自己发送给邻居的消息不能再转发给自己,减少谣言的传播。

 

 

动态路由算法三

链路状态路由Link State Routing  (广泛应用,基于IPOSPF,基于非IPIS-IS)

工作过程:

1.       发现它的邻居节点,并知道其网络地址;Hello

2.       测量到各邻居节点的延迟或开销;Echo包(假设两个方向延迟是对称的)

3.       构造一个分组,分组中包括了所有它刚刚知道的邻居节点列表信息;

4.       将这个分组发送给所有其他的路由器。

创建链路状态分组:

分组包括发送方的标识,接着是一个序列号Seq和年龄Age,一个邻居列表,对于每个邻居,给出到这个邻居的延迟。

根据所获得的全部链路状态分组,就可以构造完整的子网图了。可以在路由器本地运Dijkstra算法,以便构建出到所有可能目标的最短路径。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值