OSPF报文类型
链路状态数据包是OSPF用来确定数据包最快可用路由的工具。OSPF使用以下链路状态包(LSP)建立和维护邻居邻接关系并交换路由更新。每个数据包在OSPF路由过程中都有特定的用途,如下所示:
- 类型1:Hello数据包-用于建立和维护与其他OSPF路由器的邻接关系。
- 类型2:数据库描述数据包(DBD)-包含发送路由器LSDB的缩写列表,接收路由器使用它来检查本地LSDB。LSDB必须在一个区域内的所有链路状态路由器上都相同,才能构建准确的SPF树。
- 类型3:链路状态请求数据包(LSR) -接收路由器随后可以通过发送LSR请求有关DBD中任何条目的更多信息。
- 类型4:链路状态更新数据包(LSU) -用于答复LSR并宣布新信息。LSU包含几种不同类型的LSA。
- 类型5:链路状态确认数据包(LSAck) -收到LSU时,路由器会发送LSAck确认收到LSU。LSAck数据字段为空。
类型 | 数据包名称 | 描述 |
1 | Hello | 发现邻居并在邻居之间建立邻接关系 |
2 | 数据库描述(DBD) | 检查路由器之间的数据库同步 |
3 | 链接状态请求(LSR) | 请求路由器之间的特定链接状态记录 |
4 | 链接状态更新(LSU) | 发送专门请求的链接状态记录 |
5 | 链接状态确认(LSAck) | 确认其他数据包类型 |
链接状态更新
路由器最初交换类型2 DBD数据包,这是发送路由器LSDB的缩略列表。接收路由器使用它来检查本地LSDB。
如果发送方的DBD数据包与接收方的LSDB有不一样的,接收路由器使用类型3LSR数据包来请求有关DBD中条目的更多信息。
使用类型4LSU数据包用于回复LSR数据包
使用类型5LSAck数据包用于确认收到类型4LSU。
LSU也用于转发OSPF路由更新,例如链路更改。具体来说,一个LSU数据包可以包含11种不同类型的OSPFv2 LSA,图中还显示了一些更常见的LSA。OSPFv3重命名了其中的几个LSA,并且还包含另外两个LSA。
注意:LSU和LSA术语之间的差异有时会造成混淆,因为这些术语通常可以互换使用。但是,一个LSU包含一个或多个LSA。
LSUs
LSAs
- 一个LSU包含一个或多个LSA。
- LSA包含目标网络的路由信息。
Hello作用
OSPF类型1数据包是Hello数据包。Hello数据包用于执行以下操作:
- 发现OSPF邻居并建立邻居邻接关系。
- 发布两个路由器必须同意才能成为邻居的参数。
- 在以太网等多路访问网络上选择“指定路由器”(DR)和“备用指定路由器”(BDR)。点对点链接不需要DR或BDR。
DR/BDR选举规则:首先会比较hello包里的优先级(默认都是1)较大的会成为DR,其次的成为BDR ,优先级设置为0则不参与DR,BDR选举。其次比较RID,RID大的为DR,其次为BDR。
RID选举:首先会看你指定的RID,如果没有指定,会先看环回口的IP地址,选取较大的IP作为RID,如果没有环回口,就选择较大的 活动物理地址(接口down了即使ip较大也不会选为RID)的IP作为RID。
OSPF数据包格式
- Type - 标识数据包的类型。值1表示Hello数据包。值2标识DBD数据包,3标识LSR数据包,4标识LSU数据包,5标识LSAck数据包。
- Router ID - 以点分十进制表示的32位值(如IPv4地址)用于唯一标识原始路由器。
- Area ID – 数据包起源的区域号。
- Network Mask - 与发送接口关联的子网掩码。
- Hello Interval - 此间隔指定路由器发送Hello数据包的频率(以秒为单位)。多路访问网络上的默认Hello间隔为10秒。该定时器在相邻路由器上必须相同。否则,不建立邻接关系。
- Router Priority - 在DR / BDR选举中使用。所有OSPF路由器的默认优先级为1,但可以手动将其从0更改为255。值越高,路由器成为链路上的DR的可能性就越大。
- Dead Interval - 路由器在宣布邻居路由器停止服务之前等待邻居听到的时间(以秒为单位)。缺省情况下,路由器的Dead Interval是Hello间隔的四倍。该定时器在相邻路由器上必须相同。否则,不建立邻接关系。
- Designated Router (DR) - DR的路由器ID。
- Backup Designated Router (BDR) - BDR的路由器ID。
- List of Neighbors - 此列表标识所有相邻路由器的路由器ID。