2.2.3 Hello报文
1、Hello报文的内容
如图2.6是OPSF报文交互过程中抓取的OSPF的Hello报文,粗了显示了OSPF通用头部,再通用头部后面还携带了OSPF的Hello报文,并再通用头部使用Message Type标明后续消息类型是Hello报文。
图2.6 OSPF协议Hello报文
Hello报文中包含以下字段:
- Network Mask:网络掩码,发送Hello报文的接口所在网络的掩码。P2P链路对接口地址是否在同一个网段以及子网掩码是否相同不进行要求。
- Hello Interval:发送Hello报文的时间间隔
- Options:可选项,共8bit。如图2.7所示,是抓取的数据包中的Options字段,这里介绍几个bit位:
- E:允许Flood AS-External-LSAs,表示是个普通区域,允许泛洪外部路由
- MC:转发IP组播报文
- N/P:处理Type-7 LSAs,置位是个NSSA区域
- DC:处理按需电路
- Router Priority:接口的DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
- Router DeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。
- Designated Router:DR的接口地址。
- Neighbor:邻居,以Router ID 为标识。邻居列表。
图2.7 Hello报文中的Options字段
2、影响OSPF建立的因素
OSPF的路由传递都需要建立OSPF邻居关系,OSPF通过Hello报文建立邻居关系,参考《Datacom HCIA笔记》的6.3节)。
影响邻居建立的因素就是Hello报文中的字段信息:
通用头部中 :
- Router ID不能冲突;
- Area ID要一致;
- Auth Type要一致;
- Auth Data 要匹配;
Hello报文中:
- Hello报文的发送间隔要一致;
- 区域类型要一致(Option E bit和N bit取值要一致);
- Hello报文的失效时间要一致;
补充点1:广播型链路和NBMA链路,要求接口地址在同一个网段,掩码长度要一致
补充点2:P2P(PPP/HDLC)链路对接口地址是否在同一个网段,以及子网掩码是否想通,都不做要求。华为的以太网改P2P网络类型,邻居和路由都能正常建立和计算,但无法实现单播通信,原因是ARP解析出现问题,系一条路由器不恢复ARP请求报文。以太网链路修改P2P网络类型,IP地址和掩码保持一致。
补充点3:P2MP链路接口IP地址必须要在同一个网段,默认要求掩码一致,通过命令可以忽略掩码一致要求。
补充点4:OSPF的广播网络类型和P2P网络类型如果修改Hello参数一致,那么可以建立灵雎,但是两边的LSA类型不一致,所以无法学习到正确路由。
3、OSPF网络类型
OSPF四种网络类型,决定了OSPF的工作以何种方式发送报文,发送间隔是多少。
接口OSPF网络类型P2P:当链路层为PPP或者HDLC协议,缺省情况OSPF的接口网络类型为P2P类型,该类型已组播方式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
接口OSPF网络类型P2MP:没有任何链路层协议被缺省认为是P2MP类型。点到多点必须是由其他的网络类型修改而来,通常做法是将全互通的NBMA网络修改为点到多点的网络。在该类型的网络中以组播的方式发送Hello报文,以单播的方式发送其他协议报文。
接口OSPF网络类型NBMA:当链路层协议为ATM、FR、X.25时,缺省情况下,OSPF认为接口的缺省网络类型为NBMA网络,该类型的网络中已组播形式(224.0.0.5)发送Hello报文,一单播形式发送其他协议报文(DD报文、LSR报文等)
接口OPSF网络类型广播:当接口的链路层协议为以太网协议,则接口的OSPF网络类型默认为广播,以组播的方式发送Hello报文,以组播的方式发送其他协议报文。