目录
- OSPF路由协议
- OSPF数据包类型
- OSPF邻区状态
- OSPF的邻接关系建立过程
- 路由名词解释
- OSPF开源项目
OSPF路由协议
OSPF简介
1、(Open Shortest Path First),开放式最短路径优先,它属于链路状态路由协议,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。
2、 OSPF是通过邻居之间交互LSA(链路状态信息通告)来描述路由和拓扑信息的,将这些LSA存放在LSDB(链路状态数据库)中,包含了网络所有的拓扑信息和路由信息。通过SPF算法,以自己为根节点,计算出到达其他节点的最优路径。
OSPF版本
OSPFv1,实验性版本,未能实施。
OSPFv2,支持IPv4协议。
OSPFv3,在OSPFv2基础上进行了改进,是一个独立的路由协议,支持IPv6。
OSPF协议
1、OSPF协议号:89,基于IP协议。
2、OSPF协议发包的目的地址是两个多播地址,224.0.0.5和224.0.0.6。
3、224.0.0.5是所有的OSPF路由器都能够收到,这就意味着DR路由器使用这个地址对所有的路由器进行路由的通告。
4、而224.0.0.6是只有DR路由器才能够收到,这就意味着DRother通过这个地址于DR路由器进行交换路由信息的。
5、wireshark,过滤ospf即可抓包。
OSPF数据包类型
1、hello:这是路由器之间互相发现,建立关系以及保活的数据包。
network mask网络掩码:发送hello报文接口的网络掩码
hellointerval:hello报文的频率,默认10秒
options可选项:可选项字段。
rtr pri:DR的优先级,默认1,范围0-255,0表示不参与选举
routerdeadinterval:邻居dead时间,超过此时长没有收到邻居的hello包,则认为邻居down,默认是4倍的hello时间,即40秒。
designated router:选举成为DR的接口地址
backup designated router:选举成为BDR的接口地址
neighbor:邻居的route id
2、DD:数据库描述包,这个数据包就像是一份路由条目的清单列表,里面包含着LSA的头部信息,当其他路由器发现有自己缺少的路由条目,就会发送LSR。
interface mtu:本端接口MTU的大小,华为默认为0
options:可选项
I:如果是第一个DD报文则置为1,否则为0
M:如果是最后一个DD报文则置为1,否则为0
M/S:master或者slave,确定主从关系,当认为自己是主路由器是置为1
DD sequence number:DD报文的序列号,用来进行隐形确认。
LSA headers:LSA头部信息
3、LSR:用于向OSPF邻居请求LSA,来补充自己的路由条目的空缺。
LS type:链路状态类型
LS id:链路状态ID
advrouter:产生此LSA的路由器的route id
4、LSU:LSU承载着LSA,而LSA正是包含着路由信息的数据媒介
number of LSAs:LSA的数量
LSA:LSA的详细信息,LSA具有多种类型,不同类型的LSA详细描述不相同。
5、LSAck:当收到对端的LSU,需要回送一个LSAck表示确认,否则路由器会启用重传机制,默认是4秒。关于OSPF相关的timer,可以在发送OSPF相关协议包的接口上进行设置。
OSPF邻区状态
down:初始化状态,没有收到任何hello包。
attempt:此状态只在NBMA网络种出现,表示本端发送hello包后,在dead时间内仍然没有收到对方的hello包。
init:收到了邻居的hello,但是邻居的hello包中的 neighbor字段不含有自己的route id。
2-way:收到了邻居的hello,邻居的hello包中的 neighbor字段含有自己的route id。
exstart:开始交互DD报文,进行主从关系的选举。
exchange:已经选出主从关系,开始进行LSA摘要信息的交换。
loading:收到邻居发来的LSR报文。
full:收到了邻居的LS ACK,认为邻居已经完成LSDB的同步。
OSPF的邻接关系建立过程
邻居状态一开始都为down状态。
1、A给B发送hello包,邻居为空,B收到以后邻居状态为init。
2、B给A发送hello包,邻居为1.1.1.1,A收到以后邻居状态为2-way。
3、A给B发送hello包,邻居为2.2.2.2,B收到以后邻居状态为2-way。此时邻居关系建立。
4、A和B开始发送空的DD报文进行主从协商,此时邻居状态都为exstart。
5、B成为主路由器,开始发送携带LSA摘要的DD报文,这个过程都是exchange状态。
6、当DD报文交互完成后,即收到对方DD报文M=0时,开始发送LSR请求,这个时候邻居状态为loading状态。
7、当收到邻居的LS ACK时,邻居状态为full,此时邻接关系建立完成。
8、邻居关系是指双方hello报文互相通过,此时还没有进行LSA的交互,这个阶段时选举DR和BDR的阶段。邻接关系代表数据库已经同步,可以开始进行路由的计算。
路由名词解释
IGP
(内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。IGP协议包括RIP、OSPF、IS-IS、IGRP、EIGRP。
OSPF
(Open Shortest Path First),开放式最短路径优先,它属于链路状态路由协议,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。
LSA
(Link-State Advertisement),链路状态通告。包括有关邻居和通道成本的信息。 LSA被路由器接收用于维护它们的路由选择表。
AS
(autonomous system),自治系统,是一个有权自主地决定在本系统中应采用各种路由协议的小型单位。
ASE
自治系统外部的路由。
ABR
区域边界路由器,是位于一个或多个OSPF区域的一个路由器,其连接这个区域到骨干网络。
ASN
一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。
STUB
一种典型AS应用,在划分了区域之后,非骨干区域中的路由器对于区域外的路由,一定要通过ABR(区域边界路由器)来转发,对于区域内的路由器来说ABR是一个通往外部世界的必经之路。内部ASE路由无法传递到区域外,也无法引入区域外的ASE路由,包括静态路由。
NSSA
(“not-so-stubby” area),STUB扩展,区域内路由器引入的ASE路由可以在NSSA中传播并发送到区域之外。
RIB
路由信息库(Routing Information Base,RIB)
FIB
转发表,也叫转发信息库(Forwarding Information base,FIB)
OSPF开源项目
1、XORP
项目的目标是建立一个软件路由器平台,是功能齐全的、稳定和足够的生产使用,灵活和可扩展性。支持OSPF, RIP, BGP,OLSR, VRRP, PIM, IGMP (Multicast) 和其它路由协议. 它可实现路由协议为IPv4和IPv6和统一的手段来配置它们。支持各种linux,BSD, Windows(使用mingw编译器编译)。
开源地址:https://github.com/greearb/xorp.ct
2、FRR
FRR是一种实现和管理各种IPv4和IPv6路由协议的自由软件。它几乎运行在所有的Linux和BSD发行版上,并支持所有的现代CPU架构。
FRR目前支持以下协议:
BGP、OSPFv2、OSPFv3、RIPv2、RIPng、IS-IS、PIM-SM/MSDP、LDP、BFD、Babel、PBR、OpenFabric、VRRP、EIGRP (alpha)、NHRP (alpha)
开源地址:https://github.com/FRRouting/frr