HCIP-5.6OSPF转发地址及SPF算法学习
- 1、转发地址
- 1.1、5类LSA的转发地址
- 1.2、NSSA LSA(Type7)的转发地址
- 2、SPF算法
- 2.1、SPF算法(最短路径优先算法)也叫Dijksrta算法。
- 2.2、区域内路由计算:
- 3、OSPF的防环机制
- 3.1、域间路由环路的产生:
- 3.2、避免域间路由环路
- 3.3、外部路由防环
1、转发地址
FA是Forwarding Address的简写。FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。以免OSPF内部路由器在广播网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由。
1.1、5类LSA的转发地址
5类LSA FA字段可以为全0或者非0两种选择,有以下几个规则:
FA字段 | 条件 |
全0 | 当与引入路由的下一跳关联(互连)的接口没有启动OSPF时,FA设置为0; |
非0 | 在ASBR上,与引入外部路由下一跳关联的接口启动了OSPF,即位于Network命令范围内;在ASBR上,与引入外部路由下一跳关联的接口不能配置被动接口;在ASBR上,与引入外部路由下一跳关联的接口配置的OSPF网络类型不能是P2P或P2MP。(确保网络类型是Broadcast或NBMA的共享网络。) |
FA是如何影响OSPF的路由选择的?
1、计算外部路由时,首先检查通告TYPE 5 LSA的ASBR是否存在,否则忽略该LSA;OSPF路由器收到外部路由时候,先看这条五类LSA是否携带FA,如果FA地址位非0则会根据FA地址进行迭代查询,如果可达则该五类LSA携带的路由可以加表,如果不可达则不加路由表。
2、检查TYPE 5 LSA的FA地址是否为0。如为0,说明路由必须经过ASBR转发,那么优选到ASBR metric最短的路径。当有多个最短路径时,优选从较大area ID学习到的。
[R1]
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 123.0.0.0 0.0.0.255
[R2]
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 123.0.0.0 0.0.0.255
rip 1
version 2
network 123.0.0.0
[R3]
rip 1
version 2
network 123.0.0.0
[R3]
sys
sysn R4
int g0/0/1
ip add 192.168.1.2 255.255.255.0
int lo0
ip add 4.4.4.4 32
R3引入外部路由
ip route-static 4.4.4.4 32 192.168.1.2
R2导入RIP
ospf 1
import rip 1
[R2-ospf-1]dis ospf lsdb
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 4.4.4.4 2.2.2.2 69 36 80000001 1
[R2-ospf-1]dis ospf lsdb ase
Type : External
Ls id : 4.4.4.4
Adv rtr : 2.2.2.2
Ls age : 36
Len : 36
Options : E
seq# : 80000001
chksum : 0x82b7
Net mask : 255.255.255.255
TOS 0 Metric: 1
E type : 2
Forwarding Address : 123.0.0.3
Tag : 1
Priority : Low
对于外部路由4.4.4.4/32,R1是通过R2(ASBR学习到的,FA非0,优选到FA地址 metric最短的路径123.0.0.3 进行转发。不用再通过R2再到R3路径。
1.2、NSSA LSA(Type7)的转发地址
NSSA(no so stubby area)是一类特殊区域,可以在其中部署ASBR,引入外部路由。同时不会学习来自OSPF网络其他区域的外部路由。
NSSA区域连接着骨干区域,其区域边界路由器ABR,同时也是ASBR。
LSA7的作用:
- 用于通告外部引入的路由信息;由ASBR产生,扩散范围仅限于NSSA区域。
- NSSA的区域边界路由器ABR,执行7/5操作;LSA4/LSA5不会流入NSSA区域。
LSA7的FA一定要是非0,用于区域间选路。
LSA5和LSA7不同:
- LSA7仅在NSSA区域里泛洪;
- LSA7的FA为非0;如果为0,则不会被ABR翻译成LSA5
- 外部路由在NSSA区域里以LSA7传递,在其他区域以LSA5传递,ABR负责做7/5翻译
LSA7选项位P-bit用于通告翻译路由器该条Type7 LSA是否需要翻译。
缺省情况下NSSA区域内Router ID最大的区域边界路由器作为转换路由器ASBR。
只有P-bit置位并且FA!=0的LSA7 才能被转换成LSA5。
在ABR上引入外部路由,产生的Type7LSA不会P-bit置位,所以不会通告到区域0。
2、SPF算法
SPF算法每一个路由器都将自己作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。
2.1、SPF算法(最短路径优先算法)也叫Dijksrta算法。
- 首先选定根节点;
- 其次遍历该选定节点的所有直连节点。若根与某节点的分支为:
- 新分支,则添加该分支到分支列表,并记录分支的权重、根的下一跳;
- 已存在于分支列表,则与分支列表中已存在分支的权重值比较优劣,并把较优值更新到分支列表中;
- 已存在于权重列表,则忽略;
- 把分支列表中的最优分支移出至权重列表,并选定该分支的节点;
上图中,如果网络为Transnet网络,则计算为Dother连接DR的网段,记作伪节点。如果网络为P2P网络,则分别计算路由器和网络部分。A–>B为StubNet类型的链路,只计算出开销值。
A以自己为树根生成树来计算开销,开始计算A的最短路径树。得到A–>B、A–>C、A–>D开销值及下一跳;
B以自己为树根来计算B的最短路径树,B–>A、B–>C、B–>D的开销值;
C以自己为树根来计算C的最短路径树,C–>A、C–>B、C–>D的开销值及下一跳;
最后是D以自己为树根来计算D的最短路径树,D–>C、D–>A、D–>B的开销值及下一跳。
SPF树形结构:
树形结构 | 描述 |
树干 | 互联路由器骨干链路,其网络类型分为Transnet、P2P和Virtual。 |
树枝 | 非路由器所在网络,一般为终端设备所在的网络或环回口。 |
树叶 | 不靠拓扑计算的路由,用3类LSA或5类LSA传递的区域间和外部路由。 |
SPF算法的三个数据库
数据库 | 描述 |
LSDB数据库 | 记录各个节点之间的开销值。 |
临时数据库 | 记录以自己为树根比较到邻接的开销 |
树状数据库 | 从临时数据库选出最优势路径。 |
以下图为例来说明,其中1、2、3、4为cost值:
第一次以自己为树根比较邻接的开销,发现A<–>B开销小,选择到树状数据库,第二次以B为起点选择比较,凡是B到邻接都选择,除了已选择的A<–> B,发现B<–>D开销小,选入树状数据库。第三次选择邻接的A<–> C,查找C的相关邻接。发现有D的邻接,比自己通过B<–>D的开销大,放弃。
比较如果A<–>B<–>D和A<–> C<–>D的开销相同,那都放在树状数据库里。
选择完成后,清空临时数据库。以上称为完整计算。
区域内路由:通过Type 1和Type 2 LSA,进行SPF计算。
区域间路由:通过Type 3 LSA,结合域内到达ABR的路由进行SPF计算。
自治系统外路由:通过Type 5 LSA,结合域内到达ASBR或ABR的路由。
2.2、区域内路由计算:
1、R1以自己为树根,查询1类LSA(每台路由器都产生,是用来写入拓扑信息。),对于非stub末节类型的链路,将Link ID加入临时列表。
[R1]dis ospf lsdb router self-originate
拓扑信息
* Link ID: 10.0.12.2 DR接口的IP 物理口
Data : 10.0.12.1 宣告者发送LSA的出接口
Link Type: TransNet MA网段多点接入,至少两台路由器广播
Metric : 1
* Link ID: 6.6.6.6 邻居路由器的Router ID 物理口
Data : 10.0.16.1 宣告该Router LSA的路由器接口的IP地址
Link Type: P-2-P 点到点链接
Metric : 48 开销
临时列表 | 临时开销值 | 根/父节点 |
10.0.12.2 | 1 | 1.1.1.1 |
6.6.6.6 | 48 | 1.1.1.1 |
第一次以自己为树根比较邻接的开销,开始计算A的最短路径树。
由于R1和R2之间开销值是1、R1和R6之间开销值是48,将10.0.12.2 选在树状数据库,6.6.6.6还在临时数据库。
临时列表 | 临时开销值 | 根/父节点 |
6.6.6.6 | 48 | 1.1.1.1 |
2、R1查询2类LSA(由DR产生,描述本网段的链路状态。)
[R1]dis ospf lsdb network 10.0.12.2
Type : Network //LSA类型
Ls id : 10.0.12.2 //DR接口的IP地址
Adv rtr : 2.2.2.2. //DR的Router ID
Attached Router 3.3.3.3 //连接到该网段的路由器列表
Attached Router 1.1.1.1
通过连接到该网段的路由器列表,将3.3.3.3加入临时列表。
临时列表 | 临时开销值 | 根/父节点 |
6.6.6.6 | 48 | 1.1.1.1 |
3.3.3.3 | 1+1 | 10.0.12.2 |
第二次以R2为起点选择比较,凡是R2到邻接都选择。由于R1和R3之间开销值是2、R1和R6之间开销值是48,将3.3.3.3 选在树状数据库,6.6.6.6还在临时数据库。
临时列表 | 临时开销值 | 根/父节点 |
6.6.6.6 | 48 | 1.1.1.1 |
3、R1查询R3产生1类LSA,将R3邻居信息收录入临时列表。
[R1]dis ospf lsdb router self-originate 3.3.3.3
拓扑信息
* Link ID: 10.0.35.5 DR接口的IP 物理口
Data : 10.0.35.5 宣告者发送LSA的出接口
Link Type: TransNet MA网段多点接入,至少两台路由器广播
Metric : 1
临时列表 | 临时开销值 | 根/父节点 |
6.6.6.6 | 48 | 1.1.1.1 |
10.0.35.5 | 1+1+1 | 3.3.3.3 |
第三次以自己为树根比较邻接的开销,开始计算A的最短路径树。
将10.0.35.5 选在树状数据库,6.6.6.6还在临时数据库。
4、R1查询R4产生2类LSA,将通过连接到该网段的路由器列表加入临时列表。
[R1]dis ospf lsdb network 10.0.35.5
Type : Network //LSA类型
Ls id : 10.0.35.5 //DR接口的IP地址
Adv rtr : 5.5.5.5 //DR的Router ID
Attached Router 6.6.6.6 //连接到该网段的路由器列表
Attached Router 7.7.7.7
临时列表 | 临时开销值 | 根/父节点 |
6.6.6.6 | 48 | 1.1.1.1 |
6.6.6.6.6 | 1+1+1+1 | 10.0.35.5 |
7.7.7.7 | 1+1+1+1 | 10.0.35.5 |
第四次以自己为树根比较邻接的开销,开始计算A的最短路径树。
cost为48的6.6.6.6还在临时数据库。
这样最终从根节点按序将各节点添加到R1的路由表中。
3、OSPF的防环机制
OSPF的防环分为两种:
防环区域 | 描述 |
域内防环 | OSPF基于一类二类LSA的洪泛收集区域内的拓扑信息,将这些拓扑信息转化为有向图,再用SPF算法将有向图转化为最短路径树,而树形结构是无环的,OSPF最后依据树形结构将路由加载到路由表中。 |
域间防环 | spf规定不允许直接在两个非骨干区域之间发送路由信息,只允许在一个区域内部或者骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器都必须连接到骨干区域。。 |
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。OSPF要求所有的非0区域必须与骨干区域直接相连, 区域间( Inter- - Area Route )路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑,如下图所示。
3.1、域间路由环路的产生:
RTB将Area 1中1的一类、二类LSA转换成三类LSA,发布到区域0中。
RTC重新生成有关192.168.1.0/24网络的三类LSA并发布到Area 2中。
同理,RTE也将有关192.168.1.0/24网络的三类LSA发布到Area 3中。
RTD又将192.168.1.0/24网络的三类LSA发布到Area 1中,从而形成了路由环路。
3.2、避免域间路由环路
骨干区域和非骨干区域和三类LSA的传递规则:
- OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且
骨干区域只有一个
,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。 - OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
区域间水平分割
ABR只会将三类LSA转发到骨干区域,如果始发的是本区域的路由是不会被再次注入进来的,目的是为了阻止环路。
a)从一个非骨干区域学习到的LSA3不会再传回该非骨干区域(因为ILSA优于3LSA,不是根据区域ID判断,主要根据ABR的LSDB判断)
b)完全意义上的ABR从非骨干区域收到的LSA3会接收,但是不会参与计算也不会传回非骨干区域(此规则对非完全意义上的ABR无效)
非真正的ABR:
- 处于Area 1和Area 2之间,图中R4并不是ABR。
- 处于骨干区域和非骨干区域之间,但在骨干区域里没有邻居,图中R2并不是ABR。
也就是R4和R2收到的LSA3不参与计算,也不会传回非骨干区域。
3.3、外部路由防环
LSA4:由于LSA4类的产生以及泛洪范围与LSA3一致,所以LSA4的防环规则与LSA3一致。
LSA5、7:当FA地址为全零,根据LSA4类防环:如果LSA4无环,那么LSA5,7也无环。当FA地址为非全零,根据LSA1-3类防环;如果LSA1-3无环,那么LSA5,7也无环。