017B-OSPF

017B-OSPF

OSPF五种报文

参考:HCNA网络技术学习指南8.3节
1、Hello报文: 周期性的发送,用来发现建立,和维护OSPF邻居关系的
邻居关系:两台设备共享同一条链路,并且交互了一些参数(Hello报文),形成邻居关系(2-way状态)

2、DD:描述本LSDB的摘要信息,用于两台路由器进行数据库的同步 DD报文只是一个LSA的摘要信息,里边不包括LSA
DBD:Database Description Packet

3、LSR:用于向对方请求所需的LSA,只有在OSPF邻居双方成功交换了DBD后才会向对方发送LSR
LSR:Link-Status request
LSA:Link-Status advertisement

4、LSU:用于向对方回复具体的LSA
LSU:Link-Status update

5、LSACK:用来对收到的LSA的一个确认
LSACK:Link-Status Acknowledgement

OSPF报文头部
Version(版本号),默认是V2 IPv6是V3
Message type :1、hello 2、DD 3、LSR 4 LSU 5、LSACK
Packet Length:报文长度
Source OSPF router:发送者的Router ID
Area ID:区域号:32位的点分十进制(IP地址格式)
Auth Type (认证类型) 0不认证 1 明文认证 2 MD5
Auth Data:认证的密码

怎么验证OSPF报文头部是否合法
1、版本号为2
2、Area ID必须要和接收端的Area ID一致
3、认证类型和认证密码也必须一致

RID也不能冲突
017B-OSPF[Huawei-GigabitEthernet0/0/0]ospf enable 10 area 0
[Huawei]ospf 10 router-id 2.2.2.2
[Huawei-ospf-10]area 0
[Huawei-ospf-10-area-0.0.0.0]
017B-OSPF

Hello报文:
重要字段解释:
Network Mask:发送Hello报文的接口的网络掩码。
只有在广播网络或者NBMA网络才有意义(在P2P,P2MP链路上是不不检测的
HelloInterval:发送Hello报文的时间间隔。单位为秒。
在广播网络中是10秒一次,在NBMA中是30秒一次
Options:标识发送此报文的OSPF路由器所支持的可选功能。具体的可选功能不在本课程的讨论范围之列。
DN位:Down比特位,是用来防环的(MPLS v*n应用此字段)
O位:用来支持9,10,11类LSA的能力
DC位:当始发链路支持按需链路时该比特位会置位
N位/P位 N位表明是否支持7 类LSA,N=0 表明不接收和发送7类LSA
P位 用在NSSA LSA(七类LSA),是否做七转五
E位:能否接收外部路由(五类LSA) 默认E位是1,是可以接收外部路由

Rtr Pri:发送Hello报文的接口的Router Priority,用于选举DR和BDR。
路由的优先级:用来选举DR和BDR的
RouterDeadInterval:宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为四倍HelloInterval。
40 120

Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
是DR接口的IP地址
Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
Neighbor:邻居路由器的Router ID列表。表示本路由器已经从该邻居收到合法的Hello报文。
邻居路由器的Rtouer ID(表明OSPF的邻居状态)

interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
ospf timer hello 5 /修改OSPf的Hello时间,如果修改了Hello时间,Dead时间会自动调整为4倍
ospf timer dead 40 /修改OSPF的Dead时间,如果修改了Dead时间,Hello时间不会自动调整

验证一个Hello报文是否合法之前首先需要验证一个OSPF报文是否合法。
验证一个接收到的Hello报文是否合法包括:

  1. 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
  2. 所接收的Hello报文中的HelloInterval字段必须和接收端口的配置保持一致;
  3. 所接收的Hello报文中的RouterDeadInterval字段必须和接收端口的配置保持一致;
  4. 所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。关于此比特的具体意义将在《OSPF特殊区域》中详细解释。

如果路由器发现所接收的合法Hello报文的邻居列表中有自己的Router ID,则认为已经和邻居建立了双向连接,表示邻居关系已经建立。

这是形成邻居关系的过程和相关邻居状态的变换过程。

Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
2-WayReceived:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way。
2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的*状态。
1-WayReceived:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。

两端同时进入2-way标志着邻居关系的建立
进入2-way后,是否要建立邻接关系(Full)

1、接口类型为p2p(点到点),p2MP(点到多)
2、自己为DR,或者为BDR
3、邻居为DR,或BDR

进入2-way后,开始选择DR和BDR,40秒(Dead时间)

DR和BDR
DR和BDR的作用:

  1. 减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,减少路由器硬件的负担。一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就大大减少了大型广播型网络和NBMA网络中的邻接关系数量

DR和BDR的选举规则:
两端同时进入2-way,开始选举
1、首先检查Hello报文中的DR字段和BDR字段是否为空,如果都为空(意味着没有DR和BDR),会首先选举出BDR,选举规则:比较优先级,越大越优(默认为1,取置范围为0-255, 0表示不参与选举),如果相同,比较Router ID,越大越优;BDR选举出后,会自动升级为DR,然后重新选举BDR,规则和之前一样
2、如果DR字段为空,BDR不为空 ,BDR升级为DR,重新再选举出BDR
3、如果BDR为空,DR不为空,重新选举出BDR

DR,BDR默认是不支持抢占的(选举期除外)

DRother