开放式最短路径优先协议 典型的链路状态型协议
动态路由协议分类
- 按照范围分类
1.1内部网关协议IGP (AS之内运行的) 有RIP、OSPF、ISIS、EIGRP(思科)等
1.2外部网关协议EGP (AS之间运行的) 有BGP
AS----自治系统
- IGP按工作特点分类
2.1距离矢量型---DV 邻居之间共享路由表 算法:贝尔曼福特算法(用于计算路径)
RIP----路由信息协议
EIGRP----加强型内部网关路由协议
2.2链路状态型----LS 邻居间共享拓扑,本地计算路由SPF算法(也用于计算路径),将图形转化成树形结构
OSPF----开放式最短路径优先协议
ISIS----中间系统到中间系统
3. IGP协议按照是否携带真实掩码信息分类
3.1有类别路由协议----不传递真实网络掩码(不带掩码) RIPv1
3.2无类别路由协议----传递真实网络掩码(带掩码) RIPv2 ospf
- RIPv1----IPv4网络
- RIPv2----IPv4网络
宣告
- 要求
- 宣告所有直连网段
- 必须按照主类宣告
- 目的
- 激活接口----只有激活RIP的接口才能收发RIP的数据包
- 发布路由----只有激活接口对应的网段路由信息才能被加载到应答报文中被发布给其他路由器
RIPv1与RIPv2的区别
- 更新方式
- RIPv1使用广播更新
- RIPv2使用组播更新,组播地址224.0.0.9,0100-5e00-00xx
- 更新时是否携带掩码
- RIPv1不携带真实掩码
- RIPv2携带真实掩码
- RIPv2支持自动汇总功能(汇总时,直接汇总到主类),RIPv1不支持
- RIPv2支持手工认证
动态路由协议的评判标准:收敛速度、选路、占用资源
两协议对于选路的标准: RIP依靠跳数进行选路,OSPF依靠带宽值进行选路
注意:开销值=实际带宽/参考带宽
RIP相当于一句指路的话,ospf相当于一张地图
RIP单次占用资源更小,但存在周期更新,长久下来消耗更大;ospf取消了周期更新,单次消耗相比RIP更大,但只发一次,长时间下来消耗就更小
RIP有最大跳数限制,为16,无法大范围覆盖
OSPF---开放式最短路径优先协议---典型的链路状态型协议(传递TOPO信息);IETF(国际互联网工程任务组)
OSPF是跨层封装协议,取消了传输层封装,直接使用网络层(IP层面)进行封装
,网络层协议号为89
组播IP地址:224.0.0.5和224.0.0.6
ospf为无类别协议
删除周期更新,仅保留触发更新机制。---周期链路刷新(30min)
ospf使用组播更好,保证报文不会被其他人接收 (大部分路由协议都会使用组播)
RIP缺点:无法确认比人发来的路由信息的正误
ospf优点(相对于RIP):LSA(链路状态通告)交互,得出拓扑信息,由拓扑信息验证路由信息的正误
周期链路机制刷新的是LSA
LSDB内容:
1.一种是收集来的
2.另一种是本地产生的
在拓扑图中用serial线连接的是串线链路
OSPF结构化部署---区域划分
AS内部有一部分域运行ospf,再在这个域内划分出多个ospf区域
区域划分目的:为了限制拓扑信息的传递,从而减少资源消耗
区域内部传递拓扑信息,区域间传递路由信息。
两ospf区域间的路由器本应传递拓扑信息,却传递路由信息
区域划分要求:
- OSPF要求域中的所有非骨干区域(区域ID不为0的区域)都必须与Area 0直接相连。
在一个ospf域中有且只有一个骨干ospf区域 - 骨干区域不能被分割。
OSPF规定,只允许ABR设备进行区域间路由的传递。
ABR为区域边界路由器
成为ABR设备的条件:
1、至少连接两个区域
2、连接的区域当中至少有一个区域是骨干区域
3、在骨干区域中存在至少一个活跃的邻居
非骨干区域之间不允许直接相互发布区域间的路由信息。
从非骨干区域收到的路由信息,ABR设备能接收,但不会使用这条路由信息。----OSPF的区域水平分割机制。从一个区域学习到的路由信息,不能再传回该区域。
域内优于域间优于域外
1、伪ABR设备不允许转发区域间路由信息。
2、对于真实ABR设备
可以将非骨干区域的域内路由信息传递给骨干
可以将骨干区域的域内路由信息传递给非骨干
可以将从骨干区域学习到的域间路由信息传递给非骨干
OSPF路由器称呼
IR---内部路由器---所有接口均接入相同区域
BR---骨干路由器---存在一个或所有接口处理骨干区域
ABR---区域边界路由器
ASBR--自治系统边界路由器---连接在多个动态路由域间的设备;负责将域外的路由引入到OSPF域中。
并不是同时运行多种路由协议的OSPF路由器就一定是ASBR设备,ASBR设备一定是将外部路由重发布到OSPF,或者是执行了路由重分发操作的路由器。
ospf重点:
OSPF五种数据包、七种状态机、两种设备关系、三种接口角色。
OSPF数据包
一.hello包 10s一次周期保活
用来发现、建立、周期性保活OSPF邻居关系
10S一次发送hello报文进行周期保活
存在一个hold-time时间,若该时间内没有接收到邻居发送的hello报文,则认为邻居不存在,hold-time一般为死亡时间,为hello-time的四倍,即40S
- Router-ID
- 全域唯一,用来标识路由器的身份。
- 使用IP地址形式表示。-------点分十进制方式。
- 配置方法:
- 手工配置,只需要满足上述两点
- 自动配置
- 华为标准:在第一次时,选取状态最先UP的接口的IP地址作为RID。
- FRC标准:选取loopback接口IP地址最大的作为RID,若没有loopback接口,则选择最大物理接口IP地址中的最大值。
- 修改RID
<Huawei>reset ospf process ---重置OSPF进程
二. DBD包 数据库描述包
链路状态数据库描述报文 (data discribe)
用于携带本地数据库目录
包含了本地所有拓扑的目录信息
双方发DD包以通过对比查看自己缺什么
- 该报文中携带了路径信息的摘要信息。在OSPF中,拓扑信息是由LSA(链路状态通告)进行通告
- 避免重复更新和减少更新量
三. LSR包 链路状态请求包
在查看完对面邻居的DD包后,基于本地LSA信息查询 (request)
请求获取未知的LSA信息 知道相比于对方缺什么之后,发LSR进行请求获取
四.LSU报文 链路状态更新包
用于携带各种LSA信息 我有你没有(LSA和LSU最终达到信息互补的效果) (update)
五.LSAck报文 链路状态确认包
用于确认接收到对端的信息 收到了之后确认
(acknowledge)
重点:
OSPF五种数据包、七种状态机、两种设备角色
OSPF状态机
- down---关闭状态
表示未被激活的状态,一旦本地发出hello包进入下一个状态机
一旦启动了OSPF协议,则发出hello报文,该报文中携带了本地RID值,并进入下一个状态 - init------初始化状态,收到的hello报文中必须存在本地的RID值,进入下一个状态
- 2-way----双向通讯状态-----邻居关系建立。
条件匹配:选出DR则匹配成功,进入下一个状态;未选出DR(都是DRother)则匹配失败,停留在邻居关系
匹配条件:在点到点的网络类型中直接进入下一个状态机,在MA网络中,将进行DR和BDR的选举;所有非DR/BDR的设备不能进入下一个状态机
匹配成功,则向邻接关系发展
类比于开始恋爱,并向婚姻关系发展
- exstart---预启动状态----主从关系选举(未携带数据的DBD报文),选择RID值大的设备为主,优先进入下一个状态机。
- exchange----准交换状态---用携带数据的DBD报文进行LSA摘要信息共享。
发送出一个,收到后回复一个确认包,收到确认包后再发送一个,如此反复,直至交换结束 - loading----加载状态----邻居之间使用LSR/LSU/LSAck三种报文来获取未知的LSA信息。
加载,在查看完对端邻居的DD后,使用LSR来查询本地位置的LSA信息,对端使用LSU进行回复,本地还需要使用ACK来确认所接受到的LSU包 - full----转发状态----LSA交换完成进入的状态。标识邻接关系的建立。路由器通过LSA计算出路由信息,此时可以进行数据发送。
、
通过以上状态转变后,由陌生关系变为邻居关系,最终变为邻接关系(类比于普通朋友变为恋人,最终步入婚姻)
注意:
- 状态只能在邻居(A和B互为邻居)身上才能查看
- B没有启动ospf时,无法接收hello报文(必须双方都启动)
- B对A的hello包里有2.2.2.2和1.1.1.1(将B的信息告诉A,且让A知道B认识它)
- 2.2.2.2和1.1.1.1分别为A和B的RID
- 通过报文的收发(条件匹配)实现状态的改变
- LSR 链路状态请求
- LSA 链路状态确定
- 除hello包10s发一次以外,其他包的发送没有固定时间(收到了才发)
条件匹配:决定了每台设备给谁传递TOPO信息。
真实目的:是为了减少TOPO的重复,也就是TOPO信息的更新,减少资源消耗。
设备接口角色
- 指定路由器-----DR
- 备份指定路由器-----BDR
- 其他路由器-----DRother
选举规则:
1. 比较接口优先级,0-255;优先级越大接口优先度越高。默认值=1
0代表设备接口不具备DR和BDR的选举资格
2. 若参选接口的优先级相同,则比较参选设备的RID,数值越大越优
注意:DR/BDR的选举并非是抢占式的;故需要网段内部重新选举,需要重启该网段内所有参选设备的ospf进程;若参选接口优先级为0将放弃参选;一个网段至少应该存在一台DR
选举的范围以广播域为单位,任何一台接入多个广播域的设备,都有可能存在不同的接口角色。
对于每一台启动了OSPF的设备而言,都可以接收并处理目的IP地址为224.0.0.5的组播地址。而224.0.0.6的地址只有DR和BDR设备可以接收并处理。
条件匹配中LSA的传播:
1、所有的DRother设备发送目标地址为224.0.0.6的数据报文,该报文只有DR/BDR可以正确处理。
2、当DR存在时,BDR不进行操作。此时,DR设备会将所有LSA信息通过224.0.0.5发送给所有路由器。
该选举模式为非抢占性模式,即一旦选举成功,不因为新加入的设备而重新进行选举。---原因:减少路由器资源消耗,降低网络中断风险。
角色之间关系:
DR与BDR-----邻接关系
DR与DRother----邻接关系
BDR与DRother----邻接关系
DR、BDR、DRother三者互为邻接关系
只有 DRother与DRother----邻居关系
选举模式,非抢占性,一旦选举成功,不因为新加入的设备而重新选举,若需要重新选举,则需要重启OSPF进程,而非重启路由器。
OSPF工作过程
1、启动OSPF协议,设备会向本地所有运行OSPF协议的接口以组播224.0.0.5的方式发送出hello报文;该报文中携带本地的Router-ID参数以及本地已知的邻居的Router-ID。
通过接收其他邻居的hello包来获取本地邻居信息,建立邻居关系,并生成邻居表。
2、邻居关系建立后,进行条件匹配;匹配成功开始建立邻接关系,匹配失败,则停留在邻居关系,并使用hello报文保活。
3、匹配成功的邻居使用未携带数据的DBD报文进行主从关系选举,其中从设备先发送下一个携带数据的DBD报文。而主设备先进入loading状态,发送LSR进行LSA请求。
通过LSR/LSU/LSAck三种报文,完成LSA收敛工作,建立LSDB链路状态数据库,生成数据库表单。
4、之后本地基于数据库中的LSA信息,通过SPF算法,计算有向图和最短路径树,之后根据计算结果,获取到达所有未知网段的最佳路由,并将其添加到OSPF路由表中。
5、通过多种路由共同对比,选择最佳路由加入到全局路由表中。此时收敛完成,仅使用hello报文保活。并每30min进行一次周期更新。
OSPF基础配置复习
192.168.1.0/24--->4
192.168.1.0/26----链路地址
192.168.1.0/29---Area 0
192.168.1.8/29
192.168.1.8/30
192.168.1.12/30
192.168.1.16/29
192.168.1.24/29
...
192.168.1.56/29
192.168.1.64/26---R1
192.168.1.128/26--R2
192.168.1.192/26--R5
1、启动OSPF进程,并规定RID值
[r1]ospf 1 router-id 1.1.1.1
2、创建区域
[r1-ospf-1]area 0
3、宣告
精准宣告
[r1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 192.168.1.65 0.0.0.0 ---最常用的方式
网段宣告,使用反掩码进行宣告
反掩码:把掩码为1的位变为0,0的位变为1(取相反)
eg. 255.255.255.0 反掩码为 0.0.0.255 (前24位原本为1变为0,后8位原本为0变为1,或用255.255.255.255减去对应网段掩码)
用反掩码进行宣告更精确
例如宣告网段12.1.1.0 ,加上反掩码0.0.0.255使得前24位(即12.1.1.0的前三部分)无法变化,后八位(即12.1.1.0的第四部分)共有255种变化情况
范围宣告
[r2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[r1]display ospf peer ---查看OSPF邻居表单
[r1]display ospf peer brief ---查看OSPF邻居简表
[r3]display ospf lsdb ---查看OSPF数据库信息
每一台路由器为接入的每一个区域维护一张LSDB表单,而同区域的设备的相同表单完成一致。
[r3]display ospf routing ---查看OSPF路由表
[r1-GigabitEthernet0/0/0]ospf dr-priority 2 ---修改接口优先级
[r5-ospf-1]default-route-advertise ---下发缺省路由,非强制性下发,要求本地必须存在缺省路由
[r5-ospf-1]default-route-advertise always ---强制性下发
[r1-ospf-1]silent-interface GigabitEthernet 0/0/1 ---设置GE0/0/1接口为静默接口,该接口不发送也不接收OSPF报文。应用在连接用户的接口。
接口认证:
[r3-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
区域认证:
[r4-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher 123456
修改参考带宽---不建议修改,如果需要修改,则全网均进行修改
[r4-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
OSPF开销值算法:COST=参考带宽/实际带宽;参考带宽默认为100Mbps
一条OSPF域内或域间路径的COST值等于从目的地到本地路由器沿途的所有路由器入接口COST的累计。
ospf报文头部
头部长度总共24字节。
认证类型:
0---不认证
1---简单认证
2---MD5认证
接收方收到报文后,先对比认证类型字段,如果该类型字段相同,则在去对比认证数据字段。如果认证类型为0,则认证数据字段使用全0填充。
Hello包
- 网络掩码
- 该报文由哪一个接口发送,则该字段填充该接口的掩码信息。
- 两台OSPF路由器如果通过以太网接口直连(MA网络),那么双方的直连接口必须配置相同的网络掩码信息,如果一方在收到的hello报文中“网络掩码”字段与本接口不同,则忽略该hello报文,此时邻居关系无法正确建立。----在P2P网络中,不需要对比该字段。
- 注意:OSPF建立邻居关系时对比网络掩码信息是华为独有。
- Hello间隔
- 两台路由器需要保证接口的hello时间相同,否则邻居关系无法正常建立。
- 可选项
- 8个标志位,每一个标志置为1,则代表其符合OSPF的某种特性。
- 可选项字段中的某些比特位会被检查,因为其会影响到OSPF邻居关系建立。---特殊区域标记。
- 路由器优先级
- 也叫DR优先级或者接口优先级,该字段用于进行DR/BDR选举。
- 路由器失效时间
- 在邻居路由器被视为无效之前,需等待收到对端hello报文的事件。
- 该字段,直连路由器双方需要相同,否则无法建立邻居关系。
所有224.0.0.X格式的组播地址被称为本地链路组播,目标IP地址是本地链路组播的数据包中的TTL值被设定为1。组播MAC地址,01-00-5e-0后23位为组播IP地址的后23位。
限制邻居关系建立的参数
网络掩码:
1、两台设备在首次建立邻居关系时,该字段不同则无法建立。
2、若已经建立成功,在去修改该字段,则修改方会立即断开邻居关系,而对端需要等待死亡时间超时。
修改hello时间:
[r1-GigabitEthernet0/0/0]ospf timer hello 20 ---修改该接口的hello时间
建立邻居关系以后,在修改hello时间,则会导致双方均在死亡时间超时后断开连接。
修改死亡时间:
[r1-GigabitEthernet0/0/0]ospf timer dead 80 ---修改死亡时间时,不能小于当前接口的hello时间
建立邻居关系以后,在修改时间,则会导致双方均在死亡时间超时后断开连接。
特殊区域标记:与网络掩码效果相同
认证:双方均等待死亡时间超时,进行状态切换。
当修改hello时间后,死亡时间会随之改变。如果修改死亡时间,hello时间不变。直连邻居之间都需要修改。
修改死亡时间时,不能小于当前接口的hello时间
DBD包
- 使用未携带数据的DBD报文进行主从关系选举
- 使用携带数据的DBD报文进行LSA摘要信息共享
- 使用未携带数据的DBD报文进行确认
- 接口最大传输单元----MTU
- 默认情况下,无论接口的MTU实际等于多少,该字段数值为0。
- 华为默认不开启MTU检测机制。
- [r1-GigabitEthernet0/0/0]ospf mtu-enable ----开启MTU检测机制,必须双方均开启。
- 在进行检测时,如果两边MTU数值不同,则状态卡在exstart状态。---会影响邻接关系建立。
- 标记位
- I位----代表主从关系选举
- 如果该标记位置为1,则代表该报文不会携带LSA头部信息,当主从关系选举完成后,该位置为0。
- M位----代表后续是否还存在DBD报文。
- 如果置为1,则代表后续还有报文。如果为0,则代表该报文为最后一个DBD报文。
- MS位---代表主设备
- 当该标记位置为1时,则代表发送该报文的设备为主设备。反之为从设备。
- 在主从关系选择完成前,各个设备均会认为自己是主设备。
- DD序列号
- 作用:用以确保DBD报文传输的有序性和可靠性。
- DD报文序列号在报文交互过程中,逐次加一。DD序列号必须由Master路由器来决定,而从设备只能使用Master设备发送的DD序列号来发送自己的DD报文-------隐性确认机制。
- 特殊情况:
- 当主设备数据发送完毕,从设备没有发送完毕。主设备也需要发送DD报文来向从设备提供序列号使用。如果从设备没有收到主设备的DD报文,则无法主动发送自己的DD报文。
- 当从设备数据发生完毕,主设备没有发送完毕。从设备在收到主设备发送来的数据后,也需要使用一个空的DD报文进行回复确认。
LSR包
链路状态类型、链路状态ID、通告路由器----LSA三元组信息。---通过这三个参数可以唯一的标识出一条LSA信息。
LSU包
LSAck包
完成显性确认机制。
OSPF的接口网络类型
OSPF的接口网络类型指的是OSPF的接口在某种网络类型下的工作方式。
网络类型 | OSPF接口的工作方式 |
BMA | Broadcast;可以建立多个邻居关系。需要进行DR选举,hello 10S,dead 40S。 |
P2P(PPP、HDLC) | P2P;只能建立一个邻居关系;不需要进行DR选举,hello 10S;dead 40S。 |
[r2]display ospf interface GigabitEthernet 0/0/0 ---查看OSPF的接口网络类型
Poll--->轮询时间间隔
在NBMA网络上,当邻居失效后,路由器将按照轮询时间间隔定期发送hello报文。
修改时间时,范围为1-3600S,注意,时间最少是hello时间的四倍。
Retransmit--->重传LSA的时间间隔
当一台路由器向他的邻居发送一条LSA后,需要等待对方确认报文。如果在重传间隔内没有收到对方的确认报文,就会向邻居重传这条LSA信息。
当链路震荡时,给于设备一定的修复时间。
Transmit Delay--->LSA的延迟时间
因为OSPF网络需要保证全网的LDSB数据库相同,而LSDB数据库中的每一条LSA是具备一个老化时间的,这个老化时间需要统一。
而LSA在链路上传播时,该时间不会增加。可能会导致全网设备对该条LSA的老化时间认知不同,故使用LSA的延迟时间减少认知不同。
当设备收到一条LSA后,会在该条LSA中原始老化时间的基础上,加上LSA的延迟时间。
[r2-GigabitEthernet0/0/0]ospf trans-delay ?
INTEGER<1-500> Second(s)
[r2-GigabitEthernet0/0/0]ospf timer ? dead Interval after which a neighbor is declared dead hello Time between HELLO packets ldp-sync Specify LDP-OSPF synchronization timer interval poll Interval for sending Poll Hello packet in the NBMA network retransmit Retransmit interval
在BMA网络中,OSPF的接口通常以组播的方式发送hello报文、LSU报文以及LSAck报文,以单播的形式发送DD报文和LSR报文。
开销值:48
因为华为设备默认使用E1标准,实际带宽为2.048M。
在P2P网络中,所有数据报均以组播的方式进行发送。
r3-LoopBack0]ospf network-type broadcast ---修改接口的OSPF网络类型
在MGRE环境中,或者是VPN虚拟环境中,需要将网络看成两部分,一部分为携带公网的环境,一部分为不携带公网的环境。
华为将tunnel接口的传输速率定义为64Kbps。华为想要认为将tunnel接口的开销值增大,从而让OSPF的选路尽量不选择tunnel接口,而选择物理接口。因为隧道接口会进行多次封装和解封装操作,占用设备资源,降低转发效率。
在运行OSPF协议后,R7的视角里只有一个邻居,而spoke节点的视角里没有OSPF邻居,原因是因为hub节点不能发送出数据报文,需要开启伪广播功能。
该接口类型为P2P类型,只能存在一个邻居关系,在spoke节点的视角里没有任何错误,但是在hub节点中,就会导致hub节点只能正常接收第一个到底本地的hello报文,而之后其他设备发送来的hello报文将会被丢弃,导致邻居关系无法正常建立。--->修改tunnel接口的网络类型
此时hub节点因为需要进行DR和BDR选举,而spoke节点不需要,此时节点之间的认知会出现错误,导致部分设备关系停留在邻居关系。---->所有设备均需要修改tunnel接口的网络类型。
如果hub节点接口的身份不是DR设备,那么网络中路由的学习会缺少,原因在于spoke节点充当DR设备时,其nhrp映射表不全,导致无法收到其他spoke节点的LSA信息,最终导致数据缺少。---->将DR设定在hub节点,让所有分支节点放弃选举。
P2MP环境下,接口以组播形式发送hello报文,以单播形式发送其他报文。
NBMA环境下,所有报文以单播形式发送数据。
OSPF的不规则区域划分
区域划分要求:
- 所有非骨干区域都必须与骨干区域直接相连
- 骨干区域不能被分割
不规则区域主要有两种:
- 远离骨干区域的非骨干区域
- 不连续的骨干区域
解决方案
第一种解决方案,使用tunnel隧道方式
在R2和R3之间构造一条虚拟隧道,将这条虚拟隧道宣告到OSPF骨干区域中,相当于将R3设备从伪ABR设备合法化,之后R3既可以正常传递路由信息。--->选择伪ABR设备做为隧道一端节点。
interface Tunnel0/0/0
ip address 10.0.0.2 255.255.255.0
tunnel-protocol gre
source 25.0.0.2
destination 35.0.0.3
[r3-ospf-1-area-0.0.0.0]network 10.0.0.3 0.0.0.0 ----将隧道宣告进OSPF
在上述环境中,没有配置隧道之前,R3通过R2转发的路由信息学习到到达区域0的路由,而存在隧道后,R3可以直接通过隧道直接学习区域0的拓扑信息。该操作会导致R3选择域内路由信息,开销值变大,增大封装与解封装过程,增大资源消耗,减小传输效率。
使用VPN隧道解决不规则区域的问题:
- 可能产生选路不佳
- 可能造成重复更新
- 因为虚链路的存在,R2和R3之间需要建立邻居关系,导致他们之间维护的周期性数据将穿越中间的非骨干区域,导致中间区域资源消耗过多。
第二种方案,虚链路--Vlink
为了解决不规则区域而诞生的技术。
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 ----Vlink需要穿越某一个区域,则进入该区域进行Vlink-peer配置
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
vlink的配置使用的是RID,而非IP地址。
虚链路的配置条件:虚链路的两端必须处于相同区域,因为处于相同区域才可以获取到对应拓扑信息,从而根据RID值查找IP地址实现数据通讯。---->vlink仅能穿越一个区域。
Vlink一般被看做是骨干区域的延伸,所以Vlink不允许在骨干区域中配置。
Vlink接口的Cost值参数是根据Vlink选择的路径不同而随之改变。该路径是本地设备根据拓扑信息选择的最优路径。
Vlink的问题:
- 链路两端建立Vlink邻居时,会进行数据报文的周期性发送,并穿越所在区域,导致该区域设备及链路资源消耗增加。
- Vlink只能穿越一个区域
- 当Vlink设计不当时,可能会有产生环路的隐患。
Vlink不仅可以解决不规则区域问题,还可以修复一些次优路径或者骨干区域不健壮问题。
Vlink还可以解决没有骨干区域的场景。
Vlink环路问题
OSPF规定:Vlink所在的非骨干区域,不能传递聚合路由(汇总路由);也就是说,ABR设备哪怕配置了汇总,也不能向存在vlink的区域发布该汇总路由信息。
多进程双向重发布
重发布就是在运行不同协议或不同进程的边界设备(ASBR)上,将一种协议按照另一种协议的规则重新发布出去。并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由重发布到OSPF或者是执行了路由重分发操作的路由器设备。
[r3-ospf-1-area-0.0.0.2]undo network 34.0.0.3 0.0.0.0
[r3-ospf-1]undo area 2
[r3]ospf 100 router-id 3.3.3.3 ----创建新的OSPF进程
[r3-ospf-100]area 2 [r3-ospf-100-area-0.0.0.2]network 34.0.0.3 0.0.0.0
此时R3还不能被称为是ASBR,还需要进行重发布操作。
[r3-ospf-1]import-route ospf 100 ---将本地通过OSPF 100学习到的路由以及本地属于OSPF 100的路由全部导入到OSPF 1中。
[r3-ospf-100]import-route ospf 1
该方式是现今网络中使用最广泛的解决方案,且不存在选路不佳的情况。
通过该方式引入的路由信息,其协议标志位为O_ASE,代表为域外的路由信息,优先级为150。
OSPF的LSA详解
运行OSPF的逻辑:所有的路由器都会产生用于描述自己直连接口状况的链路状态信息并且将其通告出去。每一个路由器将网络中所洪泛的链路状态信息全部收集并存储在LSDB中,LSDB可以被视为对整个网络拓扑结构及网段信息的描绘,当LSDB同步后,所有路由器拥有对网络的一致认知。
[r1]display ospf lsdb 打开LSDB数据库
LSA分为11类,在OSPFv2当中,只学习6类
LSA信息只有始发路由器可以修改,其他路由器无法修改LSA内容。
LSA头部
蓝色部分为头部信息的参数
链路状态、通告路由器、链路状态序列号为三元组信息
- 链路状态老化时间 (LSA表中用“age”代指)
- 指该条LSA存在了多长时间,单位为秒。
- 当该条LSA被始发路由器产生时,该参数值被设定为0,之后随着该LSA在网络中被洪泛,老化时间逐渐累加。
--->同一条LSA在全网设备的老化时间相同。
---->周期链路刷新只能由始发路由器进行。 - 当始发路由器发现自己始发的LSA的老化时间为1800S时,则会进行周期链路刷新。而其他路由器的对应LSA老化时间继续增长。最大为3600S。当老化时间为3600S时,则认为该条LSA失效,从本地LSDB中删除。---->该方式是路由器唯一一种主动删除其他通告者发送的LSA的方式。
- 在OSPF网络中只有始发路由器能够提前使LSA老化,即有意识的清除LSA信息。
--->具体动作时将LSA的老化时间设定为最大值并通告给其他路由器。 - 链路状态类型
- 指示本条LSA的类型。
- 链路状态ID
- LSA的标识;不同的LSA类型,链路状态ID的定义意义不同。
- 通告路由器
- 产生该LSA的路由器的Router-ID
- 检验和
- 除了用于标明该LSA的完整性,还用于进行LSA新旧关系的对比。
- 序列号
- 一台路由器,每发送一次相同的LSA(根据三元组信息判断),序列号加一。32位二进制构成,由8位十六进制表示。---->用于判断LSA的新旧关系。
- 序列号初始为0x80000001
- 序列号截止为0x7FFFFFFF
- 8代表负数,序列号的增加是由负数转为正数的过程,数值越大越优。
- 序列号空间
- 线性序列号空间
- 循环序列号空间
在循环空间中判断哪一个序列号更大 - 棒棒糖型序列号空间----OSPF
- OSPF不允许序列号进入循环部分,因为无法判断序列号大小。---->OSPF刷新序列号空间机制
- 当一条LSA序列号为0x7FFFFFFE时,始发路由器在进行新LSA通告时,序列号使用0x7FFFFFFF,并且将其老化时间设定为3600S,其他设备接收到该LSA,因为其序列号最大,故无条件接收,又因为老化时间为3600S,故删除该LSA,此时全网设备没有该条LSA的相应内容。
- 此时始发路由器重发该条LSA,且该LSA的序列号为0x00000001。
判断LSA的新旧关系
- 首先,拥有更高序列号的LSA被认为为最新的LSA。
- 如果序列号相同,则拥有更大校验和的LSA被认为更新。---->仅仅为了选择出一条LSA
- 如果序列号与检验和均相同,则对比老化时间
- 如果某条LSA的老化时间为3600S,则认为该条LSA最新。
- 如果没有LSA的老化时间为3600S,则对比两条LSA老化时间的差值,若差值大于15分钟,则认为老化时间小的为更新的,否则两者相同。
链路状态类型 | 链路状态ID | 通告者 | 洪泛范围 | 携带信息 |
Router(Type-1) | 通告者的RID | 区域内所有运行OSPF协议的路由器的RID | 单区域 | 本地接口的直连拓扑信息 |
Network(Type-2) | DR接口的IP地址 | 每一个MA网络中DR所在的路由器的RID | 单区域 | 单个MA网络拓扑信息的补充信息 |
[r1]display ospf lsdb router 1.1.1.1-----查看OSPF具体LSA内容,后跟链路状态类型以及链路状态ID。
对于一类LSA而言,每一个设备都会发送,并且只发送一条一类LSA。---->一类LSA在每个区域都会存在,且一类LSA的传播范围为单区域。
- 标记位
- V-----代表发送该LSA的路由器为Vlink的一段端点
- E-----代表该设备为ASBR设备
- B-----代表该设备为区域边界设备(只要连接多个区域)
- 链路类型(Link Type)
- 链路类型不同,链路ID以及链路数据的参数含义不同。
在MA网络中,仅通过一类LSA进行拓扑描述会缺少部分信息,例如该MA网络的掩码信息以及有多少个运行了OSPF协议的节点连接在该网络。这些信息需要通过二类LSA进行描述,故二类LSA实际上是对一类LSA信息的补充内容。
因为二类LSA中需要包含本MA网络的节点信息,故判断又DR所在节点发送二类LSA信息。
在OSPF中,拓扑信息是由一类以及二类LSA共同来描述,而之后的其余LSA内容均在描述路由信息。
每一个三类LSA的通告者都是ABR设备,并且每一条三类LSA都只能描述一条路由信息。
三类LSA的数据部分会携带路由的掩码信息以及开销值。而LS ID则为网络地址信息。
三类LSA中的开销值指的是通告路由器到达目标网段的开销值,而接收者需要再该开销值的基础上增加自己到达该LSA通告者的开销,即为该条路由信息的总开销值。
三类LSA的接收者在收到该LSA时,需要进行一次验算过程,用以验算本地是否可以到达该LSA的通告者,如果可以到达,则认为该LSA有意义,如果无法到达,则该LSA丢弃。---->验算:通过本区域的1、2类LSA验算,因为三类LSA的通告者均为ABR设备。
三类LSA看似传播范围为除了初始设备所在区域的其他区域,但是其本质上传播范围为单区域,只不过因为通告者为ABR设备,所以看起来好像是多区域之间传播。------>三类LSA不能跨区域传播的原因:因为接收者需要根据通告路由器进行验算,跨区域传递时,无法通过拓扑信息验算出结果。
External为五类LSA信息,用来描述域外路由信息。其任务就是将域外的路由信息传递到OSPF网络中。该类型LSA会由ASBR设备产生,并且洪泛到整个OSPF网络。
- 开销值---度量值
- RIP的开销值对OSPF而言是无用的,但是LSA中还需要包含开销值参数,故OSFP给所有引入到OSPF网络的路由信息赋予了一个定值作为该路由信息的开销值。--->种子度量值,默认种子度量值为1,该参数可以在重发布的过程中修改。
- [r4-ospf-1]import-route rip 1 cost 5 ----修改种子度量值
- E标记位
- 表示外部路由使用的度量值类型。
- Type-1
- 代表E标记位为0;所有设备到达域外目标网段的开销值等于本地到达发出这条LSA的ASBR的开销值加上种子度量值。
- Type-2
- 代表E标记位为1;域内所有设备到达域外目标网段的开销值等于种子度量值。
- 默认情况为type-2。
- [r4-ospf-1]import-route rip 1 cost 5 type 1 ---修改种子度量值以及开销值类型
- 转发地址(FA)
- 默认数值为0.0.0.0。
- 当该数值为0.0.0.0时,到达外部网段的流量信息会被转发到引入该路由信息的ASBR设备上,而该参数不为0.0.0.0时,则流量会被转发到这个FA地址。
- 当转发地址为0.0.0.0,则路由器会验算去往ASBR的路径。当转发地址不为0.0.0.0,则路由器会验算去往转发地址的路径。
- FA字段当同时满足如下条件,才可以被ASBR设定为其他数值
- 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF。
- 该接口没有被配置为静默接口。
- 该接口网络类型为Broadcast或BNMA。
- 该接口的IP地址属于OSPF的network命令范围内。
- 外部路由标记
- 是只有外部路由信息才能携带的标记,常用于部署路由策略。
- 在华为路由器上,缺省时,该字段数值为1。可以在重发布的过程中进行修改。
- [r4-ospf-1]import-route rip 1 tag 10
Type-4 LSA
在OSPF网络中,传递路由信息的LSA都需要通过1类和2类LSA进行验算(寻找通告者),5类LSA是全OSPF网络传递,除了ASBR所在区域的设备可以通过1类和2类LSA进行验算外,其他区域都无法验算出通告者的位置,所以,需要引入4类LSA来辅助寻找ASBR通告者的位置。
四类LSA被称为ASBR汇总LSA,由ABR设备产生,实际上是一条到达ASBR的主机路由。
四类LSA中内容与三类一直,存在网络掩码和度量值两个参数。
- 网络掩码---->全为0。
- 度量值---->填写的是ABR设备到达ASBR的Cost。