文章目录
OSPF将整个OSPF域划分为多个区域,区域内部通过拓扑信息计算路由,区域间传递路由信息,实现全网可达。OSPF防环机制主要是体现在域内防环和域间防环。
域间防环
-
OSPF的星型拓扑划分规则实际上就是一种防环手段。OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。OSPF要求所有的非0区域必须与骨干区域直接相连, 区域间( Inter- - Area Route )路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑,如下图所示。
-
ABR从非骨干区域收到的Type-3 LSA不能用于区域间路由的计算。当一台 ABR 在非 Area0 的区域中收到 Type- - 3 LSA 时,虽然它会将其装载进 LSDB ,但是该路由器不会使用这些 Type- - 3 LSA 进行路由计算,当然它更不会将这些 Type- - 3 LSA 再注入回Area0 中。
-
区域之间存在水平分割机制,从某个区域学到的路由信息不会再通告到这个区域,这和距离适量协议的水平分割相似,区域水平分割可以概括为:从此区域出,不进此区域。
域内防环
OSPF基于一类二类LSA的洪泛收集区域内的拓扑信息,将这些拓扑信息转化为有向图,再用SPF算法将有向图转化为最短路径树,而树形结构是无环的,OSPF最后依据树形结构将路由加载到路由表中。
有向图转化
一类LSA描述了某个设备的接口信息,二类LSA只是一类LSA对MA网络的补充,通过查看一二类LSA可以画出单区域的有向图。
有向图的画法
- 一类LSA中有四种接口类型,这里我们不考虑virtual类型
Type | Link ID | Data |
---|---|---|
p-2-p | 邻居的RID | 该网段上本地接口的IP地址 |
TransNet | DR的接口的IP地址 | 该网段上本地接口的IP地址 |
StubNet | 该Stub网段的IP网络地址 | 该网段的网路掩码 |
Virtual | 虚连接邻居的RID | 去往该虚连接的本地接口IP |
-
Stub网段表示该网段只有数据入口,例如一个Loopback接口就是一个Stub网段。转化为有向图时路由器为一个圈,stub网段也是一个圈,然后再画一条路由器指向stub网段的箭头,箭头上添上该接口的开销值,表示路由器到该网段的需要的开销值。
-
Transit网段即一个MA网段,从路由器到所连Transit网段的开销值就是连接到这个网段的接口所配
置的开销值。从一个Transit网段到连接到这个网段的路由器的开销为0。下图的N1也被称为伪节点。
-
一类LSA在描述p2p网络时,由于点到点链路两端接口的网络号可能不一致,所以需要有两个link对其描述。
-
两接口处于不同网段的点到点网段的规则如下:两台路由器经由两条有向线段直接相连,每个方向一条。两个接口的网段被表示成Stub网段。每个路由器通告一个Stub连接到该路由器所连的网段
-
两接口处于同一网段的点到点网段的规则如下:两台路由器经由两条有向线段直接相连,每个方向一条。连接两个接口的网段被表示成Stub网段。
示例
SPF算法
SPF算法每一个路由器都将自己作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。OSPF计算阶段分为两个阶段:
第一阶段 | 计算Transit节点,忽略Stub节点,生成一个最短路径树 |
---|---|
第二阶段 | 只计算Stub节点,将Stub网段挂到最短路径树上去 |
接下来我将使用上图进行演示如何进行spf算法,上图的RTA-B的RID一次为1.1.1.1、2.2.2.2……
-
计算过程中首先初始化最短路径树,RTA将自己做为根节点添加到最短路径树上
-
查看RTA生成的一类LSA
-
将一类LSA的p-2-p类型link包含的邻居RID和TransNet类型的link包含的DR的ip添加到候选列表中
-
选择候选列表中到根端点的开销最小的端点移动到最短路径树上
-
如果有新节点添加到最短路径树上的时候,查看新节点产生的一类LSA
-
将一类LSA的p-2-p类型link包含的邻居RID和TransNet类型的link包含的DR的ip添加到候选列表中,在最短路径树上已经存在的则忽略。
-
将候选列表中到根端点的开销最小的端点移动到最短路径树上,本次将10.3.1.1移到最短路径树上。由于10.3.1.1是一个MA网段的DR接口IP,所以在添加该端点时,需添加一个伪节点。
-
新添加的节点为一个伪节点,所以我们查看LS ID为10.3.1.1的二类LSA。
-
将该MA网段中的节点都添加到候选列表中,已经添加到最短路径树上的节点则忽略。如果在候选列表中出现两个端点ID一样但是到根端点的开销不一样的端点,则删除到根端点的开销大的端点。
-
将候选列表中到根端点的开销最小的端点移动到最短路径树上,如果开销一样则随便,本次将3.3.3.3移到最短路径树上。
-
新添加的端点为一个节点,查看此节点产生的一类LSA
-
忽略已经添加到最短路径树上的节点,本次没有新端点被添加到候选列表中。
-
将候选列表中到根端点的开销最小的端点移动到最短路径树上,本次将4.4.4.4移到最短路径树上。
-
查看新添加节点产生的一类LSA
-
本次没有新端点被添加到候选列表中。如果在此时候选列表为空,则计算最短路径树的第一阶段结束。
-
最后依次将每个节点的stub网段添加到最短路径树上