Bootstrap

第三章 OSPF高级

第3章 OSPF高级

一、不规则区域

区域划分

OSPF为了适应中大型网络环境,设计了区域划分的规则:

  1. 区域之间必须存在ABR设备(域间路由器)

  1. 区域划分必须满足星型结构划分

而不规则区域便没有满足星型结构的划分。

非骨干区域

OSPF的不规则区域:不连续骨干,远离骨干的 非骨干区域

解决方法
  1. 物理连接一根线缆让远离骨干的非骨干区域直接连接到骨干区域中。

  1. 通过构建VPN隧道的方式去连接一根虚拟线缆,将区域连接在一起。

配置

首先按照拓扑图进行基础的IP配置。

 # 配置环回接口模拟用户私网,域间路由器ABR不需要配置
 [R1-LoopBack0]ip address 192.168.1.1 255.255.255.0
 [R3-LoopBack0]ip address 192.168.3.1 255.255.255.0
 [R5-LoopBack0]ip address 192.168.5.1 255.255.255.0
 # 启动OSPF进程并进行范围宣告
 [R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
 [R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
 [R2-ospf-1-area-0.0.0.1]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.1]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.1]network 34.0.0.0 0.0.0.255 
 [R3-ospf-1-area-0.0.0.1]network 192.168.3.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.1]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.2]network 45.0.0.0 0.0.0.255
 [R5-ospf-1-area-0.0.0.2]network 45.0.0.0 0.0.0.255
 [R5-ospf-1-area-0.0.0.2]network 192.168.5.0 0.0.0.255
 # 检查OSPF路由表和邻居简表
 [R1]display ip routing-table protocol ospf
 [R1]display ospf peer brief

此时我们发现R5一条OSPF信息都没有接收到,因为区域2是非骨干区域,我们在R2和R4之间构建一根VPN虚拟隧道,将区域0和区域2连通。这里我们为了简便,选择GRE协议进行封装。

 # 建立隧道,注意源和目标IP为23和34网段IP
 [R2-Tunnel0/0/0]ip address 24.0.0.1 24
 [R2-Tunnel0/0/0]tunnel-protocol gre 
 [R2-Tunnel0/0/0]source 23.0.0.1
 [R2-Tunnel0/0/0]destination 34.0.0.2
 # R4 同理配置
 [R4-Tunnel0/0/0]ip address 24.0.0.2 24
 [R4-Tunnel0/0/0]tunnel-protocol gre 
 [R4-Tunnel0/0/0]source 34.0.0.2
 [R4-Tunnel0/0/0]destination 23.0.0.1
 # 范围宣告,注意宣告在区域0
 [R2-ospf-1-area-0.0.0.0]network 24.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.0]network 24.0.0.0 0.0.0.255
 # 查询OSPF路由表检查
 [R2]display ip routing-table protocol ospf
 [R4]display ip routing-table protocol ospf

通过让没有连接骨干区域的路由器,和区域0中的路由器连接隧道,并且将隧道宣告在区域0中,使得ABR设备合法化。那么在这里,R2和R4就是合法的ABR域间路由器。

但是这样做的话又会有新的问题:

  • 问题1:会额外建立邻居关系,导致产生周期性的数据(hello报文),需要通过隧道封装占用额外的资源。

  • 问题2:选路不佳,开销值太大(选择走构建的虚拟链路而非物理链路)。

    • 原因:域内路由>域间路由。隧道接口的开销值为1562,再加上R2到R1之间的开销值1就等于1563。

OSPF为了解决不规则区域的问题,专门提出了一个解决方案:V-link虚链路

  • 合法的ABR:同时属于多个区域,并且有接口宣告在区域0。

  • 非法的ABR:同时属于多个区域,没有接口宣告在区域0。

而在上一个拓扑图中,很明显R2是合法的ABR,而R4是非法ABR。V-link永远属于区域 0,在合法和非法ABR之间进行配置。

命令
  • 建立V-LINK链路,在建立V-LINK链路的设备所在的区域中配置。

  • 注意:V-link peer 指定的是对端合法的ABR,同时合法的ABR设备也需要指定自身去认可的非法ABR设备。

    • vlink-peer [邻居设备RID]

  • 查看虚链路V-link的信息

    • display ospf vlink

  • 重定向,引入B协议的路由,使A协议获取到B协议的路由信息。也可以在同一协议的不同进程中进行,注意要进入A协议的进程中。

    • import-route [协议名] [进程号]

配置

这里我们对R2和R4分别进行配置,注意在区域1中配置。

 # 建立V-link链路,指定邻居ABR的RID,让双方之间互相认可
 [R2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4
 [R4-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
 ​
 # 此时在R5中查看OSPF路由表,发现R5成功获取区域0和区域1的路由信息;而其他区域的设备也同样能够获取到区域2的信息
 [R5]display ip routing-table protocol ospf
 [R1]display ip routing-table protocol ospf
 ​
 # 查看虚链路V-link信息
 [R2]display ospf vlink
局限性
  • 虚链路只能跨越一个区域,本质原因就是V-link指定的对象是一个设备RID(不是IP地址)。

  • 周期性的数据还是存在,因为V-Link也会建立邻居

所以一般情况下,V-Link只作为临时的解决方案。

多进程双向重分布

即启动一个新的协议进程,强制将两个设备的信息进行共享。

ASBR:同时运行了两款协议或者同一款协议但是不同进程的设备。

配置

此时我们删除区域2和R4、R5的相关配置,在R4上启动一个新的OSPF进程,相当于R4成为了ASBR

 ### 启动新的协议进程
 [R4]ospf 2 router-id 4.4.4.4
 # 进入新的进程区域并范围宣告网段
 [R4-ospf-2]area 0
 [R4-ospf-2-area-0.0.0.0]network 45.0.0.0 0.0.0.255
 # R5 同理配置
 [R5]ospf 2 router-id 5.5.5.5
 [R5-ospf-2]area 0
 [R5-ospf-2-area-0.0.0.0]network 45.0.0.0 0.0.0.255
 # 宣告环回网段
 [R5-ospf-2-area-0.0.0.0]network 192.168.5.0 0.0.0.255
 # 但是此时查看OSPF路由表发现R4只能获取R5的环回路由信息,而R5没有信息,因为R4左右两边是不同的协议进程,无法互通
 [R5]display ip routing-table protocol ospf
双向重分布

这里我们在R4(ASBR)的进程1中引入进程2的路由信息,注意要进行双向引入,在不同进程中引入对方的协议路由信息。

 ### 双向重定向
 [R4-ospf-1]import-route ospf 2
 [R4-ospf-2]import-route ospf 1
 ​
 # 此时我们查表R1,成功获取到R5进程2的路由信息
 [R1]display ip routing-table protocol ospf

查看R1的OSPF表可以发现,链路路径的开销值都很小(Cost = 1),只不过是从其他协议学习/引入的路由信息,域外路由信息优先级较高(可靠性较低)。

  • O_ASE:域外路由信息,即从其他协议/进程学习(引入)过来的路由。

  • Pre:优先级,在路径选择中选择优先级值小的路径通过。

    • 域外路由优先级默认是150

    • 因为域外其他协议的情况不清楚,路由可靠性较低

二、LSA通告

LSA的三元组唯一标识一条LSA通告,通过SPF(最短路径优先)算法计算得出路由,并将信息存储在LSDB中。

  • LSA:链路状态通告(拓扑信息)

  • LSDB:链路状态数据库

LSA三元组

  • Type:LSA类型

  • Ls id:链路状态ID

  • Adv rtr:通告路由器

LSA头部

所有LSA都有的公共部分称为LSA的头部

  • Type:类型字段(标注1条LSA的类型)

  • LS ID:链路状态ID(标识符)

    • 相当于1条LSA的名字。

  • Adv-router:通告路由器

    • 产生并通告这条LSA的设备的RID,表明该LSA是谁发的,必须靠LSA的三元组才能唯一的标识一条LSA。

  • LS AGE:链路状态老化时间(1条LSA的老化时间)

    • 默认1条LSA的最大老化时间是1800s,等于OSPF周期更新的时间,当1条LSA老化时间达到1800s则会将该LSA从自身数据库中删除刷新。

    • MAX-AGE:最大老化时间

      • 当OSPF周期跟新机制出现问题可能导致不能即时刷新LSA,则等待最大老化时间直接删除。

  • LEN:LSA的长度

    • 表示整个LSA的大小

  • Options:可选项字段,E为特殊区域的标记

  • SEQ:LSA的序列号

    • 主要用来做LSA的新旧判断

    • 序列号空间:

      • 直线型序列空间:新旧关系明显,但是空间容量有上限。

      • 循环型序列空间:序列号不停在空间循环,可以重复使用,但无法判断新旧关系

      • 棒棒糖型序列空间:分为棒棒糖的糖和棍,相当于将以上两种类型结合起来。延长了直线型空间的容量,但是在糖的部分仍然由循环性的问题。

    • OSPF序列号范围:0X80000001 ~ 0X7FFFFFF

      • 设备每发送一条LSA信息,序列号就会加1

      • 0X代表16进制,当序列号到达0X7FFFFFFE时,设备就知道后面没有序列号可用,会直接将LSA的老化时间设置为3600S,相当于清空整个OSPF网络设备中存储的LSA,之后会立刻重新发送一条内容完全一致的LSA,将序列号刷新为 0X80000001。

LSA类型

LSA的类型LSIDADV router通告路由器携带参数传递范围
Router :type-1 LSA通告路由器的RID谁发的该LSA,ADV-router=该设备RID拓扑信息在区域内部传递
Network:type-2 LSADR的IP地址DR所在路由器的RID1类LSA的补充在区域内部传递
Sum-Net:type-3 LSA其他区域目标网段本区域相连的ABR的RID其他区域目标网段信息单区域传递
Sum-Asbr:type-4 LSAASBR设备RID本区域相连的ABR的RIDASBR设备如何到(ADV-router)除了和ASBR设备之间相连的区域
External:type-5 LSA域外网段信息ASBR设备的RID域外网段信息在整个OSPF网络传递
NSSA: type-7 LSA

共有6类LSA:1、2、3、4、5、7。

  • Router 1 类LSA:传递拓扑信息使用的LSA

    • 每一台运行了OSPF协议的设备都会发送1类LSA

  • Network 2 类LSA:在以太网中存在的LSA,同样传递LSA

    • 是1类LSA的补充,补充了以太网中掩码和运行OSPF协议设备的RID。

    • 在以太网中仅靠1类LSA实际上并不能完整的获取到整个网络所有的拓扑信息

    • 拓扑信息的主要参数:以太网配置的掩码 / 以太网中具体存在多少运行了OSPF协议的设备

  • Sum-Net 3 类LSA:链路状态ID(LSID)实际上就是区域之间传递的目标路由信息的网段

    • 在区域之间只有ABR设备同时属于多个区域,路由信息才能通过ABR设备在区域之间传递。

    • 跨区域转发时,可能会经过多个区域的多个ABR设备转发,每经过一个ABR设备的转发都需要更改通告路由器的RID

  • Sum-Asbr 4 类LSA:辅助其他区域的路由器找到ASBR设备的位置

    • 除了和ASBR设备相邻的区域之外,每经过一个区域的转发都会由本区域的ABR设备发送一条4类LSA,辅助其他区域的路由器找到ASBR设备的位置

  • External 5 类LSA:携带域外网段的路由信息

    • 因为不同协议开销值计算方法不一样,所以绝对不能直接使用源协议自带的Cost值,所以OSPF针对域外路由信息定义了种子度量值SeedCost。

    • 针对域外路由OSPF的Metric值设计了类型。

      • TYPE-1:种子度量值 + 设备到达ASBR的开销。

      • TYPE-2:所有设备到达目标网段开销均等于种子度量值,默认为类型2.

      • Forwarding Address:转发地址,在应对选路不佳情况下会重定向一个更加合理的IP地址。

  • NSSA 7 类LSA 

LINK类型

根据OSPF接口网络类型关联

  • Point-to-Point:点到点网络

  • TransNet:传输网络

  • StubNet:末梢网络

  • Virtual:虚拟网络

开销值

Metric:实际上是ABR设备到达该网段的开销值。华为为了避免侵权重新起的名字。

Metric = 参考带宽(100) / 真实带宽,四舍五入原则。

OSPF协议最终加载路由表中的 COST = METIRC + 本设备到达ABR的开销

区域间访问过程

OSPF区域之间的访问过程:路由器想要访问其他区域的网段,首先必须利用1、2类LSA找到ABR设备所在的位置,之后通过自身的SPF算法计算得出去往ABR设备的最短路径,然后下一跳就根据最短路径自动获取,等到数据包来到ABR设备,ABR设备可以依靠自身获取到的该目标区域1、2类LSA,利用SPF算法得出去往该网段的最短路径

命令
  • 查看OSPF链路状态数据库指定RID查看特定的路由器的数据库信息。

    • display ospf lsdb

  • 查看1类LSA信息

    • display ospf lsdb router [RID]

  • 查看2类LSA信息,Link ID在LSDB表中查看

    • display ospf lsdb network [Link ID/DR的IP]

  • 查看3类LSA信息

    • display ospf lsdb summary [其他区域目标网段]

  • 查看4类LSA信息

    • display ospf lsdb asbr [ASBR的RID]

  • 查看5类LSA信息

    • display ospf lsdb ase [域外网段]

    • 域外路由信息的种子度量值默认为1,可以在重发布时人为更改。

      • import-route rip cost [种子度量值]

    • 更改开销计算的类型(1或2),默认类型2。

      • import-route rip type [1/2]

    • 在重发布时对重发布的路由信息打上一个标记Tag,可以给相同Tag值的信息打包便于统一做策略。

      • import-route rip tag [标记值]

配置
1类LSA

首先进行基础的串口和环回IP配置以及OSPF协议配置。

 ### 基础配置
 [R1-Serial4/0/0]ip address 12.0.0.1 24
 [R1-LoopBack0]ip address 192.168.1.1 24
 [R2-Serial4/0/0]ip address 12.0.0.2 24
 [R2-LoopBack0]ip address 192.168.2.1 24
 ### OSPF配置
 [R1]ospf 1 router-id 1.1.1.1
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
 [R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
 [R2]ospf 1 router-id 2.2.2.2
 [R2-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
 [R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
 # 查看R1链路状态数据库信息
 [R1]display ospf lsdb
 ​
 ### 查看R1的1类LSA信息
 [R1]display ospf lsdb router 1.1.1.1

2类LSA

添加R3,并进行基础配置。

 # 基础配置以及OSPF配置
 [R2-GigabitEthernet0/0/0]ip address 23.0.0.1 24
 [R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
 [R3-LoopBack0]ip address 192.168.3.1 24
 [R3-GigabitEthernet0/0/0]ip address 23.0.0.2 24
 [R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
 # 此时在R1查看LSDB,发现新增了Network 2类LSA
 [R1]display ospf lsdb
 # 查看R2的1类LSA,发现也多了一段
 [R2]display ospf lsdb router 2.2.2.2
 ​
 ### 查看2类LSA,根据LinkID查找
 [R1]display ospf lsdb network 23.0.0.1
3类LSA

继续添加R4,进行基础配置。

 # 基础配置
 [R3-GigabitEthernet0/0/1]ip address 34.0.0.1 24
 [R4-LoopBack0]ip address 192.168.4.1 24
 [R4-GigabitEthernet0/0/0]ip address 34.0.0.2 24
 # 范围宣告,注意在区域1
 [R3-ospf-1-area-0.0.0.1]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.1]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.1]network 192.168.4.0 0.0.0.255
 # 此时在R4查看LSDB,发现新增了Sum-Net 3类LSA
 [R4]display ospf lsdb
 ​
 ### 查看3类LSA,这里选择查看12网段的信息
 [R4]display ospf lsdb summary 12.0.0.0

再次增加一个R5,进行基础配置。这里对开销值Metric进行探查。

 # 基础配置
 [R4-GigabitEthernet0/0/1]ip address 45.0.0.1 24
 [R4-ospf-1-area-0.0.0.1]network 45.0.0.0 0.0.0.255
 [R5-GigabitEthernet0/0/0]ip address 45.0.0.2 24
 [R5-ospf-1-area-0.0.0.1]network 45.0.0.0 0.0.0.255
 # 查看LSDB表发现Metric一直为1,实际上是ABR设备到网段的开销值
 [R5]display ospf lsdb

在R1左边新建一个R6,进行基础配置,注意OSPF进入区域2。

 # 基础配置
 [R1-GigabitEthernet0/0/0]ip address 16.0.0.1 24
 [R1-ospf-1-area-0.0.0.2]network 16.0.0.0 0.0.0.255
 [R6-GigabitEthernet0/0/0]ip address 16.0.0.2 24
 [R6]ospf 1 router-id 6.6.6.6
 [R6-ospf-1]area 2
 [R6-ospf-1-area-0.0.0.2]network 16.0.0.0 0.0.0.255
 ​
 # 再次查看LSDB表,发现3类LSA的通告路由器都变成了R1
 [R6]display ospf lsdb

3类LSA在跨区域转发时,可能会经过多个区域的多个ABR设备转发,每经过一个ABR设备的转发都需要更改通告路由器的RID

4类LSA
 # 根据ASBR设备的RID找到其他ASBR设备的位置
 [R1]display ospf lsdb asbr 5.5.5.5
5类LSA

在R5上新建一个172.16.1.0/24的RIP环回网段,那么此时R5相当于就是ASBR,同时具有OSPF和RIP协议。

 # 基础配置
 [R5-LoopBack0]ip address 172.16.1.1 24
 # RIP配置
 [R5-rip-1]version 2
 # 主类宣告网段
 [R5-rip-1]network 172.16.0.0
 ​
 ### 此时R4如果想要获取RIP的信息,就需要作重定向,注意要在ASBR中引入,即R5中
 [R5-ospf-1]import-route rip 
 # 在R4中检查是否有学到RIP的路由,发现了O_ASE域外路由信息,成功引入
 [R4]display ip routing-table protocol ospf
 # 查看LSDB表,发现多出了External 5类LSA
 [R5]display ospf lsdb
 ​
 ### 发现无论多远的设备上到R5的开销值都为1,我们这里改变R5的开销计算类型
 [R5-ospf-1]import-route rip type 1
 # 修改完类型后在其他设备查看路由表发现开销值改变
 [R1]display ip routing-table protocol ospf
 ​
 ### 查看5类LSA,选择域外网段
 [R4]display ospf lsdb ase 172.16.0.0

三、OSPF优化

区域汇总

特殊区域

分为两大类4小类:Stub区域和NSSA区域。

  • Stub末梢区域 和 Totolly-stub完全末梢区域

    • 配置条件:

      • 不能是骨干区域(区域0)

      • 不能存在虚链路V-link

      • 不能存在ASBR设备(双协议)

注意:一旦将区域配置为Stub区域,该区域设备将拒绝学习4类和5类LSA,同时由本区域的ABR设备生成一条3类缺省路由

  • NSSA非完全末梢区域和Totolly-NSSA完全的非完全末梢区域

    • 配置条件:

      • 不能是骨干区域(区域0)

      • 不能存在虚链路V-link

      • 必须存在ASBR设备

注意:一旦将区域配置为NSSA区域,该区域将拒绝学习4类和5类LSA信息,同时由本区域的ABR设备生成一条7类缺省路由

因为NSSA区域拒绝了4类和5类LSA,导致域外路由信息无法直接引入(域外是5类LSA),所以必须由ABR设备进行5转7操作,之后因为普通区域(骨干区域0)不能配置特殊区域,导致这些区域不能识别7类LSA,所以本区域的ABR设备进行7转5操作

命令
区域汇总
  • 域间路由手工汇总

    • 配置位置是在该区域对应ABR设备的对应区域中配置,注意真实掩码要自己计算,必须为展开形式,不能为十进制。

    • 只有自己通告1-2类LSA计算出来的3类LSA才能被汇总。

      • abr-summary [汇总网段] [真实掩码]

  • 域外路由手工汇总

    • 配置位置是在ASBR设备的协议进程中配置。

    • 汇总实质是对3类和5类LSA进行汇总。

      • asbr-summary [汇总网段] [真实掩码]

首先都要进入对应的区域

  • Stub末梢区域

    • 配置进入对应的区域执行命令。

    • [R1-ospf-1-area-0.0.0.0]stub

  • Totolly-stub完全末梢区域

    • 配置位置只需要在ABR设备上配置。

    • [R1-ospf-1-area-0.0.0.2]stub no-summary

  • NSSA非完全末梢区域

    • 配置进入对应的区域执行命令。

    • [R3-ospf-1-area-0.0.0.1]nssa

  • Totolly-NSSA完全的非完全末梢区域

    • 配置位置只需要在ABR设备上配置。

    • [R3-ospf-1-area-0.0.0.1]nssa no-summary

注意

  • 因为特殊区域的标记会影响建邻居,所以必须该特殊区域的设备都需要配置,否则无法建邻(标记不同)。

  • 一旦将区域配置为stub区域,该区域将拒绝学习4类和5类LSA。

  • 一旦将区域配置为nssa区域,该区域将拒绝学习4类和5类LSA,同时由本区域的ABR设备生成一条7类缺省路由

  • 只有Totoly区域才会拒绝3类LSA,只需要在ABR设备上进行配置,同区域的其他设备只用配置普通的特殊区域即可。

  • ABR设备拒绝3类LSA之后也会生成一条3类LSA,之后该区域的设备会学习3类缺省,因为选路规则域内>域间>域外

配置
手工汇总

我们在R6上新建两个环回接口,将IP设置为1.1.1.1/24和1.1.2.1/24。

 # 环回接口
 [R6-LoopBack0]ip address 1.1.1.1 24
 [R6-LoopBack1]ip address 1.1.2.1 24
 # 范围宣告
 [R6-ospf-1-area-0.0.0.2]network 1.1.1.0 0.0.0.255
 [R6-ospf-1-area-0.0.0.2]network 1.1.2.0 0.0.0.255
 ​
 ### 在ABR设备R1上对区域2的两个网段进行域内路由汇总,真实掩码需要计算
 [R1-ospf-1-area-0.0.0.2]abr-summary 1.1.0.0 255.255.252.0
 # 在R2查看路由表,发现网段成功汇总
 [R2]display ip routing-table protocol ospf

这里汇总的1.0和2.0两个网段,前22位二进制数相同,所以相同位数即为合并之后的网络位:22

1.1.1.0/24 展开:1.1.000000 01.00000000

1.1.2.0/24 展开:1.1.000000 10.00000000

合并:1.1.0.0/22 展开:1.1.0.0 / 255.255.252.0

注意:只有自己通告1-2类LSA计算出来的3类LSA才能被汇总,所以这里只能在R1上对区域2的网段进行汇总,不能在R3上。

 # 在R5上新建环回网段并宣告,rip是主类宣告,只用宣告大的网段即可
 [R5-LoopBack1]ip address 172.16.2.1 24
 [R5-rip-1]network 172.16.0.0
 # 在R4上查看,确认有两个环回网段的路由
 <R4>display ip routing-table protocol ospf
 ​
 ### 域外路由汇总
 [R5-ospf-1]asbr-summary 172.16.0.0 255.255.252.0
 # 在区域0的设备中查看路由表,发现汇总成功
 <R2>display ip routing-table protocol ospf
Stub区域
 ### 配置Stub区域,注意要进入对应的区域
 [R6-ospf-1-area-0.0.0.2]stub
 # 此时查看R6邻居表发现没有任何信息,因为R6是特殊区域,标记和R1不同,必须将R1也设置为Stub区域
 [R6]display ospf peer brief
 # 配置R1特殊区域后,再次查看邻居表发现成功和R1建邻
 [R1-ospf-1-area-0.0.0.2]stub
 # 查看LSDB表发现4类和5类LSA都没有了,即拒绝了域外路由信息,但是同区域的ABR设备R1同时生成了一条3类的缺省路由来访问域外路由
 [R6]display ospf lsdb

Totolly-Stub区域

普通的Stub只拒绝了域外的路由信息,完全的Stub区域会将域内的其他区域路由信息也给拒绝,即将3类LSA也给拒绝,且只需要在ABR上配置完全区域

 ### 在ABR上配置完全Stub区域
 [R1-ospf-1-area-0.0.0.2]stub no-summary
 # 查看LSDB表发现3类LSA信息都被R1给拒绝了,只剩下指向ABR设备R1的3类的缺省路由
 [R6]display ospf lsdb
NSSA区域

因为NSSA区域必需存在ASBR设备,所以我们选择在ASBR设备R5所在的区域进行配置,注意ASBR所在区域的设备都要配置特殊区域。

 ### 区域1设备全部配置NSSA区域
 [R3-ospf-1-area-0.0.0.1]nssa
 [R4-ospf-1-area-0.0.0.1]nssa
 [R5-ospf-1-area-0.0.0.1]nssa
 # 查看LSDB表,发现多出了NSSA 7类LSA,并且拒绝了4类和5类LSA信息,同时由本区域的ABR设备R3生成一条7类缺省路由来访问域外路由
 [R4]display ospf lsdb

这个过程相当于是R5作为ASBR设备将RIP协议的信息给引入区域1,并将5类LSA转为7类LSA进行5转7操作,但是因为普通区域不能配置特殊区域,无法识别7类LSA,所以在将7类LSA通过R3传入骨干区域0的时候,R3又进行了一次7转5操作,此时R3相当于一个特殊的ASBR设备

Totolly-NSSA区域

 ### 在ABR上配置完全NSSA区域
 [R3-ospf-1-area-0.0.0.1]nssa no-summary
 # 此时在区域1设备上查看LSDB表发现3类LSA信息都被拒绝,只剩下指向ABR设备R3的3类缺省路由
 # 因为选路规则是 域内>域间>域外
 [R4]display ospf lsdb

四、实验

OSPF综合

要求:

  1. R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP

  2. R3-R5/6/7为MGRE环境,R3为中心站点;

  3. 整个OSPF环境IP基于172.16.0.0/16划分;

  4. 所有设备均可访问R4的环回(配置NAT);

  5. 减少LSA的更新量(汇总+特殊区域),加快收敛(修改hello时间),保障更新安全(认证);

  6. 全网可达

子网划分

图中一共有6个区域,相当于最终需要汇总为6个网段,那么我们就将 172.16.0.0/16 借3位 分成 23=8个网段

借3位分成6个网段

172.16.000 00000.0 / 19 172.16.001 00000.0 / 19

172.16.010 00000.0 / 19 172.16.011 00000.0 / 19

172.16.100 00000.0 / 19 172.16.101 00000.0 / 19

172.16.110 00000.0 / 19 172.16.111 00000.0 / 19

即:

区域0:172.16.0.0 / 19 区域1:172.16.32.0 / 19

区域2:172.16.64.0 / 19 区域3:172.16.96.0 / 19

区域4:172.16.128.0 / 19 RIP:172.16.160.0 / 19

剩余2个网段:172.16.192.0/19 172.16.224.0/19

区域分配

我们这里选择将每个区域的网段掩码规定为24,即再借5位,刚好网络位一共24位 172.16.00000000.0 / 24,区域需要几个就划分几个IP。

  • 区域0:172.16.0.0/19

    • P2P骨干链路 172.16.0.0 / 24(借6位)

      • 172.16.0.0/30 172.16.0.4/30 172.16.0.8/30

    • MA骨干链路 172.16.1.0 / 24(借5位)

      • 172.16.1.0/29 172.16.1.8/29 172.16.1.16/29

    • 用户 172.16.2.0/24 172.16.3.0/24 172.16.4.0/24

  • 区域1:172.16.32.0/19

    • P2P骨干链路 172.16.32.0 / 24

      • 172.16.32.0/30 172.16.32.4/30 172.16.32.8/30

    • MA骨干链路 172.16.33.0 / 24

      • 172.16.33.0/29 172.16.33.8/29 172.16.33.16/29

    • 用户 172.16.34.0/24 172.16.35.0/24

  • 区域2:172.16.64.0 / 19

    • P2P骨干链路 172.16.64.0 / 24

      • 172.16.64.0/30 172.16.64.4/30 172.16.64.8/30

    • MA骨干链路 172.16.65.0 / 24

      • 172.16.65.0/29 172.16.65.8/29 172.16.65.16/29

    • 用户 172.16.66.0/24 172.16.67.0/24

  • 区域3:172.16.96.0 / 19

    • P2P骨干链路 172.16.96.0 / 24

      • 172.16.96.0/30 172.16.96.4/30 172.16.96.8/30

    • MA骨干链路 172.16.97.0 / 24

      • 172.16.97.0/29 172.16.97.8/29 172.16.97.16/29

    • 用户 172.16.98.0/24 172.16.99.0/24

  • 区域4:172.16.128.0 / 19

    • P2P骨干链路 172.16.128.0 / 24

      • 172.16.128.0/30 172.16.128.4/30 172.16.128.8/30

    • MA骨干链路 172.16.129.0 / 24

      • 172.16.129.0/29 172.16.129.8/29 172.16.129.16/29

    • 用户 172.16.130.0/24 172.16.131.0/24

  • RIP:172.16.160.0 / 19

    • 没有链路只给用户(环回)

      • 172.16.160.0/24 172.16.161.0/24

MGRE环境
公网连通
 # 公网IP配置
 [R3-Serial4/0/0]ip address 34.0.0.1 24
 [R5-Serial4/0/0]ip address 45.0.0.1 24
 [R6-Serial4/0/0]ip address 46.0.0.1 24
 [R7-GigabitEthernet0/0/0]ip address 47.0.0.1 24
 # ISP配置
 [ISP-Serial4/0/0]ip address 34.0.0.2 24
 [ISP-Serial4/0/1]ip address 45.0.0.2 24
 [ISP-Serial3/0/0]ip address 46.0.0.2 24
 [ISP-GigabitEthernet0/0/0]ip address 47.0.0.2 24
 # 环回配置
 [ISP-LoopBack0]ip address 100.0.0.1 24
 [R5-LoopBack0]ip address 172.16.2.1 24
 [R6-LoopBack0]ip address 172.16.3.1 24
 [R7-LoopBack0]ip address 172.16.4.1 24
 ​
 ### 在边界设备上配置私网与公网的缺省路由,保证公网连通性
 [R3]ip route-static 0.0.0.0 0 34.0.0.2
 [R5]ip route-static 0.0.0.0 0 45.0.0.2
 [R6]ip route-static 0.0.0.0 0 46.0.0.2
 [R7]ip route-static 0.0.0.0 0 47.0.0.2
中心&分支配置

这里将R3作为中心路由器。

 ###  中心配置
 [R3-Tunnel0/0/0]ip address 172.16.1.1 29
 [R3-Tunnel0/0/0]tunnel-protocol gre p2mp
 [R3-Tunnel0/0/0]source 34.0.0.1
 [R3-Tunnel0/0/0]nhrp network-id 100
 ​
 # R5、R6、R7 同理配置
 [R5-Tunnel0/0/0]ip address 172.16.1.2 29
 [R6-Tunnel0/0/0]ip address 172.16.1.3 29
 [R7-Tunnel0/0/0]ip address 172.16.1.4 29
 ...
 ​
 ### 分支注册
 [R5-Tunnel0/0/0]nhrp entry 172.16.1.1 34.0.0.1 register
 ​
 ### 中心开启伪广播
 [R3-Tunnel0/0/0]nhrp entry multicast dynamic 
 # 依次进行连通测试
 [R3]ping -a 172.16.1.1 172.16.1.2
 [R3]ping -a 172.16.1.1 172.16.1.3 ...
OSPF环境

配置基础IP和环回路由,注意主机位全1和全0的网段不能使用。

 ### 区域1
 # 有交换机,不是P2P网络,使用MA网段
 [R1-GigabitEthernet0/0/0]ip address 172.16.33.1 29
 [R2-GigabitEthernet0/0/0]ip address 172.16.33.2 29
 [R3-GigabitEthernet0/0/0]ip address 172.16.33.3 29
 [R1-LoopBack0]ip address 172.16.34.1 24
 [R2-LoopBack0]ip address 172.16.35.1 24
 [R3-LoopBack0]ip address 172.16.36.1 24
 ### 区域2
 # 使用P2P网段,注意R11左右为两个大的P2P网段
 [R6-GigabitEthernet0/0/0]ip address 172.16.64.1 30
 [R11-GigabitEthernet0/0/0]ip address 172.16.64.2 30
 [R11-GigabitEthernet0/0/1]ip address 172.16.64.5 30
 [R12-GigabitEthernet0/0/0]ip address 172.16.64.6 30
 [R11-LoopBack0]ip address 172.16.66.1 24
 ### 区域3 
 # 使用P2P网段
 [R7-GigabitEthernet0/0/1]ip address 172.16.96.1 30
 [R8-GigabitEthernet0/0/0]ip address 172.16.96.2 30
 [R8-GigabitEthernet0/0/1]ip address 172.16.96.5 30
 [R9-GigabitEthernet0/0/0]ip address 172.16.96.6 30
 [R8-LoopBack0]ip address 172.16.98.1 24
 # 区域4
 # 使用P2P网段
 [R9-GigabitEthernet0/0/1]ip address 172.16.128.1 30
 [R10-GigabitEthernet0/0/0]ip address 172.16.128.2 30
 [R9-LoopBack0]ip address 172.16.130.1 24
 [R10-LoopBack0]ip address 172.16.131.1 24
 ### RIP
 [R12-LoopBack0]ip address 172.16.160.1 24
 [R12-LoopBack1]ip address 172.16.161.1 24
区域0
 # 精准宣告
 # 可以先查看接口表,检查哪些私网IP需要宣告
 [R3]display ip interface brief
 # R3只用宣告隧道接口,串口IP是公网,环回在区域1
 [R3-ospf-1-area-0.0.0.0]network 172.16.1.1 0.0.0.0
 # R5、R6、R7宣告环回和隧道接口
 [R5-ospf-1-area-0.0.0.0]network 172.16.2.1 0.0.0.0
 [R5-ospf-1-area-0.0.0.0]network 172.16.1.2 0.0.0.0
 [R6-ospf-1-area-0.0.0.0]network 172.16.3.1 0.0.0.0
 [R6-ospf-1-area-0.0.0.0]network 172.16.1.3 0.0.0.0
 [R7-ospf-1-area-0.0.0.0]network 172.16.4.1 0.0.0.0
 [R7-ospf-1-area-0.0.0.0]network 172.16.1.4 0.0.0.0
区域1
 # 范围宣告大的网段32.0,因为R1、R2只在区域1中
 # 反掩码
 [R1-ospf-1-area-0.0.0.1]network 172.16.32.0 0.0.31.255
 [R2-ospf-1-area-0.0.0.1]network 172.16.32.0 0.0.31.255
 ​
 # 在R3中无法这样宣告,因为R3是ABR设备
 # 精准宣告,直接反掩码全0锁死IP,避免宣告到区域0
 [R3-ospf-1-area-0.0.0.1]network 172.16.33.3 0.0.0.0
 [R3-ospf-1-area-0.0.0.1]network 172.16.36.1 0.0.0.0
 # 配置完后检查邻居表是否完整,发现R3区域0邻居只有R5,因为网络类型为p2p
 [R1]display ospf peer brief ...
 # 修改网络类型,区域0的设备都要修改
 [R3-Tunnel0/0/0]ospf network-type p2mp
 ...
 # 再次查看R3邻居表,发现成功获取区域0的信息
 [R3]display ospf peer brief
区域2
 # 精准宣告
 [R6-ospf-1-area-0.0.0.2]network 172.16.64.1 0.0.0.0
 # R11只在区域2中,进行范围宣告
 [R11]ospf 1 router-id 11.1.1.1
 [R11-ospf-1-area-0.0.0.2]network 172.16.64.0 0.0.31.255
 # R12是ASBR设备,也可以这样范围宣告
 [R12]ospf 1 router-id 12.1.1.1
 [R12-ospf-1-area-0.0.0.2]network 172.16.64.0 0.0.31.255
 # 检测连通性
 [R1]ping -a 172.16.34.1 172.16.64.6
区域3
 # 精准宣告
 [R7-ospf-1-area-0.0.0.3]network 172.16.96.1 0.0.0.0
 [R9-ospf-1-area-0.0.0.3]network 172.16.96.6 0.0.0.0
 # R8只在区域3中,进行范围宣告
 [R8-ospf-1-area-0.0.0.3]network 172.16.96.0 0.0.31.255
 # 检测连通性
 [R1]ping -a 172.16.34.1 172.16.96.6
RIP
 ### 主类宣告
 [R12-rip-1]network 172.16.0.0
 ​
 ### 引入RIP协议
 [R12-ospf-1]import-route rip
 ​
 # 查看路由表,发现成功获取
 [R1]display ip routing-table protocol ospf
 # 检测连通性,域外成功连通
 [R1]ping -a 172.16.34.1 172.16.161.1
多进程双向重发布

因为区域4是远离骨干的区域,所以我们选择在ASBR设备R9的进程1中引入进程2的路由信息,注意要进行双向引入,在不同进程中引入对方的协议路由信息。

 # OSPF进程1
 [R9-ospf-1-area-0.0.0.3]network 172.16.96.6 0.0.0.0
 # 新建OSPF进程2
 [R9]ospf 2 router-id 9.9.9.9
 [R9-ospf-2-area-0.0.0.0]network 172.16.128.0 0.0.31.255
 [R10-ospf-2-area-0.0.0.0]network 172.16.128.0 0.0.31.255
 ### 重发布
 [R9-ospf-1]import-route ospf 2
 # 这里可以双向重发布,但是我们选择用其他方法,以下操作先不执行
 [R9-ospf-2]import-route ospf 1
OSPF优化
手工汇总

注意在ABR上进行汇总,真实掩码要自行计算,即 真实掩码19 = 255.255.111 00000.0 = 255.255.224.0

 ### ABR设备域间汇总
 ### 区域1
 [R3-ospf-1-area-0.0.0.1]abr-summary 172.16.32.0 255.255.224.0
 ​
 ### 区域2
 [R6-ospf-1-area-0.0.0.2]abr-summary 172.16.64.0 255.255.224.0
 ​
 ### 区域3
 [R7-ospf-1-area-0.0.0.3]abr-summary 172.16.96.0 255.255.224.0
 ​
 ### ASBR设备域外汇总
 ### 区域4
 [R9-ospf-1]asbr-summary 172.16.128.0 255.255.224.0
 ​
 ### RIP
 [R12-ospf-1]asbr-summary 172.16.160.0 255.255.224.0
 ​
 # 在区域0查看LSDB表和路由表发现成功汇总
 [R5]display ospf lsdb
 [R5]display ip routing-table protocol ospf
特殊区域

配置特殊区域,拒绝4类、5类LSA减少路由数量和更新量,同时生成指向骨干区域的缺省路由访问公网。

 ### 区域1配置Stub末梢区域
 [R1-ospf-1-area-0.0.0.1]stub
 [R2-ospf-1-area-0.0.0.1]stub
 ​
 ### ABR上配置完全末梢区域,拒绝3类LSA并生成3类缺省
 [R3-ospf-1-area-0.0.0.1]stub no-summary
 ​
 ### 区域2、3、4配置NSSA非完全末梢区域
 [R8-ospf-1-area-0.0.0.3]nssa
 [R9-ospf-1-area-0.0.0.3]nssa
 [R11-ospf-1-area-0.0.0.2]nssa
 [R12-ospf-1-area-0.0.0.2]nssa
 ​
 ### ASBR上配置完全的非完全末梢区域,生成7类缺省
 [R6-ospf-1-area-0.0.0.2]nssa no-summary
 [R7-ospf-1-area-0.0.0.3]nssa no-summary
 ​
 # 查看LSDB表发现配置成功
 [R8]display ospf lsdb
 [R11]display ospf lsdb

此时R10仍不能向上访问,在ASBR设备R9上向其他设备宣传默认路由,在R10生成一条到其他区域的缺省路由并层层转发。

 ### 下发缺省路由
 [R9-ospf-2]default-route-advertise
 ​
 # 查看路由表发现成功生成缺省
 [R10]display ip routing-table protocol ospf
 # 发现生成5类缺省
 [R10]display ospf lsdb
 # 检测连通性,发现成功连通
 [R10]ping -a 172.16.131.1 172.16.34.1
加快收敛
 ### 减少hello时间,这里设置为10s
 [R1-GigabitEthernet0/0/0]ospf timer hello 10
 [R2-GigabitEthernet0/0/0]ospf timer hello 10
安全认证

选择安全性高的MD5加密认证,注意要配置认证就全都配置,否则无法建立邻居。

 ### MD5加密认证,编号KEY为1
 # 接口认证
 [R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 [R2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 ​
 ### ABR上配置区域认证
 [R3-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher 123456
 # 查看邻居表
 [R3]display ospf peer brief
环回访问
 ### 在ABR上抓取流量
 [R3]acl 2000
 [R3-acl-basic-2000]rule permit source 172.16.0.0 0.0.255.255
 [R6-acl-basic-2000]rule permit source 172.16.0.0 0.0.255.255
 [R7-acl-basic-2000]rule permit source 172.16.0.0 0.0.255.255
 ​
 ### 在出接口配置NAT
 [R3-Serial4/0/0]nat outbound 2000
 [R6-Serial4/0/0]nat outbound 2000
 [R7-GigabitEthernet0/0/0]nat outbound 2000
 # 连通性测试,均成功连通
 [R1]ping 100.0.0.1
 [R8]ping 100.0.0.1
 [R11]ping 100.0.0.1
 ...

;