预备知识
我们在前面介绍动态路由协议时就提到,动态路由协议是 路由器之间相互沟通交流,传
送路由条目, 那 路由条目里 那么多参数,是都要发送嘛??
我们先来看下 一个路由表里的条目都有哪些参数 :
=====>>>
#
Destination/Mask
Cost
其余的参数都可以通过 Bellman-Ford 算法全部算出来 !!
这个 Cost 值 就需要我们再介绍下了 !
# Cost 值
其实,在路由条目传送的时候它是叫 度量值( Metric ) 但是为什么在路由表中叫
Cost 值呢 ??
====>> 其实,都一样,只不过仅仅就是在 华为设备中 就把它叫 Cost 值 ,你想这
个道理嘛, Cost 花费的意思嘛,和 度量 一个意思,就仅仅只是在设备中
叫 Cost 而已 !! 度量值 开销值 一个意思!!!!
* 哪是什么的开销呢 ???
路由条目不就是给你选择了一条路径嘛,就是你选择走这条路径的开销,花费!
就相当于我们用导航 选择道路去走,那肯定就会花费 时间呀,距离呀 精力呀等等
那你现在要选择这条路由去传递信息,那肯定也会有 花销的呀!!
* 那为什么之前 直连路由 静态开销都是 0 呢 ??
直连路由开销为 0 ?
====>>>
直连路由你先在脑海中过一下这个样子, 它就相当于,你要旅游,
结果一开家门就到了,就在眼前,所以就相当于 没咋花费,没有
开销!!
静态路由 开销也是 0 ??
==== >>>
静态路由就跟 直连路由不是一个解释了,你静态路由也是有花费的
啊,那为什么写0呢??
你知道的,静态路由是怎么配的?? 是你 “人” 手工配的啊!!!怎
么选路? 走哪里?都是你这个人 自己指定的,你决定的啊!! 已经
跟设备没有关系了,因为设备已经影响不到了,根本就没法影响
啊!! 怎么影响?? 人 能听设备的嘛 ??
人怎么配,设备就怎么走!! 完全由人影响的!!
* 哪动态路由的开销值是怎样的呢 ??
动态路由就跟上面的两个完全不一样了( 直连路由 静态路由 )因为
动态路由完全是设备自己计算决定出来的,那肯定也会有计算出多条
路径的时候呀!! 那计算出多条路径的时候,是不是就得牵扯到选
择了,怎么选路径???
开销了
因此,我们前面铺垫了那么多,为什么在动态路由详细介绍了 开销值 :
===>>>
开销值 是动态路由选路的重要依据!!!!
* 那么这个选路依据到底是怎样的???
举例 : 如果是导航的话,有时选路的依据就有很多啊, 时间,距离,烧油等
等都可以作为依据!
那开销值的评判标准是怎样的呢 :
===>> 首先,还得清楚一点:
不同动态路由协议 开销值的度量标准是不一样的!!!!
同一种动态路由协议比较 开销值!!!!
所以, 不同路由协议之间比较开销值是没有意义的,需要比较优先级!
===>>>
动态路由的选路依据 : 同一种动态路由协议到达相同目标具有多条路
径时,比较开销值,开销值最小的作为使用路径!!
* RIP 是以 跳数 作为开销值
复习下 跳数是啥 : 每经过路由器一次 跳数为 1 经过几次就为几!
我们以上图示例 :
AR1 要与 AR10 通讯, 显然有两条路,但上面的链路为 1000M
下面的链路为 100M !
那现在,倘若上面的拓扑执行的时 RIP 协议,它会怎么选??
它就选择的是 下面的链路了!!( 因为下面是 2 跳 )
但是,如果是让人来选择的话,那就选择上面的链路了,
1000 M嘛 就相当于 路很宽嘛,好走!!
因此, RIP 以 跳数作为度量值,本身选路存在不合理性!!
那现在,我们把上图做一点小小的改变,给下面的链路再增加一个 路由
器,之间的链路还是 100 M ( 就相当于 现在下面也是 3 跳了 )
RIP 会怎么办?
===>>> 如果是 人配的话,开销相似时,则 负载均衡,会把两条路径都
配置上,起到叠加带宽的作用;
RIP 也是如此 支持 等开销负载均衡
( 但是,要注意的是,要是实际上开销并不均衡时,会受到慢
的链路拖累,反而耽搁了通讯效率)
因此,本例是不适合 做负载均衡的 ( 链路带宽就不一样相差
太大) 我们只是想说明 RIP 也是支持 负载均衡!!
* 开销值 在 传送路由的时候是怎么 携带的??
我们前面说了,在传送中,携带两个参数值( 目标网段 开销值)
现在解释下 是怎么携带 开销值的 :
开销值在携带中的值等于本地路由表中对应网段的开销值 加一
示例 :
解释上图 :
现在要把 2.2.2.0/24 发给 AR4 那么就携带两个信息呀
携带 ( 2.2.2.0/24 cost = 1 ) 2.2.2.0/24 你可能好理解
携带里的 cost = 1 是怎么来的呢 ?
我们知道 开销值在携带中的值是 本地路由表中的开销值加一
而 2.2.2.0/24 在本地路由的开销值是多少 ?
是 0 啊 ( 直连路由呀!)
那么 AR4 收到后,路由表里就会多条路由
( 去往 2.2.2.0 /24 的路由 其开销值是 1 )
你验证显然正确 开销值为1 就是要经过 AR5 转发!
示例 :
现在 又由一台 AR3 路由器,那么 AR3 也需要 2.2.2.0 网段的信息,即由
AR4 的转发, 那么携带的开销值即为 2 ( 因为本地的开销值为刚才 新
增在路由表中的路由条目的开销值即为 1 啊,所以携带的开销值为 1 +
1 = 2 )
同理 当 AR3 收到后,也会添加在 自己的路由表中,显然 验证也是正确
的 cost 为 2 ; AR3 要去往 2.2.2.0 /24 的话的确是需要 经过 AR4 、AR5
两次转发!!
# RIP 优先级
刚才我们讲了一大段的 开销值,现在再顺便提下 优先级( 前面不也说了,不
同协议之间是要比 优先级的) 每个协议 设备,都是有个默认的 优先级的!
我们学过静态路由,华为设备中的默认优先级是 60 !
那么, RIP 的优先级是多少?
100
优先级 是越小越好,所以它的优先级 是比较低的,不太具备竞争力,
RIP 的设计者也是清楚 RIP 本身也是有很多问题的( 后面再讲 )
定义 RIP 就是适用于小型的拓扑网络中的动态路由协议,他给 RIP 设置了
工作半径 : 15 跳 ( RIP 不是以 跳数作为 开销值的嘛 )
也就是说 只要 RIP 的开销值超过了 15 跳, 就认为 RIP 协议是没法到达的!
开销值 为 16 跳 的时候 就 认定 该目标网段不可达!!
# Bellman-Ford 算法
DV 距离矢量型协议的,典
型的协议就像 RIP , EIGRP 协议!
该算法把 路由器相互之间收到的数据分为了以下四种情况 :
( 我们就以上示 AR5 把 2.2.2.0/24 发往 AR4 为例 )
* 情况一
AR5 发给 AR4 的路由信息时 2.2.2.0/24 网段,并且,AR1 本地路由表中并不
存在 2.2.2.0/24 网段信息 :
刷新在本地路由表中 :
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.0/24 RIP 100 1 12.0.0.2 G 0/0/0
上示所有参数即 AR4 刷新后的参数,其中 Flags 为本地参数标记,我们不做解
释; 后两个参数 其中 NextHop 就是下一跳 ( AR4 刚才所刷新的数据包,是
谁从哪个接口给AR4 发过来的,NextHop 就写哪个接口) Interface 是出接口
( 它是AR4 所收的那个数据包从AR4 的那个接口进来的,就写那个接口 )
* 情况二
AR5 发给AR4 的路由信息是 2.2.2.0/24 网段,并且,AR4 本地已经存在前往
2.2.2.0/24 网段的信息,并且,下一跳也是 AR5,则将 AR5 发送的路由信息
刷新到本地路由表中!
* 情况三
AR5 发给AR4 的路由信息是 2.2.2.0/24 网段,并且,AR4 本地已经存在前往
2.2.2.0/24 网段的信息,但是,下一跳不是 AR5 ,则需要比对 Cost 值
刷新
到本地路由表中!
* 情况四
AR5 发给AR4 的路由信息是 2.2.2.0/24 网段,并且,AR4 本地已经存在前往
2.2.2.0/24 网段的信息,但是,下一跳不是 AR5 ,则比对 开销值 ( Cost 值)
不刷新!!
总
当你充分理解上示 四种情况后,你就明白了 DV 距离矢量型协议背后所支撑的
算法是怎样的,也就想清楚了为什么 叫做 距离矢量型 协议了!
距离 : 体现在 开销值上 ( 开销就体现在 路的远近 )
矢量
下一跳 和 出接口
注 : 下一篇 RIP 主篇!