justin bieber纹身:CCNP分析:链路状态泛洪扩散分析(一)

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 04:47:42

CCNP分析:链路状态泛洪扩散分析(一)

时间:2008-05-08 来源:思科注册网 作者:

链路状态泛洪扩散分析(一)
当一组路由器启动链路状态路由协议后,初始状态时它们相互之间需要建立邻居关系.这个过程被称之为”邻居发现”.该过程是通过HELLO协议来完成的.HELLO协议定义了HELLO报文的格式和交换并处理报文内信息的过程.
在依靠HELLO协议完成了建立邻接关系的过程后,路由器开始在网络中发送LSA(链路状态通告).该发送是以泛洪方式传播,那么由此得知,这些LSA通告将会被发送到每个邻居,接收路由器保存并依次向每个邻居转发(除始发路由器外)
一旦网络拓扑发生改变,得知改变的路由器将会立刻向外通告LSA.
这也是链路状态路由协议优于距离矢量协议的原因.LSA几乎是立即被转发,而距离矢链路由协议需要经过一系列的算法并更新自身的路由表,在时间的比较上,距离矢量协议就差了很多.因此,在网络拓扑发生改变的时候,链路状态路由协议的收敛速度比距离矢量要快很多.

泛洪扩散从某种意义上来说,也是链路状态协议的核心.是最复杂的一部分.本文主要内容是讨论链路状态路由协议的泛洪扩散中两个极其重要的过程:排序和老化.

一.排序
可以先想象一下,在一个运行链路状态协议的网络中.一台路由器向外发送了LSA,当所有的路由器都收到了该LSA后,该LSA的泛洪必须停止.如何终止继续的泛洪呢?先看下图:
 
如上图所示,当路由器A的直连链路10.1.1.0中断,此时网络拓扑改变,A将会向网络中通告一条关于拓扑改变的LSA给邻居B和D.B和D接收到该通告后也会继续的扩散下去.这里有一些问题需要考虑:LSA会不会经由A-B-C-F-E-D回到始发路由器A?当路由器C收到了来自A-B的LSA后,又收到了一条来自A-D-E-F的LSA,路由器C会不会继续把这个LSA再由C-B通告回去?
根据上图中的标识,来详细的解释一下这些问题.
我们把目光聚集到C上.A发觉自己直连链路发生网络中断,在t0时刻通过两个接口向外发送了LSA.
在t1时刻,来自A-B的LSA率先达到了C,C得知了网络发生改变,并把相关的信息输入到自己的拓扑数据库中,并向F进行转发.但是在相同的t3时刻,一份一模一样的LSA经由A-D-E-F到达了C,路由器C发现数据库中已经存在了该LSA.
这里有一个很矛盾的问题:
1.C要向F发送一个由A始发的LSA
2.F已经把该LSA发送给了C
那么C到底发送不发送给F呢?答案是否定的!C不发送,也不会将收到的LSA向B转发.因为C收到的两份LSA的序列号相同.根据序列号判断,C得知,它们发送来的信息始于同一始发者,而且内容相同.
到此为止,泛洪的目的似乎已经达到了:所有的路由器都得知了网络的变动信息.泛洪应该被停止.

当A向外发送LSA时,每个LSA拷贝的序列号都是一样的,该序列号也同LSA的其他部分一样都被保存在路由器的拓扑数据库中,当路由器收到一份和自己数据库中已经存在的,而且序列号一样的LSA时,将会丢弃掉这些信息.如果信息相同,但是序列号更大,那么接收到的信息连带新的序列号将会都被保存在数据库中,并且泛洪扩