OSPF Stub Area 案例用最简单的拓扑、场景来说明OSPF Stub Area 建立的过程:配置路由器的命令、消除type 4, 5 LSA, ABR添加0.0.0.0 默认路由,更新路由表。 案例有两个版本。案例有两个版本。本文是图解版本,是从仿真截图并加标注,介绍主要步骤。
- 背景:路由器是互联网的引擎,使得连接到互联网的计算机可以互相传递信息。路由器的工作就是转发数据包,收到数据包时,用它的目的IP地址来查看路由表,如果找到相应的网络地址,就把数据包转发到下一跳,。所以路由表是个关键。OSPF是个路由协议,让所有的OSPF路由器都知道彼此的链路状态 (LSA), 使得路由器的路由表都有OSPF网络以内的网络地址,同时OSPF的边界路由器 (ASBR) 还可以把OSPF网络以外的外部地址 (external address) 传送到 OSPF路由器,使得OSPF路由器能够转发数据包到OSPF网络内外的地址。但外部地址为数庞大,如果每一台路由器都要把所有的外部地址都记录下来的话,路由器的负担太大。
- Stub area原理:为了让area内部的路由器减轻负担,不必记录大量的外部地址 (external address), OSPF准许把一个area 设置为 stuib area, 使得stub area里面的路由器都不必记录外部地址,但它们需要把数据包传送到OSPF以外时,只需把数据包交给ABR就可以了。换言之,ABR变成内部路由器对外沟通的默认网关 (default gateway)。
- 预备知识: OSPF 入门、OSPF Area Border Router、 IP地址、路由器及路由表。见参考资料。
1. 拓扑 两个AS 上共有五台路由器,OSPF AS有两个area (三台路由器),非 OSPPF AS 有两台路由器。
- R1, R2, R3在OSPF AS, R1, R2在area 1, R2, R3在 area 0, R2是个ABR (Area Border Router) 连接area 0, 1.
- R3, R4在非OSPF AS, 运行RIP路由协议。R4只运行RIP, 有两个网络地址192.168.1.0/24, 10.0.0.0/8. R3是个ASBR (AS Border Router), 同时运行OSPF及RIP.
这个拓扑是从OSPF Stub Area入门仿真截图而来,在使用仿真时,用户可以观察 数据包-LSDB-路由表 之间的因果关系、控制时间轴、窗口数据包内容、阅读字幕。
2. 初始化:ABR有两对LSA, ASBR有两个外部地址
初始化时,OSPF路由器先生成一个Router LSA,它的type 是1, Link State ID 是 Router ID。同时,ABR, ASBR路由器还生成其他的LSA:
- R1的Router LSA是(1, 1.1.1.1)
- R2是个 ABR, 连接两个area:0, 1 ,所以生成了两个Router LSA,一个是area 0的LSA, 一个是area 1的LSA,在LSDB 显示为(1, 2.2.2.2, 0), (1, 2.2.2.2, 1)
R2 也生成两个network summary LSA (type 3),作为 ABR, R2得为一个area里的每一个网络地址生成Summary LSA. 在这个案例中,area 1里有一个网络地址 172.16.255.0/30, R2 就生成一个Summary LSA (3, 176.16.255.0, 0) 在area 0内洪泛,让area 1 里面的路由器知道area 0的网络地址。R2 也为area 0的网络地址 172.16.255.4/30 生成一个Summary LSA (3, 172.16.255.4, 1) 用来在area 1 洪泛。)
- R3是个ASBR, 连接了OSPF AS 和一个RIP AS. 它的LSDB有三个LSA:
l 一个Router LSA (1, 3.3.3.3). LSA type 1 (Router LSA), Link State ID 3.3.3.3 (R3 Router ID)。
l 两个 External LSA 用来记录R3所知道的RIP AS 里的网络地址192.168.1.0/24, 10.0.0.0/8 (要了解网络地址,请见参考资料)
3. 第一轮Update: 告诉邻居自己的LSA
初始化后,路由器把自己的LSA封装在Update, 发送给邻居。
例:R1发送给R2 的 Update包含了 一个LSA(1, 1.1.1.1),这是R1的 Router LSA.
R4 发送给R3的 Update(包含了三个LSA: 1, 3.3.3.3), (5.192.168.1.0), (5.1.0.0.0.,8)。一个是R3的Router LSA, 两个是External LSA (RIP AS中R4的网络地址)..
【注】在仿真版本,读者可以观察R1, R2, R3间发送Update的过程,并点击Update, 查看个别Update的内容,并与 LSDB比较,看到LSA是怎么被同步的。
4. 路由器的LSDB添加了邻居的LSDB
收到第一轮的Update后,路由器都添加了人间的LSA.li2:
- R1添加了两条LSA:(1, 2.2.2.2)是R2的Router LSA, (3, 172.16.255.4) 是 个Summary LSA, 描叙area 0里面的网络地址。
- R2添加了6条LSA: 2条Router LSA (R1, R3); 1条Summary LSA (area 1 的 172.16.1.0/24), 2条 External LSA (R3发现的两个外部地址),1条ASBR Summary LSA (让 area 1的路由器知道怎么把数据包送往 ASBR而到达外部地址)
- R3添加2条LSA: 1条是R2的 Router LSA, 1 条是area 1的网络地址172.16.255.0/30.
5. 第二轮Update后,路由器收到邻居的邻居的LSA, LSDB同步,成为Full Adjacency.
路由器在收到一个邻居的LSA后,将其新添的LSA 再次洪泛到其它邻居,这样不断地洪泛,直到所有的路由器都有相同的LSA为止。在这个案例中,R1, R3不直接相邻,所以得要有第二轮洪泛才能同步LSDB.
但LSDB同步不是LSDB一样。现在R1, R2, R3有同样的网络地址,对拓扑有一个共识,可以分别计算路由路径得到整体的最佳路径,可是他们仍有不同的LSA.
LSA不同之处包括:R3没有 ASBR Summary LSA (type 4), R1没有指向自己网络地址176.16.1.0/24的 Summary LSA
6. 配置 R1, R2为Stub area
LSDB同步后,为了减轻内部路由器的负担,把 area 1 设为 stub area, 收到area 1的1 内部路由器不必记录外部地址。
路由器配置命令很简单,只要在area 1的路由器R1, R2上运行一个解读的命令即可:“area 1 stub”
7. 配置后,R1 除去type 4, 5 LSA;R2 添加了默认路由0.0.0.0
执行了这个stub area的命令后,R1清除了3条LSA:两条type 5 LSA, 一条type 4 LSA (R1 是Area 1 的内部路由器)
R2 (ABR) 发送了一个Update 给R1, 这个Update 播放了通过默认路由 (Type 3 LSA, Link State ID 0.0.0.0)
8. R1 的默认网关是R2 (ABR)
R1 收到 Update后,把 Summary LSA (3, 0.0.0.0) 添加到LSDB。现在,R1有了默认路由,在转发数据包时,如果目的地址不在R1的路由表里,R1就把数据包转发到默认网关R2 即可。R2是ABR,它有完整的外部地址, 大量内存、更快的CPU, 可以多做点事。
参考资料:
[a] OSPF
Visualland.net 有20个OSPF仿真,由浅入深,见OSPF仿真目录.
OSPF入门仿真 用动画显示最简单OSPF拓扑的从头到尾的演变过程,用户可观察数据包-LSDB-路由表间的因果关系。
OSPF Area Border Router仿真 用案例说明ABR的原理、操作、结构。
谢希仁 计算机网络第五版 4.5.3 3 内部网关协议OSPF
Wikipedia: Open Shortest Path First http://en.wikipedia.org/wiki/Open_Shortest_Path_First
RFC2328 OSPF V2, http://tools.ietf.org/search/rfc2328
[b] IP address,网络地址
Visualland IP Address 有6个仿真,见目录
其中第三个”Network address 仿真” 与Summary LSA相关。
谢希仁 计算机网络第五版 4.2.2 分类的IP地址;4.3 划分子网
Wikipedia IP address: http://en.wikipedia.org/wiki/Ip_address
Wikipedia subnetwork : http://en.wikipedia.org/wiki/Subnetwork