拓扑图及IP编址如下:
本实验意在分析OSPF多区域及特殊区域下的LSA情况(暂不考虑拓扑,IP编址在实际环境中的合理性)
1.对一类,二类LSA的分析(以Area 0内为例)
在R2上查看lsdb,这里仅列出一类和二类做分析。
如图,一类和二类的LS ID 及adv router字段代表意义如下,我们可以根据查看区域0中一类LSA的情况知道,区域0中有四台路由器(10.10.10.10是连接Area 4的路由器,这里用虚链路接入Area 0)
接下来我们通过逐一查看这几条一类,二类LSA,试着仅通过分析LSA的信息画出该区域的拓扑。
查看ls id为2.2.2.2的LSA:
在这里画图时,我们把DR虚拟成单独的一个节点。
查看1.1.1.1的lsa
继续画拓扑图。
查看3.3.3.3的lsa
在这里我们看到,除了常规出现的transnet字段,此lsa又多了一个virtual字段,只有存在虚链路时,才会有此字段,该字段意义如上图。另外我们注意到在transnet字段中,link id和link data字段是一样的,这说明3.3.3.3路由器的该接口为这个MA网络中的DR。
我们可以画出这样一张图,虚拟出来的节点DR其实就是3.3.3.3的192.168.1.3这个接口,为了直观,我们仍然把它单独作为一个虚拟节点表示出来;3.3.3.3的192.168.6.1连接了一个未知的Area(至少我们此时仅通过查看一类LSA是无从知晓的),而该Area另一端的10.10.10.10作为一个虚链路的节点,跨过中间这个未知的区域,和3.3.3.3相连。这样,相当于在Area ?中打通了一条隧道,使10.10.10.10与3.3.3.3连通,这样,10.10.10.10后面的区域也相当于和Area 0相连,符合的OSPF区域设计原则之一,即所有非骨干区域都必须与区域0相连,这种技术叫做虚链路,当然这是一种为了解决问题的下下策。至此,该MA中的四个router lsa已全部查看分析完毕。
查看network lsa
二类LSA中各字段意义如上图。虽然我们仅使用一类LSA,就好像把该MA的物理拓扑确定下来,但是我们发现,我们之前画的图中缺少了一些网络信息,我们发现一类LSA中有一个很重要的信息是没有的,那就是“掩码”,只有IP地址,没有子网掩码是不够的,因此二类LSA中补充了这一重要的网络信息,同时,attach router字段显示了所有连接到本MA中的路由器,这让拓扑的连接关系更加清晰,形象的说是让路由器同样拥有了”上帝视角“,真正让使本区域内所有路由器拥有对本区域信息的一致认知。这时我们可以确定区域0的拓扑,如下图。
2.对三类LSA的分析
router lsa和network lsa的作用是描述域内路由信息,从而在区域内通过运行SPF算法让每个生成一颗以自己为根的无环的SPF树,network-summary lsa的作用是描述ospf域间路由信息,三类lsa携带信息很简单,只携带网络信息,并不携带拓扑信息。
这里仅列举出一条在区域0中的三类lsa的明细。
可以看到三类lsa内容很简单,并没有拓扑信息,只有网络信息,那么如何到达这条lsa通告的网段呢?这时候,一类和二类lsa计算出的本区域的详细的路由和拓扑信息就起到作用了,区域内任何一个节点都可以通过这些信息计算出到达该网段的路由,我们可以通过在R2上查看路由表找到通往这条三类lsa描述的这个网段的路由,可以发现,下一跳是192.168.1.1这个地址,而这个地址也就是通告这条三类lsa的路由器(ABR)1.1.1.1的一个接口地址。可以这样想,区域内路由器该如何去往某个其他区域内的网段呢?只需要把数据包丢给通告这个网段的路由器(ABR)就可以了。
3.对四类、五类LSA的分析
我们先不把Area 1 和Area 2配置为特殊区域,仅配置为常规区域,并在R7上引入直连的外部路由,观察现象。我们在R4上查看lsdb,可以看到已经有四类和五类LSA。顺带提一下,我们拓扑中的外部网络是10.0.0.0,因为我在引入路由时使用了import-route direct这条命令,直接引入直连路由,所以R7的loopback0:7.7.7.7和与它直连的192.168.5.0网段也被当作外部路由引入了,所以才会看到有三条5类lsa。
接下来查看这条四类LSA明细。
可以看到四类LSA和三类LSA有相同的报文格式,字段代表的意思如上图,四类lsa的作用相当于是通告了一条去往ASBR的主机路由。下面我们查看一下五类LSA。
五类LSA的作用就是描述被引入的外部路由,五类LSA在整个OSPF域内泛洪,这样OSPF各区域都知晓了如何到达外部路由,那就是到达ASBR(7.7.7.7)就可以到达外部路由,那么又如何到达ASBR呢?我们刚才提到的四类LSA就完美的补充了到达ASBR的信息,五类和四类LSA是协同工作的。五类LSA中有两个很特殊的字段:E type 和 Forwarding Address,接下来将详细讨论这两个字段的含义。
<1>E type字段
该字段表示的是OSPF中计算到外部路由开销的方式,有两种。
type 1:该计算方式考虑的是端到端的成本,也就是将内部开销与外部开销相加。
type 2:该计算方式仅考虑外部开销,为默认方式。
注:在OSPF选路规则中,优先级为:域内路由>域间路由>外部路由,其中外部路由中,type 1>type 2.
<2>FA 字段
FA字段仅出现在五类或七类LSA中,它是数据包在访问被引入的外部网络时,报文离开OSPF域时必须经过的那个设备的地址。在这里仅分析五类LSA的FA字段,七类的在后文分析。我们知道,LSA只是链路状态通告,并不是最终的路由信息,能否成功访问外部路由,还是要看路由表中有没有到达外部路由的表项。五类LSA FA字段的可达性决定了被通告的外部路由能否被加载进路由表,若FA不可达,则被通告的外部路由将不会被加载进路由表。这里我们讨论FA字段的两种填充内容。
①FA为0
这种情况代表报文要经过ASBR访问外部网络。值得注意的是,如果ASBR就在当前区域,则仅依靠一类和二类LSA计算出的域内信息就可以得出到达ASBR的路径;如果ASBR不在当前区域,这时候四类LSA的作用就又显现出来,四类LSA通告了去往ASBR的路径。
②FA不为0
这种情况要根据OSPF路由表中是否有到达FA中通告的这个地址的路由来决定可达性,若不可达,该外部路由仍无法加载进最终的全局路由表。
4.对Stub和Totally Stub区域中LSA的分析
接下来我们研究特殊区域下的LSA存在情况。首先仅在Area 1配置为stub区域,对比观察配置前后area 1内LSA情况。
上图为配置前,我们发现常规区域内有一条四类lsa,和几条五类LSA。
上图为Area 1配置为stub区域后,我们发现四类和五类LSA都消失了,并且多了一条缺省的三类LSA。这也就引出了stub区域的作用,配置为stub区域后,ABR将阻挡四类和五类LSA进入区域,且下发一条缺省路由,以保证区域内路由器可以访问外部网络,精简了LSDB的规模。
接下来我们进一步配置,将stub区域配置为totally stub,再对比lsdb。
这次,我们发现totally stub中的lsdb不仅没有四类五类lsa,连三类lsa都没有了,只有自动下发的一条缺省三类lsa,lsdb又进一步精简,同时又没有失去可达性。
5.对NSSA和Totally NSSA及七类LSA的分析
我们在把Area 2配置为nssa前,先看一下它的lsdb中lsa的情况。
我们发现有五类lsa,但是没有四类lsa,这是因为四类LSA是由引入外部路由所在区域的ABR产生,通告给其他区域,用来标明ASBR位置的,其他区域并不知道ASBR的位置,因此需要一条四类LSA来指路,而我们ASBR所在的区域仅需要通告一类和二类LSA就可以算出如何到达ASBR,因此对于本区域而言,再下发一条四类LSA是没有意义的。所以我们发现,四类LSA存在与每一个其他的区域,唯独不存在于我们引入该外部网络的区域。
接下来我们将Area 2配置为nssa区域,再对比lsa变化。
我们发现,五类lsa也消失了,同时多了nssa lsa。在这里我们提一下stub和nssa的区别。两者都有共同的特性:阻挡四类五类LSA的进入,以达到精简lsdb的目的,同时又不失去可达性。配置为totally stub/nssa后,又阻挡了三类LSA的进入,并且都有自动下发的默认路由保证可达性;而stub区域是不允许引入外部网络的,而nssa则被允许引入少量外部路由。而引入外部路由势必会产生五类lsa,nssa区域又阻挡五类lsa,这显然与设计理念相悖,所以引入七类NSSA,它的作用和五类一样,都用于描述引入的外部路由信息,不同的是它只存在于nssa或totally nssa中,nssa/totally nssa区域的ABR收到7类lsa后会选择性的将它转化为5类lsa通告给其他区域。
接下来我们查看一下nssa lsa明细。我们看一下有代表性的10.0.0.0 和0.0.0.0这两条。
接下来我们将nssa区域继续配置,变为totally nssa。并观察lsdb变化。
可以看到totally nssa和totally stub的作用类似,都是在阻挡四类、五类LSA的基础上,又进一步阻止了三类LSA,而通过一条缺省的三类保证可达性。