理解OSPF router-id的概念
学会查看OSPF的三张表
理解OSPF路由Cost的概念及作用
熟悉OSPF的五种报文及功能
理解OSPF网络类型的概念及意义
理解OSPF DR、BDR的概念及意义
理解OSPF区域的概念,以及区域划分的意义,并熟悉多区域OSPF部署的注意事项
OSPF协议的原理和配置
开放式最短路径优先协议是一种典型的链路状态路由协议,是目前业内最广发的IGP(内部网关协议)。OSPF支持VLSM(可变长子网掩码),支持路由汇总,区域概念的引入使ospf支持更大规模的网络。
3.1.1Router-ID
路由器标识是一个32bit长度的数值,使用点分十进制的形式表现(与ip地址一样),用在OSPF域(Domain)中唯一地标识一台OSPF路由器、且全域唯一。
可以手工配置,如没有,则系统会自动选择设备上的一个IP地址作为Router-ID。华为路由器如果没有手工指定,则路由器将为该进程分配一个缺省Router-ID。强烈建议手工配置Router-ID,常见的做法是将设备的OSPF Router—ID指定为该设备的Loopback接口的IP地址
注:windows系统和linux系统也支持Loopback接口。
一旦OSPF确定了Router—ID,之后变更需要将OSPF进程重启才能使用新的Router-ID,重启命令为:reset ospf process 谨慎使用,该ospf进程的所有邻接关系将重置,引发路由震荡
3.1.2OSPF的三张表
一:邻居表(peer table)
在交互链路状态通告之前,两台直连路由需建立OSPF邻居关系。接口激活OSPF之后,将周期性的发送hello报文,同时也侦听hello报文,从而发现直连链路上的邻居。发现之后,将邻居信息写入邻居表,随后邻接关系建立的过程也就开始了。
每台OSPF路由器都与其邻居建立会话,每个会话都使用一个"邻居数据结构”来描述,这些数据结构是与路由器的接口相关联的,他们描述了这个邻居的状态,主从关系,Router-ID、DR优先级,接口IP地址等信息
二:链路状态数据库(link-state database,LSDB)
运行链路状态路由协议的路由器在网络中泛红链路状态信息,在OSPF中,这些信息被称为LSA(link-state advertisement,链路状态通告),路由器将网络中的LSA搜集后装载到自己的LSDB中,因此LSDB可以当作是路由器对网络的完整认知。OSPF定义了多种类型的LSA,这些LSA都有各自的用途,最终目的都是为了让路由器知晓网络的拓扑结构及网段信息并计算出最短路径树。
三:OSPF路由表(Routing Table)
根据LSDB中的数据,运行SPF算法并且得到一棵以自己为根的、无环的最短路径树,基于这颗树,发现最佳路径,从而得到路由信息并将其加载到OSPF路由表中。
3.1.3度量值
每种协议对路由度量值规定是不同的,OSPF使用Cost作为路由度量值。开销可理解为成本或代价,Cost越小,路径越优。每个激活OSPF的接口都拥有一个接口级别的Cost值。
3.1.4报文类型及格式
OSPF协议基于IP运行,数据报文直接用IP封装,在IP报头中对应的协议号为89。
使用的组播地址:224.0.0.5 指所有的OSPF路由器和 24.0.0.6指所有的OSPF DR路由器
Hello:发现直连链路的ospf邻居,以及维护ospf邻居关系。携带着用于OSPF邻居关系建立的各种参数
网络掩码:激活OSPF之后开始发送Hello报文,该字段填充的是网络掩码,两台路由器如果通过以太网发送报文,则双方直连接口必须配置相同的网络掩码。
Hello间隔:直连路由器建立OSPF邻居关系,需要确保接口的Hello Interval相同,缺省情况OSPF路由器在P2P或Broadcasts上的Hello间隔为10s,在NBMA及P2MP类型上接口为30s。
可选项:一共8bit,每个bit位都用于指示某个特性。
路由器优先级:也叫DR优先级,用于DR、BDR的选举。华为缺省DR优先级为1。
路由器失效时间:在邻居路由器被视为无效前,需等待收到对方Hello报文时间。与Hello时间一样,需确保双方直连接口的router dead interval 相同。缺省下失效时间是hello的4倍
指定路由器:网络中DR的接口IP地址。如果该字段值为0.0.0.0则表示没有DR或尚未选举出来
备份制定路由器:网络中BDR的接口IP地址。如果该值为0.0.0.0同上
邻居:在直连连路发现有效邻居,此处写的是邻居的router-id,如果是多个邻居,则为多个邻居字段
DD:描述LSDB,该报文携带的是LSDB内LSA的头部数据
使用DD报文描述自己的LSDB之前需协商主从,router-id更大的路由器成为master,但不包含任何的LSA信息,可理解为空的DD报文
主从关系确定后,开始用DD描述各自的LSDB。路由器可使用多个DD报文来描述LSDB,为确保DD报文传输的有序和可靠,DD序列号字段就是关键。
接口最大传输单元:接口的MTU。缺省接口发送dd报文中,无论接口实际的MTU值是多少,该字段值都是0
可选项:路由器支持的OSPF可选项
I位:即初始化位,当该DD报文用于协商主从路由器时,比特位为1,选举完毕为0
M位:比特位为1表示后面还有更多的DD报文
MS位:
LSR:用于向OSPF邻居请求LSA
LSU:用于发送LSA,该报文中携带的是完整的LSA数据。
LSAck:设备收到LSU后,用于对接受的LSA进行确认
启用OSPF之后会发送Hello报文,发现邻居后,邻居关系建立就开始了,在这个过程中,DD报文用于发送LSA的头部摘要。DD报文发送LSA的头部摘要,通过DD报文的交互,路由器知道了对方所拥有的LSA,而LSR用于向对方请求完整的LSA。LSU用于对LSR的回应或主动更新LSA,且承载这完整的LSA数据。LSAck用于保证OSPF更新机制的可靠性。hello报文还维护邻居关系,直连路由形成邻接关系后,依然周期性发送Hello报文,告知对方自己存活情况。
3.1.7DR与BDR的概念
多路访问网络指的是在同一个共享介质中连接多个设备的网络,在这个网络中任何设备能够直接进行二层通信。多路访问有两种,一是广播型多路访问如以太网,二是非广播型多路访问网络如帧中继。广播的典型示例是一台以太网交换机链接多台路由器,这些路由器的接口具备从这个网络访问其他路由器的能力,若一个广播数据发出,则整个网路中的路由器都会收到。
在帧中继中,多台路由器同样可以通过帧中继链路构建一个MA网络,但不支持广播。
假设在BMA中,路由器的接口都配置同一个网段的IP地址。组播Hello报文立即在网络中交互,如果接口两两建立邻接关系,这就意味这网络中有n(n-1)/2个邻接关系。维护如此多的邻接关系消耗设备资源,也增加了网络中LSA的泛洪数量。为优化,OSPF会在没一个MA网络中选举一个DR(Designate Router,指定路由器)和一个BDR(Backup Designate Router,备份指定路由器)
既不是DR又不是BDR的路由器为DROther,MA网络中的所有DROther都只和DR以及BDR建立OSPF邻接关系,BDR也和DR建立邻接关系,而DROther之间只停留在2-Way状态。
DR在网络中的LSDB同步起关键作用,它负责侦听网络中的拓扑变更信息并将信息通知给其他路由器。它为网络生成Type-2 LSA,显示出连接在这个MA网络的所有OSPF路由器的Router-ID,包括DR自己。BDR监控DR状态,发生故障时接替DR。
DR、BDR选举是通过Hello报文实现的,选举过程发生在2-Way状态之后。路由器将自己接口的DR优先级填写在Hello报文的DR优先级字段中。DR不具备抢占性,当优先级相等,最大Router-ID将成为DR。除了DR,BDR选举与DR类似。
DR与BDR是接口级别的概念,严格讲是某台路由器的某个接口是这个MA网络中是DR。在一个MA网络中,DR负责确保接入该网络中的所有OSPF路由器拥有相同的LSDB,确保LSDB同步。DR使用组播目的IP地址224.0.0.5向网络发送LSU报文,所有OSPF路由器都会侦听这个目的IP地址,并与DR同步自己的LSDB。而DROther感知拓扑变化,向224.0.0.6发送LSU告知这个变化,DR与BDR会侦听这个组播地址。
3.1.8区域的概念及多区域部署
域与区域的关系类似城市与其下辖的行政区的关系。
OSPF的没一个区域都有一个编号,区域编号也被称为区域ID(Area-ID)。OSPF的区域ID是一个32bit的非负数,类似与IP地址。
一个OSPF域中允许存在多个区域,每个域中都有一个骨干区域–Area0,OSPF要求域中所有非骨干区域与Area0相连。Area0负责在区域之间发布路由信息。为避免区域间路由形成环路,非骨干区域之间不允许直接相互发布区域间的路由,因此所有的ABR区域边界路由器都至少有一个接口属于Area0,所以Area0始终包含所有的ABR。
3.3.1路由汇总
一种是在ABR上,另一种是在ASBR上。
一:ABR:非骨干区域下挂载多个IP网段,通过ABR将非骨干区域的明细路由传输给骨干区域,随非骨干区域的网段数量增加,骨干区域的路由表将变得臃肿,此时可以在ABR上对区域内的路由进行汇总通告给Area0,这样骨干区域只会学习到汇总路由而不是明细路由。只要非骨干区域内这条汇总路由所涵盖的明细路由中有一条是有效的,ABR便会通搞Area0,而所有明细路由全部失效,ABR便不在会通告Area0。
二:ASBR:外部网络如果承载了大量路由信息,突然将所有路由引入OSPF是有巨大风险的。同样采取汇总的方式。
注:命令必须在ABR或ASBR上部署才会生效。
3.3.2Virtual Link
如果某个非骨干区域没有和Area0直连,LSA的泛洪就会有问题。
OSPF Virtual Link是虚拟的逻辑的链路,部署在两台OSPF路由器之间。当两台路由器通过Virtual Link尝试建立邻接关系后,两端的路由器会产生Type-1 LSA描述这条Virtual Link,在Type-1 LSA中,Virtual Link采用类型4的link来描述。
Virtual Link邻接关系建立后,两端依然会保持Hello报文的周期性发送,以便感知对端的存活。在配置Virtual Link时,命令指定的不是对端的某个接口的IP地址,而是对端路由器的Router-ID。其实对端两台路由器没有直连链路,而是两条物理路径,会选择Cost较小的为最优路径。Cost值由物理路径决定。
Type-5 LSA不会在Virtual Link上传播,否则可能造成LSA重复泛洪。
3.3.3默认路由
也被称为缺省路由,是目的网络地址和网络掩码都为0的路由。当去往某个目的网络找不到匹配的具体路由,如果设备的路由表存在默认路由,那么该设备使用默认路由转发数据。