OSPF学习笔记整理(一)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   第一部分 OSPF 的一些基本概念
在链路状态路由协议中,路由器和路由器之间交换的是链路状态。而距离矢量路由协议中,路由器与路由器之间交换的是路由表。链路状态路由协议能够识别更多的网络信息,所以选出的路由比距离矢量路由协议选出的路由更优。在 OSPF 中,一共维护着三个数据库:所有的邻居,区域内所有的路由器(链路状态),到达目的地最佳路径。 OSPF 是通过链路状态表中整个区域的链路状态来计算出路由表的。
OSPF 中的三张表:邻居表( adjacency database ),拓扑表,路由表。
OSPF 的网络在设计时应该设计为层次性的网络,这是一个强制要求。有两个级别的层次一个为主干区 Transit area backbone or area 0 ),另一个为非主干区域 Regular areas nonbackbone areas )。可以认为,在区域内部交换的是链路状态,而在区域和区域之间交换的则是路由信息。
OSPF 区域的特点:
1.
减小路由表的条目;
2.
本地化拓扑结构,只在本区域传播,将拓扑变化影响减到最小;
3.
详细的 LSA 的洪泛将终结在区域的边界上;
4.
需要层次化的网络设计;
5.
一般情况下,所有的非主干区域都应该与主干区域相连,非主干区域之间是不会交换信息的;
ABR
称为区域边界路由器,作用就是将非主干区域和主干区域连接起来。
链路状态数据结构(邻居表):
1.
OSPF 通过交换 Hello 包来发现邻居;
2.
通过检查 Hello 包中的一些选项或者变量后建立邻居关系的;
3.
在点到点的广域网环境中,邻居之间是全互联的;
4.
在局域网环境中,所有路由器只与 DR BDR 形成邻接关系( adjacency ),而其他的路由器( DROTHERs )之间则只是 two-way 的关系;
5.
路由更新和拓扑信息之在邻接关系的路由器之间进行传播;
所有的路由更新,以及链路状态信息都是通过网络中的 DR BDR 传输的。也就是说,所有的 DROTHER 都会与 DR 还有 BDR 建立邻接关系( adjacency )。
SPF
算法:在每个路由器的链路状态表中都应用 Dijkstra’s SPF 算法。
1.
每个路由器上都会有一个链路状态数据库;
2.
每个路由器都会先将自己作为一个根,然后建立起一个 SPF 树;
3.
最优路径的计算是到达目的地的所有路径开销的总和;
4.
最优路径将被放到路由表中;
LSA
的操作:
1.
首先,与自己的链路状态表对比一下,看看是否在其中;
2.
如果没有的话,把它加到自己的链路状态数据库中,同时发出一个确认包;
3.
如果有的话,比较顺序号,如果顺序号相同,则忽略。如果小于自己的,则给源发送一个 LSU
4.
然后洪泛传输自己的 LSA 给其他路由器;
5.
运行 SPF 算法,重新计算路由表;
PS
LSA 传输的时候,每次只能传输一跳。

第二部分 OSPF 包的类型
OPSF
中几种包的类型:
1. Hello
包,建立邻居关系;
2.
数据库的描述包;
3.
链路状态请求;
4.
链路状态的更新;
5.
链路状态的确认;
OSPF 是通过发送 Hello 包来建立邻居关系的, OSPF Hello 包是通过多播向外发送的,所有运行 OSPF 的路由器都会接收这个多播包。 Hello 包中的内容: Router ID Hello 和死亡时间间隔、邻居、区域 ID Router 的优先级、 DR IP 地址、 BDR IP 地址、验证密码、 stub 区域标记。在 OSPF 中,为红色字体的那些内容必需要相同才能形成邻居关系。
DROTHER
之间的稳定状态是 two-way 状态, DR BDR DROTHER 之间的稳定状态是 full state 状态。
所有路由器给 DRs 发送 LSU 的多播地址时 224.0.0.6 DR 给其他路由器发送 LSU 的多播地址是 224.0.0.5
LSA
的顺序号:
1.
每一个记录在链路状态数据库中的 LSA 都包含一个顺序号;
2.
顺序号是一个 4byte 的数字从 0X80000001 0X7fffffff ;(如果到达最大号,网络可能会出现短暂的波动。也是*** OSPF 网络的一个方法)
3.
OSPF LSA 在每隔 30 分钟回洪泛一次,来同步数据库信息。每次都将顺序号增加一;
4.
当同时收到两个 LSA 时,通过顺序号的高低来判断版信息的新旧;

第三部分 OSPF 的基本配置(单区域)
Router(config)#router
ospf process-id
Router(config-router)#network address inverse-mask area [area-id]
Router#show ip route
ospf (显示所有通过 ospf 学习到的路由)
Router#show ip
ospf interface (显示 ospf router ID area ID ,邻接关系等信息)
Router#show
ospf ( 显示 ospf router ID ,计时器等信息 )
Router#show
ospf neighbors [detail] (显示 ospf 邻居信息,包括 DR BDR 的信息)
OSPF Router ID
1.
路由器了解 OSPF 网络是通过 Router ID 的;
2.
链路状态数据库是使用 Router ID 来区分的;
3.
默认的情况下, Router ID 是使用在启用 OSPF 进程时路由器上活跃端口中 IP 地址最大的 IP 地址作为 Router ID 的;
4.
如果在路由器上设置了 loopback 端口,则由启用 OSPF 进程时路由器上活跃 loopback 端口中 IP 地址最大的 IP 地址作为 Router ID 的;
5.
可以使用 router-id 这个命令来更改 OSPF Router ID