数通之OSPF
OSPF(Open Shortest Path First)开放式最短路径优先,使用基于带宽的度量值;采用SPF算法计算路由,从算法上保证了无路由环路;通过邻居关系维护路由,避免了定期更新对带宽的消耗;更新效率高,网络收敛快;
工作原理
基本协议模型
- 建立邻居-通过 Hello探测和发现邻居,形成OSPF邻居表
- 发起路由-描述直连网段和直连拓扑,发起LSA,存放到自己的LSDB
- 传播路由-LSA洪泛,区域内路由器的LSDB达到一致
- 计算路由-以自己的LSA 1为根进行SPF计算,算出路由
基本概念
- Router ID:32比特无符合整数,在唯一标识一台路由器,若要运行OSPF则必须存在Router ID。可以自动生成,也可手动配置
- LS :路由器周边的链路状态。
直连接口状态
通过接口网段和接口状态感知,用网段、掩码、接口开销描述直连网段;直连拓扑状态
通过OSPF邻居和邻居状态感知,用邻居Router ID、连接接口、接口开销描述直连拓扑;接口开销
为OSPF参考带宽(默认为100Mbps)/接口带宽(Loopback接口默认为1) - LSA:链路状态通告,按一定格式封装后的链路信息。
LSA 1
为路由器链路状态通告,每台路由器都会发起自己的LSA1;LSA 2
为传送网络链路状态通告 - LSDB:链路状态数据库,每台OSPF路由器都有一个LSDB,用于存储LSA。同一个区域中的OSPF路由器的LSDB一致。
LSA
封装在LSU
报文中,在区域内洪泛,最终达到区域内LSDB
一致。LSA在洪泛过程中内容保持不变。 - SPF:OSPF路径开销计算。以自己LSA为根,进行SPF计算,各OSPF路由器单独计算互不影响。计算以自己为根,到目标网段的出接口开销和。OSPF度量值为cost(开销),以链路的接口带宽为依据。计算方法:10 的8 次方除以带宽。
- 网络类型:Broadcast广播多路访问:以太网接口;NBMA(on-Broadcast Multi-Access,非广播多点访问网络):帧中继接口;P2MP(Point-to-MultiPoint,点到多点);P2P(Point-to-Point,点到点):PPP HDLC接口
报文类型与封装:
OSPF 报文类型 作用 Hello 建立并维护邻居关系 Database Description(DD) 数据库内容的汇总(仅包含LSA头部) Link State Request(LSR) 请求自己没有的或者比自己更新的链路状态详细信息 Link State Update(LSU) 链路状态更新信息(LSA头部和内容) Link State Acknowledge(LSAck) 对LSU的确认 OSPF报文直接封装于IP报文中,协议号89,组播地址224.0.0.5/6
| 链路层帧头 | IP Header | OSPF Packet | 链路层帧尾 |
邻居状态:DOWN、Init、two-way、Exstart、Exchange、Loading、Full
当在规定时间内没有收到回应,认为包丢失,重发包,协议包具备序列号接收方对重复包不做处理当有新的LSA生成或收到时,这条新的LSA应当被洪泛。洪泛新的LSA时,只需要使用LS Update报文和LS Ack报文。以上图为例,当RTA中若有一条新的LSA需要洪泛时,只需要向RTB发送一条LS Update报文,报文中包含新的LSA,RTB接收该条LS Update后向RTA发送一条LS Ack报文进行确认。当处于完全邻居状态的两台路由器(状态均为Full),洪泛新的LSA时邻居关系不受影响
各种报文中的LSA信息
Packet类型 LSA信息 Database Description LSA头部信息:包括LS Type, LS ID, Advertising Router和LS Sequence Number LS Request 只有LS Type, LS ID和Advertising Router简化LSA头部 LS Update 完整的LSA信息,包括LSA头部和具体的链路状态信息 LS Ack LSA头部信息:包括LS Type, LS ID, Advertising Router和LS Sequence Number
邻居关系建立失败的原因
参数 | 配置要点 |
---|---|
Router id | 每台OSPF路由器的router id必须唯一 |
area id | 同一网段的所有端口应配置在同一区域 |
Interface network-type | 同一网络接口的类型要相同,即hello时间与hellodown时间双方要一致 |
network mask | 除了点到点网络之外,同一网段的所有端口应当配置相同的掩码 |
authentication type | 同一区域的验证类型必须一致 |
authentication data | 同一网段的验证码必须一致 |
extern option | 配置stub区域或者NSSA时,区域内的所有路由器都需要指定stub特性或者NSSA特性 |
peer | NBMA网络上的邻居需要手动指定 |
基本配置
启动OSPF
Router(config)# router ospf <进程号>
配置Router ID
Router(config-router)# router-id <A.B.C.D> #手动配置Router ID
Router(config)# interface loopback0
Router(config-if)# ip address <RID> 255.255.255.255 #通过环口自动生成
宣告直连网段
Router(config-router)# network <网络地址> <通配符掩码> area <区域号>
调整OSPF参数
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip ospf cost <自定义值> ! 默认值基于带宽 #修改接口开销
Router(config-router)# passive-interface <接口名> #配置被动接口(不发送OSPF报文),常用于连接用户的接口
多区域划分
单区域存在LSDB庞大,占用内存大,SPF计算开销大;LSA洪泛范围大,拓扑变化影响范围大;路由不能被汇总,路由表庞大,查找路由开销大
基本概念
区域分类
骨干区域:Area 0,OSPF的Area 0必须是连续的,不能被分割。
非骨干区域:必须和Area 0直接相连,非骨干区域之间不能直接交换路由信息,必须通过Area 0。
特殊区域:具有特殊性质的区域
LSDB
多区域链路状态数据库,每个区域都有自己独立的LSDB,SPF计算独立运行。LSA洪泛和LSDB同步只在区域内进行。
ABR
OSPF对区域间路由信息的描述,OSPF只知道本区域的拓扑结构,并不知道其他区域的拓扑结构,其他区域的路由信息,依靠本区域的ABR来描述。
ABR先计算区域内的LSA 1、2,并为计算出来的路由向其他区域发起LSA 3,而且为Area 0中的LSA 3向其他区域重新发起LSA 3。
ASBR
OSPF通过ASBR来描述外部路由的可达性,ASBR为外部路由发起LSA5,在整个OSPF路由域中洪泛。
LSA分类
名称 | 发起路由器 | 洪泛范围 | 作 用 | LSA描述 | Link state ID | |
---|---|---|---|---|---|---|
1 | Router LSA(路由器LSA) | OSPF路由器 | 区域内 | 描述路由器的直连拓扑信息 | 每一个路由器都会生成。这种LSA描述某区域内路由器端口链路状态的集合。只在所描述的区域内泛洪。 | 生成这条LSA的路由器的Router ID |
2 | Network LSA(网络LSA) | DR | 区域内 | 描述多路访问网络DR邻接的一组路由器 | 由DR生成,用于描述广播型网络和NBMA网络。这种LSA包含了该网络上所连接路由器的列表。只在该网络所属的区域内泛洪。 | 所描述网段上DR的端口IP地址 |
3 | Summary LSA(汇总LSA) | ABR | 区域内 | 描述区域间的路由信息 | 由区域边界路由器(ABR)产生,描述到AS内部本区域外部某一网段的路由信息,在该LSA所生成的区域内泛洪 | 所描述的目的网段的地址 |
4 | ASBR LSA | ABR | 区域内 | 描述区域间ASBR的可达性 | 由区域边界路由器(ABR)产生,描述到某一自治系统边界路由器(ASBR)的路由信息,在ABR所连接的区域内泛洪(ASBR所在区域除外) | 所描述的ASBR的Router ID |
5 | External LSA(外部路由LSA) | ASBR | OSPF路由域(除特殊区域) | 描述OSPF外部路由 | 由自治系统边界路由器(ASBR)产生,描述到AS外部某一网段的路由信息,在整个AS内部泛洪 | 所描述的目的网段的地址 |
7 | NSSA LSA | NSSA ASBR | 区域内 | 描述NSSA区域的OSPF外部路由 |
在4、5报文洪泛时,4在洪泛至ABR进入下一区域时,会将报文中的Router ID修改为ABR的Router ID告诉下一区域的OSPF路由器访问ASBR时需要通过该ABR。
路由聚合/汇总
ABR或ASBR将具有相同前缀的路由信息聚合后发布到其它区域
减少LSA3类、LSA5类的数目,减少路由信息
减小路由表的规模
提高路由器的运算速度
特殊区域
Stub区域
若一个区域不管外部目的地在何处都需要发送数据到ABR,通过ABR到达ASBR,那么这个区域就可以配置为Stub区域(末梢区域)
Stub区域是一个不允许AS外部LSA通告在其内部进行泛洪的区域。不允许4、5类LSA进入区域进行洪泛,拒绝学习4、5类LSA。但会有default LSA为了弥补无法学习5类 LSA做为summary LSA加入该区域,通过ABR进行宣告。外部路由的改变无法影响Stub区域
Stub区域路由器的路由表条目:默认路由+区域间路由+区域内路由
限制条件:Stub区域内所有路由器必须拥有想相同链路状态数据库;末梢区域的路由器不能是ASBR路由器;一个末梢区域可以拥有多台ABR路由器,但是因为缺省路由的原因,区域内部路由器不能确定哪一台路由器才是到达ASBR路由器的最优的网关
完全Stub区域
不仅使用缺省路由到达OSPF自主系统外部的目的地址,而且使用缺省路由到达这个区域外部的所有目的地址。完全末梢区域的ABR将不仅阻塞AS外部LSA,而且阻塞所有的汇总LSA,但除了通告缺省路由的那一条类型3的LSA。
该区域拒绝所有的External LSA(5类LSA);拒绝具体的Sumamry LSA(4类和5类),但与Stub区域一样有Default LSA作为Summary LSA注入区域。因为拒绝5类LSA和具体的3、4类LSA,所以LSDB更小、路由信息更稳定、路由数量越小
NSSA区域
NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由
允许外部路由通告到OSPF自主系统内部,而同时保留自主系统的其余部分的末梢区域特征。在NSSA区域内的ASBR将始发类型7的LSA来通告那些外部的目的网络。这些NSSA外部LSA将在整个NSSA区域中进行泛洪,但是Type 7 LSAs会被ABR路由器转换成 Type 5 LSAs之后泛洪到骨干区域。
NSSA系统外部LSA (NSSA External LSA):始发于ASBR路由器的,用来通告到达OSPF自主系统外部的目的地或者OSPF自主系统外部的缺省路由的LSA。NSSA外部LSA通告只在始发这个七类LSA的NSSA区域中进行泛洪 。
完全NSSA区域
完全非纯末梢区域允许外部路由通告到OSPF自主系统内部,并使用缺省路由到达这个区域外部的所有目的地址。
完全非纯末梢区域的ABR将不仅阻塞AS外部LSA,而且阻塞所有的汇总LSA,但除了通告缺省路由的那一条类型3的LSA。
缺省路由发布总结