Files
notes_estom/计算机网络实验/OSPF协议.md
2019-12-05 10:05:06 +08:00

29 KiB
Raw Permalink Blame History

OSPF协议

参考文献

1 OSPF协议概述

主要介绍了OSPF一些静态的基础知识。

OSPF原理

每一台路由器将其周边的链路状态描述出来发送给网络中相邻的路由器。经过一段时间的链路状态信息交互每台路由器都保存了一个链路状态数据库该数据库是整个网络完整的链路状态描述。然后应用最短路优先算法计算路由。主要是Djskra算法。

OSPF组播的方式在所有开启OSPF的接口发送Hello包用来确定是否有OSPF邻居若发现了则建立OSPF邻居关系形成邻居表之后互相发送LSA链路状态通告相互通告路由形成LSDB链路状态数据库。再通过SPF算法计算最佳路径cost最小后放入路由表。

OSPF特点

  • OSPF是一种无类别域间路由协议支持VLSM可变长子网掩码。支持IPV4和IPV6.
  • 组播地址224.0.0.5 224.0.0.6。
  • OSPF度量从源到目的所有出接口的度量值和接口带宽反比10^8/带宽)。
  • 收敛速度极快,但大型网络配置很复杂。
  • IP封装协议号89

OSPF优点

  • 适应范围广
  • 快速收敛
  • 无自环
  • 支持验证、组播发送、路由分级、等值路由。

自制系统和OSPF区域

自治系统Autonomy SystemAS由统一机构管理的使用同一组选路策略的路由器集合。OSPF是自治系统内部的路由选择协议。

区域Area是指一个路由器的集合相同的区域有着相同的拓扑结构数据库。OSPF用区域把一个AS分成多个链路状态。分为骨干区域和非骨干区域。

  • 骨干区域区域0骨干区域必须连接所有的非骨干区域而且骨干区域不可分割有且只有一个一般情况下骨干区域内没有终端用户。
  • 非骨干区域非0区域非骨干区域一般根据实际情况而划分必须连接到骨干区域不规则区域也需通过tunnel或virtual-link连接到骨干区域。一般情况下费骨干区域主要连接终端用户和资源。

OSPF路由器逻辑角色

  • DRDesignated Router指定路由器OSPF协议启动后开始选举而来
  • BDRBack-up Designated Router备份指定路由器同样是由OSPF启动后选举而来
  • DRothers其他路由器非DR非BDR的路由器都是DRothers。

OSPF路由器逻辑位置

  • 区域内路由器(IAR internal area router):所有端口在同一区域的路由器,维护一个链路状态数据库。

  • 区域边界路由器(ABR area border router)具有连接多区域端口的路由器一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库负责将所连接区域的路由摘要信息发送到主干区域而主干区域上的ABR则负责将这些信息发送到各个区域。

  • 骨干路由器(BBR backbone router):具有连接主干区域端口的路由器。 至少有一个接口属于骨干区域area = 0

  • 自治域系统边界路由器(ASBR as boundary router)至少拥有一个连接外部自治域网络如非OSPF的网络端口的路由器负责将非OSPF网络信息传入OSPF网络。

邻居和邻接

邻居不一定是邻接邻接一定是邻居只有交互了LSA的OSPF邻居才成为OSPF的邻接只交互Hello包的支撑位邻居。

在点对点网络中,所有邻居都能成为邻接。

MA广播多路访问网络比如以太网网络类型中DRBDRDRothers三者关系为DR、BDR与所有的邻居形成邻接DRothers之间只是邻居而不交换LSA。

  • OSPF发送hello报文只有一跳收到报文进行协商建立邻居关系。是一种物理上直接相连的关系但不一定是逻辑上的邻接关系。
  • 当双方成功交换链路状态通告信息后才会成为邻接关系。建立了逻辑上的邻接关系。

OSPF更新

OSPF是一种触发更新的机制。一旦拓扑发生变化便会更新。 OSPF也有周期性更新30分钟一次

当收到一条LSA之后 首先查看是否在LSDB中若没有则假如LSDB回复LSACK。继续泛洪出去并且通过SPF算法计算最佳路径并加入路由表。若存在则比较谁的更“新”看序号序号大者新若本地不如收到的信更新本地LSDB并泛洪且通过SPF算法计算最佳路径并加入路由表若比收到的新则将本地的泛洪出去。

OSPF中的表

  • 邻居表:记录了建立邻居关系的路由器dis ospf peer
  • LSDB链路状态数据库包含了本路由器上的区域的所有的链路状态信息并实时同步。dis ospf lsdb
  • 路由转发表由LSDB和SPF算法计算得到。dis ospf routing

2 OSPF协议报文交互过程

主要介绍了OSPF报文和动态交互过程。面向的对象OSPF协议本身。建立可靠数据连接的过程。

OSPF报文总体结构

IP 封装了OSPF报文LSU链路状态更新类型的报文类型的OSPF报文封装了LSA链路状态通告报文LSA报文封装了多个LSA数据。

更具体的封装格式: IPHeader----OSPFHeader----particularHeader----LSAHeader----LSAData

OSPF报文头

字段 长度 含义
Version 1字节 版本OSPF的版本号。对于OSPFv2来说其值为2。
Type 1字节 类型OSPF报文的类型有下面几种类型1Hello报文2DD报文3LSR报文4LSU报文5LSAck报文。
Packet length 2字节 OSPF报文的总长度包括报文头在内单位为字节。
Router ID 4字节 发送该报文的路由器标识。
Area ID 4字节 发送该报文的所属区域。
Checksum 2字节 校验和,包含除了认证字段的整个报文的校验和。
AuType 2字节 验证类型,值有如下几种表示, 0不验证1简单认证2MD5认证。
Authentication 8字节 鉴定字段其数值根据验证类型而定。当验证类型为0时未作定义类型为1时此字段为密码信息类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。MD5验证数据添加在OSPF报文后面不包含在Authenticaiton字段中。

5种OSPF报文类型-Hello报文

Hello周期性地发送给本路由器的邻居使用的组播地址224.0.0.5。DR和BDR发送报文使用的组播地址是224.0.0.6。其作用为建立和维护邻接关系周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。

  • OSPF-hello报文格式

  • OSPF-hello字段说明

字段 长度 含义
Network Mask 32比特 发送Hello报文的接口所在网络的掩码。
HelloInterval 16比特 发送Hello报文的时间间隔。
Options 8比特 可选项E允许Flood AS-External-LSAs MC转发IP组播报文 N/P处理Type-7 LSAs DC处理按需链路
Rtr Pri 8比特 DR优先级。默认为1。如果设置为0则路由器不能参与DR或BDR的选举。
RouterDeadInterval 32比特 失效时间。如果在此时间内未收到邻居发来的Hello报文则认为邻居失效。
Designated Router 32比特 DR的接口地址。
Backup Designated Router 32比特 BDR的接口地址。
Neighbor 32比特 邻居以Router ID标识。
  • OSPF-hello报文实例

5中OSPF报文类型-DD报文

DDDatabase Description 本地数据库摘要供路由器核对数据库是否同步。只交换摘要减少带宽占用。包括空DD报文和带有摘要信息的DD报文。空DD报文用来确定Master/Slave关系由Master规定起始序列号每发送一个DD报文序列号加1Slave方使用Master的序列号作为确认。

  • OSPF-DD报文格式

  • OSPF-DD报文字段说明
字段 长度 含义
Interface MTU 16比特 在不分片的情况下,此接口最大可发
Options 8比特 可选项E允许Flood AS-External-LSAs
I 1比特 当发送连续多个DD报文时如果这是第一个DD报文
M (More) 1比特 当发送连续多个DD报文时如果这是最后
M/S (Master/Slave) 1比特 当两台OSPF路由器交换DD报文时首先需要确定双方的主从关系Router ID大的一方会成为Master。当值为1时表示发送方为Master。
DD sequence number 32比特 DD报文序列号。主从双方利
LSA Headers 可变 该DD报文中所包含的LSA的头部信息。
  • OSPF-DD报文实例

5种OSPF报文类型-LSR报文

LSRLink-State Request 请求链路状态在数据库同步过程中使用请求其他角色发送自己失去的LSA最新版本。内容包括所需要的LSA的摘要。

  • OSPF-LSR报文格式

  • OSPF-LSR报文字段说明
字段 长度 含义
LS type 32比特 LSA的类型号。
Link State ID 32比特 根据LSA中的LS Type和LSA description在路由域中描述一个LSA。
Advertising Router 32比特 产生此LSA的路由器的Router ID。
  • OSPF-LSR报文实例

5种OSPF报文类型-LSU报文

LSULink-State Update 链路状态更新用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA内容是多条LSA全部内容的集合。LSU包括几种类型的LSALSU负责泛洪LSA和响应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居进行泛洪的时候邻居路由负责把收到的LSA信息重新封装在新的LSU中。

  • OSPF-LSU报文格式

  • OSPF-LSU报文字段说明
字段 长度 含义
Number of LSAs 32比特 LSA的数量。
  • OSPF-LSU报文实例

5种OSPF报文类型-LSACK报文

LSACK链路状态确认路由器必须对每个收到的LSA进行LSACK确认但可以用一个LSACK确认多个LSA。

  • OSPF-LSACK报文格式

  • OSPF-LSACK报文字段说明
字段 长度 含义
LSAs Headers 可变 通过LSA的头部信息确认收到该LSA。
  • OSPF-LSACK报文实例

OSPF可靠传输机制

采用了确认重传机制确保OSPF路由信息的可靠传输。

OSPF邻居状态机

邻居状态机的状态说明

  • Down 邻居状态机的初始状态是指在过去的Dead-Interval时间内没有收到对方的Hello报文

  • Init 本状态表示已经收到了邻居的HELLO报文但是该报文中列出的邻居中没有包含本Router ID对方并没有收到我发的HELLO

  • Attempt 只适用于NBMA类型的接口处于本状态时定期向那些手工配置的邻居发送HELLO报文

  • 2-Way 本状态表示双方互相收到了对端发送的HELLO报文建立了邻居关系。在广播和NBMA类型的网络中两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。

  • ExStart 在此状态下路由器和它的邻居之间通过互相交换DD报文该报文并不包含实际的内容只包含一些标志位来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。

  • Exchange 路由器将本地的LSDB用DD报文来描述并发给邻居

  • Loading 路由器发送LSR报文向邻居请求对方的LSU报文

  • Full 在此状态下邻居路由器的LSDB中所有的LSA本路由器全都有了。本路由器和邻居建立了邻接状态

OSPF报文交互过程

具体步骤

  1. 通过HELLO报文的邻居发现
  2. DD报文的主从关系协商
  3. DD报文交换摘要信息
  4. LSA的请求
  5. LSA的更新
  6. LSA 的确认

3 OSPF协议链路状态通告

主要介绍了LSA链路状态通告和与LSA有关的逻辑关系。这一部分主要讲解了OSPF如何来描述整个网路即如何生成LSDB。下一部分主要讲解通过LSDBOSPF计算得到ospf routing table的过程。

常用的LSA共有5种分别为Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。

LSA 相同的Header

  • 字段说明
字段 长度 含义
LS age 16比特 LSA产生后所经过的时间以秒为单位。无论LSA是在链路上传送还是保存在LSDB中其值都会在不停的增长。
Options 8比特 可选项E允许泛洪AS-External-LSAMC转发IP组播报文N/P处理Type-7 LSADC处理按需链路。
LS type 8比特 LSA的类型Type1Router-LSA Type2Network-LSA Type3Network-summary-LSA Type4ASBR-summary-LSA Type5AS-External-LSA Type7NSSA-LSA
Link State ID 32比特 与LSA中的LS Type和LSA description一起在路由域中描述一个LSA。
Advertising Router 32比特 产生此LSA的路由器的Router ID。
LS sequence number 32比特 LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
LS checksum 16比特 除了LS age外其它各域的校验和。
length 16比特 LSA的总长度包括LSA Header以字节为单位。

五种链路状态通告类型

Router-LSA1类

Router-LSAType1每个路由器都会产生描述了路由器的链路状态和花费在所属的区域内传播。

  • Router-LSA通告格式

  • Router-LSA通告字段说明
字段 长度 含义
Link State ID 32比特 生成LSA的Router ID。
V (Virtual Link) 1比特 如果产生此LSA的路由器是虚连接的端点则置为1。
E (External) 1比特 如果产生此LSA的路由器是ASBR则置为1。
B (Border) 1比特 如果产生此LSA的路由器是ABR则置为1。
# links 16比特 LSA中所描述的链路信息的数量包括路由器上处于某区域中的所有链路和接口。
Link ID 32比特 路由器所接入的目标其值取决于连接的类型1Router ID2DR的接口IP地址3网段子网号4虚连接中对端的Router ID。
Link Data 32比特 连接数据其值取决于连接的类型unnumbered P2P接口的索引值stub网络子网掩码其它连接路由器接口的IP地址。
Type 8比特 路由器连接的基本描述1点到点连接到另一台路由器2连接到传输网络3连接到stub网络4虚拟链路。
# TOS 8比特 连接不同的TOS数量。
metric 16比特 链路的开销值。
TOS 8比特 服务类型。
TOS metric 16比特 和指定TOS值相关联的度量。

Network- LSA(2类)

Network-LSAType2由广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router ID描述本网段的链路状态在所属的区域内传播。

  • Network-LSA通告格式

  • Network-LSA通告字段说明
字段 长度 含义
Link State ID 32比特 DR的接口IP地址。
Network Mask 32比特 该广播网或NBMA网络地址的掩码。
Attached Router 32比特 连接在同一个网络上的所有路由器的Router ID也包括DR的Router ID。

Network Summary-LSA3类

Network-summary-LSAType3描述区域内所有网段的路由并通告给其他相关区域。ASBR-summary-LSAType4描述到ASBR的路由通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式它们都是由ABR产生。

  • Network Summary-LSA&ASBR Summary-LSA通告格式

  • Network Summary-LSA&ASBR Summary-LSA通告字段说明
字段 长度 含义
Link State ID 32比特 通告的网络地址。如果是ASBR Summary LSA此字段表示ASBR的Router ID。
Network Mask 32比特 该广播网或NBMA网络地址的掩码。如果是ASBR Summary LSA此字段无意义设置为0.0.0.0。
metric 24比特 到目的地址的路由开销。
TOS 8比特 服务类型。
TOS metric 24比特 和指定TOS值相关联的度量。

ASBR Summary-LSA(4类)

ASBR-Summary-LSAType4描述到ASBR的路由通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式它们都是由ABR产生。

AS External-LSA5类

AS-External-LSAType5由ASBR产生描述到AS外部的路由这是五种LSA中唯一一种通告到所有区域除了Stub区域和NSSA区域的LSA。

  • AS External-LSA通告格式

  • AS External-LSA通告字段说明

字段 长度 含义
Link State ID 32比特 通告的网络地址。
Network Mask 32比特 通告的目的地址的掩码。
E 1比特 外部度量值类型0第一类外部路由1第二类外部路由。
metric 24比特 到目的地址的路由开销。
Forwarding Address 32比特 到所通告的目的地址的报文将被转发到这个地址。
External Route Tag 32比特 添加到外部路由上的标记。OSPF本身并不使用这个字段它可以用来对外部路由进行管理。
TOS 8比特 服务类型。
TOS metric 24比特 TOS附加距离信息。

4 OPSF协议链路状态描述

OSPF协议的4种网络类型

  • Broadcast类型。广播网络。选举指定路由器DR与备份指定路由器BDR。广播型全连接网络拓扑结构。
  • NBMA类型。非广播多点可达。选举DR与BDR。单播型全连接网络拓扑结构。
  • PRMP类型。点到多点网络。不要求DR和BDR。使用组播24.0.0.5发送协议。非全连接拓扑结构。
  • PTP类型。点到点网络。无序选择DR和BDR。使用组播224.0.0.5发送协议。点对点拓扑结构。

OSPF周围4种网络拓扑结构

  • Stub net末端网络拓扑结构路由器直连其他PC网段中没有其他运行OSPF协议的网络设备。
  • PPP网络描述点到点拓扑结构链路连接另一个OSPF的路由器。
  • 点到多点:非全连接拓扑结构。
  • 全连接网络全连接拓扑结构。信息冗余。选取DR与BDR。

链路状态描述信息

链路状态描述信息+链路状态通告头组成了链路状态通告信息。链路状态描述信息描述了一条记录的具体含义,反映了路由器周边的网络拓扑结构。不同的网络结构使用不同的链路状态描述信息。链路状态描述是链路状态通告的主体部分。

类型值 链路类型 LinkID LinkData
1-router Point-to-Point链路 邻居路由器的RouterID 始发路由器在该网段时的接口IP地址
2-transit 连接Transit网络链路 DR接口的IP地址 始发路由器在该网段是的接口IP地址
3-stubnet 连接Stub网络链路 Stub网络的IP地址 Stub网络的子网掩码
4-virtual Virtual Link 邻居路由器的RouterID 始发路由器接口的MIB-IIifINDEX值

链路状态描述信息与链路状态通告信息关系

重要:关系理解

链路状态信息组成了链路状态通告信息。链路状态描述信息通过接口链路类型区别。链路状态通告类型,通同路由器逻辑作用区别。

当使用以太网连接路由器的一个端口的时候这个时候默认为广播类型默认网络结构为全连接网络默认生成第二类LSA。

第一类链路状态通告信息LSARouter中链路状态描述信息

  • Stub类型的网络Serial
    • 使用StubNet链路状态描述信息描述链路的网段信息
  • PPP网络Serial
    • 使用StubNet链路状态描述信息描述相连的网段信息
    • 使用p2p链路状态描述信息描述相连的路由器信息
  • 点到多点Serial
    • 使用StubNet链路状态描述信息描述相连的网段信息
    • 使用p2p链路状态描述信息描述相连的路由器。
  • 以太网连接Ethernet
    • 使用TransNet链路状态描述信息描述网段信息。

第二类链路状态通告信息LSANetwork中的链路状态描述

  • 全连接网络(或者说,以太网连接网络)
    • 直接描述同一个网段的全连接路由器。

第三类链路状态通告信息LSASumNet

第四类链路状态通告信息LSASumASB

DR与BDR的选举

  1. 登记本网段内运行OSPF的路由器
  2. 登记具有DR候选资格的路由器即本网段内的Priority>0的OSPF路由器Priority可以手工配置缺省值是1
  3. 所有的Priority>0的OSPF路由器都认为自己是DR
  4. Priority值最大若Priority值相等则Router ID最大的路由器将成为DR。第二为BDR。
  5. 每台路由器通过互相发送Hello报文同时将自己选出的DR写入Hello报文中本网段中所有路由器共同选举出DR和BDR。

选举的原则

  • 选举制 DR是各路由器选出来的而非人工指定的虽然管理员可以通过配置Priority干预选举过程。
  • 终身制 DR一旦当选除非路由器故障否则不会更换即使后来的路由器Priority更高。
  • 世袭制 DR选出的同时也选出BDR来DR故障后由BDR接替DR成为新的DR。
  • 稳定压倒一切 如果DR频繁的更迭则每次都要重新引起本网段内的所有路由器与新的DR建立邻接关系。
  • BDR快速响应 BDR与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后BDR立即成为DR。

5 区域划分及LSA种类

原理

路由器数量增多LSDB庞大占用存储空间增加运行SPF算法的复杂度同时两台路由器之间进行LSDB同步的时间变长。

减少LSA的数量缩小网络变化的搏击范围。

OSPF协议通过将自治系统划分成不同的区域解决问题。区域内使用第一类和第二类LSA链路通告类型。第三类LSA主要对区域内的路由网段信息进行描述大大减少了路由信息描述的数量。

路由聚合功能。

路由器类型

在第一章讲过

与自治系统外部通信

ASBR可以在系统中的任何位置。将其他路由协议包括静态路由和接口直连路由导入到OSPF路由器中。

使用第五类LSA描述包括该路由的目的地之、掩码和花费等信息。将外部信息导入到自制系统内部传播。

骨干区域与虚连接

6 OSPF协议路由的计算

SPF算法和COST值

  • SPF算法-Dijkstra算法。

    根据链路状态数据库还原网络区域的拓扑结构图。SPF算法根据甲醛有向图以该路由器为根计算最小生成树获得到每一个目的网段的路由。

  • Cost值

    链路花费。值越小链路带宽越高。OSPF中的COST值一般为$10^8/链路宽带$。

区域内OSPF路由计算过程

LSA描述路由器本地状态--报文交互-->生成LSDB--SPF算法-->LS Routing

  1. 每台路由器根据自己周围的网络拓扑结构生成一条LSA静态。通过相互之间发送协议报文将LSA发送给网络中相邻的路由器动态交互。网络中所有的路由器具有所有的相同的LSA构成的LSDB。
  2. LSDB是对整个网络拓扑结构的描述。使用LSDB生成带权有向图。
  3. 每台路由器运行SPF算法计算最短路径树。

区域间OSPF路由计算过程

  1. 同一个区域内的路由器之间会保持LSDB的同步。网络拓扑结构的变化首先在区域内更新。
  2. 区域之间通过ABR来完成。生成Type3的LSA
  3. 另一个区域根据Type3的LSA生成路由下一跳都指向ABR

区域外OSPF路由的计算过程

  1. 第一类外部路由接受的IGP路由。第一类外部路由开销=本路由器到ASBR开销+ASBR到目的地址开销。
  2. 第二类外部路由接受的EGP路由。第二类外部路由开销=ASBR到目的地之的开销。

路由的类型和优选顺序

  1. 优选区域内路由
  2. 优选区域间路由
  3. 优选自治系统Tpye1类外部路由
  4. 优选自制系统Type2类外部路由
  5. 若都相等,添加等值路由。

一个SPF算法运行的实例分析来自课本

  1. 每个路由器生成了第一类LSA