一.OSPF的详细配置
1.观察OSPF报文交互过程
(1)实验目的
配置基本的OSPF,观察其建立邻居关系时的报文交互过程。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】基本的IP地址配置(本步骤省略)
【2】在AR1和AR2上配置OSPF,配置之前先在链路上开启抓包
这里先复习一下OSPF报文类型及作用:
- hello 报文:type 类型为1。作用是自动发现邻居路由器,协商参数并维护邻居关系
- Database(DD 报文):type类型为2。作用是交互链路状态数据库摘要信息,并完成 Master Slave 的选举。
- Link State Request(LSR 报文):type 类型为 3。作用是请求特定的链路状态信息
- Link State Update(LSU 报文):type 类型为 4。作用是发送详细的链路状态信息
- Link State Ack(LSA 报文):type 类型为 5。作用是对 LSU 报文的确认。
打开Wireshark查看OSPF邻居建立过程中的报文交互过程,如图所示
从上图可以看出,在OPSF邻居建立过程中,涉及到了所有OSPF报文的交互,接下来分析整体的OSPF邻居关系的建立过程及报文内容。
a.先打开AR1与AR2发出的OSPF hello报文,报文如下:
在AR1的初始hello包中,可以得到以下信息:
- 发送源地址为 AR1 的接口地址 10.1.12.1,目的IP 为组播 IP 地址 224.0.0.5
- OSPF 协议版本为 V2,信息类型为1 hello packet。
- 源 OSPF 的 router id 为 1.1.1.1。属于区域 0。
- 掩码信息为 255.255.255.0,hello 间隔为 10S。
- Options Ebit置位,表示本区域可以支持外部路由的泛洪。
- DR BDR 尚未选举。
b.打开AR2发给AR1的hello报文:
- 与AR1发出的初始报文类似,目的就是探测邻居路由器。当两台设备互相收到邻居的hello包后,就可以进行协商参数了。协商通过后开始发送DD报文。
c.打开AR1发给AR2的DD报文:
从 AR1 发出的 DD 报文得到以下信息
- DD 报文在 MA 网络中通过单播发送。
- 初始的 DD 报文中三个 bit 全部置1。(I:表示是初始化的 firstDD报文,M:表示 AR1后面还有更多的 DD报文,MS:表示要竞选 Master。)
- DD序列号:729
d.打开AR2发送给AR1的DD报文:
从 AR2 的初始化 DD 报文中可以得到以下信息:
- 依旧使用单播发送。
- DD 报文中的3个bit 位全部置1,表示此 DD为 first DD,同时后面有更多的 DD 报文,同时 AR2 也要竞选 Master角色。
- DD 序列号:729
通过上面两个初始化的 DD 报文,可以看出,此 DD 报文只有一个头部信息,没有具体的数据库摘要信息,作用就是为了选举 Master和 Slave。选举 Master和 Slave 的目的是为了控制序列号的顺序,以此保证后期 DD 报文的可靠性。
Master和 Slave 的选举采用 routerid,routerid 大的获胜。所以在本实验中 AR2 会作为Master,AR1 会作为 Slave。当角色选定后,由slave 先发送真正的 DD 报文,同时使用Master 初始 DD 报文的序列号作为初始序列号。
e.如下图所示:
- 此时AR1为Slave设备,同时DD报文序列号使用了Master的初始序列号,并且携带了LSA的摘要信息。
f.继续查看下一个AR2发出的DD报文,内容如下图所示:
- AR2发送的DD报文,角色为Master,序列号加1为730。并且携带了摘要信息。
当DD报文交互完毕后,设备相互了解到了各自设备所具有的LSA,此时设备会互相发送LSR报文进行LSA请求。
g.AR2向AR1发送1类LSA请求报文如下:
h.当AR1收到AR2的LSA请求后,立即发送LSU报文,LSU报文内容如下:
i.当AR2收到LSU后,AR2回复LSACK进行确认,LSACK报文内容如下所示:
- 同理,AR1也会向着AR2发送LSR请求,AR2回复LSU,以此同步数据库。
2.观察OSPF状态机变迁
(1)实验目的
配置基本的OSPF,观察其建立邻居关系时的状态变化。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】配置基本的IP地址及基本的OSPF配置。(本步骤省略)
【2】在AR1上开启以下命令来查看OSFP的状态变迁:
【3】在AR2上查看OSPF 信息,如下:
- 从邻居那收到了hello包,邻居状态由down进入init
- 再次收到邻居发来的hello包,同时在hello包中包含自己的router-id,此时状态由init进入到2way
- 发送DD报文进入Exstart状态
- 交互DD报文并发送LSR请求LSU,并进入Exchange状态
- 交互完毕进入Loading状态
- 最后邻居状态为Full
3.观察OSPF各类LSA
(1)实验目的
通过基础实验,观察各类LSA的内容,并理解每种LSA的作用。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】根据以下需求独立完成基础配置
- 在 AR5与 AR1 之间配置 RIPv2,关闭自动汇总,将AR5 的所有接口及 AR1 的 G0/0/1口宣告进入 RIP。
- 将AR1的 G0/0/0口、loopback0口、AR2的 G0/0/0 口宣告进入 OSPF 的区域1。
- 将AR2的G0/0/1口、loopback0口、AR3的G0/0/1 口、AR3 的 loopback0口宣告进入区域0。
- 将 AR3 的 G0/0/0 口及 AR4 的所有接口宣告进入 OSPF 区域 2。
【2】完成基础配置后,在AR1上通过以下命令检查路由学习情况。
- 在AR1上查看从RIP学习到的路由
- 在AR1上查看从OSPF学习到的路由
【3】在AR1上执行RIP与OSPF的双向引入
【4】在AR2上查看引入的外部路由是否存在
【5】接下来观察各类LSA。首先在AR1上观察1类LSA(Router LSA)。
- 通过命令可以看到在区域1中只有两个1类LSA,分别由AR1和 AR2产生。作业就是为了描述本区域的拓扑数据库及传递路由信息,只能在所属区域内泛红。在该区域1中,AR1的 loopback0 口在 LSA 中携带了其掩码信息,但是两台路由器互联网段没有包含掩码信息。此时需要在此处查看2类LSA。
【6】对于2类LSA是由 DR产生的,通过以下命令查看实际内容。
- 通过以上信息得知,2类LSA只能在所属区域泛洪,通告者为 DR,传递的内容为 transit网络掩码及拓扑信息。
- 实际1类和 2类结合起来就是用来传递区域内的网络拓扑及域内路由信息。
【7】接下来查看 3类 LSA,在 AR4 上输入以下命令查看 3类 LSA;
- 在 AR4 上看到大量的3类LSA,3类 LSA 全部属于区域 2,表示这些 3类 LSA 传递范围为区域 2。通过 3类LSA的内容可以得知,3类 LSA 就是传递的其他区域的路由信息(域间路由),由本区域的 ABR AR3 进行了通告。
- 在 OSPF 区域中引入了外部路由,就会产生5类LSA,同时也会伴随 4类LSA 的产生在本实验中区域1中的 AR1上引入了外部路由,此时AR1为 ASBR路由器。
【8】所以在 AR1上输入以下命令可以查看自身是否产生了5类LSA。
- 从5类LSA 中可以看到,5类 LSA主要用来传递外部路由,并且它不像1类、2 类、3 类有区域所属,它不属于任何一个区域,所有5类 LSA 的泛洪范围为整个 OSPF 区域,并且在整个 OSPF 区域中进行泛洪时所有信息保持不变,那么此时其他区域就无法知道通告者是谁,无法知道通告者也就无法进行路由计算。(本区域有本区域的完整的数据库,很清楚的知道通告者 1.1.1.1 是谁,但是其他区域,比如区域0、区域2不知道谁是1.1.1.1,此时就需要使用 4类 LSA。)
【9】所以在本实验拓扑中在区域0或者区域2中可以观察看到4类LSA,区域1中是没有四类LSA。
- 此 4类 LSA 表达的意思为可以通过 AR2 设备,到达目标设备 ASBR 1.1.1.1,且开销为此时其他区域有了4类LSA的指引,就知道了5类LSA的方向,就可以计算外部路由。接下来将区域1 配置为 NSSA 区域。(本基本配置省略)
【10】配置完毕后在AR2上查看7类LSA如下:
- 其实 7 类 LSA 和 5 类 LSA 基本保持一致,只不过7类 LSA 只能在 ASBR 所在区域泛洪当需要泛洪到其他区域的时候,由ASBR所在区域的ABR进行7转5的操作。
【11】所以在本实验环境中,在 AR2、AR3、AR4 上看到的会是5类LSA。
- 在AR3上是看不到nssa的LSA的。
4.配置OSPF汇总
(1)实验目的
理解并掌握OSPF汇总的配置
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
在实验三的基础之上完成OSPF汇总实验。
对于OSPF的汇总,有两种汇总:
- 在ABR上对域间路由进行汇总。
- 在ASBR上对外部路由进行汇总。
【1】在AR4上查看AR2的环回口路由,显示如下:
【2】现在需要对AR4收到的这条AR2的路由进行汇总,此时需要再本区域中的ABR设备AR3上进行汇总,命令如下:
- 继续在AR4上查看AR2的Lookback路由:
【3】在AR4上查看AR5的lookback0的路由:
【4】在AR1上进行外部路由的汇总,在AR1上配置以下命令:
【5】在AR4上继续查看AR5的lookaback0的路由:
5.配置OSPF认证并查看认证报文
(1)实验目的
能够熟练的配置OSPF认证,并掌握OSPF认证报文的封装格式。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
OSPF认证有以下三种类型:
- 接口认证,直接配置在接口,通过本接口发出的 OSPF 报文都会携带认证信息。
- 区域认证,配置在某个区域,在本设备上属于本区域的接口发出的 OSPF 报文都会携带认证信息。
- 虚链路认证,在虚链路上配置的认证。本质属于接口认证,在虚链路上配置了认证,在虚链路上发出的 OSPF 报文都会携带认证信息。
【1】首先在 AR1与 AR2 互联链路上配置接口认证,配置命令如下:
【2】在AR1的G0/0/0开启抓包,OSPF认证信息如下:
所以 OSPF 的认证信息是封装在 OSPF 报头中,而不是说封装在 OSPF的 hello 包、LSR、LSU 等报文。
- Auth Type:认证类型,此处为 MD5。
- Auth Crypt Key ID:配置的ID 号
- Auth Crypt Data Length:数据长度为 16
- Auth Crypt Data:经过 HMAC-MD5 哈希得到的字符串
【3】接下来在Area0中配置区域认证,要求区域0所有设备都必须配置,配置命令如下:
6.OSPF IP FRR实验
(1)实验目的
配置并观察OSPF IP FRR
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
- 完成拓扑的底层配置,配置接口的IP地址,每台路由器都运行 OSPF,全部宣告到区域1中。R3 新建环回口 10.1.3.3 也宣告到区域1中,修改链路上的 OSPF 开销值为上图中的数值。
- 这时候我们如果将 R2上的0口 Down 掉,因为是直连的缘故,所以 R1很快能将路线从下一跳 R2 切换到下一跳 R4。我们这中间是重新经历了一次 SPF 计算,在这个拓扑中我们网络规模不大,所以 OSPF 很快就可以完成收敛,没有发生丢包现象,但如果网络规模变大,OSPF链路状态数据库中存在上万条或者数万条链路状态信息,可能就会导致收敛非常缓慢。
- 所以,在生产中我们可能会运用到一项技术就是 OSPF IP FRR,这项技术的原理是在主链路正常的时候就将备用链路提前计算好,方便如果主链路产生故障的时候在 50 毫秒内切换到备用链路上,保证通信的正常进行,但是配置 FRR后,被选成备用链路是有条件的,必须要满足链路保护公式:就是图中 R4到R3的开销 < R4到R1+R1到R3的。这样可以保证没有环路产生。
- 打开R2的0口,然后在R1上查看R3的路由,可以看到是没有备份路由的。
- 这时候我们去使能FRR,然后开启LFA计算
- 然后我们再看去往R3的路由
可以看到是有备份链路的,如果主链路发生故障,切换到备份链路会在50ms内完成。