实验过了,备考期间都没看理论,导致基本忘光了,开始嘎嘎补,有错误喊我。
OSPF(开放最短路径优先),是一种动态路由协议。属于内部网关协议-IGP的一种,用于AS(自治系统)内的互联互通。
从路由协议的工作范围可分为:
IGP(内部网关协议):用于AS(自治系统)内的互联互通 EGP(外部网关协议):用于AS(自治系统)间的互联互通
从协议算法可分为:
1、距离矢量路由协议:RIP,IGRP 2、链路状态路由协议:OSPF,ISIS 3、混合型路由协议:EIGRP 4、路径矢量路由协议:BGP
链路状态路由协议:能够把网络的拓扑结构完整的绘制出来
距离矢量路由协议:仅知道目的网络的存在,开销和下一跳信息,其他的都无法感知到。
由一个组织/机构统一进行管理,并运行相同的IGP协议的一组设备的集合。
内部网关协议(IGP):OSPFv2、OSPFv3(IPV6)、ISIS、RIPv1、RIPv2、EIGRP等
外部网关协议(EGP):BGP
OSPFv2仅支持(IPV4)、OSPFv3仅支持(IPV6),不会向下兼容。
运行OSPF路由器之间交互的是LSA(链路状态)信息,而不是直接交互路由。LSA信息是OSPF正常进行拓扑及路由计算的关键信息。
OSPF是典型的链路状态路由协议,是目前广泛使用的IGP协议之一。
通过SPF(最短路径优先)形成无环且最短路径的拓扑。通过开销计算最短的路。逻辑上阻塞端口。
优点:
1.基于SPF算法,以“累计链路开销”作为选路参考值 2.采用组播形式收发部分协议报文 3.支持区域划分 4.支持对等价路由进行负载分担 5.支持报文认证,用于认证安全邻居关系
1、路由器 2、路由器之间的链路 3、路由器所连接的网段
运行链路状态路由协议的路由器之间会先建立一个邻居关系,然后彼此之间开始交互LSA(链路状态通告)
1、直连的接口上的邻居 2、直连的接口的开销 3、直连的接口的地址/掩码(网段) 4、链路的类型 (描述路由器自身)
* Link ID: 2.2.2.2 邻居的router id
Data : 12.1.1.1 与邻居相连的接口地址
Link Type: P-2-P 链路类型
Metric : 1 到达该邻居的开销值
* Link ID: 12.1.1.0 直连网络地址
Data : 255.255.255.0 掩码
Link Type: StubNet 描述自身直连的链路类型
Metric : 1 自身到达该直连网络的开销
Priority : Low
LSA:一段状态链路信息,不是报文。
每台路由器都会产生LSAs,路由器将接收的LSAs放入到自己的LSDB(链路状态数据库),路由器通告LSDB(链路状态数据库),掌握了全网的拓扑。
路由器将LSA存放在LSDB(链路状态数据库)中 LSDB(链路状态数据库)汇总了网络中 路由器对于自己接口 的描述 LSDB(链路状态数据库)包含全网拓扑的描述
每台路由器基于LSDB(链路状态数据库),使用SPF(最短路径优先)算法进行路径计算。每台路由器都计算出一个以自己为根,无环的,拥有最短路径的树。即路由器知道了到达网络各个地方的优选路径。
然后,路由器将计算出来的优选路径,加载进自己的路由器
1、路由器之间建立邻居关系 2、路由器之间交互LSA(链路状态信息)并加入到自身的LSDB(链路状态数据库)中 3、进行路径计算 4、生成路由表项
大型网络单区的弊端
1、设备数量多,产生的LSA(链路状态信息)多,导致LSDB过大,消耗更多设备资源 2、SPF算法,导致树的规模大,计算路由消耗资源,网络收敛慢。 3、如果网络不稳定,导致全网路由器的LSDB都会不稳定,故障域大,故障排除难度高 4、单区域OSPF协议无法执行路由的汇总,导致路由表过大。
OSPF协议通过区域将网络换分成2层的结构,区域号通常用点分十进制表示。
1、骨干区域area 0 有且只有一个 必须连续 2、非骨干区域 area n 可以有多个 3、非骨干区域必须和骨干区域直接相连
不同区域的LSA是不相同的,区分区域的目的是为了减少1,2类lsa的交互,减小设备压力。跨区域传播lsa必须要3类LSA。
作用:唯一的标识一台OSPF的路由器
router id 格式:点分十进制的格式,一般由项目管理员规划并手动配置 建议 使用路由器上的loopback接口的ip地址 充当router id loopback接口:由管理员手动配置的测试接口,只要路由器开机他就永远存在,不会存在物理故障,通常用于OSPF的router id ,如果没有loopback接口 管理员可以自行规划 保证全网唯一即可。
系统自动生成router id方式:
默认情况华为路由器启动后,会自动生成一个全局的router id
全局router id 默认使用设备上第一个配置的IP地址 作为全局的router id
如果配置ospf协议没有手动配置router id 则默认使用全局router id 作为ospf的 router id
ospf router id 更改后要生效 需要重新启动OSPF进程 导致网络震荡 甚至是中断 谨慎变更router id (reset ospf process
)
越小越优先 相同负载均衡
COST(开销)分为两种: 1、OSPF的链路开销 2、OSPF的路径开销,即路由器自身到目的网络沿途路径出接口链路开销之和
链路开销默认计算方式:100M/接口带宽 =COST
通过接口命令 ospf cost人工设置链路开销 优先于自动计算的开销值 链路两端开销值建议配置一致,防止来回路径不一致。
display ospf perr brief
查看邻居表简略信息
display ospf peer
查看邻居表详细信息
所有收集到的的链路状态信息(LSA)放到链路状态数据库(LSDB)中
display ospf lsdb
查看LSDB表 链路状态数据库
区域内唯一识别一条LSA的三要素 由产生该LSA的设备决定,用于描述链路状态信息。 LSA TYPE LSA的类型 LS id LSA的名称 Advrouter 哪台设备产生的
display ospf routing
查看OSPF路由表
广播型(Broadcast):当链路层协议是Ethernet(以太网)、FDDI(光纤分布式数据接口)时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF路由器的预留IP组播地址;224.0.0.6的组播地址为OSPF DR的预留IP组播地址。以单播形式发送DD报文和LSR报文。
点到点(P2P)型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
点到多点型(P2MP):没有一种链路层协议会被缺省认为是point-to-multipoint型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型网络中以组播形式(224.0.0.5)发送Hello报文,以单薄形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。
非广播多路访问网络型(NBMA ):当链路层协议是ATM(异步传输模式)、FR(帧中继网络)、X.25(分组交换数据网)时,缺省情况下,OSPF认为网路类型是non-broadcast multiple access network 。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文),单播需要明确目的IP,即需要手动配置邻居。
OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。 OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。
Type | 报文名称 | 报文功能 |
---|---|---|
1 | Hello报文(Hello) | 用于建立和维护邻居关系建立:在使能OSPF后,会发送Hello报文,两端设备进行协商。维护:Hello报文会周期性发送维护邻居关系 |
2 | DD报文(Database Description) | 用于邻居之间交互链路状态信息的摘要三个bit+一个序列号i bit:表示是不是第一个DD报文,置0不是,置1是m bit:表示后续是否还有携带内容的DD报文,置0否,置1是ms bit:表示是否为主设备,置0否,置1是序列号:随机产生的值 |
3 | LSR报文(Link State Request) | 用于向对端请求,本端缺少的链路状态信息 |
4 | LSU报文(Link State Update) | 回应对端请求,发送完整的链路状态信息给对端。 |
5 | LSAck报文(Link State Ack) | 收到完整的链路状态信息后,向对端回复确认 |
OSPF Header ospf头部,只要是ospf报文该头部固定存在
Version: 2 版本号 2 ipv4 3 ipv6
Message Type: Hello Packet (1) 代表ospf协议报文类型 1 hello 2 DBD 3 LSR 4 LSU 5 LSACK
Packet Length: 44 ospf报文整体头部长度 ospf头部+ospf报文载荷
Source OSPF Router: 1.1.1.1 发送该报文的路由器的router id
Area ID: 0.0.0.0 (Backbone) 发送该报文的接口所属区域
Checksum: 0xfa9c [correct] 校验和
Auth Type: Null (0) 认证方式 0代表空认证 1代表明文认证 2代表MD5认证
Auth Data (none): 0000000000000000 携带的认证信息 没做认证0填充
用于建立和维护邻居关系 建立:在使能OSPF后,会发送Hello报文,两端设备进行协商。 维护:Hello报文会周期性发送维护邻居关系
在以太网链路上,缺省是,OSPF采用组播发送Hello报文(目的地址为224.0.0.5)
hello报文中进行DR BDR选举 先比优先级 相同比Router id 大的为DR
Hello报文在P2P(点到点型),Broadcast(广播型)链路上每隔10s周期性发送,目的地址是224.0.0.5,邻居失效时间为40s,默认为Hello发送周期的4倍。
Hello报文在P2MP(点到多点型),NBMA(非广播多路访问网络型)链路上每隔30s周期性发送,其中P2MP的目的地址是224.0.0.5 ,NBMA(非广播多路访问网络型)的目的地址是手动指定(单播地址),邻居失效时间为120s,默认为Hello周期的4倍。
OSPF Hello Packet hello报文头部
Network Mask: 255.255.255.0 发送该报文接口的子网掩码
Hello Interval [sec]: 10 hello报文发送间隔
Options: 0x02, (E) External Routing 可选项 Ebit:描述对5类LSA是否需要同步 Nbit:描述对7类LSA是否需要同步
Router Priority: 1 发送该hello报文接口的优先级,用于选举DR/BDR
Router Dead Interval [sec]: 40 邻居失效时间 一般为发送时间的4倍
Designated Router: 0.0.0.0 本链路上DR路由器接口的地址 P2P/P2MP值为0.0.0.0
Backup Designated Router: 0.0.0.0 本链路上BDR路由器接口的地址 P2P/P2MP值为0.0.0.0
卡在2-Way
1、Route ID冲突 2、区域ID不一致 3、认证有问题 方式或密码错误 4、Hello报文间隔不一致,死亡时间不一致 (发送时间在点到点和广播中每隔10秒,死亡时间为4倍40秒 目的地址224.0.0.5) 5、Options 字段要一致 Ebit位=1 Nbit=0时 普通区域 Ebit位=0 Nbit=0时 末节区域/完全末节区域 Ebit位=0 Nbit=1时 NSSA区域/完全NSSA区域 6、广播型链路中接口优先级全为0 都为DRother 不选举DR BDR 7、报文的源地址是否处在一个网段 8、子网掩码是否一致
Options
卡在ExStart/Exchange
1、MTU不匹配 2、链路类型不一样
静默端口Silent-interface
启用后接口将被禁止收发Hello报文
LSA是OSPF进行路由计算难道关键依据。 OSPF的LSU报文可以携带多种不同类型的LSA 各种类型的LSA拥有相同的报文头部
LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位为秒。 Options(可选项):每一个Bit都对应了OSPF所支持的某种特性。 LS Type(链路状态类型):表示本LSA的类型。 Link State ID(链路状态ID):不通的LSA,对该字段的定义不同。 Advertising Router(通告路由器):产生该LSA的路由器的Router ID。 LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加。 LS Checksum(校验和):用于保证数据完整性和准确性。 Length(字长):包含LSA头部在内的LSA总长度值。
1、唯一的识别一条LSA,解决LSA有没有的问题 2、解决LSA的新旧程度的问题
1、交换彼此缺少的LSA 2、新的同步掉旧的
因为DD报文中携带的本LSDB中所有LSA摘要信息,根据摘要信息的可靠性,才能决定后续LSDB是否完全同步一致。而OSPF封装在IP报文中没有可靠的回馈机制,所以通过主从以及序列号的变化来确保交互的可靠性。
1、比较seq,seq越大代表LSA越新; 2、seq相同,则比较校验和,校验和越大越优; 3、校验和相同,则比较ls age 如果ls age 等于 3600s,则认为是最新的LSA,此时收到该LSA的设备会删除该LSA ls age=3600s的作用,用于删除一条LSA; 4、如果LS age不等于3600s,则比较两个LS age 的差值,相差大于900s,则ls age小的是最新的LSA; 5、如果相差小于900s,则认为新旧程度一致; 6、如果LSA3600s没有得到更新,则从LSDB数据库中删除。
1、周期性更新:OSPF路由器对自身产生的LSA有周期性更新的责任,每隔30分钟更新一次自己产生的LSA,seq+1,校验和重新计算 ls age 置为0,并且泛洪给其他邻居。 2、触发更新:当LSA的链路状态取值发生变更时,立刻产生新的LSA,seq+1,开销值重新计算,ls age 置为0,并且泛洪给其他邻居。
先比seq,再比校验和,最后比LS AGE DD报文,携带LSA头部信息,LSU携带LSA头部以及具体的链路状态信息,完整版的LSA LSR只携带三要素,LSACK,通过携带LSA头部,通告对方收到了你的LSA
Type : Router 描述LSA的类型
Ls id : 2.2.2.2 LSA的名称,取值和LS Type相关,1类LSA由路由器自身的router id充当
Adv rtr : 2.2.2.2 描述产生该LSA路由器的router id
以上3个参数用于在同一个区域中唯一标识出一条LSA
--------------------------------------------------------------
Ls age : 59 表示这条LSA的存货时间,产生LSA的路由器每隔30分钟周期性更新一次自身的LSA并泛洪,如果某条LSA存活时间超过3600s,则从LSDB中删除。
如果LSA的状态发生变化,需要立即更新该LSA,并泛洪。
Len : 60
Options : E
seq# : 80000003 表示这条LSA更新次数,初始序列号为0X80000001,最大的序列号为0X7FFFFFFF
chksum : 0xb8d 校验和
OSPF完成邻接关系有四个步骤,建立邻居关系,协商主从、交互LSDB信息,同步LSDB。
邻居:互相发现 two-way
如果广播型网络中,路由器接口优先级全为0,此时会卡在two-way状态。
two-way状态仅仅是双向发现,邻居建立,不会同步LSDB数据库 如果邻居都不是DRother,才会进行LSDB同步,建立邻接关系 如果邻居都是DRother,则全部维持two-way状态。
双方发送Hello报文的过程,此过程中,会涉及到init状态和2-way状态以及双向2-way状态。
每10S发送一次HELLO报文,用于维护邻居关系,如果4倍HELLO时间没有收到邻居的HELLO报文,则认为邻居失效。
同时在发送Hello报文的程中会选举DR和BDR以及Drother
两台路由器 当一台路由器开启OSPF 并把接口加入到OSPF中,此时开始发送Hello报文,发送的报文是:SIP AR5 DIP 224.0.0.5 HELLO ROUTE ID 5.5.5.5(224.0.0.5是因为无法确认对方是否开启OSPF,所以发送特定组播) 此时AR6(接口被加入到OSPF)从down状态进入init状态(down状态:没有接收到hello报文,inti状态:接收到对方hello报文,但是没从对方的报文中看到自己的router id) 此时AR6开始发送报文:SIP AR6 DIP 225.0.0.5 hello router ID 5.5.5.5 nei 5.5.5.5(因为ar5和ar6之间还没建立联系,所以目标IP还是组播地址,因为ar5给ar6发送过自己的route id 所以ar6回报文的时候会携带ar5的router id) Ar5收到AR6的报文,进入2-WAY双向发现状态,发送报文SIP AR5 DIP 224.0.0.5 router ID 5.5.5.5 nei 6.6.6.6 (双向确认,给ar6发送 意味着ar5知道AR6的router ID) Ar6收到AR5的报文,ar6进入2-way 双向发现状态,邻居关系建立
此过程是互相交互LSA的过程,会接触exstart状态、exchange状态和loading状态最后会到达full状态。
首个进入two-way状态的路由器会主动发送DD报文进行主从选举,实现可靠的LSDB同步
Exstart主从选举 master/slave
Exstart状态下,AR5会发送dd报文,但是此时不携带任何摘要信息,只携带随机序列号,以及自己的router ID。AR6也会发送同样的报文(谁先到2-WAY状态谁先发dd报文)
两个报文相比较routerID 大小(因为routerID 全网唯一),谁大谁成为主路由器。进入下一个状态
Exchange状态,交互摘要信息(若后期链路状态发生改变,直接发DD报文)
从路由器AR5先发送DD报文 携带主路由器的随机序列号信息 以及自己的LSA1摘要信息:DD Seq=y lsa1
AR6收到AR5的DD报文,回复DD报文:DD Seq=y+1 LSA2(序列号要采用+1确认。保证LSDB不会有任何丢失和缺少 )
以此类推(从路由器不会+1确认,只会确认主路由器发送过来的序列号)
当主路由器LSDB信息全部同步完毕后:回复:DD seq=y+1+1 null(空数据告知对方已经传输完毕)
从路由器传输完毕也会回复一个想同类型的DD报文 (从总是做最后的确认)
双方进行比对LSDB。进入下一个状态
Loading状态:开始双方请求和更改摘要信息的完整版(后期摘要发生变更,直接发送lsr和lsu)
一方根据LSDB缺少的信息,发送lsr信息
另一方收到LSR信息,发送LSU信息给对方补充。
当都发送完毕后,双方发送LSACK确认LSDB信息传输完毕。
保证LSA新旧程度一致,为的是能够让LSDB保持一个最新的讯息。
Full状态:建立邻接关系 LSDB数据库完成同步。
默认情况下,华为设备DD报文携带的MTU值=0,默认情况下,华为对接口的MTU不做要求。不比较MTU大小但是思科设备DD报文中携带的MTU为1500,要求邻居之间MTU值保持一致。
因为DD报文中携带的本LSDB中所有的LSA摘要信息,根据摘要信息的可靠性,才能决定后续LSDB是否完全同步一致。 而OSPF封装在IP报文中没有可靠的回馈机制,所以通过主从以及序列号的变化来确保交互的可靠性。 OSPF可靠性的表现: 通过三次握手建立邻居关系,避免单项邻居。 LSDB主从选举,通过序列号进行LSDB的同步采用隐式确认机制。
1、如果接口是PPP /HDLC,则默认为p2p链路 2、如果接口是以太网接口,则默认是广播型线路 3、如果接口是FR、ATM,则认为是NBMA(非广播多路访问) 4、没有任何一种链路类型被认为是P2MP点到多点,需要由管理员手动配置
DR/BDR 某某接口属于DR/BDR 基于接口 DR和BDR选举 通过hello报文完成 在two-way之前 主从选举 通过DD报文完成
广播型链路/非广播多路访问 DR和链路上所有路由器建立full邻居 BDR和链路上所有路由器进阿里full邻居 drother之间仅建立two-way邻居
P2P/P2MP 无需DR/BDR选举,直接建立FULL邻居
DR路由器会监听两个地址,224.0.0.5 224.0.0.6
DRother,只会从224.0.0.5 收到LSA,从224.0.0.6发新学习到的LSA
DRother之间只建立邻居关系2-way 所有的DRother只和DR建立邻接关系full
通过接口的优先级选举DR,取值范围0-255 优先级越大,优先成为DR 如果优先级相同,则比较router id大的成为DR 如果修改优先级为0,则该设备直接成为DRother (如果两个接口都为0 会卡在2-way)
为了避免单点故障,所以会选举BDR作为备份,次优的优先级,成为BDR 如果BDR失效,则由其他DRother之间选举产生
DR/BDR默认不具备抢占性
1、每条广播链路/NBMA链路都会进行独立的选举 2、每条广播链路/NBMA链路DR有且只有一个,必须选举出DR 3、每条广播链路/NBMA链路BDR有且只有一个,不必须选举出BDR(默认会进行BDR的选举) 4、BDR是DR的备份路由器,DR失效,BDR成为DR,重新选举BDR 5、BDR失效,重新选BDR 6、DR和BDR没有抢占性 7、优先级等于0的路由器(为DRother),不参与DR和BDR选举
Drother产生的LSU通过224.0.0.6发送给DR,BDR,DR通过224.0.0.5发送给其他的DRother和BDR,DROTHER通过224.0.0.6发送ACK确认,BDR通过组播224.0.0.5向DR确认。
BDR产生的LSU通过224.0.0.5发送给drother和DR,DR通过224.0.0.5发送ack,drother通过224.0.0.6发送ack。
DR产生的LSU通过224.0.0.5 发送drother和BDR,BDR通过224.0.0.5发生ack , drother通过224.0.0.6发送ack。
DR和BDR同时监听224.0.0.5和224.0.0.6 2个组播地址,drother只监听在224.0.0.5。|
Broadcast广播型链路:每有一条广播型链路,就有一条二类LSA 可改成链路类型P2P就只有一类LSA
1、区域内路由器IR 2、区域边界路由器ABR 3、骨干路由器BR 4、自治系统边界路由器ASBR
1类LSA 路由器LSA(Router LSA):每个设备都会产生,描述区域内的拓扑和路由信息,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪
2类LSA 网络LSA(Network LSA):由DR产生,用于描述广播型链路。在一个区域内,描述广播型链路中路由器的邻接关系的路由器。该LSA只能在接口所属区域内泛洪
3类LSA 网络汇总LSA(Network Summary LsA):由ABR(区域边界路由器)产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递。
4类LSA ASBR汇总LSA(ASBR Summary LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
5类LSA AS外部LSA(AS External LSA):由ASBR产生,用于描述到达OSPF域外的路由
7类LSA 非完全末悄区域LSA(NSSA LSA):由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0
Router LSA(1类LSA):每台OSPF路由器都会产生。用于描述自身设备的链路状态和开销值,只会在该接口所在区域泛洪,不会跨区域传播。描述了所有加入了OSPF进程的直连路由信息。
V(Virtual Link 虚链路):如果产生此LSA的路由器是虚链路的端点,则置为1。 E(External):如果产生此LSA的路由器是ASBR,则置为1。 B(Border):如果产生此LSA的路由器是ABR,则置为1。 links:LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口信息。
每台运行了OSPF的路由器都会产生一条一类LSA,用于描述加入OSPF进程中的直连链路状态,仅在链路所在的区域内泛洪。每台路由器在同一个区域下只产生一条一类LSA。
查看简要信息 display ospf lsdb
查看详细信息 display ospf lsdb router
查同区域下的其他路由器产生的一类LSA display ospf lsbd router 2.2.2.2
loopback接口在本路由器的开销是0
1、Stubnet 用于描述路由器自身直连的网络信息 (路由信息) 2、P-2-P 用于描述p2p链路和p2mp链路上的邻居 (拓扑信息) 3、transnet 用于描述广播型、NBMA型链路上的邻居 (拓扑信息) 4、Vlink 用于描述虚链路上的邻居,类似P2P (拓扑信息) 每种链路类型,分别由link id、data、 metric 来具体描述
Type : Router 描述LSA的类型
Ls id : 2.2.2.2 LSA的名称,由路由器自身的router id充当
Adv rtr : 2.2.2.2 描述产生该LSA路由器的router id
Ls age : 59 存活多少秒
Len : 60 LSA的长度
Options : E
seq# : 80000003 序列号
chksum : 0xb8d 校验和
Link count: 4
* Link ID: 14.1.1.1 伪节点router id由DR的接口地址充当
Data : 14.1.1.1 与伪节点相连的接口地址
Link Type: TransNet 描述链路上广播型链路和NBMA链路的邻居
Metric : 1 到达该伪节点的开销值
由于link type为TransNet,所以描述的是广播型链路,且这条信息应该是描述对方邻居的信息,但是由于link ID和对方接口IP都是本设备上的。我们因此判断,此时在这条广播型链路中,有一台伪节点充当互联设备,到达该伪节点开销为1。而又因为linkID是自身设备,根据原理判断,此时本设备为这条广播型链路的DR。我们想要查询这条广播型链路的其他设备。需要查询二类LSA。
* Link ID: 2.2.2.2 邻居的router id
Data : 12.1.1.1 和邻居相连的接口的地址
Link Type: P-2-P 描述p2p链路上的邻居
Metric : 48 自身到该邻居的开销值
* Link ID: 12.1.1.0 直连的网络号
Data : 255.255.255.0 子网掩码
Link Type: StubNet 路由器直连链路的链路状态信息
Metric : 48 自身到达该直连链路的开销值
Priority : Low
Link ID:可以是邻居routerID或是网段,取决于link type Data:可以是接口IP地址或者子网掩码,取决于link type Link Type:直连链路的类型 Metric:自身到达该直连链路的开销 Priority:本地优先级(仅本地有效,跟收敛相关)
1、修复不连续的区域0 2、让非骨干区域与骨干区域逻辑上直连 3、路径优化 4、虚链路永远属于区域0 5、作为区域0的备用链路
经过的开销为虚链路物理路径的真实开销 虚链路无法直接修改开销值 要想修改必须修改物理经过区域的开销值
1、区域0不能配置虚链路 (在非骨干区域配置虚链路 配置命令见IP命令 hello报文为单播) 2、Vlink只能经过一个区域 3、特殊区域不能创建虚链路(STUB,NSSA)
1.连接2个区域以上的路由器,并且至少有一个活动的接口属于区域0。 2.存在vlink的路由器也是ABR。路由器类型通过TYPE-1的FLAGS字段进行描述 3.ABR通过TYPE-1的LSA,告知直连区域自身是该区域的ABR 4.ABR同区域的所有路由器根据区域内的SPF树计算自身到ABR的开销 5.ABR产生3类LSA,描述区域间的路由6.路由器根据3类LSA结合自身到ABR的路由,计算区域间路由 7.ABR将直连区域的区域内路由(TYPE-1,TYPE-2计算出的路由)转换成其他区域的3类LSA 8.ABR将区域0中3类转换成非骨干区域的3类,ADV ROUTER会改变,COST重新计算 9.非骨干区域的3类不会传回到骨干区域,区域间的水平分割 10.ABR在区域0存在活动的FULL邻居时,不会用非骨干区域的3类进行路由计算
1、通过虚链路学习到的1类2类3类4类LSA所计算出的路由 不会转换成虚链路所在区域的3类和4类LSA,目的是防环 2、无法在虚链路所在的区域对区域0的路由进行路由汇总 (当中转区域的ABR汇总了区域0的路由 ABR虚链路所在区域不执行汇总 ) 3、存在虚链路的ABR,得到一条非自身产生的3类LSA,那么该LSA在自身区域0中存在,此时要求3类LSA,也必须在虚链路所经过的区域内他的LSDB数据库中存在。如果不存在,则不使用该3类LSA计算路由。(虚链路物理上是经过中转区域的,如果中转区域没有去区域0的路由,那么在数据传输时到达不了目的地)如果虚链路通过1类2类LSA计算路由,在Vlink所在区域没有对应的3类LSA,也不会计算经过虚链路泛洪来的1类和2类LSA。 4、存在虚链路的ABR,通过虚链路传来的1类和3类LSA和虚链路所经过的其他区域传来的3类LSA,在满足条件3的情况下,优选开销小的计算区域间路由
Type : Network 二类LSA,由DR产生
Ls id : 100.1.1.4 DR接口的IP地址充当/伪节点的router id
Adv rtr : 4.4.4.4 DR的router id
Ls age : 1454
Len : 36
Options : E
seq# : 80000008
chksum : 0x5e52
Net mask : 255.255.255.0 DR接口的子网掩码
Priority : Low
Attached Router 4.4.4.4 拓扑信息 伪节点链接的实节点的router id
Attached Router 2.2.2.2 拓扑信息
Attached Router 3.3.3.3 拓扑信息
只要有一个一类LSA transnet就对应一个二类LSA 只要有一条二类LSA就有一条路由信息 通过Ls id和Net mask计算出
到伪接口的开销为1 从伪节点出去开销为0,LOOPBACK接口出方向开销值为0
由ABR产生,用于向一个区域通告到达另一个区域的路由。
问题展现:
1.当网络规模变大后,lsdb会变得非常臃肿,也会增加设备cpu损耗。当网络拓扑发生变动时,会引发网络震荡,所有的路由都会重新计算。收敛过慢。
2.无法进行路由汇总
解决方式:
划分多区域进行网络优化 减小LSDB数据库 降低网络设备性能消耗 但是1、2类LSA无法跨区域传播,所以,此时ABR成为生成3类LSA的重要角色。 3类LSA负责跨区域传播lsa
Type : Sum-Net 三类LSA,由ABR产生,只在区域内泛洪
Ls id : 14.1.1.0 区域间路由的网络号
Adv rtr : 1.1.1.1 ABR的router id
Ls age : 289
Len : 28
Options : E
seq# : 80000002
chksum : 0x87bf
Net mask : 255.255.255.0 区域间路由的子网掩码
Tos 0 metric: 1 ABR到达该路由的开销值
Priority : Low
1、将直连区域内的路由转化为3类LSA在其他直连直连区域泛洪 2、骨干区域的3类LSA可以转化成非骨干区域的三类LSA(其他区域传递给骨干区域的3类LSA被传递到ABR,再由ABR解析计算,传递给本非骨干区域中。实现多区域路由互通。此时Adv router 会由之前的其他区域的ABR变成本区域ABR的路由器。) 3、非骨干区域的3类LSA不能再次传回骨干区域 4、ABR只有在区域0没有full邻居时才使用非骨干区域的3类LSA计算区域间路由 5、ABR如果连接多个其他区域,也是直接把三类传递过去,并不是3类只进入区域0,再由区域0传递给其他区域。
ABR接收的3类LSA不会再次传出去
1、1类或者3类LSA在ABR上计算出来的路由。并且在全局路由表中不存在,不管是active,inactive,都会转换成3类LSA 2、OSPF协议认为自己对该路由不可达,则不产生3类LSA
华为设备机制 一个路由器有一个区域0有一个其他区域 就会显示一个假ABR 真ABR有一个接口在区域0
cost=ABR到该路由的开销值+自身到达该ABR的开销值 下一跳=自身到产生该三类LSA的ABR的下一跳。 R2,如何知道R1是ABR,ABR通过一类LSA的flag位B bit置位为1表明自己是ABR
Vbit代表是否存在虚链路,V=1时存在 0不存在 Ebit代表是否为ASBR 1 是,0不是 Bbit代表是否为ABR 1 是,0不是
OSPF要求所有的非骨干区域必须与Areao直接相连,区域间路由需经由Area0中转。 区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
OSPF划分了骨干区域和非骨干区域,所有非骨干区城域均直接和骨干区域相连,且骨干区域只有一个;非骨干区城之间的通信都要通过骨干区域中转;并规定从骨干区城传来的三类LSA不再传回骨干区域。
ABR只在区域0没有full邻居才用非骨干区域的3类LSA计算路由
1.外部路由引入路由后以5类LSA在区域内泛洪。 2.不在单独区域内泛洪,在所有网络中泛洪。
查看命令 dis ospf lsdb ase 6.6.6.0
Type : External 5类LSA,由ASBR产生
Ls id : 6.6.6.0 外部路由的网络号
Adv rtr : 5.5.5.5 ASBR的router id 我相去外部 需要先到达该ASBR
Ls age : 168
Len : 36
Options : E 是否允许外部路由
seq# : 80000001
chksum : 0x8f1b
Net mask : 255.255.255.0 外部路由的掩码
TOS 0 Metric: 1 外部路由引入时默认开销值
E type : 2 外部路由开销类型,默认类型2 在1类LSA flag中
Forwarding Address : 0.0.0.0 转发地址,外部路由路径优化
Tag : 1 外部路由标记,默认为1,方便对外部路由做标识
Priority : Low
type-cos 2 :路由表中不显示路由在AS内部路径的开销值 (只会显示默认开销 不显示实际开销) type-cos 1 :路由表中显示引入时的开销和AS内部路径开销之和
1、与ASBR同区域的路由器如何进行路由计算 外部路由开销=自身到达该ASBR的开销+外部路由引入时的开销
外部路由下一跳=自身到达ASBR的下一跳
2、与ASBR不同区域的路由器如何进行路由计算 自身到达该ABR的开销(SPF)+(ABR到ASBR的开销,4类LSA)+ 引入时的开销值
ASBR同区域的ABR产生,负责生成4类LSA,用于通告给其他区域如何到达ASBR。
本质与3类差不多,但仅仅负责通告其他区域,ASBR在哪里,标记ASBR。
在路由表中会出现两个具备ASBR信息的路由信息。
但是一个是通过3类宣告的,只告诉你如何去ASBR,另一个是通过4类宣告的,你的路由信息不是仅仅要去asbr,而是通过asbr要转发出去。
有外部路由引入,自动生成4类LSA。
四类LSA就是为了描述一台ASBR路由器的。
区域内有多个ABR则都产生4类
Type : Sum-Asbr 4类LSA,和ASBR所在区域的ABR产生,在产生的区域内泛洪
Ls id : 5.5.5.5 ASBR的router id
Adv rtr : 3.3.3.3 ASBR所在区域ABR的router id
Ls age : 165
Len : 28
Options : E
seq# : 80000003
chksum : 0x2c0c
Tos 0 metric: 2 ABR到ASBR的开销值
1、引入时开销小的路径优先使用,不关心AS内部路径好坏。
2、引入时开销一样,则比较到达ASBR的开销值,越小越优
3、引入时开销一样,到达ASBR的开销值也一样,则负载分担。
1、引入开销+AS内部开销最小的优先 2、引入开销+AS内部开销相同,则负载分担
类型1的开销计算方式优先于类型2的开销计算方式 cost type1的选路体现路由意义上的最佳路径 cost type2的选路体现了管理员的选路意志
1类2类LSA优于区域0的3类LSA–优先于非区域0的3类LSA–优先于外部路由–外部路由类型1的开销计算优于类型2的开销计算
4类LSA和5类LSA都可以单独出现,例如在一个只有一个骨干区域的ospf网络中引入外部路由,就不会产生4类LSA。 空引入外部路由时,可以产生4类LSA但不会产生5类LSA ABR产生4类泛洪五类 ASBR泛洪5类
OSPF的区域可分为两种类型:
传输区域(Transit Area)︰除了承载本区域发起的流量和访问本区域的流量外,还承载了源lP和目的IP都不属于本区域的流量,即“穿越型流量”,如本例中的Area 0。
末端区域(Stub Area):只承载本区域发起的流量和访问本区域的流量,如本例中的Area i和Area 2。
为了减少在此区域过量的LSDB泛洪,照顾老旧且性能较差的设备。在不需要进行中转服务的区域设置。 在不影响IP可达的情况下,尽量减少LSA泛洪。
当末端区域设备性能不够,通过特殊区域可以精简LSA
hello报文中 ,option字段Ebit字段和Nbit都是用于描述区域类型的 Ebit代表是否进行5类LSA的同步,1代表需要同步,0代表不同步 Nbit代表是否进行7类LSA同步,1代表需要同步,0代表不同步
当hello报文中 option E=1,N=0 普通区域 option E=0,N=0 末节区域/完全末节 option E=0,N=1 NSSA/完全NSSA
设置末节区域的区域内,ABR不会向自己区域内泛洪自己收到的的外部路由(4,5类路由)。ABR会向本末节区域内泛洪一条“3类默认LSA”,全部指向ABR,用于区域内设备访问外部路由。
当末节区域通过这条“3类默认LSA”访问到末节区域的ABR时,ABR自身拥有外部路由的LSA。再进行转发。
1、stub区域的ABR不在stub区域泛洪5类LSA(不泛洪=无法学到5类LSA不会产生路由) 2、stub区域的ABR不在stub区域产生4类LSA 3、stub区域的ABR,在stub区域产生区域间的3类LSA,用于访问区域间的路由 4、stub区域的ABR,在stub区域产生缺省的3类LSA用于访问外部路由 5、default- cost 10 修改3类LSA默认路由 去往外部路由的开销值 (需要进入到stub区域ospf区域内修改) 6、外部路由存在次优路径
(当stub区域内到ABR的开销都一样 那么负载分担 但是外部存在次优路径)
7、stub区域存在多个abr时,在区域0存在邻居,则不会计算彼此缺省的LSA,区域0所有邻居失效,才会计算其他ABR产生的缺省LSA
属于末节区域的ABR在建立邻居过程中,DD报文向区域内其他设备交互lsdb摘要信息时就不通告5类LSA。 所以其他设备在后期进行LSA和LSU时就不会交互5类LSA。
1.骨干区域不能配置stub区域(传输区域本身就不能配置) 2.stub区域必须所有设备都要配置stub 3.stub区域不可以引入也不能接受外部路由(stbu区域本身无法产生外部路由) 4.stub区域无法作为Vlink的穿越区域。(5类LSA无法穿越stub区域)
在末节区域的基础上,再解决掉3类LSA泛洪,完全由1,2类LSA在本区域泛洪,超过本区域的LSA都通过默认3类LSA交给ABR传递。
1、完全stub区域的ABR不在stub区域泛洪5类LSA(不泛洪=无法学到5类LSA不会产生路由) 2、完全stub区域的ABR不在stub区域产生4类LSA 3、完全stub区域的ABR,在stub区域不产生区域间的3类LSA 4、完全stub区域的ABR,在stub区域只产生缺省的3类LSA用于访问外部路由 5、default- cost 10 修改3类LSA默认路由开销值 6、区域间路由和外部路由都存在次优路径 7、stub区域存在多个abr时,在区域0存在邻居,则不会计算彼此缺省的LSA,区域0所有邻居失效,才会计算其他ABR产生的缺省LSA
完全末节区域是区域间路由和外部路由存在次优路径的区别 末节区域只会在外部路由存在次优路径
由于stub区域无法引入外部路由,而现实中可能会出现stub区域又得引入外部路由的需求,此时NSSA区域应运而生。
末梢区域,既可以引入外部路由,又可以防止其他区域的4,5类lsa泛洪的外部路由进入。
1.由于NSSA区域是在stub区域的基础上可以引入外部路由到区域内,但此区域无法泛洪5类LSA。所以5类LSA被套壳为7类LSA。仅可以在末梢区域内泛洪。 2.7类LSA就是5类LSA,只不过为了能在NSSA区域泛洪而认为定义的。(7类LSA只在NASS区域内泛洪) 3.ABR收到7类LSA,将7类LSA转化为5类LSA在其他区域传播。 4.7类LSA由末梢区域中的ASBR产生 5.NSSA区域的ABR会把7类LSA转化成5类LSA,所以NSSA区域的ABR也是ASBR. 6.当NSSA区域存在多个ABR设备时,默认情况下由RouterID大的设备执行7类转5类LSA。(可以指定某一台设备执行7转5的操作)
Type : NSSA NSSA 七类LSA,由NSSA区域的ASBR产生,只能在NSSA区域内泛洪
Ls id : 192.168.1.0 外部路由的网络号
Adv rtr : 7.7.7.7 ASBR的router id
Ls age : 39
Len : 36
Options : NP 可以执行7类转5类的操作 heelo报文N LSA报文P
seq# : 80000001
chksum : 0x58cd
Net mask : 255.255.255.0 外部路由子网掩码
TOS 0 Metric: 1 引入时的开销
E type : 2 开销类型
Forwarding Address : 7.7.7.7 转发地址
Tag : 1 路由标记
如图所示:
1、NSSA区域的ABR不在NSSA区域泛洪5类LSA(不泛洪=无法学到5类LSA不会产生路由) 2、NSSA区域的ABR不在NSSA区域产生4类LSA 3、NSSA区域的ABR,在NSSA区域产生区域间的3类LSA,用于访问区域间的路由 4、NSSA区域的ABR,在NSSA区域产生缺省的7类LSA用于访问外部路由 5、default- cost 10 修改7类LSA默认路由 去往外部路由的开销值 (需要进入到NSSA区域ospf区域内修改) 6、外部路由存在次优路径 7、NSSA区域存在多个abr时,在区域0存在邻居,则不会计算彼此缺省的LSA,区域0所有邻居失效,才会计算其他ABR产生的缺省LSA 8、当一个NSSA区域中 存在多个ABR 默认情况下使用router id 大的ABR执行7转5的操作 也可手动指定设置 进入区域 nssa translator-akways 9、NSSA区域的即是ABR又是ASBR路由器 引入外部路由成为7类LSA时,NP=0不执行7转5
精简掉OSPF全区域的3,4,5类路由。只有本区域的1类2类和nssa区域的默认3类LSA
完全nssa区域的特点与完全stub区域类似。
1、完全NSSA区域的ABR不在NSSA区域泛洪5类LSA(不泛洪=无法学到5类LSA不会产生路由) 2、完全NSSA区域的ABR不在NSSA区域产生4类LSA 3、完全NSSA区域的ABR,在NSSA区域产生区域间的3类LSA,用于访问区域间的路由 4、完全NSSA区域的ABR,在NSSA区域产生缺省的7类LSA用于访问外部路由 5、default- cost 10 修改7类LSA默认路由 去往外部路由的开销值 (需要进入到NSSA区域ospf区域内修改) 6、外部路由存在次优路径 7、完全NSSA区域存在多个abr时,在区域0存在邻居,则不会计算彼此缺省的LSA,区域0所有邻居失效,才会计算其他ABR产生的缺省LSA 8、当一个完全NSSA区域中 存在多个ABR 默认情况下使用router id 大的ABR执行7转5的操作 也可手动指定设置 进入区域 nssa translator-akways 9、完全NSSA区域的即是ABR又是ASBR路由器 引入外部路由成为7类LSA时,NP=0不执行7转5
NSSA区域的特殊情况 NSSA区域主要的作用是为了引入外部路由再由NSSA区域中的ABR执行7类LSA转5类LSA,那么是否存在无法执行7转5的LSA呢?
路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。
1、区域间路由汇总 ABR上执行对直连区域的路由进行汇总 2、汇总后的路由默认继承明细路由中开销大的。 汇总时可以配置开销 3、不要在所有的ABR上执行相同的路由汇总,会导致被汇总起来的明细路由之间无法互相访问 4、同一个区域存在多个ABR时,都要执行汇总的配置,汇总后,网络号和掩码必须保持一致 5、所有明细路由失效后,汇总路由才会失效
1、在ASBR上执行汇总 2、在执行7转5的ABR进行汇总 ,非7转5的ABR也可以汇总,但不生效,作为汇总备份使用
在OSPF头部报文中
OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收。 路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:。
区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致。 接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致。
防止协议报文被伪造或者篡改。但是不对报文做加密
1、明文认证 2、MD5认证 3、null认证
OSPF接口认证:仅对该接口所在链路上的OSPF报文进行认证 OSPF区域认证:对路由器属于某个区域的所有接口启用接口认证
接口和区域可以混合使用 但是认证模式和口令必须一致 接口认证优先于区域认证
如果做了area0的认证,并存在vlink,要注意vlink上也做区域0的认证
如果骨干区域配置了认证 那么配置vlink的区域也需要配置认证 vlink-peer 1.1.1.1 md5
SPF算法:第一步计算SPF树,第二部将直连网络挂载SPF树上
SPF(最短路径优先)自动计算出无环且最段路径的拓扑 逻辑上阻塞一条链路
SPF算法只算自身区域的路由
OSPF邻居建立条件补充 广播型链路和 NBMA链路要求子网掩码必须一致,接口地址在同一个网段才能建立邻居关系
路由器将自己作为最短路径树的树根,根据Router-LSA(一类)和Network-LSA(二类)中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。
路由器以RouterID或者DR标识
广播网络中DR和其所连接路由器的cost值为0.
SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路
注意,spf计算是计算最优路径,次优路径不会丢弃,只会隐藏。
首要原则:
登录某一台设备,通过dis ospf lsdb router 查询lsa信息
观察 Link Type 字段信息,筛选 P-2-P,TransNet的一类LSA信息。
※ 查询本设备内所有的P-2-P,TransNet的信息,且以本设备为根构建出了拓扑信息,此时,本设备的拓扑信息已经查询完毕。按照OSPF lsdb的工作原理我们得知,已经完成邻接建立的、同区域的lsdb是全同步的状态。所以当我们查询到其他设备的routerID时,肯定是对方同步过自身的LSA信息。想要构建spf,我们就需要到下一个节点去查询他设备下的产生的lsa信息。
查询已构建出的设备lsa信息,通过dis OSPF lsdb router X.X.X.X查询
(因为lsdb全同步,可以在一台设备中通过命令+routerID直接查询其他设备的LSA信息)
※ 我们在构建spf树的过程中,link type 的TransNet信息其实代表了广播型链路的伪节点信息。真正的拓扑环境可能会被伪节点阻止。所以我们要通过2类LSA来和伪节点来解决伪节点后的设备拓扑信息。
可以通过dis OSPF lsdb network 查询2类LSA
继续通过2类LSA可以查询到伪节点后面是否还连接着其他的设备。
因为lsdb全同步的关系我们可以利用1类和2类lsa查验拓扑。
当拓扑闭环后,我们可以得到一个带有接口IP,开销值,routerID的拓扑图。
通过挨个查询设备中一类LSA中link type 为StubNet的lsa信息,为拓扑增加路由信息。
伪节点查询的2类LSA信息,即是拓扑信息,也是路由信息。所以关注2类LSA中的Ls id和Net mask信息来确定伪节点中的路由信息。
1. 3类LSA通过ABR在所有区域内泛洪,同步LSDB表。
2. 若某一个区域内的某设备想要跨区域访问路由,首先需要先查询自身LSDB表中的三类LSA,此条3类LSA由这台设备所在区域的ABR发出,且标记有开销值,所以,跨区域访问路由首先要经过本区域的ABR(骨干区域直接访问目标区域的ABR)。
总结:A区域a设备-A区域ABR-骨干区域-B区域ABR-B区域b设备
跨区域开销值计算:cost=ABR到该路由的开销值+自身到达该ABR的开销值下一跳
未经允许禁止转载!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有