OSPF
OSPF开放式最短路径优先(Open Shortest Path First)
是一组通过统一的路由政策或路由协议互相交换路由信息的网络
OSPF的路由计算过程
每台路由器会先根据自己周围的网络拓扑生成LSA,并通过更新报文将LSA传给网络中的其他路由器,
通过其他路由器的LSA构建出自己的LSDB,根据LSDB使用SPF算法(迪科斯彻 Dijkstra),算出到达每个LSDB中各个路由器的路由
OSPF的Router-ID
是32位无符号整数
作用:
1、唯一标识一台路由器
2、用于DR和BDR的选举(在优先级相同时)
Router-ID的配置:
1、手工配置
2、如果未手工配置,选择IP地址最大的Loopback接口
3、如果没有配置Loopback接口,选举IP地址最大的物理接口
在更改Router-ID后,在用户视图reset ospf 100 process
OSPF的特点:
1.快速收敛:在第一次收敛使用SPF算法,在之后的拓扑变动使用ISPF算法,在拓扑发生变动时立即发送更新报文。
2.适应范围广:支持4种网络类型,最多支持几百台路由器。
3.区域划分:允许自治区的网络被划分成区域来管理,减少了LSDB的内存消耗和CPU的负担。
4.无环路:区域内有SPF算法防环,区域间所有非骨干区域必须和骨干区域相连,数据由骨干区域进行传递,ABR只会将三类LSA转发到骨干区域,区域间水平分割,防止自己发出的三类LSA再回到自己的区域。
5.等价路由:支持到达同一目的的地址的多条等价路由。
6.路由分级:分为区域内路由、区域间路由、第一类外部路由、第二类外部路由。
7.支持验证:基于区域和接口认证,当一端是区域认证,一端是接口认证,认证方式和密码一样,可以交互LSA,原因是在OSPF报文中只有认证类型(0不认证、1明文认证、2md5认证)和认证所需的信息。
8.组播发送:在组播网络中发送协议报文(DR\BDR向DROTER发送目的网段为224.0.0.5 DROTHER向DR\BDR发送目的地址为224.0.0.6)。
OSPF的建立邻居
组播网络:向组播地址224.0.0.5发送hello报文
单播网络:需要手动peer对端的Router-ID
OSPF的链路状态信息
OSPF同步的是链路状态信息
1、链路的类型(网络类型:P2P、Broadcast、NBMA、P2MP)
2、接口的IP地址和掩码
3、链路上所连接的邻居路由器
4、链路的带宽(开销)
OSPF支持的网络类型
1.P2P
Hello Interval 10s Dead Interval 40s
链路层协议协议为PPP、HDLC
不选举DR\BDR
组播发送所有报文
2.广播Broadcast
Hello Interval 10s Dead Interval 40s
链路层协议协议为 Ethernet
选举DR\BDR
单播发送DD、LSR报文,组播发送Hello、LSU、LSACK
3.NBMA(需要手动发现邻居,不支持广播和组播)
Hello Interval 30s Dead Interval 120s
链路层协议是帧中继,X.25
选举DR\BDR
单播发送所有报文
4.P2MP
Hello Interval 30s Dead Interval 120s
不会是默认的网络类型,是由非全互连的 NBMA 改为点到多点的网络
不选举DR\BDR
组播发送Hello报文,单播发送其他报文
P2P和MA可以建立邻居,但是学不到路由。
P2P和P2MP可以建立邻居,但是学不到路由,修改链路两端设备hello报文和dead报文间隔一致后可以学到路由。(p2p可以转换成p2mp)。
MA和P2MP不可以建立邻居,这是因为hello报文间隔和dead报文间隔不一致,链路两端设备hello报文和dead报文间隔一致后,可以建立邻居,但是学不到路由。
NBMA只能和NBMA建立邻居,必须手工配置指定ospf邻居。
更改网络类型 ospf network-type{ broadcast | nbma | p2mp | p2p [ peer-ip-ignore ] }
OSPF基于接口带宽计算开销
接口开销 = 带宽参考值 / 带宽
带宽参考值缺省100Mbit/s
修改开销的方法:
1、直接在接口下修改开销,范围仅限本接口
2、修改带宽参考值,需要修改所有的路由器,保证选路的一致性
OSPF协议头部
还包含了IP报文头部,协议号89
OSPF的报文头部有什么字段
Version : 版本号有v2 和v3
Type : OSPF报文类型(Hello、DD、LSR、LSU、LSACK)
Packet length : 报文长度
Router ID:生成此报文的路由器的Router ID
Area ID:要被通告到的区域
Checksum : 校验和
Auth Type : 是否认证 0 不认证 1 明文认证 2 MD5认证
Auth Data :认证所需的信息
OSPF的报文类型
Hello 周期性发送,发现和维持邻居关系(Keepalive机制),进行DR和BDR的选举
DD(Database Description) 描述本地LSDB中每一条LSA的摘要信息,用于两台交换机同步数据库,选举主从使用Router ID大的
LSR(Link State Request) 向对方请求所需的LSA
LSU(Link State Update) 向对方发送其所需要的LSA
LSACK(Link State Ack) 向对方发送确认收到 LSA
OSPF的Hello报文有什么字段
Network Mask : Hello报文的接口的网络掩码
HelloInterval : Hello报文的时间间隔
Options : 标识OSPF的可选功能
Router Priority(Rtr Pri) :DR优先级 选举DR和BDR 默认为1 最大255 0不参与选举
RouterDeadInterval : 邻居失效时间,通常是四倍的Hello报文
Designated Router : DR的IP地址,如果为0.0.0.0 则没选举出DR
Backup Designated Router : BDR的IP地址,如果设置为0.0.0.0,表示未选举BDR
Neighbor : 邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文
OSPF的DD报文有什么字段
Interface MTU : 不分片的情况下,此接口最大可发出的ip报文长度
Options : 标识OSPF的可选功能
I 位 : 当置位为1时,表明这是第一个DD报文,否则不置位
M 位 : 置位为1的时候表明DD报文中还有LSA头要传递,否则不置位
M/S 位 : 置位为1表示自己为master,否则不置位
DD Sequence Number : 序列号,主从双方利用序列号来保证报文传输的可靠性和完整性
LSA headers : 本LSDB的LSA头
OSPF的Option字段
DN :用来避免在MPLS V PN中出现环路,PE发送给CE的3、5、7类LSA的DN置位1,PE不计算DN置位1的LSA,防止从CE学到自己发的路由
O :该字段指出支持 Opaque (9、10、11类LSA)
DC :当始发路由器支持按需链路上的OSPF的能力时被置位(两端不一样会协商成都为0)
EA :当始发路由器具有接收和转发8类LSA的能力时被置位
N :只用在Hello报文中 N=1标识支持7类LSA N=0表面不接收和发送NSSA LSA
P :只用在NSSA LSA 告诉NSSA区域的ABR路由器将7类转换为5类LSA
MC :当始发路由器支持转发组播数据包的能力时被置位
E :当始发路由器具有接收5类LSA的能力时被置位
MT :当始发路由器支持多拓扑OSPF
OSPF的LSA中包含什么字段(通用)
LS type : LSA的类型(Hello、DD、LSR、LSU、LSACK)
Link State ID : 该LSA所描述的Router ID(1类——产生LSA的Router ID;2类——DR的IP地址;3类——目的IP地址;4类——ASBR的Router ID;5类——目的IP地址)
Advertising Router :(1类LSA—产生LSA的Router ID;2类LSA—DR的Router ID;3类LSA—ABR的Router ID;4类LSA—产生该LSA的ABR的Router ID;5类LSA—ASBR的Router ID)
以上3条参数唯一确定一条LSA
LS age : 生存时间
LS sequence number :用于检测旧的和重复的LSA,序列号,越大越新
Che