OSPF协议详细介绍-⾮常好
1.掌握OSPF的⼯作原理
2.掌握OSPF的基本配置
开放式最短路径优先(OSPF)
OSPF是⼀种基于链路状态的路由协议,它从设计上就保证了⽆路由环路。OSPF⽀持区域的划分,区域内部的路由器使⽤SPF最
短路径算法保证了区域内部的⽆环路。OSPF还利⽤区域间的连接规则保证了区域之间⽆路由环路。
OSPF⽀持触发更新,能够快速检测并通告⾃治系统内的拓扑变化。
OSPF可以解决⽹络扩容带来的问题。当⽹络上路由器越来越多,路由信息流量急剧增长的时候,OSPF可以将每个⾃治系统划分
为多个区域,并限制每个区域的范围。OSPF这种分区域的特点,使得OSPF特别适⽤于⼤中型⽹络。OSPF还可以同其他协议
(⽐如多协议标记切换
协议MPLS)同时运⾏来⽀持地理覆盖很⼴的⽹络。
OSPF可以提供认证功能。OSPF路由器之间的报⽂可以配置成必须经过认证才能进⾏交换。与RIP协议的⽐较
OSPF原理介绍
OSPF要求每台运⾏OSPF的路由器都了解整个⽹络的链路状态信息,这样才能计算出到达⽬的地的最优路径。OSPF的收敛过
程由链路状态公告LSA(LinkStateAdvertiment)泛洪开始,LSA中包含了路由器已知的接⼝IP地址、掩码、开销和⽹络类型等
信息。收到LSA的路由器都可以根据LSA提供的信息建⽴⾃⼰的链路状态数据库LSDB(LinkStateDataba),并在LSDB的基
础上使⽤SPF算法进⾏运算,建⽴起到达每个⽹络的最短路径树。最后,通过最短路径树得出到达⽬的⽹络的最优路由,并将其加
⼊到IP路由表中。
OSPF报⽂
OSPF直接运⾏在IP协议之上,使⽤IP协议号89。
OSPF有五种报⽂类型,每种报⽂都使⽤相同的OSPF报⽂头。
报⽂:最常⽤的⼀种报⽂,⽤于发现、维护邻居关系。并在⼴播和
NBMA(None-BroadcastMulti-Access)类型的⽹络中选举指定路由器DR(DesignatedRouter)和备份指定路由器BDR(Backup
DesignatedRouter)。
报⽂:两台路由器进⾏LSDB数据库同步时,⽤DD报⽂来描述⾃⼰的LSDB。DD报⽂的内容包括LSDB中每⼀条LSA的头
部(LSA的头部可以唯⼀标识⼀条LSA)。LSA头部只占⼀条LSA的整个数据量的⼀⼩部分,所以,这样就可以减少路由器之间的协
议报⽂流量。
报⽂:两台路由器互相交换过DD报⽂之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报⽂向
对⽅请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
报⽂:⽤来向对端路由器发送所需要的LSA。
报⽂:⽤来对接收到的LSU报⽂进⾏确认。
邻居状态机
邻居和邻接关系建⽴的过程如下:
:这是邻居的初始状态,表⽰没有从邻居收到任何信息。
t:此状态只在NBMA⽹络上存在,表⽰没有收到邻居的任何信息,但是已经周期性的向邻居发送报⽂,发送间隔为
HelloInterval(⼀般是10s)。如果RouterDeadInterval(⼀般为HelloInterval的四倍)间隔内未收到邻居的Hello报⽂,则转为
Down状态。
:在此状态下,路由器已经从邻居收到了Hello报⽂,但是⾃⼰不在所收到的Hello报⽂的邻居列表中,尚未不邻居建⽴双向通
信关系。
4.2-Way:在此状态下,双向通信已经建⽴,但是没有不邻居建⽴邻接关系。这是建⽴邻接关系以前的最⾼级状态。
t:这是形成邻接关系的第⼀个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报⽂。主从关系是在此状态下
形成的,初始DD序列号也是在此状态下决定的。在此状态下収送的DD报⽂不包含链路状态描述。
ge:此状态下路由器相互发送包含链路状态信息摘要的DD报⽂,描述本地LSDB的内容。
g:相互发送LSR报⽂请求LSA,发送LSU报⽂通告LSA。
:路由器的LSDB已经同步。
RouterID、邻居和邻接
RouterID是⼀个32位的值,它唯⼀标识了⼀个⾃治系统内的路由器,可以为每台运⾏OSPF的路由器上可以⼿动配置⼀个Router
ID,或者指定⼀个IP地址作为RouterID。如果设备存在多个逻辑接⼝地址,则路由器使⽤逻辑接⼝中最⼤的IP地址作为Router
ID;如果没有配置逻辑接⼝,则路由器使⽤物理接⼝的最⼤IP地址作为RouterID。在为⼀台运⾏OSPF的路由器配置新的Router
ID后,可以在路由器上通过重置OSPF进程来更新RouterID。通常建议⼿动配置RouterID,以防⽌RouterID因为接⼝地址的变
化⽽改变。
OSPFRouter-ID的确定顺序:
1routerid命令
id命令
3.最⼤的Loopback接⼝IP地址
4.最⼤的物理接⼝IP地址
运⾏OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间⾸先需要建⽴邻接关系。
邻居(Neighbor):
OSPF路由器启动后,便会通过OSPF接⼝向外发送Hello报⽂⽤于发现邻居。收到Hello报⽂的OSPF路由器会检查报⽂中所定
义的⼀些参数,如果双⽅的参数⼀致,就会彼此形成邻居关系。
邻接(Adjacency):
形成邻居关系的双⽅不⼀定都能形成邻接关系,这要根据⽹络类型⽽定。只有当双⽅成功交换DD报⽂,并能交换LSA之后,才形
成真正意义上的邻接关系。
路由器在发送LSA之前必须先发现邻居并建⽴邻居关系。
本例中,RTA通过以太⽹连接了三个路由器,所以RTA有三个邻居,但不能说RTA有三邻接关系。
邻居发现
OSPF的邻居发现过程是基于Hello报⽂来实现的,Hello报⽂中的重要字段解释如下:
kMask:发送Hello报⽂的接⼝的⽹络掩码。
nterval:发送Hello报⽂的时间间隔,单位为秒。
s:标识发送此报⽂的OSPF路由器所⽀持的可选功能。具体的可选功能已超出这⾥的讨论范围。
Priority:发送Hello报⽂的接⼝的RouterPriority,⽤于选举DR和BDR。
DeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报⽂,则认为邻居失效;单位为秒,通常为四倍
HelloInterval。
atedRouter:发送Hello报⽂的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表⽰未选举DR路由器。
DesignatedRouter:发送Hello报⽂的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表⽰未选举BDR。
or:邻居的RouterID列表,表⽰本路由器已经从这些邻居收到了合法的Hello报⽂。如果路由器发现所接收的合法Hello
报⽂的邻居列表中有⾃⼰的RouterID,则认为已经和邻居建⽴了双向连接,表⽰邻居关系已经建⽴。
验证⼀个接收到的Hello报⽂是否合法包括:
1.如果接收端⼝的⽹络类型是⼴播型,点到多点或者NBMA,所接收的Hello报⽂中NetworkMask字段必须和接收端⼝的⽹络掩
码⼀致,如果接收端⼝的⽹络类型为点到点类型或者是虚连接,则不检查NetworkMask字段;
2.所接收的Hello报⽂中HelloInterval字段必须和接收端⼝的配置⼀致;
3.所接收的Hello报⽂中RouterDeadInterval字段必须和接收端⼝的配置⼀致;
4.所接收的Hello报⽂中Options字段中的E-bit(表⽰是否接收外部路由信息)必须和相关区域的配置⼀致
数据库同步
如图所⽰,路由器在建⽴完成邻居关系之后,便开始进⾏数据库同步,具体过程如下:
1.邻居状态变为ExStart以后,RTA向RTB发送第⼀个DD报⽂,在这个报⽂中,DD序列号被设置为X(假设),RTA宣告⾃⼰为主路由
器。
也向RTA发送第⼀个DD报⽂,在这个报⽂中,DD序列号被设置为Y(假设)。RTB也宣告⾃⼰为主路由器。由于RTB的
RouterID⽐RTA的⼤,所以RTB应当为真正的主路由器。
发送⼀个新的DD报⽂,在这个新的报⽂中包含LSDB的摘要信息,序列号设置为RTB在步骤2⾥使⽤的序列号,因此RTB将
邻居状态改变为Exchange。
4.邻居状态变为Exchange以后,RTB发送⼀个新的DD报⽂,该报⽂中包含LSDB的描述信息,DD序列号设为Y+1(上次使⽤的序
列号加1)。
5.即使RTA不需要新的DD报⽂描述⾃⼰的LSDB,但是作为从路由器,RTA需要对主路由器RTB发送的每⼀个DD报⽂进⾏确
认。所以,RTA向RTB发送⼀个内容为空的DD报⽂,
序列号为Y+1。
发送完最后⼀个DD报⽂之后,RTA将邻居状态改变为Loading;RTB收到最后⼀个DD报⽂之后,改变状态为Full(假设RTB的
LSDB是最新最全的,不需要向RTA请求更新)。
建⽴完全邻接关系
6.邻居状态变为Loading之后,RTA开始向RTB发送LSR报⽂,请求那些在Exchange状态下通过DD报⽂发现的,⽽且在本地
LSDB中没有的链路状态信息。
收到LSR报⽂之后,向RTA发送LSU报⽂,在LSU报⽂中,包含了那些被请求的链路状态的详细信息。RTA收到LSU报⽂之
后,将邻居状态从Loading改变成Full。
向RTB发送LSACK报⽂,⽤于对已接收LSA的确认。此时,RTA和RTB之间的邻居状态变成Full,表⽰达到完全邻接状
态。
OSPF⽀持的⽹络类型
OSPF定义了四种⽹络类型,分别是点到点⽹络,⼴播型⽹络,NBMA⽹络和点到多点⽹络。点到点⽹络是指只把两台路由器直接
相连的⽹络。⼀个运⾏PPP的64K串⾏线路就是⼀个点到点⽹络的例⼦。
⼴播型⽹络是指⽀持两台以上路由器,并且具有⼴播能⼒的⽹络。⼀个含有三台路由器的以太⽹就是⼀个⼴播型⽹络的例⼦。
默认情况下,接⼝的封装协议决定了⽹络类型
如果接⼝的封装协议是PPP,HDLC,帧中继的点到点⼦接⼝,默认的⽹络类型为P2P。如果接⼝的封装协议是以太⽹的,默
认的⽹络类型为broadcast
如果接⼝封装是帧中继或者帧中继的点到多点⼦接⼝,ATM接⼝,默认是NBMA型⽹络
任何接⼝的默认⽹络类型,可以被⼈为修改。
OSPF可以在不⽀持⼴播的多路访问⽹络上运⾏,此类⽹络包括在hub-spoke拓扑上运⾏的帧中继(FR)和异步传输模式(ATM)⽹
络,这些⽹络的通信依赖于虚电路。OSPF定义了两种⽀持多路访问的⽹络类型:⾮⼴播多路访问⽹络(NBMA)和点到多点⽹络
(PointToMulti-Points)。
:在NBMA⽹络上,OSPF模拟在⼴播型⽹络上的操作,但是每个路由器的邻居需要⼿动配置。NBMA⽅式要求⽹络中的
路由器组成全连接。
2.P2MP:将整个⽹络看成是⼀组点到点⽹络。对于不能组成全连接的⽹络应当使⽤点到多点⽅式,例如只使⽤PVC的不完全连
接的帧中继⽹络。
DR&BDR
每⼀个含有⾄少两个路由器的⼴播型⽹络和NBMA⽹络都有⼀个DR和BDR。
DR和BDR可以减少邻接关系的数量,从⽽减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能
⼒的压⼒。⼀个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就⼤⼤减
少了⼤型⼴播型⽹络和NBMA⽹络中的邻接关系数量。在没有DR的⼴播⽹络上,邻接关系的数量可以根据公式n(n-1)/2计算出,n
代表参不OSPF的路由器接⼝的数量。在本例中,所有路由器之间有6个邻接关系。当指定了DR后,所有的路由器都不DR建⽴起
邻接关系,DR成为该⼴播⽹络上的中⼼点。
BDR在DR収⽣故障时接管业务,⼀个⼴播⽹络上所有路由器都必须同BDR建⽴邻接关系。本例中使⽤DR和BDR将邻接关系从
6减少到了5,RTA和RTB都只需要同DR和BDR建⽴邻接关系,RTA和RTB之间建⽴的是邻居关系。
此例中,邻接关系数量的减少效果并不明显。但是,当⽹络上部署了⼤量路由器时,⽐如100台,那么情况就⼤不⼀样了。
DR&BDR选举
在邻居収现完成之后,路由器会根据⽹段类型进⾏DR选举。在⼴播和NBMA⽹络上,路由器会根据参不选举的每个接⼝的优先级
进⾏DR选举。优先级取值范围为0-255,值越⾼越优先。缺省情况下,接⼝优先级为1。如果⼀个接⼝优先级为0,那么该接⼝将不
会参与DR或者BDR的选举。如果优先级相同时,则⽐较RouterID,值越⼤越优先被选举为DR。
为了给DR做备份,每个⼴播和NBMA⽹络上还要选举⼀个BDR。BDR也会与⽹络上所有的路由器建⽴邻接关系。
为了维护⽹络上邻接关系的稳定性,如果⽹络中已经存在DR和BDR,则新添加进该⽹络的路由器不会成为DR和BDR,不管该路
由器的RouterPriority是否最⼤。如果当前DR发⽣故障,则当前BDR⾃动成为新的DR,⽹络中重新选举BDR;如果当前BDR发⽣
故障,则DR不变,重新选举BDR。这种选举机制的⽬的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量
⼩。
OSPF区域
OSPF⽀持将⼀组⽹段组合在⼀起,这样的⼀个组合称为⼀个区域。
划分OSPF区域可以缩⼩路由器的LSDB规模,减少⽹络流量。
区域内的详细拓扑信息不向其他区域収送,区域间传递的是抽象的路由信息,⽽不是详细的描述拓扑结构的链路状态信息。每个
区域都有⾃⼰的LSDB,不同区域的LSDB是不同的。路由器会为每⼀个⾃⼰所连接到的区域维护⼀个单独的LSDB。由于详细
链路状态信息不会被发布到区域以外,因此LSDB的规模⼤⼤缩⼩了。
Area0为⾻⼲区域,为了避免区域间路由环路,⾮⾻⼲区域之间不允许直接相互发布路由信息。因此,每个区域都必须连接到⾻⼲
区域。
运⾏在区域之间的路由器叫做区域边界路由器ABR(AreaBoundaryRouter),它包含所有相连区域的LSDB。⾃治系统边界路由
器ASBR(AutonomousSystemBoundaryRouter)是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通
告AS外部路由信息。在规模较⼩的企业⽹络中,可以把所有的路由器划分到同⼀个区域中,同⼀个OSPF区域中的路由器中的
LSDB是完全⼀致的。OSPF区域号可以⼿动配置,为了便于将来的⽹络扩展,推荐将该区域号设置为0,即⾻⼲区域。
OSPF开销
OSPF基于接⼝带宽计算开销,计算公式为:接⼝开销=带宽参考值÷带宽。带宽参考值可配置,缺省为100Mbit/s。以此,⼀个
64kbit/s串⼝的开销为1562,⼀个E1接⼝(2.048Mbit/s)的开销为48。
命令bandwidth-reference可以⽤来调整带宽参考值,从⽽可以改变接⼝开销,带宽参考值越⼤,开销越准确。在⽀持10Gbit/s速率
的情况下,推荐将带宽参考值提⾼到10000Mbit/s来分别为10Gbit/s、1Gbit/s和100Mbit/s的链路提供1、10和100的开销。注
意,配置带宽参考值时,需要在整个OSPF⽹络中统⼀进⾏调整。
另外,还可以通过ospfcost命令来⼿动为⼀个接⼝调整开销,开销值范围是1~65535,缺省值为1。
OSPF配置
在配置OSPF时,需要⾸先使能OSPF迚程。
命令ospf[processid]⽤来使能OSPF,在该命令中可以配置迚程ID。如
果没有配置进程ID,则使⽤1作为缺省迚程ID。
命令ospf[processid][router-id]既可以使能OSPF进程,还
同时可以⽤于配置RouterID。在该命令中,router-id代表路由器的ID。
命令network⽤于指定运⾏OSPF协议的接⼝,在该命令中需要指定⼀个反掩码。反掩码中,“0”表⽰此位必须严格匹配,“1”表⽰该
地址可以为任意值。
配置验证
命令displayospfpeer可以⽤于查看邻居相关的属性,包括区域、邻居的状态、邻接协商的主从状态以及DR和BDR情况。
OSPF认证
OSPF⽀持简单认证及加密认证功能,加密认证对潜在的攻击⾏为有更强的防范性。OSPF认
证可以配置在接⼝或区域上,配置接⼝认证⽅式的优先级⾼于区域认证⽅式。
接⼝戒区域上都可以运⾏ospfauthentication-mode{simple[[plain]|cipher]|null}命令来配置简单认证,参数plain表⽰使⽤
显⽰密码,参数cipher表⽰使⽤密⽂密码,参数null表⽰不认证。
命令ospfauthentication-mode{md5|hmac-md5}[key-id{plain|[cipher]}]⽤于配置加密认证,MD5是⼀种保证链路认证安
全的加密算法(具体配置已在举例中给出),参数key-id表⽰接⼝加密认证中的认证密钥ID,它必须不对端上的key-id⼀致。
配置验证
在启⽤认证功能之后,可以在终端上进⾏调试来查看认证过程。
debuggingospfpacket命令⽤来指定调试OSPF报⽂,然后便可以查看认证过程,以确定认证配置是否成功。
总结
llo报⽂章那个RouterDeadInterval字段的作⽤是什么?
2.在⼴播⽹络中,DR和BDR⽤来接收链路状态更新报⽂的地址是什么?
答:
报⽂中的RouterDeadInterval字段代表死亡间隔,如果在此时间内未收到邻居
収来的Hello报⽂,则认为邻居失效。死亡间隔是Hello间隔的4倍,在⼴播⽹络上缺省为40秒(因为Hello间隔缺省为10秒)。
4.在⼴播⽹络上,DR和BDR都使⽤组播地址224.0.0.6来接收链路状态更新报⽂。
本文发布于:2023-01-19 16:27:49,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/95867.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |