OSPF入门案例教程用最简单的拓扑、场景来说明OSPF的整个过程:配置路由器的命令、发现OSPF邻居、交换LSA、请求LSA、发送LSA、完成Full Adjacency、用LSA计算路由路径、更新路由表, 使得Ping可以成功。案例有两个版本。本文是图解版本,是从仿真截图并加标注,介绍主要步骤。
- 背景:路由器是互联网的引擎,使得连接到互联网的计算机可以互相传递信息。路由器的工作就是转发数据包,(有如电话交换机转发对话),收到数据包时,用它的目的IP地址来查看路由表,如果找到相应的网络地址,就把数据包从通往这个网络地址的下一跳接口转发,如果没找到,就把数据包丢弃。所以路由表是个关键。但路由表是怎么设置的呢?在简单的拓扑上,网络管理员可以手工编辑路由表,但拓扑一但复杂,有几十个路由器的话,手工编辑路由表既困难又容易错,所以得用路由协议来自动生成路由表。
- OSPF原理: OSPF是个路由协议,让路由器将其链路信息 (link state) 互相传送,在所有的路由器都有同样的链接信息时,它们对拓扑有个共同的认识,可以分别计算通往各个目的地址的最佳路由路径,记录到路由表。这时,路由器就可以正确的把数据包在计算机间转发了。 要进一步了解OSPF的机制, 请见参考资料。
- 预备知识:IP address, 路由器。Visualland IP Address 有6个仿真,见IP地址仿真目录。
1. 拓扑 两台路由器R1, R2经serial 接口相连,主机H1连接到R1,H2连接到R2。
配套OSPF入门仿真:这个拓扑是从OSPF仿真截图而来,仿真以动画显示OSPF从头到尾的最基本过程,用户可以观察数据包-状态-LSDB之间的因果关系、控制播放、检查数据包内容。
2. 配置 IP地址
路由器的每一个接口都标明IP地址。例:R1 接口S1/0的IP地址是192.168.3.1/30, 接口E0/0的 IP地址是 192.168.1.1/24.OSPF用链路状态(LSA)来计算路由路径,路由器接口的IP地址属于一种LSA.
配置的第一步是R1, R2接口的 IP地址。图中显示 R1的命令窗口 (R2的情况类似,没有显示)
- E0/1接口的IP地址设为192.168.1.1: int e0/0; ip address 192.168.1.1 255.255.255.0; no shut
- S1/1接口的IP地址设为192.168.3.1: int s1/0; ip address 192.168.3.1 255.255.255.0; no shut
- 配置好接口的IP地址后,R1的路由表显示了两个本地网络地址的条目: (192.168.1.0/24, E0/0)表示送往192.168.1.0/24子网的数据包都从E0/0接口转发, (192.168.3.0/24, S1/0) 表示送往192.168.3.0/24子网的数据包都从S1/0接口转发。 此时,R1有能力转发前往本地IP地址的数据包。
3. 配置 OSPF
要把远程网络地址添加到路由器R1, 得在R1上配置OSPF. R1的命令行窗口显示了配置命令:
- 在路由器R1上启动 OSPF:
- 把R1接口的network address 输入到 OSPF. network 192.168.1.0/24 area 0; network 192.168.3.0 area 0;
启动OSPF后,R1生成了Router LSA (Link State Advertisement), 并被添加到LSDB (Link State DataBase)
图中显示R1的 OSPF配置、LSDB. R2的配置没有显示出来。 LSA描叙链路状态, LSDB储存LSA, 详情见参考资料。
4. Hello: 发现邻居
R1, R2都属于同一个子网,要同步LSDB, 得先相互“发现”对方。
- R1 洪泛Hello 告诉邻居:我是你的邻居R1。
- R2 收到R1 的Hello 后,也洪泛Hello。
- R1收到 R2 的Hello后,双方都知道对方是自己的邻居了。
【注】 这个截图省略了R2洪泛的Hello.
5. DD: 交换 LSA 目录
R1 发现R2 是邻居后, 就发送DD, 告诉R2 自己有那些 LSA.
【注】 此处省略了R2发送DD给R1的过程,也没有显示DD的内容。读者可在OSPF入门仿真中看到互送DD的过程,并点击DD查看其内容。
6. R1 Request R2: 要求R2提供自己没有的LSA
R1 收到 R2的DD后,看到 R2的LSA 目录里的R2 Router LSA自己没有,就发送Request 要求R2把这个LSA发送过来。.
7. R2 Update R1: 发送所要求的LSA
R2 收到 R1的Request后,就把所要求的R2 Router LSA放到Update里,并发送Update给 R1
8. R1 收到 R2 的 Update, 更新 LSDB
R1 收到Update, 将其内容 (R2 Router LSA) 添加到LSDB。 此时R1, R2的LSDB还没有同步, R2 仍然没有R1的Router LSA.
9. R2 收到 R1的Update。R1, R2的 LSDB 同步,成为Full Adjacency 状态。
R2 收到Update, 将其内容 (R1 Router LSA) 添加到LSDB. 此时R1, R2的LSDB同步了, R1, R2变成full adjacency 状态,它们对于拓扑有共同的认识 (因为LSDB一致),R1, R2各自计算路由,可以算出最短路径。.
【注】图解版本省略了几个OSPF包:R2 发送的Request, R1 发送的 Update, R2 发送的Ack, 同时路由表也没有显示。
参考资料:
[a] OSPF
Visualland.net OSPF basic simulation (这篇图解相应的仿真)
OSPF仿真目录有20个OSPF仿真,由浅入深,并包括几个实验
谢希仁 计算机网络第五版 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个仿真,见IP地址仿真目录
谢希仁 计算机网络第五版 4.2.2 分类的IP地址;4.3 划分子网
Wikipedia: IP address http://en.wikipedia.org/wiki/Ip_address