文章目录
前言
主要讲解内容:
- OSPF如何计算域内路由
- 两种域内路由LSA
- SPF算法
预备知识
LSA :Link-State Advertisement
LSA(链路状态广播)是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。 LSA被路由器接收用于维护它们的路由选择表。
LSA头部
LSA分类
只记录了比较常见的LSA
Type | 描述 |
---|---|
1 | 路由器LSA(Router LSA) |
2 | 网络LSA(Network LSA) |
3 | 网络汇总LSA(Network-summary-LSA) |
4 | ASBR汇总LSA(ABSR-summary-LSA) |
5 | AS外部LSA(AS-external-LSA) |
7 | NSSA外部LSA(NSSA-LSA) |
Router LSA(路由器LSA)
每一台路由器都会产生路由器LSA通告。这个最基本的LSA通告列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的开销,以及该链路上所有已知的OSPF邻居。这些LSA通告只会在始发它们的区域内部进行泛洪扩散。华为设备通过命令display ospf lsdb router self-originate
可以查看路由器自己产生的LSA
Router LSA描述P2P网络
每台OSPF路由器使用一条Router-LSA描述本区域内的链路状态信息。
一条Router-LSA可以描述多条链接,每条链接描述信息由Link ID,Data,Link Type和Metric组成,
<RTA>display ospf lsdb router self-originate
Type : Router //LSA类型
Ls id : 1.1.1.1 //链路状态ID
Adv rtr : 1.1.1.1 //产生此LSA的路由器Router ID
//拓扑信息
* Link ID: 3.3.3.3 //邻居路由器的Router ID
Data : 10.1.13.1 //宣告该Router LSA的路由器接口的IP地址
Link Type: P-2-P
Metric : 48
//路由信息
* Link ID: 10.1.13.0 //该Stub网络的IP地址
Data : 255.255.255.0 //该Stub网络的网络掩码
Link Type: StubNet
Metric : 48 //开销值
Priority : Low
Router LSA描述MA网络或NBMA网络
在描述MA或NBMA网络类型的Router-LSA中,Link ID为DR的接口IP地址,Data为本地接口的IP地址。
如图所示:
RTB、RTC、RTE之间通过以太链路互连,以RTC产生的LSA为例,Link ID为DR的接口IP地址(10.1.235.2),Data为本地路由器连接此MA网络的接口IP地址(10.1.235.3),Link Type为TransNet,Metric表示到达DR的开销值。
TransNet描述的链接中仅包括与DR的连接关系及开销,没有网络号/掩码及共享链路上其他路由器的任何信息。
<RTC>display ospf lsdb router self-originate
Type : Router //LSA类型
Ls id : 3.3.3.3 //链路状态ID
Adv rtr : 3.3.3.3 //产生此LSA的路由器的Router ID
//拓扑信息
* Link ID: 10.1.235.2 //DR的接口IP地址
Data : 10.1.235.3 //宣告该Router LSA的路由器接口的IP地址
Link Type: TransNet
Metric : 1
小技巧
如果Link ID与Data是一致的,则该路由器在本网段为DR
为什么,多路访问网络中的Router LSA只有拓扑信息,没有路由信息?多路访问网络的路由信息由该网络中的DR产生第二类LSA通告。
Network LSA (网络LSA)
每一个多路访问网络中的指定路由器(DR)将会产生网络LSA通告。正如前面讨论的,DR路由器可以看作一个“伪”节点,或是一个虚拟路由器,用来描绘一个多路访问网络和与之相连的所有路由器。从这个角度来看,一条网络LSA通告也可以描绘一个逻辑上的“伪”节点,就像一条路由器LSA通告描绘一个物理上的单台路由器一样。网络LSA通告列出了所有与之相连的路由器,包括DR路由器本身。就像路由器LSA一样,网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪扩散。
Network LSA描述MA、NBMA网络
MA、NBMA共享网段中的网络号/掩码以及路由器间的链接关系,通过Network LSA来呈现。
<RTB>display ospf lsdb network self-originate
OSPF Process 1 with Router ID 2.2.2.2
Area: 0.0.0.0
Link State Database
//拓扑信息、路由信息
Type : Network //LSA类型
Ls id : 10.1.235.2 //DR接口的IP地址
Adv rtr : 2.2.2.2 //产生此Network LSA的路由器Router ID及DR的Router ID
Net mask : 255.255.255.0 //网络掩码
Priority : Low
Attached Router 2.2.2.2 //连接到该网段的路由器列表,呈现了此网段的拓扑信息
Attached Router 3.3.3.3
Attached Router 5.5.5.5
//基于上述字段表达的信息,LS ID和Net mask做与运算,即可得出该网段的IP网络号,另外,从DR路由器到其所连接的路由器的开销为0
//从Attached Router部分可以看出,2.2.2.2、3.3.3.3、5.5.5.5共同连接到该共享MA网段中,DR路由器为2.2.2.2,网络号10.1.235.0,掩码255.255.255.0。
OSPF区域内的LSDB
LSDB
链路状态数据库。LSA是LSDB的最小组成单位,也就是说LSDB有一条条LSA组成。
通过display ospf lsdb
来查看路由器上的LSDB信息
如图所示,五台路由器互连并运行OSPF协议。以RTA的LSDB为例,其中包括了五个路由器产生的Router-LSA,以及两个广播型网络中产生的Network-LSA
- 注意
- DR的选举
-
- 每个网段中之间选举
-
- P2P网络中不会选举DR、BDR
所以该拓扑中只有RTA和RTB之间;RTB和RTC、RTE之间选举出两个DR
<RTA>display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 1436 72 80000007 48
Router 2.2.2.2 2.2.2.2 1305 72 80000019 1
Router 1.1.1.1 1.1.1.1 1304 60 80000007 1
Router 5.5.5.5 5.5.5.5 1326 60 80000017 1
Router 3.3.3.3 3.3.3.3 1325 60 8000000F 1
Network 10.1.235.2 2.2.2.2 1326 36 80000004 0
Network 10.1.12.2 2.2.2.2 1305 32 80000001 0
SPF算法
SPF算法(最短路径优先算法)也被称为Dijkstra算法,是由荷兰计算机科学家狄克斯特拉于1959年提出的。
SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。在OSPF路由协议中,最短路径树的树干长度,即OSPF路由器至每一个目的地路 由器的距离,称为OSPF的Cost。SPF使用开销(cost)作为度量值。
- SPF算法基本步骤
-
- 构建SPF树
根据Router LSA和Network LSA中的拓扑信息,构建SPF树干
- 构建SPF树
-
- 计算最优路由
基于SPF树干和Router LSA、Network LSA中的路由信息,计算最优路由
- 计算最优路由
步骤详解
以下图拓扑为例来解释SPF算法具体步骤
步骤1
- OSPF路由器将分别以自身为根节点计算最短路径树。以RTA为例,计算过程如下
-
RTA将自己添加到最短路径树的树根位置,然后检查自己生成的Router-LSA,对于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接添加到候选列表中,分节点的候选列表为Link ID,对应的候选总开销为本LSA中描述的Metric值和父节点到达根节点开销之和。
根节点RTA的Router-LSA中存在TransNet中Link ID为10.1.12.2 Metric=1和P-2-P中Link ID为3.3.3.3 Metric=48的两个连接,被添加进候选列表中。
RTA将候选列表中候选总开销最小的节点10.1.12.2移到最短路径树上,并从候选列表中删除。
步骤2
DR被加入到SPF中,接下来检查Ls id为10.1.12.2的Network-LSA。如果LSA中所描述的分节点在最短路径树上已经存在,则忽略该分节点。
- 如图所示,在Attached Router部分:
-
节点1.1.1.1被忽略,因为1.1.1.1已经在最短路径树上。
将节点2.2.2.2,Metric=0,父节点到根节点的开销为1,所以候选总开销为1,加入候选列表。
候选节点列表中有两个候选节点,选择候选总开销最小的节点2.2.2.2加入最短路径树并从候选列表中删除。
步骤3
- 节点2.2.2.2新添加进最短路径树上,此时继续检查Ls id为2.2.2.2的Router-LSA:
-
第一个TransNet连接中,Link ID为10.1.12.2,此节点已经在最短路径树上,忽略。
第二个TransNet连接中,Link ID为10.1.235.2,Metric=1,父节点到根节点的开销为1,候选总开销为2,加入候选列表。
第三个P-2-P连接中,Link ID为4.4.4.4,Metric=48,父节点到根节点的开销为1,候选总开销为49,加入候选列表。
候选节点列表中有三个候选节点,选择候选总开销最小的节点10.1.235.2加入最短路径树并从候选列表中删除。
步骤4
lDR被加入到SPF中,接下来检查Ls id为10.1.235.2的Network-LSA。
- 如图所示,在Attached Router部分:
-
节点2.2.2.2被忽略,因为2.2.2.2已经在最短路径树上。
将节点3.3.3.3,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。(如果在候选列表中出现两个节点ID一样但是到根节点的开销不一样的节点,则删除到根节点的开销大的节点。所以删除节点3.3.3.3 累计开销为48的候选项)。
将节点5.5.5.5,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。
候选节点列表中有三个候选节点,选择候选总开销最小的节点3.3.3.3和5.5.5.5加入最短路径树并从候选列表中删除。
步骤5
节点3.3.3.3和5.5.5.5新添加进最短路径树上,此时继续检查Ls id分别为3.3.3.3和5.5.5.5的Router-LSA。
- Ls id为3.3.3.3的LSA:
-
Link ID为10.1.235.2的节点已经在最短路径树上,忽略。
pLink ID为1.1.1.1的节点已经在最短路径树上,忽略。
步骤6
- Ls id为5.5.5.5的LSA:
-
Link ID为10.1.235.2的节点已经在最短路径树上,忽略。
Link ID为4.4.4.4的P-2-P连接,Metric=48,父节点到根节点的开销为2,候选总开销为50。因为节点4.4.4.4已经在候选列表中出现,且候选总开销为49。49<50,所以子节点4.4.4.4的父节点选择2.2.2.2。
至此,再通过命令display ospf lsdb router 4.4.4.4发现,LSA中的连接所描述的相邻节点都已经添加到了SPF树中。
此时候选列表为空,完成SPF计算,其中10.1.12.2和10.1.235.2是虚节点(DR)。
步骤7:计算最优路径
第二阶段根据Router LSA中的Stub、Network LSA中的路由信息,完成最优路由的计算。
- 从根节点开始,依次添加LSA中的路由信息(添加顺序按照每个节点加入SPF树的顺序):
-
p1.1.1.1(RTA)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,Metric=48;
p10.1.12.2(DR)的Network LSA中,网络号/掩码10.1.12.0/24,Metric=1+0=1;
p2.2.2.2(RTB)的Router LSA中,共1个Stub连接,网络号/掩码10.1.24.0/24,Metric=1+0+48=49;
p10.1.235.2(DR)的Network LSA中,网络号/掩码10.1.235.0/24,Metric=1+0+1=2;
p3.3.3.3(RTC)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,已在RTA上,忽略;
p5.5.5.5(RTE)的Router LSA中,共1个Stub连接,网络号/掩码10.1.45.0/24,Metric=1+0+0+1+48=50;
p4.4.4.4(RTD)的Router LSA中,共2个Stub连接,网络号/掩码10.1.24.0/24,已在RTB上,忽略;网络号/掩码10.1.45.0/24,已在RTE上,忽略。
查看OSPF路由表
<RTA>display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRoute Area
10.1.12.0/24 1 Transit 10.1.12.1 1.1.1.1 0.0.0.0
10.1.13.0/24 48 Stub 10.1.13.1 1.1.1.1 0.0.0.0
10.1.24.0/24 49 Stub 10.1.12.2 2.2.2.2 0.0.0.0
10.1.45.0/24 50 Stub 10.1.12.2 5.5.5.5 0.0.0.0
10.1.235.0/24 2 Transit 10.1.12.2 2.2.2.2 0.0.0.0
Total Nets: 5
Intra Area: 5 Inter Area: 0 ASE: 0 NSSA: 0
单区域OSPF配置
路由器单区域配置
ospf router-id 1.1.1.1
area 0
network [相邻网段] [反子网掩码]
network 10.1.12.0 0.0.0.255 //举例