4.4 链路状态路由协议-OSPF

2016年4月16日 0 条评论 1.79k 次阅读 0 人点赞

[v_error]开放式最短路径优先OSPF(Open System Path Fist)协议[/v_error]
由IETF定义的一种基于链路状态的内部网关协议。
• OSPF(Open Shortest Path First,开放最短路径优先)是典型的链路状态路由协议,
是目前业内使用最广泛的IGP(内部网关协议Interior Gateway Protocol)之一; 
• 无环路;
• 收敛快;
• 扩展性好,多区域的设计使得OSPF能够支持更大规模的网络。
• 路由器之间交互的是链路状态信息,而不是直接交互路由;
• 每台OSPF路由器都知晓网络拓扑结构,采用SPF算法计算达到目的地的最短路径;
• 支持VLSM,支持手工路由汇总; 

OSPF 从设计上就保证了无路由环路。OSPF 支持区域划分,区域内部的路由器使用SPF 最短路径算法保证了区域内部的无环路。OSPF 还利用区域间的连接规则保证了区域之间无路由环路。
OSPF 支持触发更新,能勾快速检测并通告自治系统内的拓扑变化。
OSPF 可以解决网络扩容带来的问题。当网络上的路由器越来越多,路由信息流量几句增长的时候,OSPF 可以将每个自治系统划分为多个区域,并限制每个区域的范围。这种分区特点,使得OSPF 特别适用于大中型网络。OSPF 还可以同其他协议(比如多协议标记切换协议MPLS)同时运行来支持地理覆盖很广的网络。
OSPF 可以提供认证功能。

[v_error]OSPF 原理[/v_error]
OSPF原理
OSPF 要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。

OSPF 的收敛过程:

• 由链路状态通告LSA(Link State Advertisement)泛红开始,LAS中包含了路由器一直的接口IP地址、掩码、开销和网络类型等信息;
• 收到LSA 的路由器都可以根据LSA 提供的信息建立自己的链路状态数据库LSDB(Link State Database);
• 在LSDB 的基础上使用SPF 算法进行运算,建立到达每个网络的最短路径树;
• 最后通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。

OSPF 报文:

IP Header OSPF Protocol Packet

• OSPF 报文封装在IP报文中,协议号为89;
• OSPF 报文类型有5种:

  • Hello 报文最常用的一种报文:
        用于发现、维护邻居关系。并在广播和NBMA(None-Broadcast Multi-Access)类型网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)
  • DD(Database Description)报文
        两台路由器进行LSDB 数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB 中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以这样就可以减少路由器之间的协议报文流量。
  • LSR(LSA Request)报文
        两台路由器相互交换过DD 报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
  • LSU(LSA Update)报文
        用来向对端路由器发送所需要的LSA。
  • LSACK(LSA State Acknowledge)报文
        用来对接收到的LSU报文进行确认。

Hello报文格式:

Network Mask
Hello Interval Options Router Priority
Router Dead Interval
Designated Router
Back Designated Router
Neighbor

Network Mask:发送Hello报文接口的掩码。
Hello Interval:发送Hello报文的间隔,单位为秒,默认10s。
Options:标识发送此报文的OSPF路由器所支持的可选功能。
Router Priority:发送Hello报文接口的Router Priority,用于选举DR和BDR。
Router Dead Interval:失效时间,在此时间内没有收到邻居发来的Hello报文则认为邻居失效,单位为秒,通常为4倍Hello Interval的时间,40s。
Designated Router:发送Hello报文所选举出来DR的IP地址,如果为0.0.0.0则表示还未选举。
Back Designated Router:同上。
Neighbor:邻居的Router-ID列表,表示路由器已经从这些邻居收到了合法的Hello报文。如果路由器发现所接受的合法Hello报文的邻居列表中有自己的RID,则认为已经建立了双向连接邻居关系。

如何验证Hello报文是否合法:

• 如果接收端口类型是广播型,点到多点或NBMA,所接收的Hello报文中Network Mask字段必须跟接收端口的网络掩码一致。如果接受端口为点到点或是虚连接则不检查。
• 所接收的Hello IntervalRouter Dead IntervalOptions中的E-bit(表示是否接收外部路由信息)的字段必须和接口端口的配置一致。
[v_error]邻居和邻接关系建立的过程[/v_error]
邻居(Neighbor):
OSPF 启动后,便会通过OSPF 接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数,如果参数一致,会形成邻居关系。
邻接(Adjacency):
形成邻居关系不一样都能形成邻接关系,根据网络类型而定。只有当双方成功交换DD报文,并能交换LSA之后。

邻居和邻接关系建立的过程

• Down:初始状态,表示没有从邻居收到任何消息。
• Attempt:此状态只在NBMA 网络上存在,表示没有收到任何邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为Hello Interval,如果路由器在Router Dead Interval 间隔内未收到邻居的Hello 报文,则转为Down状态。
• Init:在此状态下路由器已经从邻居收到了Hello 报文,但是自己不在所收到的Hello 报文的邻居列表中,尚未与邻居建立双向通信关系。
• 2-way:在此状态下双向通信已经建立,但是没有与邻居建立双向通信关系
• Exstart:
形成邻接关系的第一步,邻居状态变成此状态以后,路由器开始向邻居发送DD报文,主从关系在此状态下形成,初始DD序列号在此状态下决定,此状态下的DD报文不包含链路状态描述。
• Exchange:路由器护发包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
• Loading:互相发送LSR报文请求LSA,发送LSU报文通告LSA。
• Full:路由器的LSDB已经同步。

Router-ID(Router Identifier):

路由器标示符,用于在一个OSPF域中唯一地标识一台路由器,每台
运行OSPF的路由器具备Router-ID;

Router-ID的设定可以通过手工配置的方式,或使用自动获取的方式。自动选取
的机制是:若路由器存在loopback接口,则选最大的loopback接口IP地址,若无则选
活跃的物理接口中IP地址最大的作为RouterID; 

配置了新的Router-ID后可以通过重置OSPF进程来更新。<R1>reset ospf process
通常建议手动配置Router-ID,防止Router-ID因为接口地址的变化而变化。

数据库同步:

数据库同步
• 路由器使用DD报文进行主从路由器的选举以及数据库摘要信息的交互。
• DD报文包含LSA的头部信息,用来描述LSDB的摘要信息。
在建立完成邻居关系之后,便开始数据库同步,具体过程如下:

ExStart 1 RTA向RTB发送第一个DD报文,DD序列号被设置为X(假设),RTA宣告自己为主路由器。
2 RTB也向RTA发送DD序列号为Y(假设)的报文同时也宣告自己为路由器,因为RTB的RID比RTA大,所以RTB为主路由器。
Exchange 3 RTA发送一个新的DD报文,序列号为步骤2中RTB使用的序列号,同时包含LSDB摘要信息,RTB将邻居关系设置为Exchange。
4 RTB发送一个新的DD报文,包含LSDB的描述信息,DD序列号设置为Y+1。
5 即使RTA不需要新的DD报文描述自己的LSDB,但是作为从路由器需要对主路由器发送的每一个DD报文进行确认,
所以RTA向RTB发送一个内容为空的DD报文,序列号为Y+1。

发送完最后一个DD报文之后,RTA将邻居关系设置为Loading;RTB收到最后一个DD报文之后讲状态变为Full(假设RTB的LSDB是最新最全,不需要向RTA请求更新)。

建立完全邻接关系:

建立完全邻接关系
6、邻居状态变为Loading之后,RTA向RTB发送LSR报文,请求在Exchange下同DD报文发现且在本地LSDB没有的链路状态信息。
7、RTB收到TRA的LSR之后根据其内容回复RTA请求的包含链路信息的LSU报文,RTA收到RTB的LSU之后,邻居关系变为Full。
8、RTA向RTB发送LSACK报文,向对方确认已经接收LSU。
至此,RTA和RTB的邻居状态变为Full,表示完全到达邻接关系。

OSPF邻居关系的建立举例:

OSPF邻居关系的建立1
                    OSPF邻居关系的建立2
                         OSPF邻居关系的建立3

[v_error]OSPF支持的网络类型[/v_error] OSPF定义了四种网络类型,分别是:点到点、广播、NBMA和点到多点。
缺省情况下,OSPF认为以太网的网络类型是广播型,PPP、HDLC的网络类型是点到点类型。

广播型:

广播型网络是指支持两台以上的路由器,并且具有广播能力的网络。一个含有三台路由器的以太网就是一个广播型网络的例子。使用组播地址224.0.0.6来接收链路状态更新报文。

点到点型:

只把两台路由器直接相连的网络,一个运行PPP的64k串行网络就是一个点到点网络的例子。

缺省情况下OSPF认为帧中继、ATM的网络类型是NBMA类型。

OSPF可以在不支持广播的多路访问网络上运行,此类型包括在hub-spoke拓扑上运行的帧中继(FR)和异步传输模式(ATM)网络,这些网络的通信依赖于虚电路。
OSPF定义了两种支持多路访问的网络类型:非广播多路访问网络(NBMA)和点到多点网络(Point To Multi-Points)。
1、NBMA:在此网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置,NBMA方式要求网络中的路由器组成全连接。
2、P2MP:讲整个网络看成是一组点到点网络。对于不能组成全连接的网络应当使用点到多点方式,例如只使用PVC的不完全连接的帧中继网络。

DR&BDR

每一个含有2个路由器的广播型和NBMA网络都有一个DR和BDR,可以减少邻接关系数量,从而减少链路状态信息以及路由信息的交换次数,从而节省带宽,降低对路由器处理能力的压力。

DR&BDR选举:

1、端口优先级:优先级取值范围0~255,值越高越优先,如果为0则不参与选举,
2、Router ID:如果端口优先级一样,则比较RID值,越大越优先。
如果网络中存在DR和BDR,新添加的路由器就算优先级高于现有DR&BDR也不会成为DR&BDR,如果DR故障,则BDR成为DR,然后选举BDR,如果BDR故障则选举BDR。

OSPF区域:

OSPF区域
OSPF支持将一组网段组合在一起,这样称之为一个区域。
划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量

特点

区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不是详细的描述拓扑结构的链路状态信息。路由器会为每一个自己连到的区域维护一个单独的LSDB。
图中Area 0 为骨干区域,非骨干区域之间不允许直接发布路由信息。每个区域都必须连到骨干区域。
ABR:是指区域边界路由器(Area Boundary Router)运行在区域直接的路由器,它包含所有相连区域的LSDB。
ASBR:自治系统边界路由器(Autonomous System Boundary Router)是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。

OSPF开销:

OSPF开销
OSPF基于接口带宽计算开销,公式为:接口开销=带宽参考值/带宽。
带宽参考值默认为100Mbit/s。
所以一个64bit/s串口的开销为1562,一个E1接口(2.048Mbit/s)的开销为48。

[R3-ospf-1]bandwidth-reference ?
  INTEGER<1-2147483648>  The reference bandwidth (Mbits/s)
[R3-GigabitEthernet0/0/0]ospf cost ?
  INTEGER<1-65535>  Cost value <1-65535>

在支持10Gbit/s速率的情况下,推荐将带宽参考值提高到10000Mbit/s来分别为10Gbit/s、1Gbit/s和100Mbit/s的链路提供1、10和100的开销。
还可以通过OSPF cost来手动为每一个接口调整开销,范围是1~65535,缺省为1。
[v_error]OSPF配置[/v_error]
OSPF配置

[RTA]ospf router-id 1.1.1.1
[RTA-ospf-1]area 0
[RTA-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255

第一条命令用于使能OSPF进程并且为路由器配置RID,network 用于指定运行OSPF协议的接口,此处要配置反掩码,“0”表示严格匹配,“1”表示任意。

OSPF认证:

[RTA-GigabitEthernet0/0/0]ospf authentication-mode md5 1 sevenfal
[RTA--ospf-1-area-0.0.0.0]authentication-mode md5 1 sevenfal

OSPF认证可以配置在接口和区域上,接口优先级大于区域。

[v_blue]点此查看——4.4.1 OSPF 实验 [/v_blue]


Sevenfal

这个人太懒什么东西都没留下

文章评论(0)