OSPF(Open Shortest Path First)
ospf(开放式最短路径优先)协议是一种基于链路状态的内部网关协议。
- 优点:收敛快、路由无环、可扩展、支持认证。
- 基本特点:
(1)基于SPF算法,以"累计链路开销"作为选路参考值。
(2)采用组播形式收发部分协议报文。
(3)支持区域划分。
(4)支持对等价路由进行负载分担。
(5)支持报文认证。
OSPF支持的网络类型:P2P P2MP NBMA Broadcast
网络类型 | 常见链路层协议 |
---|---|
Point-to-Point | PPPl链路;LAPB链路;HDLC链路 |
Broadcast | 以太网链路 |
NBMA | 帧中继链路;ATM链路 |
路由计算过程
OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始 ,LSA中包含了路由器已知的接口IP地址、掩码、开销和网络类型等信息。收到LSA的路由器可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Datebase) ,并在LSDB的基础上使用SPF算法 进行运算,建立起到达每个网络的最短路径树。最后,通过最短路径树得出到达目的网络的最优路径,并将其加入到IP路由表中。
LSA泛洪:运行链路状态协议的路由器,彼此之间交互的不是路由信息。而是LSA(链路状态通告)。
共有三张表
- LSDB:每台路由器都会产生LSA,路由器将网络中所泛洪的LSA搜集起来,放入自己的LSDB。
- 邻居表:存放的是该路由器发现的直连链路上的OSPF邻居。只有直连路由器之间才能建立OSPF邻居表(通过HELLO报文发现直连邻居)。
- 路由表:基于LSDB进行SPF计算得到的路由。
基本概念
AS(Autonomous System)
一个自治系统是一组路由器的集合(一个AS中可以有集中路由协议,OSPF、RIP、ISIS)。如图,所有的路由器都运行OSPF协议,所有运行OSPF的路由器属于同一个自治系统。
Router ID
Router ID是用于在自治系统中唯一表示一台运行OSPF的路由器的32位整数,Router ID的格式与IP地址的格式是一样的。
\~HUAWEI\] router id 1.1.1.1 \[\~HUAWEI\] commit \[\~HUAWEI\] display router id RouterID:1.1.1.1 在OSPF路由计算过程中,每台路由器都需要保存网络内多台路由器的链路状态信息。为了区别链路状态数据库(LSDB)中不同路由器的链路状态信息(LSA),网络内每个路由器都需要有一个唯一的标识,用于在LSDB中标识自己。 路由器的ID可以手工配置,如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为路由器的ID号。顺序为: 1、优先从loopback地址中选择最大的IP地址作为路由器的ID号。 2、如果没有配置loopback接口,则从物理接口地址中选取最大的IP地址作为路由器额的ID号。 3、只有当被选举为Router ID的接口IP地址被删除后,才会进行Router ID的重新选举。 4、推荐使用loopback 0地址作为路由器的Router ID。 #### Cost OSPF的开销值为一个16位无符号的整数,范围为1-65535。 * 可以直接配置OSPF端口的开销值。 \[\~HUAWEI-Ethernet0/0\]ospf cost 100 * 配置带宽参考值时需要注意:必须保证该进程中所有路由器的带宽参考值一致。 \[\~HUAWEI\]ospf \[\~HUAWEI-ospf-1\]bandwidth-reference 1000 #### 路由器角色  * 区域边界路由器(ABR):是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB。 * 骨干路由器(BR):是指至少有一个端口连接到骨干区域的路由器。包括所有的ABR和所有端口都在骨干区域的路由器。(Area 0为骨干区) * AS边界路由器(ASBR):是指和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路由信息。AS边界路由器可以是内部路由器IR,或者是ABR,可以属于骨干区域也可以不属于骨干区域。 #### OSPF区域 * Area 0为骨干区域,骨干区域负责在非骨干区域之间发布由区域边界路由器汇总的路由信息(并非详细的链路状态信息)。 * 为了避免区域间路由环路,非骨干区域之间不允许直接相互发布区域间路由信息。因此,**所有区域边界路由器都至少有一个接口属于Area 0** ,**即每个区域都必须连接到骨干区域。** * 每个区域都有自己的LSDB,不同区域的LSDB是不同的。路由器会为每一个自己所连接到的区域维护一个单独的LSDB。由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了。 ### OSPF路由计算 #### OSPF协议报文 * 报文类型 | 报文名称 | 报文功能 | |-------------------|-------------| | Hello | 发现和维护邻居关系 | | Date Description | 发送链路状态数据库摘要 | | Link State Requst | 请求特定的链路状态信息 | | Link State Update | 发送详细的链路状态信息 | | Link State Ack | 发送确认报文 | 定义: 1、Hello报文用于发现和维护邻居关系。 2、DD报文通过携带LSA头部信息描述链路状态数据库摘要信息(数据库的描述报文),描述本地LSDB摘要信息,用于两台设备进行数据库同步。 3、LSR报文用于向对方请求所需的LSA,设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 4、LSU报文用于向对方发送其所需的LSA. 5、LSACK用于对收到的LSA进行确认。 #### OSPF协议报文头验证 ***当两种验证方式都存在时,优先使用接口验证方式。*** 1、接口验证 \[\~RTA-Ethernet0/0\] ospf authentication-mode simple plain huawei 2、区域验证 \[\~RTA-ospf-1-area-0.0.0.1\] authentication-mode simple plain huawei #### DR \& BDR选举 waiting:路由器通过所接收到的hello报文检测网络中是否有DR BDR,此状态不参与选举。 DR:在同一网段内,与其他所有OSPF路由器(包括BDR)建立邻接关系,并交换LSA的路由器。 BDR:DR路由器的备份路由器。 DR和BDR由OSPF的**hello** 协议选举,选举根据**router priority** 进行。**如果RP设置为0,那么该路由器不参与选举。** RP默认为1,范围为0-255。 **RP越大越优先,如果RP相同,RID大的优先。** DR\&BDR的选举基于接口。 如果没有RID,则会以环回接口为RID,如没有环回接口,**则会选择最大IP的物理接口为RID。 DR没有抢占性。 如果修改了RP,需要重启OSPF才能进行抢占。 先选BDR再选DR。** #### 7种状态机 * Down 启用了OSPF功能的链路默认为down,并开始向外发送hello报文,发出之后,从down-init。 * Init 已经收到hello报文,如果接收到的hello报文中有自己的router-id,表示对端已发现自己,变为2-way。 * 2-way 双向通信建立,称为邻居关系。 * exstart 向邻居开始发送DD报文,选举出主从。 * exchange 相互发送包含链路状态信息摘要的DD报文,描述本地LSDB。 * loading 相互发送LSR报文请求LSA,发送LSU通告LSA。 * FULL 两台路由器的LSDB已经同步。 LSA的刷新周期 180s LSA老化时间 30min LSA重传时间间隔 15s LSA老化机制是为了确保链路状态数据库是最新的,老化时间到达后,该LSA会被标记为过期,并从链路状态数据库中删除。 #### LSA * 1类LSA---Router-LSA **每一个路由器都会生成**。这种LSA描述某区域内路由器端口链路状态的集合。只在所描述的区域内泛洪。 * 2类LSA---Network-LSA **由DR生成**。用于描述广播型网络和NBMA网络。这种LSA包含了该网络上所连接路由器的列表,只在该网络所属的区域内泛洪。每台路由器都会向外发送Router-LSA,只有DR向外发布Network-LSA。 * 3类LSA---Network-Summary-LSA **由区域边界路由器(ABR)产生**。描述到AS内部本区域外部某一网段的路由信息,在该LSA所生成的区域内泛洪。描述的是精简的路由信息,而不是详细的链路状态信息。 * 4类LSA---ASBR-Summary-LSA **由区域边界路由器(ABR)产生**。描述到某一自治系统边界路由器(ASBR)的路由信息,在该LSA所生成的区域内泛洪(AS内部产生),用于在区域间传播外部路由信息。除了ASBR所在区域外,用于通告ASBR位置。 * 5类LSA---AS-External-LSA **由ASBR产生**。描述了外部路由的LSA,用于将外部路由信息引入到OSPF域内。只在引入该外部路由的区域以及与之相连的区域内泛洪。 * 7类LSA------NSSA-LSA **由ASBR产生** ,用于描述到达OSPF域外的路由。 (1)NSSA LSA与AS外部LSA(type5)功能相似,但是泛洪范围不同。 (2)NSSA LSA只能在始发的NSSA内泛洪,并不能直接进入Area 0。 (3)NSSA的ABR会将7类LSA抓换成5类LSA注入到Area 0。 | LS type | 描述 | |---------|-----------------| | 1类 | 描述路由器的链路状态 | | 2类 | 描述网络中所有路由器的链路状态 | | 3类 | 描述区域间的路由信息 | | 4类 | 描述到ASBR的路由信息 | | 5类 | 描述AS外部的路由信息 |