ospf协议邻居状态.docx
- 文档编号:12304050
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:7
- 大小:18.88KB
ospf协议邻居状态.docx
《ospf协议邻居状态.docx》由会员分享,可在线阅读,更多相关《ospf协议邻居状态.docx(7页珍藏版)》请在冰豆网上搜索。
ospf协议邻居状态
竭诚为您提供优质文档/双击可除
ospf协议邻居状态
篇一:
ospF建立邻居的过程
1.R1的一个连接到广播类型网络的接口上激活了ospF协议,并发送了一个hello报文(使用组播地址224.0.0.5)。
由于此时R1在该网段中还未发现任何邻居,所以hello报文中的neighbor字段为空。
2.R2收到R1发送的hello报文后,为R1创建一个邻居的数据结构。
R2发送一个hello报文回应R1,并且在报文中的neighbor字段中填入R1的Router-id,表示已收到R1的hello报文,并且将R1的邻居状态机置为init
3.R1收到R2回应的hello报文后,为R2创建一个邻居的数据结构,并将邻居状态机置为exstart状态。
下一步双方开始发送各自的链路状态数据库。
为了提高发送的效率,双方需先了解一下对端数据库中那些lsa是自己所需要的(如果某一条lsa自己已经有了,就不再需要请求了)。
方法是先发送dd报文,dd报文中包含了对本地数据库中lsa的摘要描述(每一条摘要可以惟一标识一条lsa,但所占的空间要少得多)。
由于ospF直接用ip报文来封装自己的协议报文,所以在传输的过程中必须考虑到报文传输的可靠性。
为了做到这一点,在dd报文的发送过程中需要确定双方的主从关系。
作为master的一方定义一个序列号seq,每发送一个新的dd报文将seq加一。
作为slave的一方,每次发送dd报文时使用接收到的上一个master的dd报文中的seq。
实际上这种序列号机制是一种隐含的确认方法。
如果再加上每个报文都有超时重传,就可以保证这种传输是可靠的。
R1首先发送一个dd报文,宣称自己是master(ms=1),并规定序列号为x。
i=1表示这是第一个dd报文,报文中并不包含lsa的摘要,只是为了协商主从关系。
m=1说明这不是最后一个报文。
4.R2在收到R1的dd报文后,将R1的邻居状态机改为exstart,并且回应了一个dd报文(该报文中同样不包含lsa的摘要信息)。
由于Rt2的Routerid较大,所以在报文中R2认为自己是master,并且重新规定了序列号为y。
5.R1收到报文后,同意了R2为master,并将R2的邻居状态机改为exchange。
R1使用R2的序列号y来发送新的dd报文,该报文开始正式地传送lsa的摘要。
在报文中R1将ms=0,说明自己是slave。
6.R2收到报文后,将R1的邻居状态机改为exchange,并发送新的dd报文来描述自己的lsa摘要,需要注意的是:
此时R2已将报文的序列号改为y+1了。
7.上述过程持续进行,R1通过重复R2的序列号来确认已收到Rt2的报文。
R2通过将序列号+1来确认已收到R1的报文。
当R2发送最后一个dd报文时,将报文中的m=0,表示这是最后一个dd报文了。
8.Rt1收到最后一个dd报文后,发现R2的数据库中有许多lsa是自己没有的,将邻居状态机改为loading状态。
此时R2也收到了R1的最后一个dd报文,但Rt1的lsa,Rt2都已经有了,不需要再请求,所以直接将R1的邻居状态机改为Full状态。
9.R1发送lsRequest报文向R2请求所需要的lsa。
R2用lsupdate报文来回应R1的请求。
R1收到之后,需要发送lsack报文来确认。
上述过程持续到R1中的lsa与R2的lsa完全同步为止。
此时R1将R2的邻居状态机改为Full状态。
篇二:
ospF卡在各种状态的原因
ospF卡在各种状态的原因
1.ospF邻居停滞于attempt状态
只有在nbma中才会出现attempt状态,attempt状态是路由器在nbma模式中必须经过的一个普通状态。
如果路由器如果一直停滞于attempt状态,则表明路由器发送了hello分组给一个邻居,但是没有收到回应。
这个问题仅仅在定义了neighbor语句的nbma网络中才会出现。
①neighbor指向了错误的邻居
②在nbma中单播连接中断。
例如:
acl阻止了单播
2.ospF邻居停滞于init状态
路由器收到第一个分组将使路由器进入正常的init状态。
当一个路由器从邻居收到一个ospFhello分组的时候,它在hello分组中包含进邻居的路由器id并发送这个hello分组。
如果它不包含邻居的路由器id,那么邻居将停滞于init状态。
①验证只在某一边启用。
②acl在某一边阻止了hello分组。
3.ospF邻居停滞于2-way状态
正常情况下,在ma网络等广播介质中,drother之间的邻居状态是2-way状态,drother与dR和bdR之间形成Full状态。
停滞于2-way状态的原因:
路由器上都配置了优先级0,dRother与dR/bdR关系都为full,dRother与dRother之间全部都是2-way
4.ospF邻居停滞于exstaRt/exchange状态
在exstaRt/exchange状态阶段:
路由器选择一个主设备、一个从设备、一个初始序列号。
(exstaRt状态)整个数据库交换。
(exchange状态)
停滞于exstaRt/exchange状态的原因:
①不匹配的接口mtu。
(邻居关系还没有建立好时)重传25次后down掉后,等待一分钟,然后再次建立邻居关系
结论:
1.如果邻居建不起来(2-way状态之前)
网络类型为nbma,邻居表显示一边是attempt状态,一边是init状态;
网络类型为point-to-multipointnbma,邻居表显示一边是down状态;一边是init状态。
网络类型为broadcast/p2mp/p2p/,邻居表显示一边为空,一边是init状态。
2.对于ma网络,如果路由器优先级都设为0,则会停滞于2-way状态,因为这个状态下需要选举dR/bdR。
3.如果mtu不匹配,会卡在exstart状态;这个字段是携带在dbd中的。
4.网络类型为nbma/p2mpnbma,所有的包只能通过单播发送(neighbor命令).
5.如果网络类型是point-to-point,则所有的包通过发送。
224.0.0.5
6.如果网络类型是broadcast/p2mp,则发包既有组播,又有单播。
exchange状态之前的包是用组播发送的。
exchange状态之后的包是用单播发送的。
(带lsa摘要信息的dbd包)
224.0.0.5:
dR/bdR与drother通讯,同时bdR监听此地址
224.0.0.6:
dRother找dR时用的地址.
7.attempt状态只会出现在nbma网络中,如果路由器发了hello包而收不到回复,则会置于attempt状态。
篇三:
ospF的邻居和邻接
在RFc2328Version2中定义了邻居关系(neighbors)和邻接关系(adjacency),本文旨在分析一下二者之间的联系和区别。
1.ospF的邻居(neighbors)
同一个网段上的路由器可以成为邻居。
邻居是通过hello报文来选择的,hello报文使用ip多播方式在每个端口定期发送。
路由器一旦在其相邻路由器的hello报文中发现他们自己,则他们就成为邻居关系了,在这种方式中,需要通信的双方确认。
邻居的协商只在主地址(primaryaddress)间协商。
两个路由器之间如果他们不满足下列条件,则他们就不能成为邻居:
1、area-id:
两个路由器必须有共同的网段上,它们的端口必须属于该网段上的同一个区,当然这些端口必须属于同一个子网。
2验证(authenticationospF)允许给每一个区域配置一个密码来进行互相验证。
路由器必须交换相同的密码,才能成为邻居。
3、hellointerval和deadinterval:
ospF协议在每个网段上交换hello报文,这是keeplive的一种形式,路由器用它来确认该网段上存在哪些路由器,并且选定一个指定路由器dR(designatedRouter)。
hellointerval定义了路由器上ospF端口上发送hello报文时间间隔长度(秒为单位)。
deadinterval是指邻居路由器宣布其状态为down之前,没有收到其hello报文的时间。
ospF协议需要两个邻居路由器的这些时间间隔相同,如果这些时间间隔不同,这些路由器就不能成为邻居路由器。
可在路由器的端口模式下设置这些定时器:
ipospfhello-interval
ipospfdead-interval
4stub区标记:
两个路由器为了成为邻居还可以在hello报文中通过协商stub区的标记来达到。
stub区的定义会影响邻居选择的过程。
2.邻接(adjacencies)
邻居关系形成后路由器之间就会进行邻接关系的形成。
成为邻接关系的路由器之间,不仅仅是进行简单的hello报文的交换,而是进行数据库的交换/为了减少特定网段上的交换信息。
ospF协议在每一个多址可达的网段上选择一个路由器作为指定路由器(dRdesignatedRouter),选择另外一个路由器作为备份的指定路由器bdR(backupdesignatedRouter),bdR作为dR的备份。
这种设计的考虑是让dR或bdR成为信息交换的中心,而不是让每个路由器与该网段上其它路由器两两做更新信息的交换。
路由器首先与dR、bdR交换更新信息,
然后dR、bdR将这些更新信息转发给该网段上的其他路由器。
这样信息交换的复杂度就会从o(n*n)降到o(n),其中n是多址可达网段上的路由器的数量。
如图1,显示了dR和bdR的关系。
在上图中,所有的路由器在同一个多址可达网段上,通过相互交换hello报文来选择dR和bdR.在该网段上的每个路由器(他们之间已经成为neighbor)会进一步与dR和bdR建立邻接(adjacency)关系。
2.1dR的选择
dR与bdR的选择是通过hello报文来进行的,而hello报文又是通过每个网段上ip多播报文来进行交换的。
在一个网段上,ospF优先级最高的那台路由器将成为dR,ospF优先级次高的那台路由器将成为bdR.若ospF的优先级相同,则路由器的Routerid大者将成为dR.默认情况下,ospF的优先级为1.一定要记住dR和bdR的概念只在每个多址可达的网段上才有,如pointtopoint,pointtomultipoint等网络上没有这个概念。
可以在端口模式下使用下面的命令来设置路由器端口的ospF优先级:
ipospfpriority
可用在特权模式下使用下面的命令查看端口的ospF优先级:
showipospfinterfaceethernet0
如果端口的ospF优先级为0则表示该端口永远不会被选择为dR或bdR.
ospF端口优先级为0时,端口状态为dRotheR.如图2,显示了dR选择过程。
在上图segment1中,Rta与Rtb的端口ospF优先级相同,都为1(默认值),但是Rtb的Rid(4.4.4.4)比Rta的Rid(3.3.3.3)大,则Rtb将成为那个网段的dR.在segment2中,Rtc比Rtb相应ospF端口的优先级高,则Rtc是该网段的dR.
2.2建立邻接关系(adjacency)
邻接关系的建立过程由多个步骤组成,成为邻接关系的路由器会保留一份精确的链路状态数据库。
下面是路由器之间在形成邻接关系过程中端口状态变化的一个简单总结:
1、down状态,表示在多址可达网络中没有收到任何信息。
2、attempt状态,在FrameRelay和x.25等nbma网络中,这种状态表示路由器没有从其邻居路由器上接收任何信息。
3、init,状态端口检测到从邻居路由器上来的hello报文,但还没有建立起双向通信。
4、two-way状态,路由器与其邻居路由器建立起双向通信,路由器会在其邻居路由器发送过来的hello报文中看到自己。
在这个状态的末段,将进行dR和bdR的选择,邻居路由器间决定是否建立邻接关系。
5、exstart状态,在该状态中路由器会产生一个初始序列号,用来交换信息报文,这个序列号能确保路由器收到的是最新的报文信息,一个路由器将成为主,另一个路由器则成为辅,主路由器会获得辅路由器的信息。
6、exchang状态,路由器通过发送dd报文(databasedescriptionpackects)来建立他们的整个链路状态数据库。
在这个状态过程中,报文会通过泛洪(Fooding)到路由器的其他端口上。
7、loading状态,在这个状态中,路由器将结束信息的交换,路由器会建立一个链路状态请求列表(link-stateRequestlist)和一个链路状态转发列表(link-state
Retransmissionlist)。
所有的不完整的或废弃的信息都将放到请求列表,中所有的更新报文将被送到转发列表中,直到该报文得到回应。
8、Full状态,在这个状态过程中,邻接关系已经形成,邻居路由器完全邻接,邻接路由器具有相同的链路状
态数据库。
如图3Rta、Rtb、Rtd和RtF的以太口0在同一个区域0.0.0.0中。
下面是Rta和RtF的配置,Rtb、Rtd的配置类似,在这里就不一一列出。
可以用showipospfinterface来快速检查各个端口属于那个区域。
尤其ospF网络配置命令的顺序非常重要。
如Rta配置中的斜体部分,如果"network
203.250.0.00.0.255.255area0.0.0.0"语句放在"network203.250.13.410.0.0.0area1"之前,所有的端口都会将属于区域0,这会有问题的,因为loopback端口被划在区域1中。
让我们看一看Rta、Rtb、Rtd、RtF的showip
ospfinterfacee0的输出:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ospf 协议 邻居 状态
![提示](https://static.bdocx.com/images/bang_tan.gif)