文章目录
前言
一个企业内部可能由于网络的升级或者是其他的原因,新老部门之间用的是不一样的路由协议。或者是企业总部分部可能用的是不一样的路由协议。又或者一个企业除了企业内部需要通信以外,还需要和外部网络进行通信,不同的企业有互访的需求。
假设A公司网络部署OSPF路由实现企业内部通信,因为业务需求需要访问B公司的WEB服务器,然而B公司不一定采用的OSPF协议,有可能是RIP,有可能是静态路由,或者是其他的路由协议,这时候A公司就需要用到OSPF外部路由来获取B公司的路由信息。
外部路由计算
如下图就为前言中描述的场景。
如图:
RTA配置:
[RTA]ip route-static 10.1.60.0 255.255.255.0 10.1.16.6
[RTA]ospf 1
[RTA-ospf-1]import-route static
配置这条静态路由之后,将这条静态路由引入到OSPF中。
注意:实际中路由需双向可达,这里只介绍了OSPF引入外部路由的过程,双向可达,RTF需要配置OSPF协议,引入它的外部路由
本例中,RTA上配置了一条静态路由,目的网络是10.1.60.0/24,下一跳是RTF。
在RTA的OSPF进程下,将配置的静态路由重发布到A公司的OSPF网络中,其中引入外部路由的OSPF路由器叫做ASBR,RTA会生成一条AS-External-LSA(五类LSA),用于描述如何从ASBR到达外部目的地;RTB和RTC会生成一条ASBR-Summary-LSA(四类LSA),用于描述如何从ABR到达ASBR。四类LSA和五类LSA,将被OSPF路由器用来计算外部路由。
概念
- ASBR:
引入外部路由的OSPF路由器(上图为RTA)
- ABR:
边界路由器:OSPF中骨干区域与其他区域交接处的路由器
- 五类LSA:AS-External-LSA(AS外部LSA)
ASBR产生,用于描述如何从ASBR到达外部目的地。
用来通告到达OSPF自治系统外部的目的地或者OSPF自治系统外部的缺省路由的LSA。自治系统外部LSA是链路状态数据库中唯一不与具体的区域相关联的LSA通告。外部LSA通告将在整个自治系统中进行泛洪扩散。
- 四类LSA:ASBR-Summary-LSA(ASBR汇总LSA)
ABR产生,用于描述如何从ABR达到ASBR(标识ASBR的位置);ASBR汇总LSA除了所通告的目的地是一台ASBR路由器而不是一个网络外,其他的和网络汇总LSA都是一样的。
外部路由配置
- 配置对方的路由协议(如:R1对面是用的OSPF协议,那么R1就用OSPF协议宣告相邻网段)
- 进入协议视图配置命令
import-router [对方路由协议]
。注意需要双向配置
[R1-ospf-1]network 192.168.2.0 0.0.0.255
[R1-rip-1]import-router ospf
[R2-rip-1]network 192.168.1.0
[R2-ospf-1]import-router rip
其他路由协议同理。
五类LSA与四类LSA
五类LSA:AS-External-LSA
我们用display ospf lsdb ase self-originate
查看LSDB中路由器自己生成的外部路由。也就是查看五类LSA。
<RTA>display ospf lsdb ase self-originate
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Type : External //LSA类型
Ls id : 10.1.60.0 //目的网段地址
Adv rtr : 1.1.1.1 //产生此五类LSA ASBR的Router ID (上图:RTA)
Ls age : 1340
Len : 36
Options : E //代表是外部路由的LSA
seq# : 80000004
chksum : 0xb5cc
Net mask : 255.255.255.0 //网络掩码
TOS 0 Metric: 1 //开销值,外部路由到ASBR的metric值,默认情况是1
E type : 2 //外部路由的类型,下文详解。默认为Type 2
Forwarding Address : 0.0.0.0 //次优路径时详细将讲解。
Tag : 1
Priority : Low //优先级,低,因为外部路由优先级低于内部路由
四类LSA:ASBR-Summary-LSA
我们用display ospf lsdb asbr self-originate
查看四类LSA
<RTB>display ospf lsdb asbr self-originate
Area: 0.0.0.1
Link State Database
Type : Sum-Asbr //LSA类型
Ls id : 1.1.1.1 //ASBR的Router ID
Adv rtr : 2.2.2.2 //产生此四类LSA ABR的Router ID(上图:RTB)
Ls age : 15
Len : 28
Options : E
seq# : 80000005
chksum : 0xf456
Tos 0 metric: 1 //从RTB到达此ASBR的开销
为什么要五类LSA的同时又要ABR发送四类LSA?
如上图,RTA产生五类LSA,并将五类LSA在整个AS(自治区域)中泛洪扩散。并在泛洪的过程中五类LSA信息不会像三类LSA一样发生变化。
结合五类LSA的信息:
Ls id : 10.1.60.0 //目的网段地址
Adv rtr : 1.1.1.1 //产生此五类LSA ASBR的Router ID (上图:RTA)
TOS 0 Metric: 1
在Area 0中的路由器肯定能找到ASBR路由器的位置。但是在非骨干区域。如Area 2中的RTE,不清楚ASBR的位置。
所以我们需要ABR担起责任,发布四类LSA,来告诉非骨干区域中的路由器ASBR的具体位置。
外部路由计算过程
Area 0中计算
此时不需要四类LSA,所以计算只需要:一类LSA、五类LSA
以Area 0中RTB的外部路由计算为例:RTB收到五类LSA后,根据Adv rtr字段1.1.1.1发现,ASBR与自己同属于一个区域(Area 0),再根据Ls id、Net mask、Metric字段最终生成目的网络10.1.60.0/24 cost=1,下一跳为RTA的路由。
非骨干区域外部路由计算
此时计算需要四类LSA、五类LSA、一类LSA、二类LSA(多路访问网络中)
以Area 1中RTD的外部路由计算为例:RTD收到五类LSA后,根据Adv rtr字段1.1.1.1发现,ASBR与自己不同属于一个区域,再查找Ls id为1.1.1.1的四类LSA,发现此四类LSA的Adv rtr为2.2.2.2。再根据五类LSA中的LS id、Net mask、Metric字段最终生成目的网络10.1.60.0/24 cost=1,下一跳为RTB的路由。
RTB、RTD最终计算出的路由条目cost都为1,根据物理拓扑可知,RTD开销值明显大于RTB,那么问题出在哪里呢?
这是由于外部路由的类型导致的。
外部路由的类型
上文五类LSA中:E type : 2
Type | Cost |
---|---|
第一类外部路由 (External Type-1) | AS内部开销值+AS外部开销值 |
第二类外部路由 (External Type-2) | AS外部开销值 |
OSPF引入外部路由,共有两种类型可选:
- 第一类外部路由的AS外部开销值被认为和AS内部开销值是同一数量级的,因此第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和;这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。
- 第二类外部路由的AS外部开销值被认为远大于AS内部开销值,因此第二类外部路由的开销值只包含AS外部开销,忽略AS内部开销(默认为第二类),这类路由的可信度比较低。
注意:
1. 默认情况下,OSPF外部路由采用的是第二类外部路由。
2. 路由优先级:第一类外部路由>第二类外部路由
3. LSA总路由优先级:一类LSA>三类LSA>第一类外部路由>第二类外部路由(没有二类、四类的原因是它们不传递路由信息,只传递拓扑信息。)
如下图:以RTD为例计算路径开销。假设路径开销值都为1。
次优外部路由
产生原因
如图,R1与R2配置了OSPF协议,R2和R3配置了RIP协议。此时在R2上进行双向引入外部路由。
此时R2作为OSPF中的ASBR,发布五类LSA进行通告。告诉R1想要发送信息到192.168.2.0网段,先要经过ASBR也就是R2,然后R2再将信息发送给R3。这时候我们发现,其实R1发送给192.168.2.0网关消息,有更优的路径。选择从R1到R2到R3的路径不是最优的。
此时R1的路由表:
<r1>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 D 192.168.1.1 Ethernet0/0/0
192.168.1.1/32 Direct 0 0 D 127.0.0.1 Ethernet0/0/0
192.168.2.0/24 O_ASE 150 1 D 192.168.1.2 Ethernet0/0/0
注意:192.168.2.0/24 O_ASE 150 1 D 192.168.1.2 Ethernet0/0/0
那么我们怎么解决呢?
Forwarding Address
OSPF通过设置 Forwarding Address来解决。
通常情况下,ASBR引入外部路由产生的五类LSA中Forwarding Address字段设置为0.0.0.0。(回顾上文拓扑图中RTA的五类LSA)
对于上图中的场景,RTB路由表中到达192.168.2.0/24的下一跳地址为192.168.1.3。192.168.1.3所属网段192.168.1.0/24运行OSPF,所以RTB生成的五类LSA中,Forwarding Address被设置为192.168.1.3。
R2产生的五类LSA:
[r2]display ospf lsdb ase self-originate
OSPF Process 1 with Router ID 192.168.1.2
Link State Database
Type : External
Ls id : 192.168.2.0
Adv rtr : 192.168.1.2
Ls age : 164
Len : 36
Options : E
seq# : 80000001
chksum : 0x7f0c
Net mask : 255.255.255.0
TOS 0 Metric: 1
E type : 2
==Forwarding Address : 192.168.1.3
Tag : 1
Priority : Low
Type : External
Ls id : 192.168.1.0
Adv rtr : 192.168.1.2
Ls age : 164
Len : 36
Options : E
seq# : 80000001
chksum : 0x23d6
注意: Forwarding Address : 192.168.1.3
当RTA收到五类LSA时,发现Forwarding Address字段非0,其值为10.1.123.3,所以RTA按照Forwarding Address计算下一跳。
R1路由表:
<r1>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 D 192.168.1.1 Ethernet0/0/0
192.168.1.1/32 Direct 0 0 D 127.0.0.1 Ethernet0/0/0
192.168.2.0/24 O_ASE 150 1 D 192.168.1.3 Ethernet0/0/0
注意:192.168.2.0/24 O_ASE 150 1 D 192.168.1.3 Ethernet0/0/0