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, R2serial 接口相连,主机H1连接到R1H2连接到R2


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_routing protocol

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

 

 

2. 配置 IP地址


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_router_02

路由器的每一个接口都标明IP地址。例:R1 接口S1/0IP地址是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


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_router_03

要把远程网络地址添加到路由器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: 发现邻居


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_router_04

R1,  R2都属于同一个子网,要同步LSDB, 得先相互“发现”对方。

-          R1 洪泛Hello 告诉邻居:我是你的邻居R1

-          R2 收到R1 Hello 后,也洪泛Hello

-          R1收到 R2 Hello后,双方都知道对方是自己的邻居了。

【注】 这个截图省略了R2洪泛的Hello.

 

 

5. DD: 交换 LSA 目录


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_教程_05

R1 发现R2 是邻居后, 就发送DD, 告诉R2 自己有那些 LSA.

【注】 此处省略了R2发送DDR1的过程,也没有显示DD的内容。读者可在OSPF入门仿真中看到互送DD的过程,并点击DD查看其内容。

 

 

6.  R1 Request R2: 要求R2提供自己没有的LSA


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_OSPF_06

R1 收到 R2DD后,看到 R2LSA 目录里的R2 Router LSA自己没有,就发送Request 要求R2把这个LSA发送过来。.

 

 

 

 

7. R2 Update R1: 发送所要求的LSA


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_OSPF_07

R2 收到 R1Request后,就把所要求的R2 Router LSA放到Update里,并发送Update R1

 

 

 

 

8.  R1 收到 R2 Update 更新 LSDB


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_routing protocol_08

R1 收到Update, 将其内容 (R2 Router LSA) 添加到LSDB 此时R1, R2LSDB还没有同步, R2 仍然没有R1Router LSA.

 

 

 

9. R2 收到 R1UpdateR1, R2 LSDB 同步,成为Full Adjacency 状态。


OSPF 入门教程图解 (案例、过程、分析,并有配套的仿真链接)_router_09

R2 收到Update, 将其内容 (R1 Router LSA) 添加到LSDB. 此时R1, R2LSDB同步了,  R1, R2变成full adjacency 状态,它们对于拓扑有共同的认识 (因为LSDB一致),R1, R2各自计算路由,可以算出最短路径。.

【注】图解版本省略了几个OSPF包:R2 发送的Request, R1 发送的 Update, R2 发送的Ack, 同时路由表也没有显示。

 

 

参考资料:

[a] OSPF

Visualland.net OSPF basic simulation (这篇图解相应的仿真)  

OSPF仿真目录20OSPF仿真,由浅入深,并包括几个实验

谢希仁 计算机网络第五版 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