OSPF动态路由
Contents
1.什么是动态路由协议
1.动态路由协议可以建立路由表,维护路由信息,选择最佳路径。
2.动态路由协议可以自动适应网络状态的变化,自动维护路由信息而不需要网络管理员的参与。
3.动态路由协议由于需要相互交换路由信息,因而占用网络带宽与系统资源,安全性不如静态路由。在有冗余连接的复杂网络环境中,适合采用动态路由协议。
4.在动态路由协议中,目的网络是否可达取决于网络状态。
关键词:计算最短路径、自适应、占用带宽、复杂网络、安全性不如静态路由
2.动态路由协议分类
1.按工作机制及算法分类
(1)距离矢量路由协议采用距离矢量算法的每个路由器和它直连的邻居之间周期性的交换整张路由表。距离矢量路由协议有RIP、BGP等。
(2)链路状态路由协议采用链路状态(Link State,LS)算法,通过链路状态生成路由表,链路状态路由协议有OSPF、IS-IS等。
2. 按工作区域分类
(1)域内路由协议(Interior Gateway Protocol,IGP)负责一个自治系统内部路由的路由协议,域内路由协议有RIP、OSPF、IS-IS等。
(2)域间路由协议(Exterior Gateway Protocol,EGP)负责在自治系统之间或域间完成路由和可到达信息的交互,主要用于传递路由,域间路由协议有EGP、BGP。
关键词:矢量距离路由协议(RIP、BGP)、链路状态路由协议(OSPF、IS-IS)、域内路由协议(RIP、OSPF、IS-IS)、域间路由协议(EGP、BGP)
3.OSPF路由协议的概述
OSPF协议通过链路状态数据库通过最短路径优先算法计算到各个网段的最短路径。
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议。运行OSPF协议的路由器(OSPF路由器)之间交互的是链路状态(Link State,LS)信息,而不是直接交互路由。
OSPF路由器将网络中的链路状态信息收集起来,存储在LSDB(链路状态数据库)中。网络中的路由器都有相同的链路状态数据库,也就是相同的网络拓扑结构。
每台OSPF路由器都采用SPF(最短路径优先)算法计算达到各个网段的最短路径,并将这些最短路径形成的路由加载到路由表中。
关键词:链路状态、链路状态数据库、最短路径、路由表
4.OSPF协议主要优点
(1)OSPF支持可变长子网掩码(Variable Length Subnet Mask,VLSM)和手工路由汇总。
(2)OSPF 协议的能够避免路由环路。每个路由器通过链路状态数据库使用最短路径的算法,这样不会产生环路。
(3)OSPF收敛速度快。能够在最短的时间内将路由变化传递到整个自治系统。
(4)OSPF 适合在大范围的网络。OSPF 协议当中对于路由的跳数,它是没有限制的。提出区域划分的概念,多区域的设计使得OSPF能够支持更大规模的网络。
(5)以开销作为度量值.OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF 选路主要基于带宽因素。
关键词:可变子网掩码、避免环路、收敛速度快、适合大范围网络、跳数无限制、选路基于带宽因素
#路由器计算的最短路径
每个路由器都利用最短路径优先算法的计算出以自己为根的、无环路的、拥有最短路径的一棵树。

#生成路由表
由链路状态表计算到各个网段的路由。

5.OSPF相关术语
(1)Router-ID
网络中运行OSPF协议的路由器都要有一个唯一的标识,这就是Router-ID。Router-ID使用IP地址的形式来表示,确定Router-ID的方法为以下方式。
手工指定Router-ID。
路由器上活动Loopback接口中最大的IP地址,也就是数字最大的IP地址,如C类地址优先于B类地址,一个非活动接口的IP地址是不能用作Router-ID的。
如果没有活动的Loopback接口,则选择活动物理接口中最大的IP地址。
在实际项目中,通常会通过手工配置方式为设备指定Router-ID。通常的做法是将Route-ID配置为与该设备某个接口(通常为Loopback接口)的IP地址一致。
关键词:最大的IP地址、手工指定
(2)度量值
OSPF使用Cost(开销)作为路由的度量值。每个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值= (100Mbit/s)/接口带宽 。其中100Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
从公式可以看出,OSPF协议选择最佳路径的标准是带宽,带宽越高,计算出来的开销越低。到达目标网络的各条链路中累计开销最低的,就是最佳路径。
关键词:开销、Cost值= (100Mbit/s)/接口带宽

(3)链路(Link)
链路是路由器上的接口,这里指运行在OSPF进程下的接口。
关键词:接口
(4)链路状态(Link-State)
链路状态就是OSPF接口的描述信息,例如接口的IP地址、子网掩码、网络类型、开销值等,OSPF路由器之间交换的并不是路由表,而是链路状态。
关键词:OSPF接口的描述信息
(5)邻居(Neighbor)
同一个网段上的路由器可以成为邻居。通过Hello报文发现邻居,Hello 报文使用IP多播方式在每个端口定期发送。路由器一旦在其相邻路由器的Hello 报文中发现他们自己,则他们就成为邻居关系了,在这种方式中,需要通信的双方确认。
关键词:hello报文、确认
(6)邻接状态
邻接状态是相邻路由器交互数据库描述、链路状态请求、链路状态更新、链路状态确认报文完成后,两端设备的链路状态数据库完全相同,进入到邻接状态。
关键词:数据库完全相同
6.OSPF工作过程
运行OSPF协议的路由器有3张表,分别是邻居表、链路状态表(链路状态数据库)和路由表。

关键词:生成邻居表、建立链路状态表(链路状态数据库)、计算最短路径(生成路由表)
7.OSPF报文类型
OSPF共有5种报文类型。
类型1:问候(Hello)数据包,用于发现与维持邻居。
类型2:数据库描述(Database Description,DD)数据包,向邻居给出自己的链路状态数据库中所有链路状态项目的摘要信息,摘要信息是链路状态表中所有路由器(Router-ID)。
类型3:链路状态请求(Link State Request,LSR)数据包,向对方请求某缺少的某个路由器相关的链路状态的详细信息。
类型4:链路状态更新(Link State Update,LSU)数据包,发送详细的链路状态信息。路由器使用这种数据包将其链路状态通知给相邻路由器。在OSPF中,只有LSU需要显示确认。
类型5:链路状态确认(Link State Acknowledgement,LSAck)数据包,对LSU做确认。
关键词:发现、交换身份信息、请求自身没有的信息、把自身变化告诉相邻路由(相邻扩散)、链路状态确认
8.OSPF定义的网络类型
OSPF网络类型是一个非常重要的接口变量,这个变量将影响OSPF在接口上的操作,例如采用什么方式发送OSPF协议报文,以及是否需要选举指定路由器、备份的指定路由器等。接口默认的OSPF网络类型取决于接口所使用的数据链路层封装。
OSPF定义了四种网络类型。
点到点网络(Point to Point, P2P )
广播型网络(Broadcast,也就是Broadcast Multi- Access,BMA)
非广播多路访问网络(Non-Broadcast Multiple Access,NBMA)
点到多点网络(Point to Multiple Point,P2MP)
关键词:点到点网络(P2P)、广播型网络(BMA)、非广播多路访问网络(NBMA)、点到多点网络(P2MP)
9.P2P网络和Broadcast网络
P2P指的是在一段链路上只能连接两台网络设备的环境,如图(a)所示。典型的例子是PPP链路,当接口采用PPP封装时,OSPF在该接口上采用缺省网络类型为P2P。
BMA也被成为Broadcast,如图(b)所示,指的是一个允许多台设备接入的、支持广播的环境。典型的例子是以太网。

NBMA指的是一个允许多台网络设备接入且不支持广播的环境,如图(a)所示,典型的例子是帧中继(Frame Relay)网络。
P2MP相当于将多条P2P链路的一端进行捆绑得到的网络,如图(b)所示,该类型必须由其他网络类型手动更改。

10.DR和BDR
多路访问网(Multi-Access,MA)有两种类型:广播型多路访问网络(BMA)和非广播型多路访问网络(NBMA)。
以太网(Ethernet)是一种典型的广播型多路访问网络。
在MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会致使网络中存在过多的OSPF邻接关系,如图所示,增加设备负担,也增加了网络中泛洪的OSPF报文数量。当拓扑出现变更时,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的损耗。

优化MA网络中OSPF邻接关系,OSPF指定了三种OSPF路由器身份.
指定路由器(Designated Router,DR)
备用指定路由器(Backup Designated Router,BDR)
DRother路由器。
OSPF协议只允许DR、BDR与DRother建立邻接关系。
DRother之间不会建立邻接关系,双方停滞在two-way状态。
BDR会监控DR的状态,并在当前DR发生故障时接替其角色。
只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
设计的考虑是让DR或BDR成为信息交换的中心,路由器首先与DR、BDR交换更新信息,然后DR将这些更新信息转发给该网段上的其他路由器。
图中R3路由器和R1和R2是邻接关系,有R1、R2、R4、R5四个邻居。

#DR和BDR的选举机制
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router-ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选举资格。
如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
关键词:优先级、只有在广播或NBMA类型接口才会选举DR、在点到点或点到多点类型的接口上不需要选举DR
DR和BDR的角色是针对接口所在的网络
DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DRother。
如图所示R4在网络1中选举为DR,在网络2中选举为BDR。

邻居和邻接关系
邻居不一定有邻接关系。
如果两个路由器通过以太网接口直接相连,可以人工将这两个路由器的以太网接口指定成P2P类型,这样就不会有DR和BDR的选举了。
点到点链路和邻居形成邻接关系。

关键词:P2P
11.OSPF的三张表
OSPF邻居表
OSPF在传递链路状态信息之前,需要建立邻居关系。使用display ospf peer查看邻居表。
LSDB表
运行链路状态路由协议的路由器在网络中泛洪链路状态信息。在OSPF中,这些信息被称为LSA,LSDB会保存自己产生的以及从邻居收到的LSA信息,因此LSDB可以当作是路由器对网络的完整认知。华为设备上查看设备的LSDB的命令是display ospf lsdb。
OSPF路由表
OSPF根据LSDB中的数据,运行SPF算法并且得到一棵以自己为根的、无环的最短路径树。基于这棵树,OSPF能够发现到达网络中各个网段的最佳路径,从而得到路由信息并将其加载到OSPF路由表中。华为设备上查看设备的OSPF路由表的命令是display ospf routing。
12.OSPF区域
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,叫作区域(area)。
划分区域的好处,就是可以把洪泛法交换链路状态信息的范围局控制在一个区域而不是整个自治系统,这就减少了整个网络上的通信量,减小链路状态数据库LSDB大小、提高网络的可扩展性、达到快速收敛。
一个区域内部的路由器只需要知道本区域的完整网络拓扑,而不需要知道其他区域的网络拓扑情况。为了使一个区域能够和本区域以外的区域进行通信,OSPF使用层次结构的区域划分。
关键词:范围太大计算不过来
图中画出了有3个区域的自治系统(Autonomous System,AS)。每一个区域都有一个32位的区域标识符(用点分十进制表示)。一个区域的规模不能太大,区域内的路由器最好不超过200个。

关键词:区域内的路由器最好不超过200个
区域和区域边界路由器
当网络中包含多个区域时,OSPF协议有特殊的规定,即其中必须有一个Area 0,通常也叫作骨干区域(Backbone Area)。当设计 OSPF 网络时,一个很好的方法就是从骨干区域开始,然后再扩展到其他区域。
骨干区域的标识符规定为0.0.0.0。骨干区域的作用是连通其他下层的区域。从其他区域发来的信息都由区域边界路由器(Area Border Router,ABR)进行路由汇总。
每一个区域至少应当有一个区域边界路由器。骨干区域内的路由器叫作骨干路由器(Backbone Router)。
骨干区域内还要有一个路由器专门和本自治系统外的其他自治系统交换路由信息,这样的路由器叫作自治系统边界路由器(Autonomous System Boundary Router,ASBR)。
关键词:骨干区域、区域边界路由、自制系统边界路由器
13.OSPF的工作过程
OSPF是链路状态协议,运行OSPF协议的路由器必须有唯一的Router-ID,发现邻居-》交换链路状态-》计算路由表。
在运行OSPF的以太网接中的路由器要选出DR和BDR,OSPF协议只允许DR、BDR与DRother建立邻接关系,DRother之间不会建立邻接关系。
OSPF支持多区域,OSPF的区域和IP地址规划相结合,一个区域包含的网段最好能够在区域边界路由器上进行路由汇总。
OSPF划分多个区域后,某一区域的链路状态发生变化,只会影响本区域的链路状态数据库的更新,不会波及其他区域的链路状态数据库。
关键词:区域内变化只影响本区域