区域划分与LSA的种类
什么是区域划分
- 首先,OSPF 路由协议是支持多区域划分的。在一个最为简单的 OSPF 多区域网络环境中,OSPF 需采用两级分层结构。
- 骨干区域–Area 0
- 普通区域–非 Area 0 区域
- 并同时需按照普通区域要直连骨干区域,骨干区域要直连的模式搭建网络环境。
- 因为 OSPF 路由协议是链路状态路由协议,同时以自己为根节点,通过 SPF 算法计算路由,从而得出自己的路由表。
都有哪些区域
- 骨干区域:Area0区域即为骨干区域,其他区域必须连接在骨干区域,同样其他区域也通过骨干区域交换信息
- 传输区域:需要将路由信息转发给其他区域
- 末端区域:没有再连其他区域
为什么要区域划分
- 减小路由表大小
- 限制lsa的扩散
- 加快收敛
- 增强稳定性
实验拓扑图
图 1 . 实验拓扑图
如上图,Area 0为骨干区域,骨干区域负责在非骨干区域之间发布由区域边界路由器汇总的路由信息(并非详细的链路状态信息),为了避免区域间路由环路,非骨干区域之间不允许直接相互发布区域间路由信息。因此,所有区域边界路由器都至少有一个接口属于Area 0,即每个区域都必须连接到骨干区域。
划分区域的相关配置
Stub区域
- 当末端区域庞大时,可配置为Stub区域,减少LSA种类,减轻网络路由负载
NSSA区域
- 即作为不同区域之间的转换区域,用7种LSA作为中间转换
- 3 -> 7
- 7 -> 5
LSA的种类
表1. LSA的种类
LSA类型 | 通告路由器 | LSA内容 | 传播范围 |
---|---|---|---|
Router LSA(1类) | OSPF Router | 拓扑信息+路由信息 | 本地区域 |
Network LSA(2类) | DR | 拓扑信息+路由信息 | 本地区域 |
Network-summary-LSA(3类) | ABR | 域间路由信息 | 非Stub区域 |
ASBR-summary-LSA(4类) | ABR | ASBR的Router ID | 非Stub区域 |
AS-external-LSA(5类) | ASBR | 路由进程域外路由 | OSPF进程域 |
NSSA LSA(7类) | ASBR | NSSA域外部路由信息 | NSSA区域 |
Router LSA
- 使用命令在路由器上
display ospf lsdb router self-originate
图2 . Router LSA
- Type:Router标识为一类LSA
- Ls id:链路状态的ID即源路由器ID
- Adv rtr:产生此LSA的路由器的Router ID
- Link ID:为DR的接口IP地址
- Data:宣告此Router LSA的路由器的接口IP地址
- Link Type:MA型网络TransNet(表示的是描述的为DR的信息),点到点的链路路由信息为stubNet(路由信息)
- 由区域内所有路由器产生,并且只能在本个区域内泛洪广播。这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。
Network LSA
- 通过命令查看:
display ospf lsdb network self-originate
图2 . Netwok LSA
- 二类LSA描述MA和NBMA型的网络
- Ls id:DR接口的ip地址
- Adv rtr:DR的Router ID
- Attached Router:连接到该网段的路由器列表
- 由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。
Network-summary-LSA
- 命令
display ospf lsdb summary 17.0.4.0
图4.Network-summary-LSA
- Type:为三类LSA
- Ls id:为目的网段地址
- Adv rtr:产生此LSA的Router ID
- 三类LSA为纯粹的路由信息
-
由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。
在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。
如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。
ASBR-summary-LSA
- 也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。
- 因为本拓扑无外部网络,故无法展示
AS-external-LSA
- 由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。
- 自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。
- 配合ASBR-summary-LSA,完成对于外部网络的路由
Group membership LSA
- 目前不支持组播OSPF (MOSPF协议)
NSSA外部LSA (NSSA External LSA)
- 由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。
- 在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。
OSPF协议路由的计算
OSPF将一个区域的拓扑抽象成一个向图。图的节点是路由器、转接网络和stub网络。节点之间使用边进行连接。路由器到transit network的cost值等于接口cost值,transit network到路由器的cost值等于0。路由器到stub网络有边。但是stub网络到路由器没有边。这意味着流量不能穿越stub网络。
Dijkstra算法
- 进行路由计算的路由器把自己作为根节点加入最短路径树S,将根节点可直达的节点列为候选人(如果没有可直达节点,则计算结束)。程序实现方式为,distance[v0]=0; distance[u]=arcs[v0][u],其它节点的distance为无穷大。即程序中没有候选人列表,distance不是无穷大,就说明是候选人或者加入了最短路径树。
- 将候选人列表中到根节点cost值最小的节点加入最短路径树并且从候选人列表中删除。程序思路:加入S则打上标记。程序中这是一个循环。
- 把新加入的节点所能直达的节点列为候选人,同时更新原有候选人的路径。程序实现方式为:节点u加入S。有可能减少从v0出发,途径S中的节点,到达目前还不在S中的某节点w的路径长度。如果有这样的路径的话,这条路径一定经过u,所以应将原路径v0->w修改为v0->u->w。效果是从非候选人变成候选人(原本distance[w]为无穷大),也可能是变成更好的候选人(原本distance[w]不是无穷大)。程序中这是一个循环。
- 如果候选人列表为空,则计算结束,否则,返回Step2。程序中这是外层循环。
- 因为后加入最短路径树的节点的路径cost值大于先加入最短路径树的节点的路径cost值,所以一旦找到最短路径,不会出现到某个节点的最短路径需要修改的情况。
- Dijkstra 算法的时间复杂度为O(n^2)。优化后为O(nlogn)
区域间路由的计算
- 有多个ABR时,对于一个区域外网段就会有多条3类LSA。如果到ABR x的cost值+ ABR x生成的network summary-LSA中的cost 得到的和最小,则选择这条路由,下一跳指向ABR x的方向。
AS外部路由的计算
- 有多个ASBR时,一条external路由对应多个5类LSA。
- 有多个ABR时,对于一个ASBR就会有多条4类LSA。到ABR x的cost值+ ABR x生成的4类LSA中的cost = 到ASBR的cost值。
- 至于选择哪一条5类LSA通告的路由,需要取决于5类LSA中的metric type和metric值。
- 优选metric tyep为E1的路由。
- Metric type同为E2时,选择metric值小的路由,如果metric值相同,则选择ASBR近的路由。
- Metric type同为E1时,选择metric值+到ASBR的cost值 最小的路由。下一跳指向本区域中产生对应ASBR LSA的ABR。