OSPF防环机制(转)

OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是LSA,而路由器的计算正是基于网络中所泛洪的各种LSA,所以实际上OSPF路由的环路规避机制还得依赖LSA在环路避免上的设计。

先来看看第一种:TYPE-1 LSA及TYPE-2 LSA的防环~~

我们都知道,每台运行OSPF的路由器都会产生Type-1 LSA,Type-1 LSA用于描述路由器的直连接口状态(接口IP信息或所连接的邻居,另外还有接口的Cost值),而且只在接口所属的区域内泛洪。Type-1 LSA使用各种类型的Link来描述路由器直连接口。Type-2 LSA则只出现在MA网络,由DR产生,用于描述接入该MA网络的所有路由器(的Router-ID),以及该MA网络的掩码信息。
得益于区域内泛洪的Type-1 LSA及Type-2 LSA,OSPF路由器能够“在自己的脑海中”还原区域内的网络拓扑及网段信息。路由器为每个区域维护一个独立的LSDB,并且运行一套独立的SPF算法,同一个区域内的路由器,拥有针对该区域的相同LSDB,大家都基于这个LSDB计算出一颗以自己为根的、无环的最短路径树。之所以能做到无环,是因为路由器能够通过LSA描绘出区域的完整拓扑(包括所有接口的Cost)及网段信息。以下图所示的网络为例:

R1、R2、R3及R4的接口均在Area0中,四台路由器都会产生Type-1 LSA并且在Area内泛洪。另外以太网链路由于缺省是广播型多路访问网络,因此会进行DR/BDR的选举,DR会产生Type-2 LSA并在区域内泛洪。在LSDB同步完成之后,每台路由器都拥有了整个区域的拓扑及网段信息,这些都是通过网络中泛洪的Type-1 LSA及Type-2 LSA拼凑出来的,请看下图:

接下来,每台路由器都以自己为根,计算一颗无环的最短路径数,以R3为例,它的最短路径树可能像下面这个样子:

所以,依赖Type-1 LSA及Type-2 LSA,路由器能够描绘出区域内的拓扑及网段信息,从而运行SPF算法,计算出到达每个网段的最优路径,并将这些路径安装到路由表中,因此区域内的路由(Intra-AreaRoute)可以实现无环路。

TYPE-3 LSA及TYPE-4 LSA的防环~~

OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间(Inter-Area Route)路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑,如下图所示:

ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3 LSA不能用于区域间路由的计算。
OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。

在上图中,如果R3是一台普通的OSPF路由器(不是ABR),例如当它与R2没有OSPF邻居关系时,它会根据R4在Area2中泛洪的Type-3 LSA计算出1.1.1.0/24路由并将路由加载进路由表中。但是当R3与R2建立起OSPF邻接关系后,R3在Area0中就有了一个活跃的全毗邻连接,此时如果它把描述1.1.1.0/24路由的Type-3LSA再注入回Area0,那么就会带来潜在环路的风险,如下图所示:

因此当一台ABR在非Area0的区域中收到Type-3 LSA时,虽然它会将其装载进LSDB,但是该路由器不会使用这些Type-3LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。

送你彩蛋咯,这里有一个有意思的细节~~

就是如果R3连接R2的接口虽然激活了OSPF(而且属于Area0),但是不与R2形成邻接关系(例如R2连接R3的接口不激活OSPF),那么此时R3其实并不算是严格意义上的ABR(虽然它产生的Type-1 LSA中B-bit会被置位,但是它在Area0中并没有全毗邻的邻居),因此它会将Area2内收到的Type-3 LSA用于区域间路由的计算,所以在R3的路由表中能看到1.1.1.0/24的区域间路由(下一跳为R4),但是一旦R2-R3之间的邻接关系建立起来,R3将不能再使用R4下发的Type-3 LSA计算路由,而仅能使用从Area0中收到的、R 2下发的Type-3 LSA进行区域间路由计算,所以此时R3路由表中1.1.1.0/ 24路由的下一跳为R2,而且即使这条路径的Cost要比从R4走更大(例如将R3连接R 2的接口Cost调大),R3也始终不会走R4到达1.1.1.0/24,除非R2挂掉,或者R2-R3丢失邻接关系。

ABR不会将描述一个Area内部的路由信息的Type-3LSA再注入回该区域中。
实际上,OSPF区域间路由的传递行为,很有点距离矢量路由协议的味道。以下图为例,在Area1中,R1及R2都会泛洪Type-1 LSA、Type-2LSA,两台路由器都能够根据这些LSA计算区域内路由,而R2作为ABR还担负着另一个责任,就是向Area0通告区域间的路由,实际上它是向Area0中注入用于描述Area1内路由的Type-3 LSA,而这些Type-3 LSA是不会发回Area1的——是的,类似水平分割行为对吧?接下来R3利用这些Type-3 LSA计算出了区域间的路由,并且为Area2注入新的Type-3 LSA用于描述区域间的路由,而这些Type-3LSA同样的不会被注入回Area0。

R2在向Area0通告Type-3 LSA,为每条区域间路由携带上Cost值,这个值就是它自己到达各个目标网段的Cost,而R3收到这些Type-3 LSA并计算路由时,路由的Cost就是在R2所通告的Cost值的基础上,加上R3自己到R2的Cost值,然后,R3向R4通告这些区域间的路由时也携带者自己到达目标网段的Cost,而R4到达目标网段的Cost则是在R3的通告值基础上累加自己到R3的Cost——典型的距离矢量行为。

综上,我们发现OSPF为了区域间的路由防环是操碎了心的。Type-4 LSA实际上与Type-3LSA都是Summary LSA,只不过一个是NetworkSummary LSA——用于描述网段路由,另一个则是ASBR Summary LSA——用于描述ASBR,他们使用的防环机制是一致的,因此这里不在赘述。

Type-3 LSA还涉及了DN比特位,用于在MPLSVPN环境下的环路规避。

TYPE-5 LSA的防环。

当一台OSPF路由器将外部路由引入OSPF域后,它就成为了一台ASBR,被引入的外部路由以Type-5 LSA在整个OSPF域内泛洪。一台路由器使用Type-5 LSA计算出路由的前提是两个,其一是要收到Type-5LSA,其二是要知道产生这个Type-5 LSA的ASBR在哪里。

与ASBR接入同一个区域的路由器能够根据该区域内泛洪的Type-1LSA及Type-2 LSA计算出到达该ASBR的最短路径,从而计算出外部路由。而其他区域的路由器就没有这么幸运了,因为ASBR产生的Type-1LSA只能在其所在的区域内泛洪,所以才需要Type-4 LSA。

因此其他区域的路由器在获取Type-4LSA后便能计算出到达ASBR的最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路由。Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1LSA及Type-4 LSA来实现防环。

另外,Type-5 LSA中的External RouteTag字段被用于在MPLS VPN环境下外部路由的防环,这里就不做深入探讨了。

点赞
  1. 头像 tiktok izlenme说道:
    Yandex Browser Windows 8.1
    Hi there, You have done an excellent job. I'll certainly digg it and personally suggest to my friends. I am confident they will be benefited from this site.
  2. Firefox Windows 7
    I am actually delighted to read this weblog posts which contains plenty of helpful facts, thanks for providing such information.
  3. Firefox Windows 8
    I got this site from my pal who told me concerning this website and now this time I am visiting this web site and reading very informative posts at this time.
  4. Firefox Windows 8
    I couldn't resist commenting. Very well written!
  5. 头像 takipçi sitesi说道:
    Google Chrome Windows 8.1
    You need to be a part of a contest for one of the most useful blogs online. I am going to recommend this blog!
  6. Google Chrome Windows 8.1
    I was recommended this website by means of my cousin. I'm not certain whether this publish is written via him as no one else recognise such distinct approximately my trouble. You're wonderful! Thanks!
  7. Firefox Windows 7
    Good post. I certainly appreciate this site. Continue the good work!
  8. Firefox Windows 8
    Very nice article. I definitely love this site. Thanks!
  9. Google Chrome Windows 8.1
    When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get four e-mails with the same comment. Is there any way you can remove people from that service? Thanks a lot!
  10. Google Chrome Windows 8.1
    Good information. Lucky me I ran across your blog by accident (stumbleupon). I've saved it for later!
  11. Sogou Explorer Windows 8
    Excellent post. Keep writing such kind of information on your site. Im really impressed by your blog. Hi there, You've done a fantastic job. I'll certainly digg it and for my part suggest to my friends. I'm sure they will be benefited from this website.
  12. Firefox Windows 8
    A person essentially assist to make seriously articles I might state. That is the very first time I frequented your website page and up to now? I amazed with the research you made to create this actual post amazing. Great job!
  13. 头像 php shell sitesi说道:
    Google Chrome Windows 8.1
    magnificent issues altogether, you just received a emblem new reader. What would you suggest about your post that you just made some days ago? Any sure?
  14. Currently it appears like Movable Type is the best blogging platform available right now. (from what I've read) Is that what you are using on your blog?

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据