目录
OSPF:开放式最短路径优先
OSPF属于IGP内部网关协议,链路状态路由协议,使用IP协议号89
OSPF配置方法:
OSPF + 进程号
area + 区域号
network + 需要宣告的IP地址
或
进入接口:
ospf enable +进程号 area + 区域号
例:创建OSPF 1 区域 0 并宣告192.168.1.0网段
ospf 1
area 0
network 192.168.1.0
或
进入192.168.1.0的物理接口使能OSPF
ospf enable 1 area 0 #前提是需要先创建ospf进程和区域
OSPF报文头部:
Version:版本,v2(IPv4)、v3(IPv6)
Type:报文类型(1、Hello 2、DD 3、LSR 4、LSU 5、LSAck )
Packet Length:数据大小
Router ID:产生这个报文的路由器RID
Area ID:报文通告的区域范围
Checksum:校验和
Auth Type:认证类型(不认证、简单明文认证、MD5认证)
Authentication:认证数据,根据认证类型不同数据内容不同
OSPF报文类型:
Hello报文:发现和建立维护邻居关系
DD报文:协商主从以及判断LSDB是否同步
I:如果置位是1,表示是发送的第一个DD报文
M:如果置位为1,表示后续还有DD报文(不是最后一个)
MS:如果置位为1,表示自己是主设备
LSR报文:请求自身缺少的LSA
LSU报文:携带完整的LSA信息
LSACK报文:确认报文(确认收到的LSA信息)
OSPF状态机:
Down状态:初始状态,开始发送Hello报文。
*Attempt状态:NBMA网络独有状态,发送了Hello报文,一致没有收到回应,120s后回到Down状态。
Init状态:发送Hello报文后也收到了Hello报文,但是收到的Hello报文的邻居列表里不包含自身的RID。
2-Way状态:发送Hello报文后收到的Hello报文的邻居列表包含自身的RID,表示邻居关系建立完成,在这个状态下选举DR、BDR,选举时间40s。
Exstart状态:发送第一个DD报文,用来选举主从关系,不携带LSDB摘要,协商MTU(最大传输单元),华为默认不协商MTU,用0填充。
Exchange状态:发送第二个DD报文,携带自身LSDB摘要信息,用来判断LSDB是否同步,如果已经同步则进入Full状态,如果没有同步进入Loading状态。
Loading状态:发送LSR、LSU、LSACK报文,开始同步LSDB。
Full状态:邻居建立成功
DR与BDR的作用:
DR:指定路由器(一个路由器的某个接口)
BDR:备份指定路由器
选举DR是为了减少邻接关系,先比较路由器优先级,范围0-255,越大越优,为0不参与,优先级相同比较RID,越大越优。
*DR选举过程:先选举一个BDR,BDR发现没有DR升为DR,再重新选举一个BDR。DR不支持抢占,如果已经存在DR,即使更优也不会抢占。
注:DR和BDR并不是指一个路由器,而是指一个路由器的接口。一个路由器中,一个接口为DR,可能另一个接口就是BDR(也就是说,路由器可以同时存在DR接口和BDR接口)。
设置选举DR时的优先级:
配置此命令需进入接口视图(需要修改优先级的接口)
ospf dr-priority [priority]
例:
修改接口选举DR时的优先级为10:
进入接口视图:
ospf dr-priority 10
缺省情况下,优先级为1
OSPF的网络类型:
P2P:点到点网络,当底层是PPP,HDLC时,认为网络类型为P2P
MA(Broadcast):当底层是以太网时,认为网络类型是MA
NBMA:非广播多路访问,当底层为FR/ATM时,认为网络类型为NBMA,需要手工指定邻居
P2MP:点到多点,没有任何一种底层协议认为是P2MP网络,只有手动修改
注:可按需调整设备接口的OSPF网络类型
修改OSPF接口网络类型命令:
需要进入接口视图中使用此命令
ospf network [p2p | p2mp | broadcast | nbma]
例:
将接口修改broadcast广播网络类型:
#进入需要修改网络类型的接口
ospf network broadcast
OSPF每种网络类型发送的报文类型(单播、组播):
广播网络:组播发送Hello报文,单播发送DD报文,单播LSR,单播LSU,组播LSACK
P2P网络:组播发送所有报文
NBMA网络:单播发送所有报文
P2MP网络:组播发送Hello报文,单播发送DD,LSR。LSU,LSACK不可以建立,但是修改Hello时间
OSPF网络类型不同的两台设备之间能否建立邻居关系?
P2P-MA:可以
P2P-NBMA:不可以建立
P2P-P2MP:不可以建立,但是修改Hello时间可以建立
MA-NBMA:不可以建立
MA-P2MP:不可以建立,但修改Hello时间可以建立
P2MP-NBMA:不可以建立
*NBMA和其他任何网络类型都无法正常建立邻居,因为只有NBMA是单播发送Hello报文,其他都是组播发送。
设置Hello报文发送的时间间隔:
配置此命令需进入接口视图
ospf timer hello [interval]
例:将hello报文时间修改为30秒
进入需要修改hello报文时间的接口:
ospf timer hello 30
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔值为10秒,且统一接口上邻居失效时间是Hello间隔时间的4倍。