第6章 静态路由和动态路由(4)_OSPF动态路由协议

6. OSPF动态路由协议

6.1 OSPF协议(Open Shortest Path First,OSPF开放式最短路径优先协议

(1)通过路由器之间通告链路的状态来建立链路状态数据库,网络中所有的路由器具有相同的链路状态数据库,通过该数据库构建出网络拓扑。

(2)运行OSPF协议的路由器通过网络拓扑计算到各个网络的最短路径(开销最小的路径),路由器使用这些最短路径来构造路由表。

6.2 OSPF术语

(1)Router-ID:每一台OSPF路由器只有一个Router-ID,使用IP地址的形式来表示,该ID可以手工指定或路由器上活动Loopback接口中最大的IP地址,如C类地址优先于B类地址,注意非活动接口的IP地址不能被用作Router-ID。如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。

(2)开销(Cost)

  ①OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。用Metric(度量值)来表示开销,如10Mb/s接口(10 000 000),其Metric=100 000 000/10 000 000 = 10。其中的分子是个固定值。

  ②OSPF路由器计算到目标网络的Metric值,必须将沿途所有接口的Cost值累加起来,但只累加出接口,不计算进接口。

  ③OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值手工指定的值优先于自动计算的值。如果到目标网络Cost值相同,会执行负载均衡,最多有6条链路同时执行负载均衡。

(3)链路(Link):运行在OSPF进程下的路由器接口。

(4)链路状态(Link-State,LSA):即OSPF接口上的描述信息。如接口的IP地址、子网掩码、网络类型、Cost值等等。OSPF路由器之间交换的并不是路由表,而是链路状态。

(5)邻居(Neighbor)

  ①要想在OSPF路由器之间交换LSA,必须先形成OSPF邻居。只有邻居才会交换LSA,路由器将链路状态数据库中所有的内容毫不保留地发给所有邻居

  ②OSPF靠周期性地发送Hello包来建立和维护。当超过4倍的Hello时间,也就是Dead时间过后还没收到邻居的Hello包,邻居关系将被断开。

6.3 OSPF协议工作过程

 

(1)邻居表的建立

  ①当R1路由器刚开始工作时,接口状态为down state,然后R1发送一个 Hello包,状态变为init state,等收到R2路由器发送来的Hello数据包,看到自己的ID出现在其应答的邻居表中,就建立了邻接关系,将其状态改为双向(two-way state)。

  ②OSPF规定,每两个相邻路由器每隔10秒要交换一次问候数据包这样就能确定哪些邻站是可达的若40秒钟没收到某相邻路由器发来的问候数据包,则可认为该相邻路由器不可到达,应立即修改链路状态数据库,并重新计算路由表。

  ③路由器通过发送Hello得知哪些相邻路由器在工作,以及将数据发往相邻路由器所需的“代价”,生成“邻居表”。

(2)拓扑表的建立

  ①交换状态:OSPF让每一个路由器相邻路由器交换己有的链路状态摘要信息

  ②加载状态:经过与相邻路由器交换摘要信息后,路由器就使用链路状态请求数据包向对方请求发送自己所缺少的某些链路状态项目的详细信息。经过一系列的分组交换,全网同步的链路数据库就建立了。

  ③完全邻接状态:邻居间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断

(3)生成路由表

  ①每个路由器按照产生的全区域数据拓扑图,再运行最短路径算法,产生到目标网段的路由条目

  ②在网络运行中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新数据包,用洪泛法向全网更新链路状态。(洪泛法指的是路由器通过所有输出端口向所有相邻的路由器发送消息。而每一个相邻路由器又再将此消息发往其所有的相邻路由器(但不再发送给刚刚发来消息的那个路由器)。这样,最终整个区域中所有的路由器都得到这个消息的一个副本,所以OSPF总是比RIP收敛更快,也没有RIP那种“坏消息传播得慢”的问题。)

6.4 OSPF的5种报文

(1)问候数据包(hello包):发现并建立邻接关系。

(2)数据库描述数据包:向邻居给出自己的链路状态数据库中的所有链路状态项目的摘要信息

(3)链路状态请求(LSR)数据包:向对方请求某些链路状态项目的完整信息

(4)链路状态更新(LSU)数据包:用洪泛法对全网更新链路状态。这种数据包是OSPF协议最核心的部分,也是最复杂的数据包。

(5)链路状态确认(LSAck):对LSU做确认

6.4 配置OSPF单区域

(1)配置OSPF协议(以R1路由器为例)

  ①R1(config)#router ospf 1  //1表示给ospf进程指定一个进程编号

  ②R1(config-router)#network 192.168.0.0 0.0.255.255 area 0,network的作用是为本路由器的OSPF进程指定网络范围,路由器R1的三个接口都属于192.168.0.0/16这个网段,可以合并,但注意使用的是反转掩码。

(2)查看OSPF协议的三张表

  ①显示邻居信息:R1#show ip ospf neighbor (注意NeighborID就是邻居路由的ID。FULL状态表示路由器与其他邻居处于完全邻接状态)

  ②显示邻居详细信息:R1#show ip ospf neighbor detail

  ③显示链路状态数据库:R1#show ip ospf database(其中的ADV Router表示通告链路状态的路由器)

  ④查看完全的链路状态数据库:R1#show ip ospf database router(每条链路状态包括自己与哪个路由器直连,以及自己连接着哪些网段)

  ⑤查看路由表:R1#show ip route或R1#show ip route ospf(只显示OSPF生成的路由表)

 

(3)监控OSPF协议的活动

  ①R1#debug ip ospf ? //查看能诊断的事件

  ②R1#debug ip ospf hello //显示hello数据包的活动(采用多播地址224.0.0.5)

  ③R1#debug ip ospf flood //洪泛数据包跟踪,显示链路状态更新(LSU)数据包的发送和接收。

  ④R1#undebug all  //关闭诊断

(4)验证OSPF协议的健壮性

  ①PC1> tracer 192.168.3.2 //通过R1→R2→R3

  ②断开R1和R2之间的链路,再次PC1> tracer 192.168.3.2 //通过R1→R4→R5→R6

6.5 OSPF多区域

(1)自治系统与OSPF区域

 

  ①因特网的规模非常大,有成千上万的路由设备的互连在一起。如果让所有的路由器知道所有网络怎样到达,则路由表将非常大

  ②许多单位不愿外界了解自己单位网络的布局细节以及本部门所采用的路由选择协议。

  ③划分区域的好处就是利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统。在一个区域内部的路由器只需要知道本区域的完整网络拓扑,而不需要知道其他区域的网络拓扑。

  ④OSPF使用层次结构的区域划分,在上层的区域叫主干区域(标识符为0.0.0.0),其作用是连通其下层的区域。从其他区域来的信息都由区域边界路由器进行概括(路由汇总)(如上图主干路由器有R1、R2、R3,自治系统边界路由器有R3,区域边界路由器有R4和R5)

(2)两大类路由选择协议

  ①内部网关协议(IGP):即在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么协议无关。目前主要使用RIP和OSPF协议

  ②外部网关协议(EGP):负责在不同的自治系统间进行路由选择协议(不同的自治系统可能使用不同的内部网关协议)。目前使用最多的外部网关协议是BGPv4协议。

(3)OSPF多区域

 

  ①RouterA上启用和配置OSPF协议

//RouterA路由器
RouterA#conf t
RouterA(config)#router ospf 1
RouterA(config-router)#network 40.0.0.0 0.0.0.255 area 0

  ②RouterB上启用和配置OSPF协议

//RouterB路由器
RouterB#conf t
RouterB(config)#router ospf 1
RouterB(config-router)#network 40.0.0.0 0.0.255.255 area 0
//将area1汇总成1条通告给area0
RouterB(config-router)#network 40.1.0.0 0.0.255.255 area 1

  ③RouterC上启用和配置OSPF协议

//RouterC路由器
RouterC#conf t
RouterC(config)#router ospf 1
RouterC(config-router)#network 40.0.0.0 0.0.255.255 area 0
//将area2汇总成1条通告给area0
RouterC(config-router)#network 40.2.0.0 0.0.255.255 area 2

  ④RouterD、RouterE和RouterF上启用和配置OSPF协议

//RouterD路由器
RouterD#conf t
RouterD(config)#router ospf 1
RouterD(config-router)#network 40.1.0.0 0.0.255.255 area 1

  ⑤RouterG、RouterH和RouterI上启用和配置OSPF协议

//RouterG路由器
RouterG#conf t
RouterG(config)#router ospf 1
RouterG(config-router)#network 40.2.0.0 0.0.255.255 area 2
原文地址:https://www.cnblogs.com/5iedu/p/7095041.html