OSPF 教程图解 (案例、动画过程、仿真)

OSPF入门案例教程用最简单的拓扑、场景来说明OSPF的整个过程:配置路由器的命令、发现OSPF邻居、交换LSA、请求LSA、发送LSA、完成Full Adjacency、用LSA计算路由路径、更新路由表, 使得Ping可以成功。案例有两个版本。本文是图解版本,是从仿真截图并加标注,介绍主要步骤。
-        背景:路由器是互联网的核心,使得计算机间可以互相传递信息。路由器的工作就是转发数据包,(有如电话交换机转发对话),收到数据包时,用它的目的IP地址来查看路由表,如果找到相应的网络地址,就把数据包从通往这个网络地址的下一跳接口转发,如果没找到,就把数据包丢弃。所以路由表是个关键。但路由表是怎么设置的呢?在简单的拓扑上,网络管理员可以手工编辑路由表,拓扑一但复杂,有几十个路由器的话,手工编辑路由表既困难又容易错,所以得用路由协议来自动生成路由表。
-        OSPF原理: OSPF是个路由协议,让路由器将其链路信息 (link state) 互相传送,在所有的路由器都有同样的链接信息时,它们对拓扑有个共同的认识,可以分别计算通往各个目的地址的最短路径,记录到路由表。这时,路由器就可以正确的把数据包在计算机间转发了。 要进一步了解OSPF的机制, 请见参考资料。
-        预备知识:IP address, 路由器。
-        OSPF 仿真: 这个图解教程是根据OSPF入门仿真创作。仿真用动画显示OSPF从初始化到同步(Full Adjacency)的过程,读者可以互动的检查数据包内容,观察数据包 - LSDB表 – 路由表之间的因果关系。

OSPF入门仿真:这个拓扑是从OSPF仿真截图而来,仿真以动画显示OSPF从头到尾的最基本过程,用户可以观察数据包-状态-LSDB之间的因果关系、控制播放、检查数据包内容。


拓扑、配置、初始化

1.        拓扑:两台路由器R1, R2经serial 接口相连,主机H1连接到R1,H2连接到R2。
2.        配置:在R1上启动 OSPF, 把R1接口的network address 输入到 OSPF。例,  network 192.168.1.0/24 area 0.
3.        初始化:启动OSPF后,R1生成了Router LSA (Link State Advertisement), 并被添加到LSDB (Link State DataBase)。LSA描叙链路状态。
此时,R1, R2只知道自己的LSA, 接下去OSPF开始运作,使得R1, R2的LSDB同步。这样R1, R2对拓扑有一致的认识,可以分别计算最短路径,更新路由表。
4.        R1, R2 发送Hello,发现邻居。
初始化时,R1,  R2虽然直接连接,但互不相识。要同步LSDB, 它们得先“发现”对方。
-        R1 洪泛Hello 告诉邻居:我是你的邻居R1。
-        R2 收到R1 的Hello 后,也洪泛Hello:我是你的邻居R2,我有一个邻居是R1。
-        R1收到 R2 的Hello后,双方都知道对方是自己的邻居了。
5.        R1, R2 发送发DD, 交换彼此的LSA目录
R1 发现R2 是邻居后, 就发送DD, 告诉R2 自己有那些 LSA. R2也做了一样的事。这样,R1, R2都知道邻居有什么LSA.。
6.        R1 发送Request, 要求R2把R2 的Router LSA传送给自己。R2 发送Request, 要求R1把R1 的Router LSA传送给自己。
7.        R1把R1的Router LSA发送给R2。 R1 收到 R2的Request后,就把自己的R1 Router LSA放到Update里,发送Update给 R2。
8.        R2把R2的Router LSA发送给R1。 R2 收到 R1的Request后,就把自己的R2 Router LSA放到Update里,发送Update给 R1。
9.        R1 收到 R2的Request后,就把所要求的R1 Router LSA放到Update里,并发送Update给 R2。
10.        此时R1, R2有相同的LSA,它们的LSDB同步, 并成为Full Adjacency. 它们对拓扑有共同的认识 ,R1, R2各自计算路由,更新路由表,生成网络的最短路径。.

【注】本场景动画过程请见 OSPF入门仿真, 可以互动的检查数据包内容,观察数据包 - LSDB表 – 路由表之间的因果关系。





用户系统信息:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729)
最后编辑瑞星工程师16 最后编辑于 2010-12-27 15:49:17