购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.7 多点接入网络中的会话建立机制

Hello消息的第3个作用是多点接入网络中邻居之间会话关系的优化精简。

(1)解决广播网会话全互联的方法

OSPF状态迁移过程第一阶段的主要目的之一是发现潜在可以建立会话的邻居,并将接口状态迁移到2-way。从OSPF的状态迁移机制可知,2-way状态是无法进行链路状态信息同步的,还需要进一步发送后续消息才能真正建立会话,从而支撑后续链路状态信息的互通。

多点接入网络有2种类型:广播型多点接入(BMA)网络及非广播型多点接入(NBMA)网络。以太网是一种典型的广播型多点接入网络,连接多点接入网络的路由器接口属于同一广播域和逻辑子网。

接入多点接入网络的路由器通过Hello消息可以发现该多点接入网络的所有潜在可以建立会话的邻居。如果接入多点接入网络的OSPF路由器很多,那么按照协议规程,就需要两两之间建立OSPF会话。如果有 N 台路由器接入同一个多点接入网络,则需要建立的会话数为 N N −1)/2。多点接入网络的全互联会话如图2.5(a)所示;5台OSPF路由器同时接入一个多点接入网络,如图2.5(b)所示,相互之间需要建立10个OSPF会话。除了要建立更多的邻居会话外,每个路由器还需要向整个网络洪泛有关该多点接入网络的相同链路状态信息,这将导致过多冗余的LSA消息在网络中扩散,进一步加剧各路由器运行SPF算法的次数。这种全互联产生的指数级会话数量以及冗余链路状态信息给OSPF带来严重的处理负载,影响了OSPF的拓展性。

图2.5 多点接入网络的全互联会话

考虑引入一个虚拟路由器解决这一问题。假定在多点接入网络上,存在一个虚拟的路由器,接入该多点接入网络的所有路由器都仅仅与虚拟路由器建立会话;同时,让虚拟路由器通告该多点接入网络链路状态信息,一方面可以减少多点接入网络的会话数量,另一方面,避免了冗余的链路状态信息在网络中传播。需要注意的是虚拟路由器的引入不能影响最短路径计算,因此,虚拟路由器进行链路状态通告时,应当把所有广播网络上的邻居链路代价设定为0,从而消除虚拟路由器的引入对SPF算法的影响。

如图2.6(a)所示的网络拓扑,在该多点接入网络中引入一个虚拟路由器P,路由器A、B、C、D、E只与P建立会话,并针对与虚拟路由器P的链路,生成代价为1的链路状态通告。同时,虚拟路由器P通告自己的链路状态时,将与邻居路由器A、B、C、D、E的链路视为自身网络,链路代价设为0。图2.6(a)中节点X的最短路径树拓扑如图2.6(b)所示,节点X与Y之间的链路为X到A、A到P、P到E和E到Y,代价依次为1、1、0、1。同样,节点Y的最短路径树拓扑如图2.6(c)所示,节点Y与X之间的链路为Y到E、E到P、P到A和A到X,代价依次为1、1、0、1。注意,链路代价是与方向有关的,这里,P到A/E和A/E到P的代价是不一样的。

图2.6 包含多点接入网络的生成树

引入虚拟路由器很好地解决了多点接入网络中会话数过多和冗余链路状态信息过多的问题,但实际网络中该虚拟路由器是不存在的。那么是否可以让接入多点接入网络的某一台路由器“做个兼职”,担当一下虚拟路由器的角色?OSPF协议就是这样做的。这个为虚拟路由器代言的路由器在OSPF中称为指定路由器(Designated Router,DR)。与其他路由器一样,虚拟路由器也有一个唯一标识RID,用来描述其链路状态信息。这个虚拟路由器的RID是DR路由器在该多点接入网络的接口IP地址。

DR路由器的作用是非常重要的,所以,并不能任由各路由器随意担任,必须按照共同的竞选规则选举。选举规则是多点接入网络中拥有较高优先级的路由器担当,如果优先级相同则由拥有较大RID的路由器担当。

(2)增强广播网会话可靠性的方法

一旦一台路由器在竞争中获胜,担当DR角色,那么处于同一个多点接入网络中的其他路由器都与DR建立会话即可,不需要彼此之间再建立会话。DR角色的重要性也使得它对多点接入网络的可靠性产生了至关重要的影响。试想,如果DR路由器故障或者DR路由器在多点接入网络上的接口失效,将导致该广播网络上的所有会话同时关闭,该广播网络的虚拟路由器消失,该多点接入网络也会在全网消失,哪怕多点接入网络上绝大多数路由器是正常的。该多点接入网剩余的路由器需要重新推选DR,重新与DR建立会话并重新同步链路状态信息,并在全网重建广播网络信息,在此之前,其他的路由器将无法访问该广播网络,即使绝大多数路由器连接到该多点接入网络。

为了解决单点故障给多点接入网络带来的影响,在广播网络中让另外一台路由器担当DR备份角色,称之为备份指定路由器(Backup Designated Router,BDR)。除了DR、BDR外,没有竞选上DR或者BDR的路由器称为DR Others(Designated Router Others)。

拥有DR、BDR和DR Others的多点接入网络工作过程如下:首先,所有路由器按照选举规则选举DR和BDR。然后,所有DR Others路由器分别与DR和BDR建立会话,DR和BDR之间也要建立会话。当DR出现问题时,BDR接管DR的虚拟路由器角色,变成DR,并在剩余路由器中进一步选举新的BDR。

在DR(A路由器)失效时,BDR(B路由器)演变为DR,多点接入网络中由A路由器代言的虚拟路由器P,转为由B路由器代言的虚拟路由器P′,虚拟路由器P信息并不会被P′替代,它只会定时老化掉或者等待A路由器上线后刷新,因为链路状态信息是不能被其他路由器修改的。也就是说DR在由A路由器迁移到B路由器后,网络中会增加一个虚拟路由器P′。同时,原来接入该多点接入网络的路由器都要相应变更连接关系,由连接到A路由器代言的虚拟路由器P,改变为连接到B路由器代言的虚拟路由器P′。虚拟路由器的倒换如图2.7所示,图2.7(a)是图2.6(a)中路由器Y的拓扑树,假定A为DR,B为BDR,当路由器A的广播接口故障后,路由器Y的拓扑树变为图2.7(b)所示拓扑树。可以看到在Y的链路状态数据库中仍然保留着的P与A、B、C、D、E的链路状态信息(虚线所示)。但是,在多点接入网络DR更迭后,其他路由器B、C、D、E已经将其到P的链路更改为与新的虚拟路由器P′的链路。虽然P仍然保持到其他路由器的连接,但是周围的路由器均已经连接新的虚拟路由器P′。正是这个操作,使得广播网络继续保持连通。与此同时,节点B作为新的DR,通告虚拟路由器P′的链路状态,在链路状态中将与节点A的连接关系去除,保证了新的虚拟路由器链路状态的正确性。整个过程中虽然原先虚拟路由器P的信息仍然存在,但是没有路由器使用,对整个网络最短路径计算不产生任何影响。

图2.7 虚拟路由器的倒换

(3)邻居与“亲戚”关系

回顾OSPF状态迁移过程,两个路由器之间彼此发现后便进入2-way状态,是否由2-way状态迁移到Full状态由多点接入网络中路由器之间的互联角色确定。所有非DR路由器都需要与DR交互链路状态信息,它们之间需要建立会话。相反,所有DR Others之间虽然彼此发现,但是因为不需要交互链路状态信息,它们之间的状态会一直处于2-way状态。2-way状态并不是一成不变的,在DR失效、BDR转为DR后,BDR的位子空了出来,借助于2-way维护的邻居信息,可以快速推选出BDR,并按照规则将2-way关系进一步发展到Full会话关系。同样是两个邻居,有时需要将会话维持在2-way状态,有时需要进入Full状态。前者就像是邻居见面打打招呼(Hello),后者则像是“亲戚”,经常互赠礼物礼尚往来(交互LSA),因此,把前者定义为邻居(Neighbor)关系,后者形象地称为“亲戚”(Adjacency)关系(或邻接关系)。

(4)DR和BDR选举规则

DR/BDR选举过程可以分为两种场景:一是多点接入网络中已经完成DR/BDR选举,此时选举过程仅涉及新加入的路由器。二是多点接入网络初建,网络中没有DR/BDR,此时选举过程涉及该网络的所有路由器。将上述两个场景合并,从单台路由器启动之后,其DR/BDR的选举过程如下。

1)OSPF路由器连接的多点接入网络接口激活后,发送Hello消息,其中DR和BDR字段为空,表示DR和BDR未知,并依据设定的Dead定时器,启动等待定时器。

2)如果收到的Hello消息中都携带了DR/BDR字段,则停止等待定时器,并认可该DR/BDR。

3)如果定时器到时,仍未发现DR,则发起DR选举过程。

DR选举时先选BDR,再选DR。竞选规则为:优选接口优先级最高的,如果优先级相同,则RID较大者被优选。

1)与接入同一个链路的所有邻居路由器彼此验证协商参数后,从交互的消息中获得有资格参与选举的路由器候选名单,所有“优先级”字段不为0的路由器都可以入围,这份名单为“初选名单”。

2)有些路由器在协商过程中不遵守规则,急于争当DR,因此会把自己IP放置到它发送的Hello消息的DR字段中。针对这种过于自私的路由器,应当将其从“初选名单”中除名,形成“候选名单”。

3)多数守规的DR竞选者会按照规程,在其发送的Hello消息中将自己IP放置在BDR字段,以表示参与竞选。这些IP和“候选名单”IP取交集,得到最终的“入围名单”,并按规则选出BDR。

4)如果自始至终没有路由器争当BDR,那么“初选名单”中接口优先级最高者被定为BDR,如果优先级相同,则RID较大者被选为BDR。

5)在BDR被选定后,进入DR选举过程。此时如果有主动竞选DR的路由器存在,且在“初选名单”中,则按照竞选规则选出DR。

6)如果没有主动竞选DR的路由器,则将BDR提升为DR,并重新发起BDR选举过程。

可以看到第6)步很好地兼容了多点接入网络中DR失效之后的操作过程。DR竞选主要出现在广播网络初建之时,广播网络一旦稳定后就不会再发起DR竞选过程。当广播网络中DR失效后,没有路由器进行DR竞选,此时就简单把BDR提升为DR,然后重新推选BDR即可。将BDR提升为DR的过程远远快于重选DR,加速了多点接入网络的快速收敛。

(5)要点探讨

DR选举是一个复杂的过程,与多点接入网络中路由器的数量、路由器接口优先级、协议启动后等待时间、加入多点接入网络的时机等因素密切相关。例如,仅让路由器A按照规程选定路由器B为DR,并通过Hello消息通告出去,并不意味着自身的DR选择过程结束。路由器A还必须收到路由器B的Hello消息,路由器B在该消息中也确认自己为DR时,路由器A的DR选择过程才算结束。否则,如果路由器A认定路由器B为DR并结束DR选举过程,而路由器B却认定路由器C为DR,则会导致该多点接入网络DR不唯一。

下面通过一个例子来说明路由器加入次序对DR选举时间的影响。路由器A、B、C在同一个多点接入网络中,如图2.8所示。路由器A、B和C分别在时刻0s、10s和45s启动OSPF,并开始等待计时器(假定为40s)。

图2.8 多台路由器依次加入多点接入网络

多点接入网络中DR确定过程如图2.9所示。路由器A先启动OSPF,它的等待定时器超时需要40s,在该计时器超时之前路由器B也启动了OSPF,因此它会收到路由器B发送的Hello消息并且知道路由器B的接口优先级比自己高;在绝对时间40s时,路由器A的等待定时器超时,它发送的Hello消息中DR设定为路由器B,但此刻该网络的DR还不算最终确立;路由器B的等待定时器还没超时,路由器B仅选定自己为DR,因为该选定结果并未通告,所以路由器B的Hello消息中并未明确将自己设定为DR。

图2.9 多点接入网络中DR确定过程

在绝对时间45s时,路由器C启动并发送Hello消息,此时路由器B收到该消息,检测其优先级后,确定路由器C为DR;在路由器B等待定时器超时,即绝对时间50s时初定DR为路由器C,并通过Hello消息通告出去。与此同时,路由器A也收到路由器C的Hello消息,通过比较优先级,确定DR为路由器C,并通过Hello消息通告出去。

在绝对时间50s时,路由器C第一次收到路由器A和B的Hello消息,比较优先级后,选定自己为该网络的DR,直到其等待定时器超时,即绝对时间85s时,才通过Hello消息将DR的选定结果通告出去。当路由器A和路由器B收到路由器C通告的Hello消息,并且消息中明确表明路由器C认可自己为DR时,路由器A、B和C所在的多点接入网络的DR才算最终确定。整个DR的选举过程持续了85s。 1txOxjsqWELrsknUnQCKIdlb6kuqCxCqUNRS0Nsl70pzSRzwU1Lh8LvEpQhbshFq

点击中间区域
呼出菜单
上一章
目录
下一章
×