我们前面说过,除了Type-1和Type-2,其他类型的LSA都不过是“穿着不同LSA马甲的路由”而已。
我们曾经说过,ABR是一个“勤劳的搬运工”,它会把骨干区域的路由一条一条搬到所连接的非骨干区域,反过来也一样,把非骨干区域的路由一条条搬到骨干区域。
一条一条搬路由?这太明目张胆了吧,OSPF可是号称“链路状态”的路由协议,直接搬路由,你让我“链路状态路由协议”的面子往哪搁?
有了,把这些路由化妆成“链路状态”的样子吧。
于是,Type-3类LSA出现了:
我们看,Type-3把路由伪装的跟真的LSA似的,但我们仔细一看,LSID就是路由前缀,Netmask是掩码,Metric是开销,还有Advertising Router呢,一样也不少。
Type-3类LSA实际上就是ABR把区域内Type-1和Type-2所包含的所有链路状态变成一条条路由,扔到另一个区域。Advertising Router是谁,谁扔路由就是谁。
所以,Type-3类LSA一定是ABR生成的。
如果区域已经有了Type-3,ABR会不会像扔Type-1和Type-2一样也扔过去呢?
当然会,这个区域中的Type-3是一定是其他ABR扔过来的,肯定也要把它们扔过去,不然怎么访问呢?只是扔过去的时候,要把Advertising Router变一下,谁扔写谁嘛。
如果把Type-1、Type-2称为区域内路由,那么Type-3显然就是区域间路由。
到此为止,整个OSPF路由域依靠Type-1、Type-2和Type-3完成了互通。
不过,还有一种情况需要考虑:某台OSPF路由器会不会连接了其他路由器,并存在其他OSPF没有的路由?如果OSPF没有这条路由,也就意味着所有OSPF路由器都无法访问它。
当然,一个企业网运行两种或两种以上的动态路由协议是非常少见的,但是动态路由协议和静态路由共存却很常见。
那么,这些静态路由怎么才能让OSPF访问呢?
OSPF允许把其他路由引入到OSPF中(有的叫路由重分发),不过还是一样的问题,需要化个妆:OSPF引入的外部路由,需要化妆成Type-5类LSA。
LSID当然还是这条外部路由的前缀,Netmask是掩码,Advertising Router依然是谁引入写谁,而且谁引入,谁就是ASBR。
External Type表示这条外部路由的类型,这里是Type 2。什么是外部路由的类型呢?我们先思考一个问题:不同的路由协议,开销的计算方法相同吗?
毫无疑问,当然不同。也就是说,原则上不同路由协议的开销并没有可比性。如果你问我2个苹果加3个梨等于多少,我会一脚把你踢飞,嘿嘿。
同样,OSPF把一条外部路由引入到OSPF中,那这条路由的开销怎么算?默认情况下,OSPF把外部路由的开销都写成1,并且把这条外部路由的类型设置为Type 2。
Type 2的意思,就是这条路由的开销不管是多少(即使是1),都非常非常大,OSPF中的开销可以忽略不计。
所以,一条Type 2的外部路由,不管在OSPF域中的哪台路由器上,开销都一样,默认是1,不会累加OSPF内部链路的开销。
有Type 2,有没有Type 1呢?有,Type 1外部路由会累加OSPF内部链路开销。当然,如果你想把外部路由修改成Type 1,需要你手动设置。
Forwarding Address是转发地址,通常为0.0.0.0,意思是其他OSPF路由器要访问这条外部路由,下一跳是Advertising Router里的内容,也就是ASBR的RID。如果转发地址不写0.0.0.0,那就是告诉其他OSPF路由器,访问这条外部路由的下一跳是这个转发地址,而不再是ASBR的RID,目的是为了优选最优路径。
External Route Tag是外部路由标签,没有什么实际含义,只是给外部路由打个标签而已,通常会用于比如路由控制等方面。
注意Forwarding Address,当它为0.0.0.0时,其他OSPF路由器要访问这条外部路由,下一跳是ASBR的RID!
所有OSPF路由器都知道ASBR的RID吗?
上图中,RTA引入了外部路由,是ASBR,其RID为1.1.1.1。在区域中,RTA会发送Type-1类LSA,RTB与RTA同在区域中,所以RTB会收到RTA发的Type-1,知道ASBR就是RTA,ASBR的RID对RTB来说是可达的,所以外部路由的下一跳1.1.1.1对RTB来说是可达的。
但是RTC就不行了,它收不到RTA发的Type-1,不知道要找ASBR的RID该从哪里去,也就是说,这条外部路由的下一跳1.1.1.1对RTC来说不可达,RTC无法访问外部路由。
怎么办呢?
RTB作为ABR,既然知道ASBR在哪,别吃独食啊,分享一下呗。
所以,RTB会向区域1扔一条Type-4类LSA,目的很简单,告诉区域1说:ASBR引入了外部路由,泛洪到了所有区域,不过你们这个区域肯定不知道ASBR在哪,来吧,我知道。如果你们要访问外部路由,找我就好了。
这样一来,RTC上外部路由的下一跳,就变成了RTB,而不再是区域中的RTA。
LSID当然就是ASBR的RID,Advertising Router就是产生这条Type-4的ABR的RID。
综上所述,ABR要在区域之间传递路由,并让这些路由穿上了Type-3外衣,化妆成链路状态的样子;ASBR要把引入的外部路由传递到所有的OSPF区域,并让这些路由穿上了Type-5的外衣,也化妆成了链路状态的样子;而Type-4是ABR告诉不知道ASBR在哪的相邻区域,要去ASBR,找我就行。
这样一来,OSPF不仅有自己的区域内路由、区域间路由,还可以引入外部路由,应对复杂的网络环境更加得心应手。
小Q:OSPF引入外部明细路由和引入缺省路由的方法有什么不同?
领取专属 10元无门槛券
私享最新 技术干货