OSPF --链路状态路由协议
OSPF,开放最短的路径优先,是一种链路状态路由协议,无路由循环
开放意味着非私有的
OSPF IGP(协议号):
- 89
优先级:10【华为】
110 【cisco】
OSPF采用SPF算法计算达到目的地的最短路径:
- 什么叫链路(link) = 路由器接口
- 什么叫状态(state) = 描述接口以及其与邻居路由器之间的关系
OSPF Metric
每个路由器都把自己当做根,并且给予累积成本(cost值)来计算到达目的地的最短路径
cost=参考带宽(10^8)/接口带宽(b/s)
参考带宽默认100M
华为:
- G口和F口,cost为1
- Serial接口,cost为64
cost计算方式:
- 从源地址到目的地址经过的所有路由器的出接口的cost总和
修改参考带宽值:
更改建议,修改到网络环境内的,最大带宽值,更改一台全网改
[R2]ospf
[R2-ospf-1]auto-cost refernce-bandwidth 1000
ospf的报文发送地址
224.0.0.5 DR与BDR之间交互报文使用的地址
224.0.0.6 Drother发送更新的报文就是224.0.0.6地址,Drother也只会接受224.0.0.5的地址
DR和BDR,收224.0.0.5/6的所有报文
都是组播地址,为什么使用组播地址,不使用广播地址
只有运行了ospf的路由设备收到请求后才会处理
度量值的累加:
- 度量值cost 在路由的入接口方向进行累加
ospf的进程号1,2,3之间没有影响,只要跑的OSPF就可以互相通讯
ospf更改cost值
直接在接口下进行修改,一般不改
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ospf cost 10
OSPF的报文类型
- hello【组播】都是224.0.0.5的地址
- 建立和维护OSPF邻居关系
- 邻居状态维护超时时间:
- 40S,超过40s就认为路由消失了
周期发送:
- 10s/次
- 携带参数
- router-ID
- 邻居RID
- 认证
- 通讯方式
- 携带参数
- DBD【单播】
刚开始的时候所有设备都会发送DD报文
DBD主设备报文
DBD从设备数据报文
- 链路状态数据库描述信息(描述LSDB中LSA头部信息,就是简单的描述LSA信息)
- 选举主从关系(router IP大的一方为master,确定数据库描述包的序列号(2)交换LSA数据包头部信息
- I:表示Init初始,若第一个DBD包,则将置为1,否则置为0
- M: More若后面还有DBD包,则置为1,否则置为0
- M/S:master/Slave,是mster置为1,Slave置为0
- LSR【单播】
- 链路状态请求,向OSPF邻居请求链路状态信息
- LSU【单播/组播】
- 链路状态更新(包含一条或多条LSA,真正包含LSA的详细信息)
- LSAck【单播】
- 对LSU中的LSA进行确认
OSPF区域
0 区域【area 0】
- 骨干区域
非骨干区域可以通过骨干区域传递路由
非0区域
- 非骨干区域【area 0以外的区域】
不通过骨干区域无法传递路由
区分骨干非骨干主要原因是减少LSA泛洪,打包数据一次性进行传递
加载中间的路由器叫ABR边界路由器
OSPF状态集
1.DOWN状态谁都不认识谁
- 设备和设备之间没有发送任何报文
- 没有宣告
- 接口DOWN
2.INIT稍微有点认识
- 设备和设备之间交互hello包【你发给我,我发给你】
- 初始状态
3.2-WAY认识
发hello包,每10s发送一次hello包,是为了维护邻居关系
在2-way状态建立的邻居关系,也就是Drother与Drother,不交互数据
- 选举DR【班长】
- 选举BDR【副班长】
- 其他设备都叫Drother【成员】
每一个广播域内ospf都是独立运行的,都会选一个DR和BDR,这个选举是针对接口的,每一个接口都有可能成为DR,BDR,Drother
DR和BDR之间传递路由
Drother和DR,BDR之间传递路由
Drother和Drother之间不传递路由,之间保持2-way状态,关系不会向下发展
DR的好处:
- 减少广播域内ospf路由的交互的次数
- 减少带宽占用率
DR的选举规则:
实际现网中:
- 谁先跑起来ospf,在40s结束发送hello包,就选为DR了,然后接着按下面的进行选
- 如果保证某台设备为DR,其他设备优先级设置为0,就可以
理想状态:
- 1.接口的优先级【取值0~255,越大越优先,0代表不参与选举,255最高选举权,不代表一定是DR】
- 如果接口优先级相同,选择Router-id越大越优先
4.EX-START
- 互相发送第一个DBD包,用来选举主从设备
- 为什么要有链路状态数据库,还要选举主从设备?
- 链路状态数据库主要时为了存储LSA信息,保证OSPF路由信息传递的可靠性,选举主从设备是为了确定,以谁发送的序列号为主,根据主的序列号去判断一些条件
- 有多少FULL状态就会有多少个主从设备
DBD包谁先发送
router-id大的先发送,与DR和BDR无关
router-id大的成为主设备(master),router-id小的成为从设备(slaver)
选完主从进入第五个状态
5.EX-change
- 持续交互DBD报文,数据库交互DBD完成进入下一个状态,第一个LSA摘要的DBD报文是由从设备发送的,携带LSA的摘要信息
6.loading
- 交互LSR/LSU/LSack包
Ex-start-----loading 完成数据共享
7.Full
完成LSA链路信息的交互
- 交互hello包
- 周期时间,30分钟/次 LSU 更新链路状态信息
- 1小时没有收到LSU,路由就会消失
是不是一定要等待1个小时呢?
Full有一个触发更新
- 接口 up/down的切换立即出发LSU
及时通知网络中的路由器设备网络的变化
- FULL状态完成邻接状态,就是交互数据
也就是DR,BDR与Drother的关系
DR与BDR之间也是邻接关系
简单的OSPF配置演示
进行配置ospf,都使用骨干区域
[R1]ospf [R1-ospf-1]area 0 [R1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255 [R1-ospf-1-area-0.0.0.0]dis this [V200R003C00] # area 0.0.0.0 network 192.168.10.0 0.0.0.255 # return
[R2]ospf [R2-ospf-1]area 0 [R2-ospf-1-area-0.0.0.0]network 192.168.40.0 0.0.0.255 [R2-ospf-1-area-0.0.0.0]dis this [V200R003C00] # area 0.0.0.0 network 192.168.10.0 0.0.0.255 network 192.168.40.0 0.0.0.255 # return
[R3]ospf [R3-ospf-1]area 0 [R3-ospf-1-area-0.0.0.0]network 192.168.40.0 0.0.0.255
进行测试是否能通讯
[R1]ping 192.168.40.2 PING 192.168.40.2: 56 data bytes, press CTRL_C to break Reply from 192.168.40.2: bytes=56 Sequence=1 ttl=254 time=20 ms Reply from 192.168.40.2: bytes=56 Sequence=2 ttl=254 time=30 ms Reply from 192.168.40.2: bytes=56 Sequence=3 ttl=254 time=30 ms Reply from 192.168.40.2: bytes=56 Sequence=4 ttl=254 time=30 ms
查看route ID
[R1]dis ospf peer bri
OSPF Process 1 with Router ID 192.168.10.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 192.168.10.2 Full
----------------------------------------------------------------------------
[R2]dis ospf peer bri
OSPF Process 1 with Router ID 192.168.10.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 192.168.10.1 Full
0.0.0.0 GigabitEthernet0/0/1 192.168.40.2 Full
----------------------------------------------------------------------------
[R3]dis ospf peer bri
OSPF Process 1 with Router ID 192.168.40.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 192.168.10.2 Full
----------------------------------------------------------------------------
使用Loopback口进行管理router-id
ospf精确宣告
宣告拥有地址192.168.1.254的地址
[R3]ospf [R3-ospf-1]area 0 [R3-ospf-1-area-0.0.0.0]network 192.168.1.254 0.0.0.0
Router-id 选举规则
router-id不能重复,重复会导致邻居无法建立,路由无法传送
修改router-id,一定要重启ospf
<>reset ospf process
1.手动指定
[R2]int loop [R2]int LoopBack 0 [R2-LoopBack0]ip add 1.1.1.1 32 [R2-LoopBack0]dis this [V200R003C00] # interface LoopBack0 ip address 1.1.1.1 255.255.255.255 # return
[R2]dis ospf peer bri
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 192.168.10.1 Full
0.0.0.0 GigabitEthernet0/0/1 192.168.40.2 Full
----------------------------------------------------------------------------
//修改Route-id
[R2]ospf 1 router-id 192.168.40.1
<R2>reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
[R2]dis ospf peer brief
OSPF Process 1 with Router ID 192.168.40.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 192.168.10.1 Full
0.0.0.0 GigabitEthernet0/0/1 192.168.40.2 Full
----------------------------------------------------------------------------
2.选举环回口IP地址最大的
3.选举物理口IP地址最大的
华为路由器型号还不太一样
- NE系列
- roter-id router是NE的ID号,缺省情况下,NE会再当前接口的IP地址中自动选取一个作为Rourter ID。人为配置Router ID时,必须保证自治系统中任意两台Router ID都不相同。通常做法时将Router ID配置为与该设备某个接口的IP地址一致
- AR1200系列
- roter-id router是NE的ID号,缺省情况下,NE会再当前接口的IP地址中自动选取一个作为Rourter ID。人为配置Router ID时,必须保证自治系统中任意两台Router ID都不相同。通常做法时将Router ID配置为与该设备某个接口的IP地址一致
OSPF运行过程:
1.建立邻居
2.数据库共享信息(LSDB,链路状态数据库信息的交互)
3.路由表选择最优路径加表(SPF算法得到路由)
查看ospf信息
[R1]dis ospf peer
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
Area 0.0.0.0 interface 192.168.10.1(GigabitEthernet0/0/0)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.10.2
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.10.1 BDR: 192.168.10.2 MTU: 0
Dead timer due in 35 sec
Retrans timer interval: 5
Neighbor is up for 00:04:55
Authentication Sequence: [ 0 ]
查看ospf数据库链路信息
[R1]dis ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
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 312 48 80000007 1
Router 1.1.1.1 1.1.1.1 366 36 80000005 1
Router 3.3.3.3 3.3.3.3 314 36 80000003 1
Network 192.168.10.1 1.1.1.1 366 32 80000002 0
Network 192.168.40.1 2.2.2.2 312 32 80000002 0
查看ospf接口信息
[R2]dis ospf int
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
192.168.10.2 Broadcast BDR 1 1 192.168.10.1 192.168.10.2
192.168.40.1 Broadcast DR 1 1 192.168.40.1 192.168.40.2
2.2.2.2 P2P P-2-P 0 1 0.0.0.0 0.0.0.0
以太网口,G类型的接口网络类型为Broadcast【广播】,就是背靠背直连两台路由器也会选举DR,BDR,这时候把网络类型改为P-2-P【点到点】就不会选举了
OSPF网络类型
- 广播Broadcast
- 点到点P-2-P
- 虚拟逻辑接口Loopback
- 串口【鸡肋,淘汰】
修改OSPF网络类型为P-2-P【这种情况只适用2台】
BMA网络类型,一对多需要改
串口不需要改,网络类型默认点到点
两个直连设备,两端网络类型都要修改P-2-P类型要一样,如果你不改,可以建立邻居,但是无法学习路由,就是网络不通呗,这种改好是可以和一对多的网络类型为BMA一起正常工作的
[R2]dis ospf int
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
192.168.10.2 Broadcast DR 1 1 192.168.10.2 192.168.10.1
192.168.40.1 Broadcast DR 1 1 192.168.40.1 192.168.40.2
2.2.2.2 P2P P-2-P 0 1 0.0.0.0 0.0.0.0
[R3]dis ospf int
OSPF Process 1 with Router ID 3.3.3.3
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
192.168.40.2 Broadcast BDR 1 1 192.168.40.1 192.168.40.2
3.3.3.3 P2P P-2-P 0 1 0.0.0.0 0.0.0.0
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ospf network-type p2p
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ospf network-type p2p
[R2]dis ospf int
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
192.168.10.2 P2P P-2-P 1 1 0.0.0.0 0.0.0.0
192.168.40.1 P2P P-2-P 1 1 0.0.0.0 0.0.0.0
2.2.2.2 P2P P-2-P 0 1 0.0.0.0 0.0.0.0
[R3]dis ospf int
OSPF Process 1 with Router ID 3.3.3.3
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
192.168.40.2 P2P P-2-P 1 1 0.0.0.0 0.0.0.0
3.3.3.3 P2P P-2-P 0 1 0.0.0.0 0.0.0.0
如果ospf路由收敛效率低下,如何优化?
OSPF可以讲背靠背连接的路由器【就是直连设备的接口都要修改为P-2-P】接口设置为P2P网络,P2P网络类型中OSPF不需要选举DR/BDR,加快了网络收敛速度
默认路由
默认路由下方方式一:
[R2]ip router 0.0.0.0 0.0.0.0 null0 [R2]ospf 1 [R2-ospf-1]default-information orignate
只要本地路由器检测到路由表里有一个非ospf的默认路由,OSPF就会发给其他设备
默认路由下发方式二:
总是下发默认路由,即使公网的路径断掉,无条件发送路由信息
ospf 1 default-information orignate always
被动接口
在实际环运行ospf的环境中,肯定有些接口是要接入PC机器,交换机的,像这种接口就不需要发送hello包了
在与PC机直连的路由器上操作,接口不接受ospf的hello包,交互报文,但是会暴露网段
ospf
silent-interface g0/0/0

评论