Advertisement

链路状态路由协议-OSPF

阅读量:

open shortest Path Frist 开放路径优先

前言

基于链路状态,内部网关路由协议.

开放式最短路径优先(OSPF)

它从设计上就保证了无路由环路.触发更新快,能快速响应网络拓扑.能解决网络扩容问题.

OSPF原理介绍

ospf要求每一台ospf的路由器都必须知道链路的状态,然后通过计算来确定最短路径.这个OSPF的收敛过程就是链路状态公告LSA泛洪开始.它包括ip地址,mask,跳数,cost,下一跳和网络类型[OSPF常见的网络类型(【OSPF】OSPF的4种网络类型-博客)等,收到LSA的路由器会建立一个LSA数据库(LSDB),从在里面进行SPF算法,然后建立最短路径树.然后把最短路径树得到的目的路径,加入到IP路由表中.

OSPF报文

在IP报文中,协议号是89
有五种类型:
Hello报文:常见的报文,用于发现,维护邻居关系,并在广播和NBMA(非广播多路访问【OSPF】OSPF的4种网络类型-博客)网络类型中选举指定路由器DR和备份指定路由器BDR
DD(Date Description)报文:数据库描述,同步两个路由器的LSDB,内容包括库里面每一个LSA的头部(唯一)LSA的头部只在整体的一小部分
LSR(link state request)报文:两台数据库同步以后知道对方所缺少的,就会发送LSR里面就包含缺少LSA的简要内容.
LSU(link state update)报文:用来发送对方所需的LSA
LSACK(link state ack)报文:对LSU进行回复

邻居状态机

down:邻居的初始状态,表示在邻居时间失效前没有收到邻居的Hello数据包
Attempt(试图):次状态只在NBMA(非广播多访问网络)存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送Hello报文,发送周期是HelloInterval,如果间隔HelloInterval都没有收到邻居的Hello就变为dowm.
init:收到邻居的Hello报文,路由器发现邻居表项里面没有自己,尚未与邻居建立双向通信关系.
2-Way:在此状态下,双向通信已经建立,但没有与邻居建立邻里关系,这是建立邻接关系以前的最高链路描述.
ExStart:这是形成邻接关系的第一步,邻居状态变成此状态后路由器开始向邻居发送DD,但是这个时候DD只是初始状态,还没有对路由器LSDB里面链路状态描述.主从关系也是这个状态下形成的.
Exchange:这个状态的路由器互相发送DD
Loading:发送LSR请求LSA,发送LSU更新LSA.
FULL:LSBD更新完成.

Router ID,邻居和邻接

Router ID是一个32位的值,它唯一标识了一个自治系统内的路由器,管理员可以为OSPF的路由器手动配置一个Router ID,如果没有手动配置,设备就会按照以下规则自动选举Router ID:如果设备有逻辑接口地址就选择逻辑接口地址地址大的IP地址为Router ID,如果没有配置逻辑接口地址,就选用物理地址最大的IP地址为Router ID.在为一台OSPF的路由器配置新的Router ID后,可以在路由器上通过重置OSPF进程来更新Router ID.通常建议手动配置Router ID,以防因为接口变化而改变.
OSPF的路由器之间必须交换链路路由状态信息和路由信息,在交换之前会先建立邻接关系.
邻居:OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居.收到Hello报文OSPF路由会检查报文中所定义的一些参数,如果参数一致就会成为邻居关系,状态到达2-way即可成为.
邻接:形成邻居关系不一定能成为邻接关系.根据网络类型而定,只有当双方交换DD报文,并且同步了LSDB后,才会形成真正意义上的邻接关系.
本例中RTA链接了三个路由器,所以三个邻居,但是不能说是三个邻接.

邻居发现

Hello报文是用来发现和维护邻居的关系.
Hello报文字段解释:
1,Network Mask:发送Hello报文的接口的网络掩码.
2,Hello Interval:发送Hello报文的时间间隔,单位是秒.
3,Options:标识发送此OSPF路由器所支持的所选功能.
4,Router Priority:发送Hello报文接口的Router Priority,用于选举DR和BDR.
5,Router Dead Interval:失效时间.如果在此时间内没有收到邻居发送来的Hello报文,则认为邻居失效,单位为秒,一般是Router Interval时间的四倍.
6,Designated Router:发送Hello报文所选定出来的DR的IP地址.如果设置为0.0.0.0,表示未选举DR.
7,Backup Designated Router:发送Hello报文所选定出来的BDR的IP地址,如果设置为0.0.0.0,表示未选举BDR.
8,Neighbor:邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文.
如果本路由接受到的合法Hello报文邻居列表已经有自己的Router ID,则认为已经与邻居建立了双向链接,表示邻居关系已经建立.
怎么鉴别是否为合法Hello报文:
如果是广播型,点到多点型,NBMA(非广播多路访问),则要检查所接受到的Hello报文中Network Mask字段必须和本路由接受端口一致.如果是点对点,虚连接,则不必检查网络掩码.
所接受的Hello报文中Hello Interval,Router Dead Interval,Option字段中E-bit(表示是否接受外部路由信息)必须与接受端口配置一致.

数据库同步

路由器使用DD报文进行主从交换机的选举和数据库简要信息的交互
DD报文包含LSA的头部信息,用来描述LSDB的简要信息.
如图建立完成邻居关系后,开始进行数据库的同步:
邻居状态变成Exstart以后,RTA向RTB发送第一个DD报文,在这个报文中,DD的序列号被设置成X,RTA宣布自己为主路由器.RTB也向RTA发送DD报文,序列号是Y,宣布自己是主路由器.由于RTB大于RTA的Router ID,所以RTB为主路由器.
RTA发送一个新的DD报文,在这个新的报文中包含LSDB的简要信息,序列号设置成步骤二的RTB的序列号,从此RTB的状态变为Exchange.
邻居状态变成Exchange以后,RTB发送一个新的DD报文,里面包括LSDB的描述信息,DD的序列号为Y+1,RTA即使不发DD报文也应该发送一个确认的报文.所以向RTB发送了一个内容为空的DD报文,序列号为Y+1.
发送完最后一个DD报文之后,RTA将邻居状态改变为Loading;RTA收到最后一个报文后,就会改变状态为Full(假设RTB的LSDB是最新最全的,不必再向RTA请求更新).

建立完全邻接关系

LSR用于向对方请求所需的LSA
LSU用于发送对方其所需要的LSA.
LSACK用于向对方发送收到LSA的确认

邻居状态变为Loading之后,RTA开始向RTB发送请求LSR,请求这些再Exchange状态下通过DD报文发现的,而且本地的LSDB没有的链路信息状态.
RTB收到LSR后,向RTA发送LSU,在这个报文中被请求的链路状态的详细信息,RTA接收到LSU后,状态由Loading变为FULL.
RTA向RTB发送LSACK,用于接受RTB发送过来的LSA.
此时RTA和RTB的邻居状态变成Full状态,表示完全邻接状态.

OSPF支持的网络类型

缺省状态下,OSPF会认为以太网是广播类型,PPP,HDLC的网络类型是点对点类型.
OSPF定义了四种类型,分别是点对点类型,广播类型,一点对多点类型,NBMA类型网络.
点对点类型网络指只把两台路由器直连的网络类型,一个PPP的64K串行线路就是一个点对点类型的网络
广播型就是支持两台及以上的路由器,并具备广播能力的网络.一台含有三台路由得以太网就是一个广播型网络例子.

OSPF支持的网络类型

缺省情况下,OSPF认为帧中继,ATM的网络类型是NBMA.
OSPF可以在不支持支持广播的多路访问网络,此网络包括在hub-spoke拓扑上的帧中继和异步传输模式网络,这些网络通信依赖虚电路.OSPF定义两种支持多路访问的网络类型:非广播多路访问网络和点到多点网络.在NBMA网络上OSPF模拟在广播型网络上的操作,但是每个路由器都需要路由器的邻居手动配置.NBMA要求网络路由器全连接.
P2MP:将整个网络看成一组点到点网络.对于不能组成全连接的网络应当使用点到多点方式.例如只使用PVC的不完全链接的帧中继网络.

Hub-Spoke拓扑:是一种常见的网络结构,其中有一个或多个中心节点(Hub)与多个边缘节点(Spoke)相连.在这种结构种,数据通常通过Hub节点进行转发,而不是直接在Spoke节点之间传输.适用于大量数据集中处理和转发的场景.
帧中继(FR)网络:它是用于远程局域网络链接的二层数据通信协议.它通过数据链路层封装数据帧,并通过虚电路(VC)在网络中传播这些帧来实现通信.在帧中继网络中,虚电路是链接两个或多个节点的逻辑通道.这些通道在物理上可能并不直接链接,但是通过帧中继的交换机的转发功能,可以实现数据帧在节点之间的传输.每个Spoke节点都通过一条或多条虚电路与Hub节点相连.
异步传输模式(ATM)网络:使用固定大小的信元来传输数据,这些信源通过虚连接(VC)在网络中传输.

DR&BDR

DR可以可以减少广播型网络中的邻接关系的数量
每个含有至少两个路由器的NBMA和广播型都有一个DR和BDR.
DR和BDR可以减少邻居关系,链路信息交换次数,节省带宽,降低对路由处理能力的压力.一个既不是DR与不是BDR的路由器只需要与BDR和DR建立邻接关系并交换链路信息,减少广播型和NBMA型的邻接关系.在没有DR的网络中,邻接关系数量有n(n-1)/2计算出,n是OSPF的接口数量.当指定DR是就会在减去(n-2)(n-3)/2.所有路由器就会与DR建立邻接关系,并成为网络中心.
BDR会在DR发生故障时接管业务,一个广播网络的所有路由器都会与形成邻接关系.本例邻接关系由6减成5,RTA和RTB为邻居关系.
但是数量变多就不会这样.

DR&BDR选举

DR是基于DR端口的优先级值进行选举的.
在邻居发现完成后,路由器会根据网络类型进行选举DR,在广播和NBMA网络上,路由器会根据选举的每个优先级进行DR选举.优先级取值范围是0~255,值越大越优先被选举成DR.
为了给DR做备份,每个广播和NBMA网络上还要选举一个BDR.BDR也会和其他路由器形成邻接关系,为维持网络上邻接关系的稳定性,如果网络中已经有了DR和BDR就不会再次选举了,即使新来的路由器优先级很高.如果DR发生故障,当前的BDR成为DR,重新选举BDR.如果BDR发生故障则DR不动,BDR重新选举.都是为了稳定性.

OSPF区域

每个区域都维护一个独立的LSDB.
Area 0是骨干区域,与其他区域必须相连.
OSPF支持将一个网段组合在一起,这样的一个组合成为一个领域.
这样可以减少LSDB的规模,也能减少流量.
区域内的网络拓扑信息不会向其他区域发送(所以LSDB的规格被大幅减少),区域间传递的是抽象路由信息,而不是详细的描述拓扑结构的链路状态信息.每个区域都有一个不同的LSDB,并且维护自己区域单独的LSDB.
Area 0为骨干网区域,为了避免路由器环路,非骨干区域之间不能直接通信,因此每个区域都要链接骨区域.在这之间的路由器是区域边界路由器ABR,它链接全部的LSDB.自治系统边界路由器ASBR,是指与其他AS中的路由器交换信息的路由器,这种路由器会整个AS通告AS外部信息.
在小型企业中,可以把所有的路由器都放在一个区域中,同一个OSPF区域中路由器的LSDB是完全相同的.OSPF区域号是可以手动配置的,为了以后的网络拓展, 推荐区域号设置为0,及骨干网.

OSPF开销

OSPF的开销计算公式为带宽参考值/带宽.
可以通过bandwidth-reference命令来设置带宽参考值.
带宽参考值是可以手动配置的,缺省是100Mbit/s从此,64kbit/s串口的开销为1562,一个E1接口时(2.048Mbit/s)的开销为48.
带宽参考值越大,开销越准确.推荐将带宽参考值提高到10000Mbit/s就会分别为10Gbit/s,1Gbit/s和100Mbit/s的链路提供1,10,100的开销.注意配置带宽参考值时,需要在整个OSPF网络中统一进行调整.
可以手动为一个OSPF的接口调整一个开销值,范围为1~65535,缺省是1.

OSPF配置

ospf[process id]使能OSPF,可以配置进程ID,缺省值为1
命令network用于指定OSPF协议接口,该命令需要指定一个反掩码,0为严格匹配,1为任意值.

匹配验证

disp ospf peer可以用于查看邻居相关属性,包括区域,邻居状态,邻接协商的主从状态以及DR和BDR.

OSPF认证

OSPF支持简单认证和加密认证功能.ospf的认证可以配置在接口或者区域上,配置接口认证方式的优先级大于配置区域认证方式.
ospf authenticationcation-mode{simple[[plain]|cipher]|null}命令来配置简单认证,参数simple表示明文传输密码,plain表示密码以明文形式存放在设备中,cipher表示密码以密文的方式储存在设备里.,参数null表示不认证.
命令ospf authentication-mode{md5|hmac}[key-id{plain|[cipher}]用于配置加密认证,MD5是一种链路认证安全加密算法,key-id表示接口加密认证中认证密钥ID,必须与对端的key-id一致.

配置验证

debugging ospf packet命令用来指定调试的ospf报文.

本章总结

1,表示死亡间隔,在此时间中没有收到邻居发来的Hello报文,则认为邻居失效.一般是间隔的4倍时间40秒(缺省时间是10秒)
2,在组播地址224.0.06来接收更新的报文

全部评论 (0)

还没有任何评论哟~