认识事物的过程是曲折的,螺旋式前进的。
lsa的7种类型困扰了好久,今天终于通过实验得到了具体的认知,可以记录下来了。
拓扑如图:
按照图示配置好之后,查看R2的lsdb,可以看到如下内容:
开始对LinkState ID不是很理解,查了下,结果如下:
当链路类型是Type 1,则为邻居路由器的ID;
当链路类型type 2,则为DR接口的IP地址;
当链路类型type 3,则为IP网络/子网号;
当链路类型type 4,则为邻居路由器的ID;
当链路类型为Type 5 ,目标网络的IP网络号;
当链路类型为Type 7时,为0.0.0.0
这里面包含了1、2、3型的lsa
1型:type=Router,用于宣告区域内的路由器信息
2型:type=Network,用于宣告区域内的网段信息
3型:type=Sum-Net,是abr宣告的区域外的路由信息
下面,我们挨个来分析不同类型的LSA
LSA-1 Router
开始被这个lsdb误导了,以为所有的ospf路由表项都应该在这里显式的体现出来,直到我做了一个实验,将R2的router-id改成了9.9.9.9,然后重启所有路由器再观察R4里面的lsdb结果如下:
wtf!!!这里看不到10.0.2.2哦,但是还是可以ping通的哦!!!这是怎么通的???
秘密就在LSA-1里面,我们再看下router 9.9.9.9的具体内容:
看到没?其实该路由器下挂着啥网段,信息都是全的,只是dis ospf lsdb命令没有显示而已,想要看么?来,dis ospf routing一次性满足你
10.0.2.0网段终于漏出了狐狸尾巴:)原来是这么来的。。。
我们再来看看这个lsa,会发现两个link ID的具体内容有点不一样:
当网络类型是TransNet的时候,LinkID是该网段的DR的接口地址(非routerID哦),Data是路由器在该网段的接口地址
当网络类型是StubNet的时候,LinkID是网络地址,Data是掩码
LSA-2 Network
回到正题,以前不明白为啥lsa-2只能是DR发出的,现在终于明白了,因为lsa-2表示的是广播型网段信息(不信?取消R3和R5之间的接口类型设置为P2P,就会发现多了一个宣告10.0.35.3/5的lsa-2,具体是3还是5,就看谁当DR了),而且每一个广播型网段里,都会有DR和BDR,可能还有DRothers。所以规定由DR来发布这个网段信息。
插个话,关于上面那句被删除的。
仅仅是在接口设置ospf networktype p2p,并不能确保路由器将其作为直连网段处理,必须接口是PPP封装的,对端IP地址才会被当做直连路由处理。
再深入看看lsa-2里面有啥:
10.1.234.3(即router-id为10.0.3.3的连接到该网段的接口地址)骄傲的宣称,这个网段是我的!这个网段里还有10.0.1.1、10.0.4.4、9.9.9.9这几个妖艳贱货,但唯独我是DR,是正牌老公,法律上只认我一个!
——这DR真是个戏精。。。。。
LSA-3 sum-net
3型LSA是ABR产生的,用于告知区域内的路由器,在区域外有哪些网段。
比如在这个例子中,对于R2、R4等area 0区域的路由器来说,10.0.35.0,10.0.1.0就是域外网段信息,分别有R3、R1这两个ABR路由器宣告到area 0 里面
3型LSA里面有啥内容?
网络号、宣告此网络的routerid、掩码 等,算是比较简单的
ps:此时实验还没有涉及到10.0.5.0网段,并没有在R5的ospf进程中宣告,所以这里看不到他的信息。但马上就要来了。。。。
LSA-4 sum-asbr
首先在R5上,通过import route direct 来引入直连网段10.0.5.0 和10.0.35.3(参见上面说的,PPP封装的对端地址会被认为是直连网段)
直接看R1上的lsdb,关于10.0.5.0这个网段,首先是10.0.5.5上引入了外部路由,因此它就成了一台ABSR,所以,在区域2与区域1的ABR上,会生成一条sum-asbr的LSA,即LSA-4,其作用是描述如何到达ASBR,每一个收到此消息的ABR都会向外继续发送这个4型LSA,当然,转发的过程中,会用自己的ID来替换宣告路由器ID。
4型LSA是不能跨区域泛洪的,严格的说,它是在ABR间逐跳是接力泛洪的。
在ASBR所在的区域里,是不会有关于本区域内ASBR的4型LSA的,因为本区域内的路由器不需要依赖这个4型LSA来定位ASBR,他们通过1型LSA就行了。
LSA-5 ASE
5型LSA由ASBR产生,用于描述ospf域外的路由信息,比如上述由R5通过import命令产生的三条external信息。
通过观察各个路由器上的lsdb,可以发现,5型lsa是在整个osp所有区域内泛洪的,而且,经过ABR的时候不会改变宣告者的信息。即AdvRouter不变。