温故而知新――OSPF(二)

Network Types
OSPF定义了五种网络类型,分别是:
1、点到点网络(Point-to-point networks)
2、广播网络(Broadcast networks)
3、非广播多点访问网络(Non-broadcast Multi-access networks NBMA)
4、点到多点网络(Point-to-multipoint networks)
5、虚拟链路(Virtual links)
点到点网络连接一对路由器。在点到点网络上,有效的OSPF邻居路由器之间总会形成邻接关系。在点到点网络上,OSPF数据包的目的地址始终是224.0.0.5。这个地址称为AllSPFRouters,是一个预留的D类IP地址。
广播网络是一个多点访问的网络,在广播网络中可以连接两台以上的设备。并且在这个网络上可以传输广播数据包。一个广播数据包被发送到这个网络后,所有设备都可以接收到。连接到广播网络上的OSPF路由器会推选出一个路由器作为DR和一个路由器作为BDR。由DR和BDR以组播方式发送目的地址为224.0.0.5的Hello数据包到广播网络上,承载这个数据包的帧的目的MAC地址为0100.5E00.0005。广播网络上的其它OSPF路由器会以组播方式发送链路状态更新(LSU:Link State Update)和链路状态回执(LSA:Link State Acknowledgment)数据包,组播数据包的目的IP地址是224.0.0.6,这个地址称为AllDRouter。承载这个组播数据包的帧的目的MAC地址是0100.5E00.0006。
非广播多点访问网络可以连接两个以上的路由器,但是不支持广播功能。一个数据包发送出去后,不能够被所有的路由器接收到。因此需要对非广播多点访问网络上的路由器进行额外的配置,以便他们能够发现邻居路由器。连接到NBMA网络上的OSPF路由器也会推举DR和BDR,但是OSPF数据包是以单播数据包的形式发送的。
点到多点网络,是一种特殊配置的NBMA网络,可以看做是多个点到点链路组合在一起形成的网络类型。在点到多点网络上,路由器之间不会推举DR和BDR。OSPF数据包是以组播方式传输的。
虚拟链路,是一种特殊配置,可以认为是一个未编号的点到点的网络。OSPF数据包在虚拟链路上是以单播方式传输。
针对上面这五种网络类型,我们还可以进一步将它们归纳为两种类型:Transit网络和Stub网络。
1、Transit网络,连接有两台或两台以上的路由器。通常Transit网络上的数据包仅仅是通过这个网络传输。生成这个数据包的网络和数据包传输的目的网络都位于其它的位置。数据包仅仅是路过。
2、Stub网络,要注意区别于Stub Area,在Stub网络上只连接了一个路由器。在Stub网络上传输的数据包要不源地址属于这个网络,要不目的地址属于这个网络。在Stub网络上的OSPF路由器会通告主机路由。Loopback接口也被看做是Stub网络,并且作为主机路由来进行通告。
Designated Routers and Backup Designated Routers
在多点访问网络中,OSPF路由协议存在着两个和LSA扩散有关的问题:
1、位于多点访问网络中的路由器彼此之间传输的邻接信息会生成许多不必要的LSA。
2、多点访问网络中的LSA数据包的扩散显得很混乱。
为了避免这些问题的出现,需要推举一个路由器作为DR,完成以下的工作:
1、用来描述这个多点访问网络和网络上其它的路由器。
2、管理在多点访问网络上的OSPF数据包的扩散操作。
采用DR的根本用于是将这个多点访问网络看做是一个伪节点,或者说是一个虚拟的路由器。网络上的每个路由器都与这个DR形成邻接关系。只有DR可以发送LSA数据包到其它的路由器。执行DR工作的实际上是一个路由器的接口,而不是一个完整的路由器。所以,我们可以看到一个路由器在一个多点访问网络中担任DR的角色,而在另一个多点访问网络中只是一台普通的路由器。
采用DR这种配置方式存在这一个问题,就是当担任DR角色的路由器失败后,网络中需要重新选举一台路由器担任DR角色。所有的邻接关系需要重新建立,并且所有的路由器需要与新推举DR重新同步链路状态数据库。当执行这些操作的时候,网络是无效的,无法传输数据包。
为了防止发生这种事情,在推举DR的同时,另外增加了推举BDR的操作。所有的路由器不仅与DR形成邻接关系,而且也与BDR形成邻接关系。DR和BDR之间也会建立邻接关系。如果DR失败,BDR就会升级为新的DR,由于其它的路由器已经与BDR形成了邻接关系,所以网络的失效时间就会降低到最小限度。
DR和BDR的推举操作是由接口状态机触发进行的。为了能够使DR和BDR的推举操作能够顺利进行,必须满足下面的前提条件:
1、路由器的每一个多点访问接口都分配了一个Router Priority,这是一个8bit长度的整数,取值范围是0到255。Cisco路由器缺省的优先级是1。通过执行命令ip ospf priority命令,可以在多点访问接口上修改优先级值。优先级值为0的路由器将不会成为DR或BDR。
2、在Hello数据包中包含有一个区域,这个区域中记录了路由器的优先级值和连接接口的IP地址。
3、当一个多点访问接口启动后,它将设置DR和BDR为0.0.0.0。同时设置一个时钟:wait timer。这个时钟值等于RouterDeadInterval时钟值。
4、已经连接在多点访问网络上的接口将会把DR和BDR的地址记录在接口的数据结构里。
DR和BDR的选举过程如下:
1、邻居路由器之间在建立了双向的通信之后,路由器会检查从邻居接收到得Hello数据包里面的优先级、DR和BDR区域。列出所有可以参与DR和BDR推举操作的路由器列表。此后,网络上的所有路由器都会宣称自己就是DR和BDR,并将自己的接口地址设置到Hello数据包中的DR区域和BDR区域。路由器在进行DR和BDR的推举计算时,也将把自己包含在内,除非路由器不具备参与DR、BDR推举的资格。
2、从所有具备参与DR、BDR推举资格的路由器中建立一个子集,在这个子集中包含所有那些没有宣称自己是DR的路由器。宣称自己是DR的路由器不能被推举成为BDR。
3、如果在这个子集中包含有一个或多个邻居路由器将它们自己的IP地址设置在Hello数据包的BDR区域,那么这些邻居路由器中具有最高优先级的路由器将被设置成为BDR。如果优先级都相同,那么具有最高RouterID的路由器将成为BDR。
4、如果在这个子集中没有路由器宣称自己是BDR,那么,具有最高优先级的邻居路由器将被推举成为BDR。如果所有的邻居路由器的优先级相同,那么,具有最高RouterID的路由器将被推举成为BDR。
5、一个或多个具有参与DR推举的路由器如果将它们的IP地址设置在Hello数据包的DR区域,宣称自己是DR。那么具有最高优先级的邻居路由器将会被推举为DR。如果优先级都相同,具有最高RouterID的邻居路由器会被推举为DR。
6、如果没有路由器宣称自己是DR,那么新推举的BDR就会升级为DR。整个过程是先推举BDR,再开始推举DR。
7、如果完成计算的路由器是新被推举的DR或BDR,或者如果他不在是DR或BDR,重复第2步到第6步的操作。
简单来说,当OSPF路由器在网络中激活后,它将检查它的邻居路由器,看是否能够发现DR和BDR。如果它发现了一个活动的DR和BDR,这个路由器就会接受这个网络设置。如果网络中没有BDR,网络中就会开始推举操作,并且具有最高优先级的路由器成为BDR。如果多个路由器具有相同的优先级,具有最高RouterID的路由器会成为BDR。如果没有活动的DR,BDR就会被提升成为DR,然后执行新的BDR推举操作。
优先级会影响到DR、BDR的推举结果,但是如果网络中已经存在着活动的DR和BDR,那么路由器的优先级不会影响到已经活动的DR和BDR。也就是说,当一个具有较高优先级的路由器加入到一个网络,而这个网络内已经推举有DR和BDR。那么,这个路由器不会替代已经存在的DR和BDR。因此,在一个多点访问的网络中,最先进行初始化的具有参与DR推举资格的两个路由器将会分别成为DR和BDR。
一旦完成DR和BDR推举,其它的路由器将会仅和DR、BDR建立邻接关系。所有的路由器继续使用AllSPFRouter地址224.0.0.5作为目的地址组播Hello数据包,目的是跟踪它们的邻居路由器的状态。所有的DRothers路由器,也就是所有的非DR和非BDR路由器会使用AllDRouters地址224.0.0.6作为目的地址组播更新数据包(LSU)。这个地址仅仅是会被DR和BDR监听。DR会使用DRothers地址224.0.0.5作为目的地址以组播方式扩散更新数据包。
如果网络上只有一台路由器有资格参与DR和BDR的推举操作,那么这个路由器将会成为DR,网络上将不会出现BDR,其它所有的路由器和DR建立邻接关系。如果在多点访问网络上没有一台路由器具有参与DR和BDR推举的资格,那么这个网络上将不会出现DR和BDR。并且也不会有邻接关系建立。所有的邻居之间将会保持双向通信的状态。

你可能感兴趣的:(网络,职场,路由,休闲,交换)