第3章 OSPF高级
一、不规则区域
区域划分
OSPF为了适应中大型网络环境,设计了区域划分的规则:
区域之间必须存在ABR设备(域间路由器)
区域划分必须满足星型结构划分
而不规则区域便没有满足星型结构的划分。
非骨干区域
OSPF的不规则区域:不连续骨干,远离骨干的 非骨干区域。
解决方法
物理连接一根线缆让远离骨干的非骨干区域直接连接到骨干区域中。
通过构建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。
虚链路V-link
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的类型 | LSID | ADV router通告路由器 | 携带参数 | 传递范围 |
---|---|---|---|---|
Router :type-1 LSA | 通告路由器的RID | 谁发的该LSA,ADV-router=该设备RID | 拓扑信息 | 在区域内部传递 |
Network:type-2 LSA | DR的IP地址 | DR所在路由器的RID | 1类LSA的补充 | 在区域内部传递 |
Sum-Net:type-3 LSA | 其他区域目标网段 | 本区域相连的ABR的RID | 其他区域目标网段信息 | 单区域传递 |
Sum-Asbr:type-4 LSA | ASBR设备RID | 本区域相连的ABR的RID | ASBR设备如何到(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综合
要求:
R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP
R3-R5/6/7为MGRE环境,R3为中心站点;
整个OSPF环境IP基于172.16.0.0/16划分;
所有设备均可访问R4的环回(配置NAT);
减少LSA的更新量(汇总+特殊区域),加快收敛(修改hello时间),保障更新安全(认证);
全网可达
子网划分
图中一共有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 ...