学习目标:
通过边学习理论,边实验的方式学习OSPF的工作过程,加深对OSPF协议的理解。实验环境通过华为eNSP模拟器搭建。
本文为个人学习实验记录,如有错误或不合适的地方欢迎批评指正。
学习内容:
1.实验拓扑
2.基本配置
2.1 AR01
sysname AR01
router id 1.1.1.1
interface Serial1/0/0
link-protocol ppp
ip address 10.1.13.1 255.255.255.0
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.12.1 0.0.0.0
area 0.0.0.1
network 10.1.13.1 0.0.0.0
#
2.2 AR02
sysname AR02
router id 2.2.2.2
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.24.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.1.12.2 0.0.0.0
area 0.0.0.2
network 10.1.24.2 0.0.0.0
#
2.3 AR03
sysname AR03
router id 3.3.3.3
interface Serial1/0/0
link-protocol ppp
ip address 10.1.13.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
ospf 1
area 0.0.0.1
network 3.3.3.3 0.0.0.0
network 10.1.13.3 0.0.0.0
2.4 AR04
sysname AR04
router id 4.4.4.4
interface GigabitEthernet0/0/1
ip address 10.1.24.4 255.255.255.0
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
ospf 1
area 0.0.0.2
network 4.4.4.4 0.0.0.0
network 10.1.24.4 0.0.0.0
#
3.关于router-id
3.1 OSPF Router id的选举规则
华为的官方OSPF教材这么写的:
(1)手动配置OSPF路由器的Router ID(建议手动配置)
(2)如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
(3)如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地作为Router ID
本人用eNSP的模拟器,使用AR1220,未手动配置route id得到的结果并不是这样,拿R1来说:选取的router id不是环回接口,也不是物理接口最大的。
将模拟器中,路由器换成AR2240,结果也是这样。不知道真机是什么结果。不知道是否和模拟器有关。这个问题其实不用太纠结。所以人家第一条可能有点深远的意义:手动配置OSPF路由器的Router ID(建议手动配置)。所以,以后在实践中还是手动配置router id,这样就不会出现意想不到的结果,养成一个良好的习惯是有必要的。
3.2 全局 router id与 OSPF的router id
从模拟器实验现象来看,OSPF选择了全局route id(dis route id)作为ospf的route id。而全局router id设置的是第一个接口(按照show ip int b的顺序)的地址。
所以修改OSPF router id 可以全局配置,也可以在ospf中配置。
只设置全局router id,那么ospf router id会使用全局的。
只设置ospf router id,可能ospf router id与全局router id不一样。
4.查看了解OSPF三大表项
4.1 邻居表
(1)路由器在传递OSPF链路状态信息之前,首先建立OSPF邻居关系。(2)通过Hello报文建立邻居关系.(3)邻居表显示OSPF路由器间的邻居状态。
4.2 链路状态数据库(LSDB)
(1)LSDB会保存自己产生的及从邻居收到的LSA信息。(2)Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
4.3 OSPF路由表
OSPF路由表和路由表不同,ospf路由表的信息不一定会加入路由表,比如直连路由。
5.OSPF工作过程
5.1 OSPF报文格式和类型
OSPF有5种报文格式,5种报文头部格式相同。OSPF报文采用IP封装,IP头部协议号为89.
类型(Type) | 报文名称 | 报文功能 |
1 | Hello | 发现维护邻居关系 |
2 | DD(Database Description) | 交互LSDB摘要信息 |
3 | Link State Request | 请求特定LS信息 |
4 | Link State Update | 发送详细的LS信息 |
5 | Link State Ack | 确认LS |
5.2 OSPF工作过程
5.2.1建立邻居关系
通过发送Hello报文建立邻居关系。
(1)Down状态:邻居的初始状态,未从邻居收到任何信息。
关闭AR03与AR01连接的S1/0/0接口,AR01的邻居AR03失效。
(2)Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中。
打开AR03与AR01连接的S1/0/0接口:console日志中提示,收到邻居10.1.13.3的Hello包,邻居之前的状态为Down,当前的状态为Init。
使用抓包工具查看端口收发报文情况,可见端口上共收发了3个Hello报文,组播地址224.0.0.5(OSPF路由器会收到)。
第一个Hello报文:这是AR03发出的组播报文。可见发送报文时用的是端口IP地址。
第二个Hello报文:这是AR01发出的组播报文。内容和上一个类似。
(3)2-way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中。
第三个Hello报文:这是AR01发出的组播报文,这个报文里邻居列表(Active Neighbor)包含了AR03的router id 3.3.3.3,当AR03收到后,发现自己的Router ID存在于AR01发出的Hello报文的邻居列表中 。从下图ospf日志来看,从Init状态就直接到了Exstart状态。可能这里是非MA网络的原因。
在MA网络环境中是可以看到2way状态的,DROther路由器之间的状态会保持2-way。
Hello报文的作用:
序号 | 作用 | 描述 |
1 | 邻居发现 | 自动发现邻居路由器。通过接受hello报文 |
2 | 邻居建立 | 完成Hello报文中的参数协商,建立邻居关系。 |
3 | 邻居保持 | 周期性的发送和接收,检测邻居运行状态。可以理解为心跳包。 |
重要字段解释:
序号 | 字段 | 解释 |
1 | Network Mask | 发送报文的接口网络掩码 |
2 | Hello Interval | 发送Hello报文的时间间隔,通常为10s。 |
3 | Router Dead Interval | 失效时间,如果此时间内未收到Hello报文,认为邻居失效。通常为40s。 |
4 | Options | E:是否支持外部路由 MC:是否支持转发组播数据包 N/P:是否为NSSA区域 |
5 | Router Priority | DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。这里是串行口抓的报文,因为是P2P链路,所以不需要选举DR和BDR。 |
6 | Designated Router |
DR的接口地址。这里不需要选举,所以为0.0.0.0 |
7 | Backup Designated Router | BDR接口地址。这里不需要选举, 所以为0.0.0.0 |
O:
5.2.2建立邻接关系
(4)ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文。在此状态下发送的DD报文不包含链路状态描述。可以理解为此时准备交换信息(链路状态摘要)。
DD报文:
下图AR03发给AR01的第一个DD报文,I=1:Init,AR03发出的第一个DD报文;M=1,More,后面还有DD报文;MS=1,Master,我是主。DD序列号4874。开始都认为自己是主。
下图为AR01发给AR03的第一个DD报文,内容和上图类似。自己发出的第一个DD报文都认为自己是主,因为还不知道别人的情况。
(5)Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。可以理解为此时互相交互信息(链路状态信息摘要)。
下图为AR01发给AR03的第二个DD报文。与前面不同的是,报文中添加了摘要信息。DD序列号为4874,为AR03发给AR01的序列号,即用对方的序列号发送。为什么AR01首先给AR03发送带有摘要信息的DD报文,并且使用AR03的序列号呢?因为AR03的route id 3.3.3.3 比AR01的1.1.1.1大。所以前两个互相发送的DD报文的一部分意义是,选举谁是Master。这里选举AR03是Master,AR01是Slave,所以AR01中的M=0。
之所以叫摘要信息,因为只是简单的描述了LSA的信息,包括LS ID,通告路由器等。从路由器告诉主路由器自己拥有摘要的信息。
下图为AR03发给AR01的DD报文(含摘要的):序列号为4874+1。主路由器把自己的摘要信息也告诉从路由器。
下图为AR01发给AR03的DD报文(不含摘要的):序列号为4874+1,即用对方序列号回复。从路由器告诉主路由器,我收到了你的摘要信息。
(6)Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
下图为AR01发给AR03的LS request报文,内容为要进行请求的信息。简单说就是把自己想要的东西告诉对方。
下图为AR03回给AR01的LS Update报文,内容为请求的信息的详细回复。这里就不仅仅是摘要信息了,还包含了路由信息。
下图为AR01对AR03的LS Update报文的确认。告诉对方收到了对方的哪些信息。
(7)Full:路由器已完成了与邻居的LSDB同步。经过上面信息交换,完成了LSDB的更新。
注意:经过多次抓包会发现,每次和每次相互发包的顺序不一定一样。所以这里分析报文只是为了加深理解OSPF的工作过程。做实验有利于加深对理论知识的消化。
5.3 DR与BDR
5.3.1DR与BDR的作用
在MA网络中选举DR:
DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步。DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。为了规避单点故障风险,通过选举BDR(Backup Designated Router,备份指定路由器) ,在DR失效时快速接管DR的工作。
上面的实验因为用的PPP链路,所以没有选举DR和BDR,因为既然是点到点,那么链路上只有这2台路由器,选举就没有意义了。
MA网络,multiple access 网络的简称,中文意思是多路访问。MA网络是指一条链路上有多个访问点,一般分为两种:广播式多路访问网络、非广播式多路访问网络。
1、广播式多路访问网络一般指的是以太网,这种网络是支持广播发送的,正常情况下,DR只在多路访问时选取;
2、非广播式多路访问网络(NBMA),一般常见的有帧中继, ATM等网络,在这种网络上广播是无法发送的。
5.3.2DR与BDR的选举规则
(1)DR/BDR的选举是非抢占式的。既然选好了就不能随意变更。
(2)DR/BDR的选举是基于接口的。接口的DR优先级越大越优先。接口的DR优先级相等时,Router ID越大越优先。
5.3.3不同网络类型中DR与BDR的选举操作
OSPF网络类型 |
常见链路层协议 |
是否选举DR |
是否和邻居建立邻接关系 |
Point-to-point |
PPP链路;HDLC链路 |
否 |
是 |
Broadcast |
以太网链路 |
是 |
DR与BDR 、DRother建立邻接关系 BDR与DR 、DRother建立邻接关系 DRother之间只建立邻居关系 |
NBMA |
帧中继链路 |
||
P2MP |
需手工指定 |
否 |
是 |
5.3.4 修改互联接口网络类型
AR01和AR02用的以太口连接,选举了DR和BDR。可以在OSPF中将端口类型改为P2P,从而关闭选举。官方:如果同一网段内只有两台设备运行OSPF协议,建议将接口的网络类型改为P2P网络。
注意:一台路由器端口改成了P2P,另一台不要忘了修改。尽管只修改一台能够建立邻接关系,但是路由器不会将这条线上传送过来的路由信息,加入OSPF路由表。下图中4.4.4.4 LSID在 LSDB中是存在的,但是OSPF路由表中是没有的,原因是AR01和AR02 OSPF端口类型不一致。
将AR02 也改成P2P:
再次查看,OSPF路由表中更新了。
6.总结
(1)配置OSPF最好手动指定router id。
(2)OSPF的工作过程:Down-->Init-->2-Way-->ExStart-->Exchange-->Loading-->Full.文章来源:https://www.toymoban.com/news/detail-486754.html
(3)一个网段只有2个路由器,建议互联接口的网络类型都修改为P2P.文章来源地址https://www.toymoban.com/news/detail-486754.html
到了这里,关于OSPF基础学习-实验报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!