一.实验目的
1、掌握OSPF 协议中区域的类型、特征和作用
2、掌握OSPF 路由器的类型、特征和作用
3、掌握OSPF LSA 分组的类型、特征和作用
4、理解OSPF 区域类型、路由器类型和OSPF LSA 分组类型间的相互关系
二.预备知识
1、静态路由选择和动态路由选择
2、内部网关协议和外部网关协议
3、链路状态路由选择
三.实验原理
OSPF 协议(RFC 2328)是一个基于链路状态路由选择的内部网关协议:路由器仅在网络拓扑变化时使用洪泛法(flooding)将自己的链路状态更新信息扩散到整个自治系统中。
为了增强OSPF 协议的可伸缩能力(Scalability),OSPF 协议引入了区域的概念来有效并及时的处理路由选择。OSPF 区域是包含在AS 中的一些网络、主机和路由器的集合, 自治系统中所有OSPF 区域必须连接到一个主干区域(Area 0)上。
区域内的OSPF 路由器(内部路由器,IR)使用洪泛法(flooding)传送本区域内的链路状态信息,区域边界的 OSPF 路由器(区域边界路由器,ABR)将本区域的信息汇总发给其他区域,自治系统边界的 OSPF 路由器(自治系统边界路由器,ASBR)将自治系统外的路由(外部路由)发布在自治系统中。主干区域中的 OSPF 路由器也称为“主干路由器”(BR)。ABR 不能向OSPF 残桩区域(Stub Area)通告外部路由。在多址网络中,为了避免不必要的链路状态洪泛,需要选举 1 个指定路由器(DR)和 1 个备份指定路由器(BDR)。
OSPF 协议有 5 种类型的报文,它们被直接封装在 IP 分组中多播发送。
- 问候(Hello)报文:用来建立并维护 OSPF 邻接关系。在建立了邻接关系后,
OSPF 路由器会定期发送Hello 报文,来测试邻站的可达性。
- 数据库描述(DBD)报文:描述OSPF 路由器的链路状态数据库的概要信息, 即数据库中每一行的标题,它在两台相邻路由器彼此建立邻接关系时发送的。
- 链路状态请求(LSR)报文:由需要若干条特定路由信息的路由器发送出的, 它的回答是 LSU 报文。新接入的路由器在收到 DBD 报文后,可以使用 LSR 报文请求关于某些路由的更多信息。
- 链路状态更新(LSU)报文:OSPF 的核心。OSPF 路由器使用 LSU 报文通告链路状态更新信息(即链路状态通告,LSA),每一个 LSU 报文可包含几个LSA。 OSPF 协议的 LSA 有 5 种常用类型:路由器链路 LSA、网络链路 LSA、汇总链路到网络 LSA、汇总链路到 ASBR LSA 和外部链路LSA。这 5 种类型的 LSA 由不同类型的OSPF 路由器产生,在特定类型的区域范围内扩散。
- 链路状态确认(LSAck)报文:用来确认每一个收到的 LSU 报文,使得OSPF
协议的路由选择更加可靠。
四.实验内容
实验拓扑中 Dynamips 软件模拟实现的路由器R1~R6 互联了 2 个自治系统(AS 10 和 AS 20),路由器之间使用 OSPF 协议进行路由选择。AS 10 中有 5 个子网,划分了 3个区域:Area 0、Area 1 和 Area 2,其中 Area 2 是一个 Stub 区域。AS 20 中有 1 个子网, 其路由信息将以OSPF 的外部路由方式发布到AS 10 的OSPF 网络中。 实验者使用 Dynamips 软件捕获子网 1、2、3 上传送的 OSPF 报文,使用 Wireshark 软件查看捕获的 OSPF 报文,分析 OSPF 协议的路由更新过程,考察 OSPF 协议中不同类型的区域、路由器和 LSA 的特征和作用。 |
实验拓扑中 Dynamips 软件模拟实现的路由器R1~R6 互联了 2 个自治系统(AS 10 和 AS 20),路由器之间使用 OSPF 协议进行路由选择。AS 10 中有 5 个子网,划分了 3个区域:Area 0、Area 1 和 Area 2,其中 Area 2 是一个 Stub 区域。AS 20 中有 1 个子网, 其路由信息将以OSPF 的外部路由方式发布到AS 10 的OSPF 网络中。
实验者使用 Dynamips 软件捕获子网 1、2、3 上传送的 OSPF 报文,使用 Wireshark 软件查看捕获的 OSPF 报文,分析 OSPF 协议的路由更新过程,考察 OSPF 协议中不同类型的区域、路由器和 LSA 的特征和作用。
五.实验步骤
实验步骤详见TCP//IP实验指导书。由于步骤过长,就在此不在赘述。
六、实验数据及结果分析
1、步骤 2 中根据 R1 路由表和 R4 路由表中的哪些信息可以确保实验网中的 OSPF
协议已经收敛?为什么?
1.路由表项的数目,稳定之后。路由表项的数目应该和整个网络网络的数目一致。
2.多次输入show ip route 命之后,显示的路由表项没有变化。
2、分析执行步骤 4 之前在 4 个子网上捕获的OSPF 报文。记录子网 2、3、4 和 5 上每一台路由器发送的 1 个OSPF Hello 报文的如下信息:
步骤3:子网2 | ||||
路由器 | R1 | R2 | ||
IP分组首部 | 源IP | 172.16.2.1 | 172.16.2.2 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 1.1.1.1 | 2.2.2.2 | |
区域ID | 0.0.0.1 | 0.0.0.1 | ||
Hello报文 | 网络掩码 | 255.255.255.252 | 255.255.255.252 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 0.0.0.0 | 0.0.0.0 | ||
BDR | 0.0.0.0 | 0.0.0.0 | ||
邻居1 | 2.2.2.2 | 1.1.1.1 | ||
邻居2 | - | - |
步骤3:子网3 | ||||
路由器 | R2 | R3 | ||
IP分组首部 | 源IP | 172.16.3.2 | 172.16.3.3 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 2.2.2.2 | 3.3.3.3 | |
区域ID | 0.0.0.1 | 0.0.0.1 | ||
Hello报文 | 网络掩码 | 255.255.255.248 | 255.255.255.248 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 0.0.0.0 | 0.0.0.0 | ||
BDR | 0.0.0.0 | 0.0.0.0 | ||
邻居1 | 3.3.3.3 | 2.2.2.2 | ||
邻居2 | - | - |
步骤3:子网4 | ||||
路由器 | R3 | R4 | R5 | |
IP分组首部 | 源IP | 172.16.4.3 | 172.16.4.4 | 172.16.4.5 |
目的IP | 224.0.0.5 | 224.0.0.5 | 224.0.0.5 | |
OSPF报文首部 | 路由器ID | 3.3.3.3 | 4.4.4.4 | 5.5.5.5 |
区域ID | 0.0.0.0 | 0.0.0.0 | 0.0.0.0 | |
Hello报文 | 网络掩码 | 255.255.255.0 | 255.255.255.0 | 255.255.255.0 |
Hello间隔 | 10s | 10s | 10s | |
优先级 | 1 | 1 | 1 | |
失效间隔 | 40s | 40s | 40s | |
DR | 172.16.4.5 | 172.16.4.5 | 172.16.4.5 | |
BDR | 172.16.4.4 | 172.16.4.4 | 172.16.4.4 | |
邻居1 | 5.5.5.5 | 5.5.5.5 | 4.4.4.4 | |
邻居2 | 4.4.4.4 | 3.3.3.3 | 3.3.3.3 |
步骤3:子网5 | ||||
路由器 | R5 | R6 | ||
IP分组首部 | 源IP | 172.16.5.5 | 172.16.5.6 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 5.5.5.5 | 6.6.6.6 | |
区域ID | 0.0.0.2 | 0.0.0.2 | ||
Hello报文 | 网络掩码 | 255.255.255.0 | 255.255.255.0 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 172.16.5.6 | 172.16.5.6 | ||
BDR | 172.16.5.5 | 172.16.5.5 | ||
邻居1 | 6.6.6.6 | 5.5.5.5 | ||
邻居2 | - | - |
【分析】
- 实验中的OSPF hello 间隔是多少秒?
10s
2)是否 4 个子网上都选举有 DR 和 BDR?为什么?根据记录中的 DR 和 BDR 信息,用路由器编号写出图 A 中子网 4 上的 DR 和 BDR。在本实验的后续步骤中,各子网上的 DR 和 BDR 是否会改变?
1.不是每一个子网中都是有DR和BDR,只有在转接网络才需要指定路由器和备份指定路由器,而点到点链路和残桩链路不需要。
2.子网4中的DR是5.5.5.5,BDR是4.4.4.4
3.在本实验后续的步骤之中不会改变,因为子网4和子网5在后续的操作步骤中网络拓扑没有发生变化,因此DR和BDR不会改变。
3、分析从执行步骤 4 开始到执行步骤 5 之前在 4 个子网上捕获的OSPF 报文。按报文的捕获顺序记录每个子网上捕获到的OSPF 报文概要,要求:从第 1 个非类型1(即 hello 报文)的 OSPF 报文开始记录,包括后续的类型 1(hello)报文,一直记录到最后 1 个非类型 1 的OSPF 报文。记录的信息如下:
步骤4:子网:2 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.2.1 | 224.0.0.5 | LS Update | 1.1.1.1 | 0.0.0.1 | 19:01:44 |
172.16.2.2 | 224.0.0.5 | LS Acknowledge | 2.2.2.2 | 0.0.0.1 | 19:01:46 |
步骤4:子网:3 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.3.2 | 224.0.0.5 | LS Update | 2.2.2.2 | 0.0.0.1 | 19:01:44 |
172.16.3.3 | 224.0.0.5 | LS Acknowledge | 3.3.3.3 | 0.0.0.1 | 19:01:46 |
步骤4:子网:4 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.4.3 | 224.0.0.6 | LS Update | 3.3.3.3 | 0.0.0.0 | 19:01:49 |
172.16.4.5 | 224.0.0.5 | LS Update | 5.5.5.5 | 0.0.0.0 | 19:01:49 |
172.16.4.3 | 224.0.0.5 | Hello Packet | 3.3.3.3 | 0.0.0.0 | 19:01:51 |
172.16.4.4 | 224.0.0.5 | LS Acknowledge | 4.4.4.4 | 0.0.0.0 | 19:01:51 |
步骤4:子网:5 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.5.5 | 224.0.0.5 | LS Update | 5.5.5.5 | 0.0.0.2 | 19:01:49 |
172.16.5.6 | 224.0.0.5 | LS Acknowledge | 6.6.6.6 | 0.0.0.2 | 19:01:51 |
【分析】
- 为什么会在实验中捕获到两种不同目的 IP 地址(224.0.0.6 和 224.0.0.5)的LSU 报文?
一般情况下都是组播地址244.0.0.5,但是在转接链路中,非BD和BDR的路由器只与DR/BDR是邻接关系,LSA只需要发送给DR/BDR即可,所以需要244.0.0.6这个组播地址。DR/BDR以目的IP为244.0.0.5发送LSU报文。在子网4当中,即存在DR/BDR,也存在非DR/BDR的路由器,所以会捕获到两种不同目的IP地址的LSU报文。
- OSPF 要求路由器确认收到的 LSA,即对收到的每个 LSU 报文进行确认。为什么在子网 4 上捕获到了 2 个 LSU 报文,但 LSAck 报文却只有 1 个?
OSPF对报文的确认方式有两种:显式和隐式。
在子网4中,R3先对收到的LSA进行洪泛,但是R3不是指定路由器,目的IP是指定路由器的组播地址,所以收到该LSU的R5用过LSU洪泛进行隐式确认。此时R4收到目的224.0.0.5的LSU,知道是指定路由器发的,进行显式的回复。所以在子网4中有两个LSU,却只有一个LSAck。
4、按报文捕获顺序,记录从执行步骤 4 开始到执行步骤 5 之前在 4 个子网上捕获到的所有 LSU 报文的如下信息。
步骤4:子网:2 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 1s | Router-LSA | 1.1.1.1 | 1.1.1.1 | 0x80000003 | 0x7c9a |
步骤4:子网:3 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 2s | Router-LSA | 1.1.1.1 | 1.1.1.1 | 0x80000003 | 0x7c9a |
步骤4:子网:4 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 0x80000002 | 0x9cd5 | |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 0x80000002 | 0x9cd5 |
步骤4:子网:5 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 5.5.5.5 | 0x80000002 | 0x7eed |
【分析】
1)同一 Area 内不同发送者发送的LSU 报文(例如:Area 1 中子网 2 上 R1 发送的 LSU 报文和子网 3 上R2 发送的 LSU 报文)中携带的 LSA 内容是否完全一致?在 LSU 报文中,1 个 LSA 首部中的通告路由器、该 LSU 报文的OSPF 首部中的路由器 ID,以及封装该 OSPF 报文的 IP 分组首部中的源 IP 地址,它们指的是什么路由器?是否是同一台路由器?
(1)同一个区域上捕获到了不同发送者发送的LSU报文完全一致。
(2)LSA首部中的通告路由器是始发这条LSA通告的路由器,该LSU报文的OSPF首部中的路由器ID是发送这个LSU的路由器,封装该 OSPF 报文的 IP 分组首部中的源 IP 地址也是发送这个LSU的路由器。
(3)后面两者同一台路由器,但是三者不一定是同一台路由器。
2)每个子网上捕获到的 LSU 报文中的 LSA 是哪种类型的 LSA?每种类型的LSA 是由图 B 中的哪台路由器始发的?该路由器属于哪种类型的 OSPF 路由器?这些LSA 分别在图B 的哪些区域中洪泛?通告的是其洪泛区域内部的链路信息还是该区域外部的链路信息?
(1)子网2:
捕获的LSA类型是路由器链路LSA(Router-LSA)
始发路由器:R1
路由器类型:IR(内部路由器)
洪泛区域:Area1
通告的是其洪泛区域内部的链路信息
(2)子网3:
捕获的LSA类型是路由器链路LSA(Router-LSA)
始发路由器:R1
路由器类型:IR(内部路由器)
洪泛区域:Area1
通告的是其洪泛区域内部的链路信息
(3)子网4:
捕获的LSA类型是汇总链路到网络LSA(Summary-LSA(IP network))
始发路由器:R3
路由器类型:BR(主干路由器),ABR(区域边界路由器)
洪泛区域:Area0
通告的是该区域外部的链路信息
(4)子网5:
捕获的LSA类型是汇总链路到网络LSA(Summary-LSA(IP network))
始发路由器:R5
路由器类型:BR(主干路由器),ABR(区域边界路由器)
洪泛区域:Area2
通告的是该区域外部的链路信息
3)除路由器 R1 外,其它路由器可以根据收到的 LSA 中的什么信息判定子网 1
不可达?(提示:对比记录 6 的信息)
R2和R3根据收到的LSA消息没有子网1 的信息可以判断不可达;其他路由器根据子网1 的Metric值为16777215判断子网1不可达。
4)如果在图B 中,将子网 1 接到 R3 上,并且让子网 1 处于区域 0 中,那么此时在各个区域中会出现哪些路由器始发的哪些类型的 LSA?
Area0: R3始发的路由器链路LSA(Router-LSA)
Area1: R3始发的汇总链路到网络LSA(Summary-LSA(IP network))
Area2: R5始发的汇总链路到网络LSA(Summary-LSA(IP network))
5、按报文捕获顺序,记录从执行步骤 5 开始到执行步骤 6 之前在 4 个子网上捕获到的所有 LSU 报文,记录信息如下
步骤5:子网:2 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Router-LSA | 1.1.1.1 | 1.1.1.1 | - | - | |
1 | 3s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 | |
1 | 2s | Summary-LSA(ASBR) | 4.4.4.4 | 3.3.3.3 | 0.0.0.0 | 1 |
步骤5:子网:3 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 2s | Router-LSA | 1.1.1.1 | 1.1.1.1 | - | - | |
1 | 2s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 | |
1 | 1s | Summary-LSA(ASBR) | 4.4.4.4 | 3.3.3.3 | 0.0.0.0 | 1 |
步骤5:子网:4 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 255.255.255.0 | 129 | |
1 | 2s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 255.255.255.0 | 129 | |
1 | 1s | Router-LSA | 4.4.4.4 | 4.4.4.4 | - | - | |
1 | 1s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 |
步骤5:子网:5 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Summary-LSA(IP network) | 172.16.1.0 | 5.5.5.5 | 255.255.255.0 | 130 |
【分析】
- 为什么子网 5 上只有类型 3 的 LSA?
因为子网5的拓扑结构没有发生变化,并且不在主干区域,且其为残桩区域。
- Area 1(子网 2、子网 3)中的类型 1 LSA 所通告的拓扑变化,在 Area 0( 子网 4)和 Area 2(子网 5)中分别使用哪种类型的 LSA 进行通告?
类型3
- Area 0(子网 4)中的类型 1 LSA 所通告的拓扑变化,在Area 1(子网 2、子网 3)中使用哪种类型的 LSA 进行通告?
类型4
- Area 0(子网 4)中的类型 5 LSA 所通告的拓扑变化,在Area 1(子网 2、子网 3)中使用哪种类型的 LSA 进行通告?
类型5
- 子网 2、3 和 4 上的类型 5 LSA 信息(包括 LSA 首部及其数据部分)是否完全一致?如有不同,请指出不同之处,并解释不同的原因?
首部和数据部分都会有所不同。
首部部分:LSA首部信息不同的主要是源路由器和OSPF的区域,
数据部分:数据部分OSPF的寿命和相关掩码也不同。
【思考题】
1、OSPF 协议有 5 种类型的报文,并能通告 5 种类型的 LSA。本实验中捕获到了哪些类型的 OSPF 报文和哪些类型的 LSA?请解释本实验中不能捕获到某些类型的 OSPF 报文和某些类型的 LSA 的原因。
1)本实验中捕获到了OSPF协议的Hello报文、LSU报文和LSAck报文,没有捕获到LSR和DBD报文。DBD报文是在两台相邻路由器建立邻接关系的时发送的。但是在本次实验的过程中,捕获报文之前,相邻路由器都已经建立好关系。所以在实验过程中DBD报文不会产生。因为LSR报文是链路状态数据库同步过程中根据收到的DBD报文产生的,DBD报文没有产生,所以LSR报文不会产生。
2)本次实验过程中捕获到了1,3,4,5的LSA,没有捕获到类型2(Network-LSA)的LSA。因为类型2(Network-LSA)是由DR在转接链路内发布其所在Transit network上其它路由器信息。而在实验中两次网络拓扑变化都没有发生在子网4内,所以不会产生类型2。
七、实验结论
1、本实验中,路由器 R1~R6 分别属于哪种类型的 OSPF 路由器?
R1:内部路由器
R2:内部路由器
R3:区域边界路由器,主干路由器
R4:在步骤五之前属于主干路由器,内部路由器;在步骤五之后属于主干路由器和AS边界路由器。
R5:主干路由器,区域边界路由器
R6:内部路由器
2、结合实验拓扑图和小组捕获的所有 OSPF 报文,总结 5 种 LSA 分别由哪种类型的 OSPF 路由器产生?通告了哪些信息?能在哪些区域范围内洪泛?
1)路由器链路LSA(Router-LSA):由网络中的每一台路由器产生,在本区域内发布所有邻居及其对应链路的信息,只能在始发区域洪泛(本区域)
2)网络链路LSA(Network-LSA):由DR(指定路由器)产生,由DR在本区域内发布其所在Transit network上其它路由器信息,只能在始发区域洪泛(本区域)
3)Summary–LSA(汇总链路到网络):由ABR(区域边界路由器)产生,在其所属的每个区域里中发布到达其它区域的路由信息,在这个区域内洪泛,但不能在残桩区域洪泛。
4)Summary–LSA (汇总链路到ASBR) :由ABR(区域边界路由器)产生,在本AS内的所有区域中发布到达ASBR的路径信息,可以洪泛到本AS内部所有非残桩区域中。
5)AS–external–LSA:由ASBR产生,在本AS内的某些区域中发布到达AS以外网络的路径信息
八、总结及心得体会
1.通过本次实验体会到了OSPF路由的过程,包括OSPF各种LSA的类型和OSPF的四种报文类型,并对每一种报文进行了分析,对OSPF的工作流程有了更加深刻的认识。
2.同时
九、对本实验过程及方法、手段的改进建议
1.建议可以对子网4里面的网络拓扑进行改变,让学生体会一下类型2的LSA的变化。