一, 背景介绍
之前介绍了 ospf 中共有 7 中 lsa 类型, 其中骨干区域与普通区域间通过 1,2,3 类 lsa 能够在本地计算出网络拓扑, 其中连接骨干区域与普通区域的路由器成为 abr, 这样在一个 ospf 自治系统内就可以实现相互访问, 但位于该 as 之外的路由, 却无法访问, 为了解决该问题, 引入了 4 类和 5 类 lsa.
二, 网络拓扑
本次实验网络拓扑如图所示, R4 的 loopback 接口模拟外部网络, R3 与 R4 之间使用 p2p 网络类型
由于 R4 的 loopback 接口属于 as 外接口, 为宣告进 ospf 中, 也没有引入外部路由, 所以此时 R3 上并没有该网段的路由
- [R3]display ospf routing
- OSPF Process 1 with Router ID 3.3.3.3
- Routing Tables
- Routing for Network
- Destination Cost Type NextHop AdvRouter Area
- 34.0.0.0/24 48 Stub 34.0.0.1 3.3.3.3 0.0.0.0
- 123.0.0.0/24 1 Transit 123.0.0.3 3.3.3.3 0.0.0.1
- 11.11.11.11/32 1 Stub 123.0.0.1 1.1.1.1 0.0.0.1
- 22.22.22.22/32 1 Stub 123.0.0.2 2.2.2.2 0.0.0.1
- Total Nets: 4
- Intra Area: 4 Inter Area: 0 ASE: 0 NSSA: 0
三, 4,5 类 lsa 详解
5 类 lsa
介绍 4 类 lsa 前, 先介绍一下 5 类 lsa, 首先要说明的是: 连接内外 as 域的路由器被称为 asbr, 通过上图能知道, R4 是该网络中的 asbr, 尽管 as 自治域内相互访问畅通无阻, 但是对于 as 外的外部网络 as 内的设备却一无所知, 此时就需要 asbr 将外部的路由导入, 导入后的路由在整个 as 内以 5 类 lsa 的形式泛洪
- [R4]ospf 1
- [R4-ospf-1]
- [R4-ospf-1]import-route direct
因为导入路由时选的是直连接口, 所以它将 34 网段也作为外部路由引入, 此处只看 192 网段, 5 类 lsa 的表项显示为 "External"
- [R2]display ospf lsdb
- OSPF Process 1 with Router ID 2.2.2.2
- Link State Database
- Area: 0.0.0.1
- Type LinkState ID AdvRouter Age Len Sequence Metric
- Router 2.2.2.2 2.2.2.2 535 48 80000009 1
- Router 1.1.1.1 1.1.1.1 540 48 80000008 1
- Router 3.3.3.3 3.3.3.3 535 36 80000009 1
- Network 123.0.0.3 3.3.3.3 535 36 80000006 0
- Sum.NET 34.0.0.0 3.3.3.3 596 28 80000002 48
- Sum-Asbr 4.4.4.4 3.3.3.3 860 28 80000001 48
- AS External Database
- Type LinkState ID AdvRouter Age Len Sequence Metric
- External 192.168.0.0 4.4.4.4 861 36 80000001 1
- External 192.168.1.0 4.4.4.4 861 36 80000001 1
- External 34.0.0.1 4.4.4.4 861 36 80000001 1
- External 34.0.0.0 4.4.4.4 861 36 80000001 1
以 R2 上的 lsdb 为例说明, 能看到 5 类 lsa 是由 R4 产生, 并在 as 域内泛洪, 整个 as 域内通过 5 类 lsa 知道 as 域外的路由条目, 尽管 as 域内的网络设备知道了域外的路由, 但并不能够正常通信, 原因就是: asbr 在哪?
总结
5 类 lsa 由 asbr 产生, 在 as 内所有区域泛洪, 从而将外部路由告知域内网络设备
4 类 lsa
上面说到了 as 域内的设备通过 5 类 lsa 知道了外面的花花世界 (域外路由), 但由于不知道怎么出去(asbr 位置) 而无法正常通信, 这就需要靠 4 类 lsa 来解决了. 4 类 lsa 不同于其他泛洪网段的 lsa, 它是泛洪的是一条主机路由, 其目的就是告诉 as 域内的网络设备 asbr 的位置在哪, 他在 lsdb 中的表项为 "Sum-Asbr"
通过上图会发现, 通告 asbr 位置的 lsa 竟然是 R3(abr)发出来的, 那 abr 又是怎么知道 R4 是 asbr 呢? 之前说过, 1 类 lsa 中通过相关的 V,B,E 位是否置 1, 能够描述路由器的 virtual-link,ABR,ASBR 等特殊角色, 而 asbr 的 E 位是 1, 且与 abr 直连(即相互传递 1 类 lsa), 所以 R3 能够知道 R4 就是 asbr, 并将该信息通过 4 类 lsa 发送给域内其他网络设备.
- <R1>
- display ospf lsdb asbr OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.1
- Link State Database Type : Sum-Asbr Ls id : 4.4.4.4 Adv rtr : 3.3.3.3 Ls
- age : 1797 Len : 28 Options : E seq# : 80000003 chksum : 0x28e5 Tos 0 metric:
- 48
4 类 lsa 中描述了 asbr 的 route id, 结合 1,2 类 lsa, 就能知道 asbr 的准确地址
总结
4 类 lsa 不同于其他类型的 lsa, 是一条主机路由, 由 abr 产生, 其目的是告诉 as 域内的网络设备 asbr 的位置
四, ospf 特性介绍
1.abr 的定义
为了减小广播, 将一个 as 划分为若干个 area, 连接骨干与普通区域的路由器称为 abr. 骨干区域有且只有 1 个就是 area0, 其他区域称为普通区域, 必须 (特殊情况外) 跟骨干区域相连
上图中 R4 因为没有直接与 area0 相连, 所以不是 abr, 此时 area2 因为没法学习到 are0 的路由, 也不会学习到 area1 的路由(稍后介绍), 会变成信息孤岛
2.ospf 的防环机制
以 MA 网络为例, 同一 area 内通过 1,2 类 lsa 能够计算出该 area 拓扑. area 之间通过 abr 的 3 类 lsa 相互学习路由, 其过程有点类似距离矢量协议, 类似距离矢量协议, 也会有环路的隐患, 所以 ospf 在设计之初为了避免该该隐患要求所有的普通区域要与骨干区域相连, 普通区域只会从骨干区域学习路由, 且不同的 area 之间不相互学习, 即 area0 为所有区域的中转, 这就解释了上图中 area2 为什么会成为信息孤岛的原因.
来源: http://blog.51cto.com/arkling/2468387