动态路由协议:直连路由器之间构建邻居关系,通过收发各类数据包进行共享信息,来获取未知的路由信息,基于某种算法自动生成未知网段最优路径的解,将其加载在路由表中。
判断一个网络协议的好坏,通常关注三方面:
各类协议的优缺点:
1、RIP
适用于小型网络中,选路依靠跳数(最大15跳),选路不佳
2、EIGRP和OSPF
两个协议都适用于大型网络中,EIGRP属于距离矢量型协议,在超大型网络中没有OSPF选路更佳,所以它采用丰富的度量来优选路径,收敛速度快,占用资源少;OSPF属于链路状态协议,共享拓扑选路佳,不易出环,但其收敛速度较慢,且占用资源大,在超大型网络中无法生存
在超大型网络中,我们一般跑EIGRP/ISIS,但EIGRP–私有,需要全网都为Cisco设备,ISIS–OSPF精简版,失去了选路精确能力
路由协议的分类
1、根据AS(自治系统)
IGP 内部网关协议,AS内适用-------RIP/OSPF/EIGRP/ISIS
EGP 外部网关协议,AS间适用--------EGP/BGP
2、IGP的分类
1)根据更新时是否携带掩码
有类别 不携带 RIPv1/EGP
无类别 携带 OSPF/EIGRP/ISIS/BGP
2)根据工作特点
链路状态型 共享拓扑 OSPF/ISIS
距离矢量型 共享路由表 RIP/EIGRP
RIP周期更新30s的作用: 用于保活,对端无法沟通时的确认,无需确认收到路由更新 EIGRP/OSPF: hello包 用于保活
更新信息非周期发送,需要确认包 OSPF虽有30min的周期更新是为了防止对路由信息的遗漏
一、简单介绍
OSPF是无类别链路状态型协议,但具有距离矢量特征,基于拓扑收敛(防环,选路佳)更新量大,故为它设计了许多减少更新l量的方式
区域规划-----区域间传路由,区域内传拓扑
合理的IP规划-------一个区域汇总为一条路由,利用子网划分
特殊区域-----减少LSA的更新
二、OSPF的数据包
HELLO 发现、建立、保活邻居
DBD 数据库描述包–主从关系的选举,共享本端路由信息的条目
LSR 链路状态查询包–询问对端本端所需要的未知网段的信息
LSU 链路状态更新包–回答对端的LSR,携带各类LSA
LSACK 链路状态确认包—接收到对端的LSU做出确认,保障可靠性
三、OSPF的状态机
down 两个路由器互不认识,开始收发hello包进入下一状态
init 本端收到带有本端route-id的hello包,进入下一状态
two-way 邻居关系建立的标志
条件匹配 (以太网中,进行DR选举,30s)
成功进入下一状态,失败保持为邻居
exstart 向对端发送类hello的假DBD包进行主从关系的选举,route-id大的先进入下一状态
exchange 向对端发送DBD包共享本地数据库条目
loading state 基于收到的DBD向对端发送LSR,查询未知网段的路由信息,对端发送LSU,本端收到LSU发送LSACK应答
full 两端LSA更新完毕,邻接关系建立
四、OSPF的工作机制
启动宣告配置完成后,路由器通过组播224.0.0.5发送hello包,收到携带有本端route-id的hello包,建立邻居关系,生成邻居表。
基于表中所有邻居进行条件匹配,匹配失败则保持邻居关系,仅hello包保活即可,匹配成功,双方发送假的DBD包,不携带拓扑信息,进行主从关系的选举,route-id大的邻居先发送真的DBD数据库描述包,对端收到DBD后发送LSR查询未知路由条目的信息,本端用LSU进行应答,对端收到LSU后用LSACK应答,本地收到所有邻居的LSA后,生成LSDB数据库表。
LSDB基于SFP算法计算出所有未知网段的最优路径,加载到路由表中。
收敛完成,仅hello包周期保活所有邻居和邻接关系,30min周期进行DBD的收发来进行纠错。
OSPF的收敛行为----LSA的洪范,即LSDB的同步
结构突变情况下:
1、新增网段 触发更新,使用DBD来告知所有邻居,邻居进行LSR/LSU/LSACK收敛
2、断开网段 触发更新,使用DBD来告知所有邻居,邻居进行LSR/LSU/LSACK收敛
3、无法沟通 dead time以及最大老化时间解决
正常邻居间收发hello,若dead time依然没有hello,断开邻居关系,删掉从此邻居处学习到的路由
若邻居关系正常,hello正常,30min没有DBD更新,每条LSA后方有老化时间,最大3609s,到达最大老化时间删除此条LSA。
五、OSPF的基础配置
启动:
[r1]ospf 1 router-id 1.1.1.1 启动时需要定义进程号,仅具有本地意义; 建议同时配置ROUTER-ID;
手工---环回最大数值IP地址—物理接口最大数值IP地址
宣告:
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 12.1.1.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]network 2.2.2.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]q
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]network 23.1.1.1 0.0.0.0
OSPF的区域划分规则:
1、 星型结构—所有的非骨干区域必须连接到的骨干区域,否则不能进行区域间路由共享
2、 ABR—区域边界路由器 同时工作的多个区域间;合法ABR必须同时工作在骨干区域,否则不能进行区域间的路由共享;
启动配置完成后,路由器间使用hello包收发建立邻居关系,生成邻居表:
[r2]displayospf peer
Area 0.0.0.0 interface 12.1.1.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 1.1.1.1 Address: 12.1.1.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 12.1.1.1 BDR: 12.1.1.2 MTU: 0
Dead timer due in 35 sec
Retrans timer interval: 5
Neighbor is up for 00:18:48
Authentication Sequence: [ 0 ]
邻居关系建立后,邻居间进行条件的匹配;匹配成功建立邻接关系,同步LSDB完成后,本地生成LSDB—数据库表;
[r2]display ospflsdb 查看数据库的目录;内部存在各种类别的信息,需要具体查看
LSDB同步完成后,本地基于SFP算法,计算到达所有未知网段的最短路径,然后将其加载到路由表中;
[r3]display ip routing-table 查看路由表
Destination/Mask Proto Pre CostFlags NextHop Interface
1.1.1.1/32 OSPF 10 2 D 23.1.1.1 GigabitEthernet0/0/0
2.2.2.2/32 OSPF 10 1 D 23.1.1.1 GigabitEthernet0/0/0
[r3]display ip routing-table protocol ospf 查看本地所有通过OSPF协议学习到的路由
[r1]display ospf routing 查看本地工作OSPF的直连,及本地通过OSPF学习到的路由
Destination Cost TypeNextHopAdvRouter Area
1.1.1.1/32 0 Stub 1.1.1.1 1.1.1.1 0.0.0.0
12.1.1.0/24 1 Transit 12.1.1.1 1.1.1.1 0.0.0.0
2.2.2.2/32 1 Stub 12.1.1.2 2.2.2.2 0.0.0.0
3.3.3.3/32 2 Inter-area12.1.1.2 2.2.2.2 0.0.0.0
23.1.1.0/24 2 Inter-area12.1.1.2 2.2.2.2 0.0.0.0
类型标记为Inter-area代表其他区域产生的路由条目
OSPF的度量值: COST=接口带宽/参考带宽
默认参考带宽100M
若接口实际带宽大于默认带宽,COST为1,可能选路不佳,需要修改参考带宽,全网需一致
[r1]ospf 1
[r1-ospf-1]bandwidth-reference 1000
六、OSPF邻居关系成为邻接关系的条件----条件匹配
接口网络类型的分类: 基于接口的二层封装技术
点到点:一个网段只能存在两个节点,即使强制连接第三方也无法通信;串行链路上,二层封装为PPP或HDLC
MA:多路访问,一个网段可以存在多个节点
BMA:广播型多路访问,在一个MA网络中存在广播机制;二层封装为以太网
NBMA:非广播型多路访问,MA中不存在广播机制;二层封装为帧中继–串行链路 MGRE
在点到点网络中,OSPF邻居均正常从邻居关系变为邻接关系。
在MA网络中,若OSPF所有邻居关系均升为邻居关系将导致大量的重复更新,(距离矢量型路由协议RIP/EIGRP使用了接口水平分割),由于OSPF是基于数据库同步比对来进行收敛,故不支持接口水平分割。
OSPF在MA网段需要进行DR/BDR的选举,非DR/BDR不建立邻接关系。
选举规则:
1、比较接口优先级
0-255,大优,MA默认接口优先级为1,点到点链路接口中,默认不进行选举,接口优先级为0
2、比较route-id,大优
干涉选举:
修改接口优先级 默认非抢占原则,需重启OSPF进程
建议修改优先级为0,不参与选举
七、OSPF的数据库表–不同类型的LSA
每条LSA均存在以下信息:
type 类型
Ls id link-id
Adv rtr 通告者的route-id
Ls age 老化时间,正常下到1800s刷新,触发更新下直接变为0,3609s后没有变化直接删除LSA
Len 长度
Options 选项
Seq# 序列号
Chkm 校验和
什么情况下LSA会更新:
1、1800到期会更新
2、触发更新(接口地址变化(增加,或删除),修改接口开销值,删除接口,或者删除通告)
OSPF的LSA是1800会更新一次更新一次序列号会加一
LSA的新旧比较
1、会先比较序列号,序列号越大越优,
2、如果序列号相同,会比较校验值(checksum)越大越优
3、如果校验值也相同,会比较LSA Age时间,是否等于MAX-age时间(3600)
4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大15分钟(900秒),小的优
5、如果age时间不等于max-age时间,会比较他们的差值,如果差值小于15分钟,说明是同一条LSA,忽略其中一条
LSA类型 | 传播范围 | 通告者 | 携带信息 |
---|---|---|---|
router | 域内 | 区域内每台路由器 | 本设备直连拓扑 |
network | 域内 | 每个网段的DR | 每个MA网段的拓扑 |
sum-net | 整个OSPF域 | ABR | 域间路由 |
sum-asbr | 除ASBR所在区域的整个OSPF域,ASBR所在域基于1类LSA进行拓扑演算 | ABR | 标记ASBR的位置 |
external | 整个OSPF域 | ASBR,经过下一个ABR修改为新的ABR | 域外路由 |
nssa | 本地的NSSA区域,离开本地转为5类 | ASBR | 域外路由 |
LSA类别 | link-id | 通告者 |
---|---|---|
router | 通告者的router-id | 本区域每台路由器 |
network | DR的接口IP | MA网段的DR的router-id |
sum-net | 域间路由的网段 | ABR,经过下一个ABR时,修改为新的router-id |
sum-asbr | ASBR的router-id | 和ASBR同一区域的 ABR,经过下一个ABR时修改为新的router-id |
external | 域外路由的网段 | ASBR |
nssa | 域外路由网段 | ASBR,离开本区域后变为新的ASBR |
[r4-ospf-1]import-route rip 1 将RIP进程1重发布到OSPF的进程1
[r5]display ospf lsdb ase originate-router 查看5类LSA
ASBR—自治系统边界路由器—协议边界路由器
八、优化OSPF协议 减少LSA的更新量
正常1类LSA一个路由器一条LSA,2类LSA一条网段一条LSA,3类和5类一条路由一条LSA,4类是一个ABR产生一条
1、汇总–减少骨干区域的更新量
1)域间路由汇总,在ABR上,需手动在黑洞处空接口防环
不允许汇总自己学的路由,只能汇总本地通过该区域1、2类LSA产生的路由
[r1]ospf 1
[r1-ospf-1]area 2 只能汇总本地通过该区域1、2类LSA产生的路由
[r1-ospf-1-area-0.0.0.2]abr-summary 5.5.4.0 255.255.252.0
2)域外路由的汇总,在ASBR上汇总
[r4]ospf 1
[r4-ospf-1]asbr-summary 99.1.0.0 255.255.252.0
2、特殊区域–减少非骨干区域的更新量 不存在骨干区域,不存在虚链路
1)不存在ASBR
末梢区域 stub
拒绝4、5类LSA,出现一条3类缺省,指向骨干区域;需在该区域所有路由器上配置
[r5]ospf 1
[r5-ospf-1]area 2
[r5-ospf-1-area-0.0.0.2]stub
完全末梢区域 stub no-summary
末梢区域的基础上,进一步拒绝3类LSA,只存在一条3类缺省;仅在ABR上定义即可
[r1-ospf-1-area-0.0.0.2]stub no-summary
2)存在ASBR
非完全末梢区域 NSSA
拒绝4、5类LSA
拒绝其他区域ASBR产生的4/5类LSA;本区域内的ASBR产生的5类LSA以7类在本区域传播,从本区域进入骨干区域时由新的ASBR将7类转为5类在其他区域传播,本地产生一条指向骨干的7类缺省
Cisco内:不产生缺省
[r4]ospf
[r4-ospf-1]are 1
[r4-ospf-1-area-0.0.0.1]nssa
完全NSSA
在NSSA的基础上进一步拒绝3类LSA,只存在一条3类缺省
[r3-ospf-1-area-0.0.0.1]nssa no-summary
ISP连接网络后与特殊区域自动产生的缺省可能成环,则运营商在那个区域,哪个区域不能调为骨干区域
九、过滤OSPF的路由传输
利用OSPF的汇总,在汇总条目的同时要求OSPF协议传递这些汇总路由来实现路由过滤
ospf 1 router-id 4.4.4.4
area 0.0.0.1
abr-summary 192.168.1.144 255.255.255.248 not-advertise 该条路由将不能再传递—3类
[r6]ospf 1
[r6-ospf-1]asbr-summary 192.168.1.144 255.255.255.248 not-advertise
[r6-ospf-1]asbr-summary 192.168.1.132 255.255.255.252 not-advertise 拒绝7类的传递
注、此处的汇总网络号,实际可以是具体的明细路由
十、OSPF的不规则区域
规则区域:星型结构(骨干在中心,骨干与非骨干都有ABR连接)----减少LSA更新量,性价比高
为了实现以上规则,OSPF必须存在的硬性条件:
1、直连的邻居间hello包中区域ID必须完全一致;若不一致将无法建立邻居关系—ABR
2、一台ABR若没有连接到骨干区域,将不能进行区域间路由共享—星型结构
3、只要ABR连接到的骨干区域,可以同时再连接N个非骨干,且进行两两区域间路由共享
不规则区域:
1、原理骨干的非骨干区域
2、不连续骨干
解决方法:
1、tunnel
在两台ABR上建立tunnel,将其宣告到OSPF协议中,逻辑上将这条链路加到区域0中,直连两个ABR,实际数据加了一层封装还是走物理链路。
缺点:
周期和触发的信息将对中间的穿越区域造成资源的占用;选路不佳
区域2的路由会传给1,tunnel也会将2路由给1,2会选择tunnel学习2的路由,因为骨干区传的路由优于骨干区路由,造成选路不佳
interface Tunnel0/0/0
ip address 10.1.1.1 255.255.255.0
tunnel-protocol gre
source 34.1.1.1
destination 45.1.1.2
2、虚链路
网络中合法ABR和非法ABR之间建立一条虚链路,由合法ABR授权非法ABR进行区域间路由共享(两个ABR上都要定义)
优点:没有新生链路,选路正常
缺点:cisco设备中OSPF虚链路为避免对中间穿越区域周期保活和更新产生资源占用,取消了周期的hello包和周期更新;---- 不可靠,不稳定
华为设备中依然保留周期的hello包和更新----占用中间区域资源
[r3]ospf 1
[r3-ospf-1]area 1
[r3-ospf-1-area-0.0.0.1]vlink-peer 5.5.5.5 此处5.5.5.5为对端ABR的router-id
[r3]display ospf vlink
3、OSPF多进程双向重发布(建议)
OSPF多进程,进程号仅具有本地意义,邻居间建立邻居关系时可以使用不同的进程号,若在一台设备上同时启动多个进程,那么不同进程存在自己的邻居关系,生成不同的数据库(不共享);最终将所有的数据库计算的路由加载到同一张路由表中。
在解决不规则区域时,可以让非法ABR将不同OSPF区域工作在不同的OSPF进程中,之后双方双向重发布来实现路由共享。
优点:选路正常,无周期信息,但依然可靠(触发更新,邻居关系周期保障)
[r2]ospf 1
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1
十一、OSPF扩展知识点
1、link-id相同
若一台ABR将两条3类LSA导入其他区域(一条汇总一条明细);同时这两条LSA的link-id会相同;
假设:短掩码网段先进入,link-id正常显示;长掩码进入时link-id加反掩码
20.1.0.0/16–link-id 20.1.0.0
20.1.0.0/24–link-id 20.1.0.255
2、OSPF选路规则
(1)AD管理距离无关的一种情况:
r2(config)#router ospf 1
r2(config-router)#distance 109 1.1.1.1 0.0.0.0
本地从RID为1.1.1.1的设备处学习到路由条目,管理距离修改109;
一台路由器从两个OSPF邻居处学习到了两条相同的路由时,仅比较度量值,不关注管理距离;因为仅针对一台邻居进行管理距离修改的结果是要么两台都被改,要么修改失败;-关注IOS版本—有时修改RID大路由器管理距离生效,有时需要修改RID小的设备;
(1)AD管理距离无关的第二种情况
O IA 与 O IA路由相遇,到达相同目标的两条3类路由,这两条路由均通过非骨干传递,仅关注cost值,不关注管理距离;
若一条通过骨干区域传递,另一条同过非骨干区域传递–非骨干传递的路由无效
OSPF的水平分割:区域标号为A的3类LSA,不能回到区域A;
两条均为OE2或者均为N2,起始度量相同; 关注沿途的累加度量 (OE2路由在表中度量默认不显示内部度量,仅显示起始度量)
两条均为OE2或者均为N2,起始度量不同;优先起始度量小的路径;
注:以上设计是便于管理员快速干涉选路;
3、优先级
拓扑优于路由 1/2LSA计算所得路由优于3/4/5/7类计算所得
内部优于外部 3类优于4/5/7类
类型1优于类型2 E1优于E2,N1优于N2,E1优于N2,N1优于E2;
E1与N1相遇,或E2与N2相遇,先比总度量(起始+沿途)小优;度量一致5类优于7类