本帖最后由 锐意精通 于 2018-10-9 14:36 编辑
OSPF在通信过程中产生了五种OSPF数据包,它们分别为:Hello; DBD;LSR;LSU;LSack 以下分别对这五种数据包内容进行分析
先介绍五种数据的前缀封装“OSPF Header”
1)Version:2(IPv4使用的是OSPFv2;IPv6使用的是OSPFv3) 2)Message Type(OSPF封装的数据包,分别为:Hello(1);DBD(2);LSR(3);LSU(4);LSAck(5)) 3)Packet Length(数据包大小):整个报文(包括OSPF报头部分和后面各报文内容部分)的字节长度; 4)Source OSPF Router(源RID) 5)Area ID(区域号):如果路由器接口所处的是骨干区域(Area 0),那么这个字段将被封装为“0.0.0.0”; 截图中发出OSPF数据包的路由器接口所处的区域是“area 1”; 6)Checksum(校验和):校验整个报文的校验和(包括OSPF报头以及各报文具体内容;并不包括下面的Authentication字段!) 7)Auth Type/ 8)Auth Data(认证的类型以及认证数据) 以上,便是OSPF Header中的8个字段。
1. Hello 1)Network Mask(宣告接口所处网络的掩码) 2)Hello Interval(Hello间隔时间;在BMA/P2P网络中,Hello间隔默认为‘10s’,NBMA网络上的默认间隔为‘30s’; Hello间隔时间可以修改,但在修改后DeadInterval也会随之修改) 3)Options(Options字段,出现在每一个Hello/DBD以及每一个LSA中),关于Options字段中的内容详解如下: DN / O:这两个字段使用环境是MPLS(Multi Protocol Lable Switching);DN位,用以基于MPLS的三层VPN技术; O位,用以表示始发路由器支持“Opaque LSA”,即“LSA 9 & 10 & 11”可用以MPLS网络应用的流量工作参数。
N:N位为‘1’时,表示该路由器为NSSA区域路由器; E:当始发路由器具有接收域外LSA的能力时,该位置‘1’;
在Hello包中使用该位以表明一个接口具有接收和发送LSA 5的能力;
在 ‘所有域外LSA’和 ‘所有运行于骨干区域和非末梢区域的LSA’中,该位置‘1’。
而在所有始发于末梢区域的LSA中,该位置‘0’。
形成邻接关系时会检查Hello包中的该字段,检查对端接口是否属于相同类型的区域。
E位参数不一致的邻居路由器将无法形成邻接关系。
MC:该位描述是否支持“组播扩展OSPF”
4)Router Priority(路由器优先级):默认所有路由器的优先级置‘1’;
如果想要让某一台路由器的接口成为DR需要将其优先级更改数值‘<1’,保持其他路由器的优先级为‘1’即可。
如果不想成为DR的,可以将优先级置‘0’。
5)Router Dead Interval
6)Designated Router / Backup Designated Router:DR/BDR是指接口的状态,以接口的IP地址标识。
以上,便是OSPF Hello数据包中的6个字段内容。
PS:邻居/邻接关系的建立是在Hello包交互过程中,那么影响邻居/邻接关系建立的因素有哪些?
1)Hello Interval & Dead Interval 相同;
2)区域号一致;
3)区域类型匹配;
4)认证类型和密码一致;
5)RID不相同;
6)Hello包被ACL阻拦;
7)MTU一致(如果不一致,在MTU小的那一个OSPF路由接口上配置“(config-if)#ip ospf mtu-ignore”以忽略MTU)
8)接口掩码(① 在MA网络中,如果邻居两端的掩码不一致,邻居关系建立失败;
② 在P2P网络中,如果邻居两端掩码不一致,邻居能建立且乐于能够学习到)
9)网络类型***(两端如果OSPF网络类型不同,邻居关系能建立起来,且能接收到对方的LSA,但路由学习不到)
2. DBD
1)Interface MTU:接口的最大传输单元;
2)Options(Options字段,出现在每一个Hello/DBD以及每一个LSA中);
3)DB Description(DBD内容分两种:空DBD,无任何LSA头部信息;装载LSA头部的DBD):
以上截图为空DBD,空DBD用以协商“主/从”,其中的字段有“I / M / MS / DD Sequence”。
协商主从的作用“决定后续LSA同步过程中谁占主动,并且依据谁生成的序列号来统一LSDB中LSA序列号”。
以上,便是OSPF DBD(空DBD)的3个字段内容
DBD-2
1)Interface MTU;
2)Options(Options字段,出现在每一个Hello/DBD以及每一个LSA中);
3)DBD Description(I / M / MS);
4)DD Sequence
5)LSA Head
① LSA-type 1 (Router-LSA):
type 1 即 Router LSA,每台OSPF路由器都会产生,只在区域内传播;
type 2 即 Network LSA,DR产生,只在网络类型是MA的区域内传播;
type 3 即 Network Summary LSA,ABR产生,告知区域内的路由器区域外的路由条目;
当有多个ABR通告时,使用cost值来确定最佳路径;
这个cost值是由区域内路由器将外部路由cost和内部cost简单相加所得,
而不是运行SPF算法;因此,OSPF在区域内是链路状态路由协议,而区域间是距离矢量路由协议;
type 4 即 ASBR Summary,由ABR产生,用来广播ASBR的位置;
tyoe 5 即 External Summary,由ASBF产生,是非OSPF设备的路由信息;
type 7,NSSA区域中传播External Route,在NSSA区域内的ABR负责将type 7转换为type 5,
然后由ABR将这些路由条目通告到Backbone。
② Options(出现在每一个Hello/DBD以及每一个LSA中);
③ Link State ID:根据链路类型的不同,“Link State ID & Link Date”有所不同。
④ Advertising Router,即“产生该LSA的RID”; ⑤ Sequence Number(LSA序列号); ⑥ Checksum ⑦ Length
3. LSR
1)LS Type; 2)Link State ID; 3)Advertising Router
4. LSU
1)Number of LSAs(LSA的数量):默认为‘1’; 2)LSA-type & length;3)Options;4)LS Type:LSA类型;5)Link State ID; 6)Advertising Router;7)Sequence Number;8)Checksum;9)Length // 从‘2) ~ 9)’,我们发现这就是DBD-2中的内容,即LSA头部 10)Flags(其中的三个字段分别标识此路由器身份) V:置‘1’,说明始发路由器是一条或多条具有完全邻接关系的虚链路的一个端点,这里被描述的区域是“传送区域”; E:置‘1’,说明始发路由器是一台ASBR路由器; B:置‘1’,说明始发路由器是以太ABR路由器。 11)Number of Links:路由器所连链路的数量 接下来才是LSA的主体部分
12)Link ID
13)Link Data
因为接口连接的是一个末梢网络,所以按照上表中的对应内容:
Link ID & Link Data 的值应该是“IP网络或子网地址”&“网络的IP地址或子网掩码”。
14)Link Type(链路类型)
Link Type 分为:Stub(末梢);Transmit(以太);Point-to-Point(点到点);Virtual(虚拟链路)
15)Number of TOS:Cisco只支持为‘0’;
16)Metric(度量值)
以上,便是LSU(Router-LSA LSU)的具体字段解读。
当然还包括其他LSA信息,不同LSA的字段也不相同
5. LSAck
1)LSA-type & Length;
① LS Age(seconds):LSA生存时间,数值越小表示LSA越新
2)Options
3)LS Type
4)Link State ID
5)Advertising Router
6)Sequence Number
7)Checksum
8)Length
//以上字段就是LSA头部信息,说明LSAck回复对方的是本端的信息,以此说明LSA更新本端已经接收到。
以上信息描述不正确之处,望各位纠正,谢谢
|