动态路由协议OSPF学习①
作者:互联网
动态路由协议RIP和OSPF比较:
动态路由(IGP)的三个评判标准:是否选路佳,收敛速度快,占用链路资源少
动态路由协议 | 选路 | 收敛 | 占用资源 |
RIP | 选路以跳数为开销值 | 收敛速度以计时器为标准 | 单个数据包占用少 |
OSPF | 选路以带宽为标准 | 收敛快 | 单个数据包占用大 |
路由比较:
RIP[距离矢量协议]:
- RIP路由选路是以跳数为开销值(存在选路不够智能,还有出环的问题)
- 收敛速度以计时器为标准(相比之下较慢,30+180+120)
- 单个数据包占用少,但是有一个30s的周期更新保活包(占用大)
OSPF[链路状态协议]:
- 选路以带宽为标准(SPF算法-树形结构不会出现环路问题)
- 收敛快(使用算法计算的链路信息)
- 单个数据包占用大,但是10s周期更新的hello包占用少
版本比较:
- RIP存在三个版本:RIPV1,RIPV2适应于IPV4,RIPNG适用于IPV6
- OSPF的三个版本:OSPFV1(已淘汰),OSPFV2适用于IPV4,OSPFV3适用于IPV6
RIPV2和OSPFV2区别:
相同点:
- RIPV2和OSPFV2都是无类别的路由协议{传递路由信息时携带子网掩码}且都支持子网划分和子网聚合
- OSPFV2使用的组播包地址为224.0.0.5和224.0.0.6,而RIPV2的组播包为224.0.0.9
- OSPFV2和RIPV2都支持等开销负载均衡
不同点:
OSPF协议和RIP协议不同在于适用范围,RIP协议仅适用于中小型网络环境中(15跳限制),而OSPF协议则可以适用于中大型的网络环境中(OSPF为了适应中大型网络环境,需要进行结构化部署,即:区域划分)
OSPF:开放式最短路径优先协议
OSPF区域划分:
当网络规模不大时,我们也可以将OSPF网络划分在一个区域内,而主要的OSPF网络:单区域网络。而如果一个OSPF网络中包含有多个OSPF区域:多区域OSPF网络
区域划分的主要目的:OSPF区域内部传递拓扑信息,而区域之间传递路由信息
OSPF又称链路状态路由协议,而链路状态路由协议的距离矢量特征:区域间传递路由
区域边界路由器ABR:
要求:同时处于多个OSPF区域边界,且ABR的一个接口对应一个区域,并至少有一个接口属于骨干区域(中心区域),区域与区域之间可以存着多个ABR,一个ABR可以对应多个区域
区域划分的要求:
- 区域之间必须存在ABR
- 区域划分必须按照星型拓扑结构划分,即所有区域需要连接在中心区域上(中心称之为骨干区域)
为了方便对各个区域进行区分和管理,我们给每个区域设计一个编号:区域ID。区域ID由32位二进制表示,也可以用点分十进制表示,或者直接用十进制来表示,但是骨干区域的区域号必须为0
OSPF的数据包(文字简述):
hello包:
- 周期发现,建立和保活邻居关系(周期为10s/30s)
- 携带死亡时间:dead time(4倍hello时间--40s/120s)
- hello包会中携带RID
OSPF传递的是拓扑信息,需要将所有的路由器的位置关系表示清楚,所以需要有一个参数对所有的路由器进行区分表定:引入RID来完成
RID要求:
- 唯一性(OSPF网络区域内部唯一)
- 格式统一(由32位二进制构成,采用IP地址的格式,X.X.X.X格式)
RID的获取方式:
- 手工配置(需满足上面的两个要求)
- 自动获取(如果是自动获取,设备将在自己的环回接口IP段中选择,并将最大的IP作为自己的RID)
DBD包:
数据库描述报文,携带的是数据库目录信息(而LSDB则是真正存放LSA信息的数据库)
LSR包(request):
链路状态请求报文,基于收到的DBD包的目录信息,请求未知的LSA信息(本地所没有的LSA信息)
LSU包(update):
链路状态更新包,真正携带LSA信息的包(真正的有链路信息的包)
LACK包:
链路状态确认报文(确认包)
OSPF因为有hello包和LACK包的存在,所以有保活和确认机制,不需要进行频繁的周期更新。但是OSPF存在每30Min一次的周期更新(再次确保更新可靠)
OSPF的状态机:
①Down State(关闭状态):启动OSPF后,发送hello包,包中含有RID,发送完hello包后,进入下一个状态
②Init State(初始化状态):在收到对端hello包,且包中含有RID,此时进入下一个状态
③Two-Way State(双向通讯状态):标志邻居关系建立,此时会进行条件匹配
#条件匹配:匹配成功则进入下一个状态,否则只能停留在邻居关系。而邻居关系只能通过hello包进行周期包活
④Exstart State(预启动状态):使用未携带数据的DBD包进行主从关系选举
#主从关系选举:通过比较未携带数据的DBD包中的RID大小进行主从关系选举,RID大的为主,优先进入下一个状态。而使用未携带数据的DBD包原因:和邻居状态进行区分
#RID比较只是单纯的比较数值大小,与子网掩码无关(2.0.0.0比1.255.255.255大)
#注意此时只是通过互相比较RID信息,而没有通过ACK包来进行确认 --- 隐形确认
⑤Exchange State(准交换状态):使用携带数据的DBD包进行数据库目录信息进行共享
#而选举主从关系的原因:错峰发送链路信息,降低带宽阻塞
⑥Loading State(加载状态):加载对端的DBD包中的目录信息,然后和本地的LSDB数据库目录信息进行对比(然后决定发送LSA/LSR/LSU包)
#通过查阅本地的数据库条目查看到本地未知的链路信息LSA,然后通过LSR包要求获取未知链路的LSA信息,此时对端回复携带未知链路信息LSA的LSU包,最后本地发送一个LACK包对获取的未知链路LSA信息进行确认
⑦FULL State:标志着邻接关系确认
#领接关系主要是为了和之前的邻居关系进行区分
OSPF工作过程:
①在配置启动OSPF完成后,本地OSPF会向本地所有正在运行OSPF协议的路由器接口以224.0.0.5的组播地址发送hello包。这个hello包中会携带本地的路由OSPF的RID以及本地已知邻居的RID。在之后再将收集到的邻居关系记录到本地OSPF的邻居表上{邻居表}
②邻居表建立之后,则会进行条件匹配。匹配失败则停留在邻居关系(仅能使用hello包进行周期保活)/成功则开始建立邻接关系。{条件匹配决定邻居关系还是领接关系}
③邻接关系建立后,OSPF建立领接关系的双方会使用未携带数据的DBD包进行主从关系选举。在选举完成并决定了主从关系后,主导方会先使用携带LSA链路目录数据的DBD包进行数据库目录的共享。并通过发送LSR/LSU/LACK包来请求/获取/确认未知本地未知的链路LSA信息,最后完成本地数据库建立LSDB(链路状态数据库) {数据库表}
④本地OSPF路由协议通过基于本地的链路状态数据库,来生成路由拓扑的有向图。再通过SPF算法将有向图转化为生成树,并计算本地到达未知网段的路由的最佳选路,最后将最佳选路信息生成并添加到OSPF路由表中{OSPF路由表}
⑤完成OSPF收敛后,各路由之间仍通过周期(10s/30s)互相发送hello包来进行保活和并每30分钟进行一次周期更新
OSFP排错思路:
通过OSPF状态机和路由关系进行判断,此时会通过遍历查询OSPF邻居表,数据库表,路由表来查看OSPF的连接状态并针对排错。
#查看ospf邻居表 display ospf peer #查看ospf邻居简表 display ospf peer brief #查看ospf数据库表 --- 只显示路由条目信息 display ospf lsdb #展开一条LSA信息 --- 在LSBD中通过OSPF对RID的表示进行查询 display ospf lsdb router X.X.X.X #查看ospf路由表 display ip routing-table protocol ospf
OSPF产生网络结构突变:
- 网络中突然新增一个网段:OSPF会触发更新,并直接通过发送LSU包将变更信息发送,此时需要等待对端的发送LACK包来进行确认
- 网络中突然断开一个网段:OSPF会触发更新,并直接通过发送LSU包将变更信息发送,此时需要等待对端的发送LACK包来进行确认
- 无法沟通:通过hello包+死亡倒计时(10s+40s/30s+120s)后,如果仍然无法恢复,会主动删除该网段信息
OSPF的基本配置
1.启动OSPF进程
[R1]ospf 1 router-id X.X.X.X #X.X.X.X 进程号,仅有本地意义(手工配置RID)
2.版本选择(V1淘汰,默认为V2)
[R1]ospf #IPV4中默认为v2
3.创建区域(在版本选择后)
[R1] area X #选择OSPF区域,如果为0代表骨干区域
4.宣告
目的:
①激活接口:只有激活的接口才能收发OSPF数据
②发布路由:只有激活接口对应网段信息才能发送
[R11-ospf-1-area-X.X.X.X] network X.X.X.X x.x.x.x
#宣告该路由的OSPF配置信息,而其对应的配置符为反掩码
#通配符和反掩码区别:
#反掩码使用连续的0和连续1组成:0不可变,1可变
#通配符使用不连续的0和1组成:0可变,1不可变
#通配符0.255.0.255 --- 代表的网段信息为:可变.不可变.可变.不可变
#反掩码0.0.0.255 --- 代表的网段信息为:不可变.不可变.不可变.可变
//配置一个area0的ospf协议:
//R1
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/0]ip address 1.0.0.1 30
[R1-GigabitEthernet0/0/0]int l 0
[R1-LoopBack0]ip address 192.168.1.1 24
[R1-LoopBack0]q
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.0.0.1 0.0.0.0
//R2
[R2]interface g0/0/0
[R2-GigabitEthernet0/0/0]ip address 1.0.0.2 30
[R2-GigabitEthernet0/0/0]int l 0
[R2-LoopBack0]ip address 192.168.2.1 24
[R2-LoopBack0]interface g0/0/1
[R2-GigabitEthernet0/0/1]ip address 2.0.0.1 30
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 1.0.0.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 2.0.0.1 0.0.0.0
//R3
[R3]interface g0/0/0
[R3-GigabitEthernet0/0/0]ip address 2.0.0.2 30
[R3-GigabitEthernet0/0/0]int l 0
[R3-LoopBack0]ip address 192.168.3.1 24
[R3-LoopBack0]q
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 2.0.0.2 0.0.0.0
//此时R1-R2-R3已经完成OSPF配置
//以R2为例子,查看R2的OSPF的相关表格:
#查看ospf邻居表:display ospf peer
<R2>display ospf peer
OSPF Process 1 with Router ID 2.2.2.2
Neighbors
Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 1.1.1.1 Address: 1.0.0.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 1.0.0.1 BDR: 1.0.0.2 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 5
Neighbor is up for 00:27:27
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 3.3.3.3 Address: 2.0.0.2
State: Full Mode:Nbr is Master Priority: 1
DR: 2.0.0.2 BDR: 2.0.0.1 MTU: 0
Dead timer due in 37 sec
Retrans timer interval: 5
Neighbor is up for 00:26:13
Authentication Sequence: [ 0 ]
#查看ospf邻居简表:display ospf peer brief
<R2>display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 1.1.1.1 Full
0.0.0.0 GigabitEthernet0/0/1 3.3.3.3 Full
----------------------------------------------------------------------------
#查看ospf数据库表[目录]:display ospf lsdb
<R2>display ospf lsdb
OSPF Process 1 with Router ID 2.2.2.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 1610 60 80000007 1
Router 1.1.1.1 1.1.1.1 1682 48 80000006 1
Router 3.3.3.3 3.3.3.3 1611 48 80000005 1
Network 2.0.0.2 3.3.3.3 1611 32 80000001 0
Network 1.0.0.1 1.1.1.1 1684 32 80000002 0
#展开一条LSA信息:display ospf lsdb router X.X.X.X
<R2>display ospf lsdb router 1.1.1.1
OSPF Process 1 with Router ID 2.2.2.2
Area: 0.0.0.0
Link State Database
Type : Router
Ls id : 1.1.1.1
Adv rtr : 1.1.1.1
Ls age : 1712
Len : 48
Options : E
seq# : 80000006
chksum : 0xb70f
Link count: 2
* Link ID: 1.0.0.1
Data : 1.0.0.1
Link Type: TransNet
Metric : 1
* Link ID: 192.168.1.1
Data : 255.255.255.255
Link Type: StubNet
Metric : 0
Priority : Medium
#查看ospf路由表:display ip routing-table protocol ospf
<R2>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 2 Routes : 2
OSPF routing table status : <Active>
Destinations : 2 Routes : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.1/32 OSPF 10 1 D 1.0.0.1 GigabitEthernet
0/0/0
192.168.3.1/32 OSPF 10 1 D 2.0.0.2 GigabitEthernet
0/0/1
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
OSPF的带宽(华为ENSP):
华为设备给OSPF定义的默认优先级为10,华为设备OSPF的默认参考带宽为100Mbps
OSPF是以带宽作为开销值:COST = 参考带宽/真实带宽
若OSPF开销值为小数时:
当该数为大于1的小数,则直接舍弃小数部分取整(向下取整)
若是小于1的小数,则直接设置为1(向上取整)
修改华为设备的OSFP带宽:
[R2-ospf-1]bandwidth-reference ? INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
如果要修改OSPF的参考带宽,则需要在所有设备上都要进行OSFP带宽的修改!!!
OSPF的DR/BDR:
在条件匹配中进行:
在MA网络中,若所有设备均保持邻接关系,将出现大量的重复更新(互相之间不断发送重复的路由信息),为了防止这个行为,OSFP提出来使用DR/BDR来决定信息发送的主导(相当于所有的数据先发送到DR,然后再通过DR来转发信息到区域内其他的路由),此时我们需要进行DR/BDR的选举。
DR(指定路由器):DR和MA网络中和其他设备之间建立邻接关系
BDR(备份指定路由器):BDR也和MA网络中其他设备之间建立邻接关系
DR other(剩余的路由):除了和DR/BDR建立领接关系,相互之间只建立邻居关系
BDR作用:BDR能在DR出现故障时第一时间顶替DR的位置,起到备份的效果
而在一个MA网络中,在DR和BDR都存在的情况下,则至少需要4台设备才能看到DR-Other之间的邻居关系(只有DR-Other之间会建立邻居关系)
DR/BDR虽然名字叫做指定路由器/备份指定路由器,但它们其实只是一个接口的概念,因为DR/BDR都是在一个MA网络中选取确定的。
DR/BDR的选举规则(非MA网络):
//通过查看R2的邻居表可以看到R2在和R1的邻居关系中,BD为R1,BDR为R2
//而和R3的邻居关系中,BD为R2,BDR为R3
<R2>display ospf peer
OSPF Process 1 with Router ID 2.2.2.2
Neighbors
Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 1.1.1.1 Address: 1.0.0.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 1.0.0.1 BDR: 1.0.0.2 MTU: 0
Dead timer due in 38 sec
Retrans timer interval: 5
Neighbor is up for 01:38:37
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 3.3.3.3 Address: 2.0.0.2
State: Full Mode:Nbr is Master Priority: 1
DR: 2.0.0.2 BDR: 2.0.0.1 MTU: 0
Dead timer due in 31 sec
Retrans timer interval: 5
Neighbor is up for 01:37:23
Authentication Sequence: [ 0 ]
一,先比较优先级,优先级最大的为DR,次大的为BDR ,一般优先级都默认为1
//此时在R1上修改接口的OSPF的DR优先级
[R1]interface g0/0/0
//默认的DR的优先级取值从0-255,0代表放弃参加DR的优先级争取
[R1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
[R1-GigabitEthernet0/0/0]ospf dr-priority 0
//此时会重新进行OSPF选路
//再次去R2上查看OSPF邻居表
[R2]display ospf peer
OSPF Process 1 with Router ID 2.2.2.2
Neighbors
Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 1.1.1.1 Address: 1.0.0.1
State: Full Mode:Nbr is Slave Priority: 0
DR: 1.0.0.2 BDR: None MTU: 0 #此时很明显的看到DR变成了R2,而R1因为弃权,所以没有BDR
Dead timer due in 38 sec
Retrans timer interval: 5
Neighbor is up for 00:00:12
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 3.3.3.3 Address: 2.0.0.2
State: Full Mode:Nbr is Master Priority: 1
DR: 2.0.0.2 BDR: 2.0.0.1 MTU: 0 #DR为R3,BDR为R2
Dead timer due in 32 sec
Retrans timer interval: 5
Neighbor is up for 01:52:07
Authentication Sequence: [ 0 ]
//此时再将R2的对应接口的DR优先级设置为255
[R2]interface g0/0/1
[R2-GigabitEthernet0/0/1]ospf dr-priority 255
//此时需要手动shutdown该接口,然后在undo再能更新DR和BDR
[R2-GigabitEthernet0/0/1]shutdown
[R2-GigabitEthernet0/0/1]undo shutdown
//此时在R2上查看邻居表
[R2]display ospf peer
OSPF Process 1 with Router ID 2.2.2.2
Neighbors
Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 1.1.1.1 Address: 1.0.0.1
State: Full Mode:Nbr is Slave Priority: 0
DR: 1.0.0.2 BDR: None MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 5
Neighbor is up for 00:09:03
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 3.3.3.3 Address: 2.0.0.2
State: Full Mode:Nbr is Master Priority: 1
DR: 2.0.0.1 BDR: 2.0.0.2 MTU: 0 #此时可以明显看到R2为DR,R3变为BDR
Dead timer due in 39 sec
Retrans timer interval: 5
Neighbor is up for 00:00:04
Authentication Sequence: [ 0 ]
二,当优先级相同时,则比较RID。RID大的路由器对应接口为DR,次大的为BDR。
DR/BDR的选举是非抢占模式的,一旦DR和BDR选定,则将无法被替换。选举时间为死亡时间(40s)只是时间相同,并不是由同一个计时器计时,这个时间仅是选举的一个上限时间(在这个时间内添加的设备都可以参加抢占),但是选举一般在短时间内完成,只要完成后则将不能抢占(无论你RID有多大,在DR/BDR选举完成后都无法去抢占修改DR与BDR)。
而想要重新修改DR和BDR则需要在对应的接口shutdown然后重启(局部)。
标签:ospf,R2,0.0,BDR,动态,DR,路由,OSPF 来源: https://blog.csdn.net/qq_44685426/article/details/122420942