一.OSPF基础
1.特性
OSPF是目前使用最广泛的IGP路由协议,属于链路状态路由协议,使用Dijkstra算法,也被称为SPF(Short Path First最短路径算法)。
IETF标准:OSPF可以被不同厂商的设备所支持
无环路由协议:执行的是SPF算法,不会产生路由环路
无类路由协议:支持VLSM(可变长子网掩码)和CIDR(无类别域间路由)
拥有不受限的跳计数:可以应用于大型网络
层次型:易拓展,路由器的负担不会随着网络规模的增大而急剧增加
区域化设计:减少路由更新的流量,降低内存、cpu和带宽的使用
快速收敛:使用触发式更新,路由可以快速收敛
支持验证:OSPF支持针对区域和链路的验证
2.OSPF术语
链路(link):当一个接口加入OSPF进程,它就被认为是一个ospf链路
链路状态(Link-State):链路的状态信息,包括接口的IP地址和子网掩码、接口网络类型、链路的花费、链路上的邻居
路由器ID(Router ID,简称RID):用于识别路由器的IP地址,可以手工指定;如果没有指定,则选择所有环回接口中最高的IP地址;若没有环回口使用,选择物理接口中最高的IP地址。
邻居(Neighbor):连接在一个公共的网络上的路由器(≥2)
邻接(Adjacent):2台路由器之间的关系,允许直接交换路由更新数据。OSPF只与建立了邻接关系的邻居共享路由信息。邻居和邻接没有直接关系。
区域(Area):通过划分区域实现分层设计
指定路由器(DR,Designated Router):OSPF路由器在多路访问的网络中需要DR,DR代表该多路访问网络中的所有路由器,每台路由器都把拓扑变化发送给DR和BDR,然后DR通知该多路访问网络中的其他路由器。
备用的指定路由器(BDR,Backup Designated Router):备用DR,DR离线时代替DR工作。
花费(cost):每条链路都有一个花费,OSPF的唯一度量值。根据链路的带宽计算而来,可以人为修改。
ABR(area border router)边界路由器:位于一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器。ABR被认为同时是OSPF主干和相连区域的成员。
ASBR(自治系统边界路由器,Autonomous System Border Router):一般是位于非OSPF区域和OSPF区域间互联的路由器。ASBR可以运行OSPF和另一路由选择协议(如RIP),把OSPF上的路由发布到其他路由协议上。ASBR必须处于非存根OSPF区域中。 在NSSA区域中,对7类LSA转换为5类LSA的路由器也是ASBR。所以说,ASBR不一定在2个协议之间,对于产生5类LSA的都是ASBR
当配置了引入外部路由配置的路由器就是ASBR
当引入路由为缺省静态是时候,规定不做引入!!!
3.基本配置
Router ospf 进程号
network IP子网 反掩码 area area-id
1.报文格式
数据链路层头部+IP包头部+OSPF包头+OSPF数据
OSPF包格式
数据链路层头部:OSPF组播IP地址224.0.0.5(非DR和BDR使用的地址)和224.0.0.6(DR和BDR使用的地址),组播MAC地址对应01-00-5E-00-00-05/06
IP包头部:协议号89,源IP是发送路由器的IP,目的IP是组播地址224.0.0.5/6
OSPF包头:包括RID和区域号以及OSPF包类型
OSPF数据:每种OSPF包的具体内容 2.OSPF报头格式
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DBD报文、LSR报文、LSU报文和LSAck报文。
OSPF这五种报文具有相同的报文头格式,长度为24字节。
OSPF报文头
Version:OSPF版本号,当前为OSPFv2。OSPFv1实验版本,v3针对IPv6。
Type:包类型,1为Hello报文,2是DBD,3是LSR,4是LSU,5是LSAck
Packet length:报文长度
Router ID:路由器ID,每台路由器的唯一标识
Area ID:区域号,主区域为0
Checksum:校验和
Autype(Authentication Type):验证类型。0:不使用,1:明文,2:MD5
Authentication:验证相关信息,包括密码
重点讲Hello包和LSU的分类
①Hello包
Hello报文被用来建立和维护OSPF的邻接关系。OSPF的Hello报文的作用主要有:发现OSPF邻居,建立和维护邻接关系;在多路访问的网络中选择DR和BDR。
OSPF泛洪链路状态通告给其他路由器之前,需要先建立邻接关系。所有启用OSPF协议的接口上都发送Hello报文,以判断是否有其他ospf路由器运行在相同的链路上,一般以组播方式发送,组播IP:224.0.0.5。
②DBD(Database Description,数据库状态描述包)
DBD是发送路由器链路状态数据库的一个简短描述。
③LSR(Link-State Request,链路状态请求包)
接受路由器可以发送LSR来请求发送路由器DBD中的某些条目详细信息。
④LSU(Link-State Update,链路状态更新包)
用来更新OSPF路由信息,回复LSR请求。LSU被分成多种类型的LSA(Link-State Advertisement)
⑤LSAck(Link-State Acknowledgement,链路状态确认)
当一个LSU被收到时,路由器发送LSAck进行确认
三.LSA类型
共11种类型LSA(链路状态通告),其中6类常用
1、路由器LSA (Router LSA)
由区域内所有路由器产生,并且只能在本个区域内泛洪广播。
这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。
2、网络LSA (Network LSA)
由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。
网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。
3、网络汇总LSA (Network Summary LSA)
由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。
在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。
如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。
4、ASBR汇总LSA (ASBR summary LSA)
也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。
5、自治系统外部LSA (Autonomous system external LSA)
由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。
自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。
6、NSSA外部LSA (NSSA External LSA)
由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。
在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。
详解:LSA类型详解
四.选路
OSPF的四种路径类型:
1、O 域内路由
2、O IA 域间路由
3、E1的外部路由
4、E2的外部路由
外部路由重分布进OSPF有两种类型
·OE1: 重分布进OSPF的路由默认为E2,Cost=20,且传递过程中不改变COST。
·OE2: 如果改为E1类型,则在传输过程中会累加每个入接口的cost值
OSPF的选路原则:
1、域内路由优于域间路由
2、域间路由优于外部路由
3、OE1的路由优于OE2的路由
如果一台路由器收到两条相同的域间的路由,一条是area 0区域传过来的,一条是普通区域传过来的,则优选area 0区域传过来的。
如果有一台路由器从两个不同的ASBR收到相同的外部路由,OSPF在选择外部路由的时候,遵循的原则是:
[1]O E1优于O E2
[2]在类型相同的情况下,Cost越小越优先
[3]对OE2来说,在cost相同的情况下,选择到达ASBR最优的路径
OE2的路由传递时带有一个参数---forward metric,这个参数记录了OE2的路由所穿越链路的总COST值,如果一个路由器收到两条COST相同的OE2路由,将比较它们的forward metric来选出最优路由。
OSPF路由协议:全称(开放式最大路由优先)
作用范围:IGP
工作原理:链路状态
OSPF支持:无类(CIDR)
IP——协议号(89)
组播——224.0.0.5/6
优先级:10或者150
度量方式——路由
OSPF协议特点:1.支持无类域间路由(CIDR:汇总/汇聚)
2.无路由自环
3.收敛速度快:邻居---10----hello---4次(rip:---180s老化---120s彻底删除)
4.使用IP组播收发协议数据
5.支持多条等值路由
6.支持协议报文的认证:分类(区域认证:在这个区域下的路由器必须开区域认证,不然无法创建关系。和接口认证:所在线路接口配就行了(其余可以不配)
链路状态算法的路由计算过程
LSA——链路状态通告信息
LSDB——存放LSA信息的数据库
(每一个运行了OSPF的路由器,都会泛洪自己的LSA,生成统一的LSBR数据库——每个路由器都以自己为根,计算机去往每一个分布接点的最短路径———生成IP路由;(使用SPF算法)
Router ID:
1.唯一标识一台运行了OSPF的路由器
2.不是IP地址
3必须存在——1.手工配置的最优先;2.环回口地址大的;3.接口IP地址大的
划分AS为多区域:维护区域内LSBR(区域间传递的不是链路状态信息)
区域:1.骨干和2.非骨干
OSPF报文类型:
1.类型字段取值位1:Hello消息——Hello报文
2.类型字段取值位2:数据库描述报文——DD报文
3.类型字段取值位3:链路状态请求报文——LSR报文
4.类型字段取值位4:链路状态更新报文——LSU报文(LSA:链路状态通告信息)
5.类型字段取值位5:链路状态确认报文——LSAck报文
DR和BDR的选举要点概括:
1.身份不抢占
2.在位不选举
3.先比优先级
4.再比路由器ID
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
工作方式:发现路由->生成路由表->指导转发
优点:无环路,收敛快,扩展性好,支持认证
报文:
hello:建立邻居,维持邻居关系(周期10s,离开时间40s)
DD报文:LSA数据交互,LSDB数据同步
LSR报文:请求LSA(空,说明LSDB同步完成)
LSU报文:响应LSR请求
LSACK报文:确认报文
ospf ip 组播地址(224.0.0.5 224.0.0.6)
router-id(唯一标识ospf设备)
ospf 1 router-id 1.1.1.1 ----手工配置
自动配置:
loopback 0最大
物理地址接口最大
邻居状态机
down:没有配置ospf,没有收到hello
init:收到hello,但是邻居参数没有自身router-id
2-way:收到hello,邻居参数有自身router-id
exstart:交互DD(空),选举主从交换机
exchange:交互DD,发送是否缺少LSA
loading:LSR:请求lsa
LSU:发送缺少lsa
FULL:LSDB数据库同步
DR作用:减少MA网络邻接建立,减轻设备负担
选举规则
1、DR优先级(越大越优)默认1(max:255)
2、DR优先级一致则比较router-id(越大越优)
修改DR优先级
int g0/0/0
ospf dr-priority 0-255
type类型
1.OSPF引入外部路由有type1和type2两种类型,默认是type2类型的。
引入type1类型的外部路由,计算Cost时需要用LSA的Cost加上外部路由的Cost。
引入type2类型的外部路由,认为外部路由的Cost远大于OSPF内部Cost,计算时只考虑LSA的Cost。
2.四类LSA:也称为ASBR汇总LSA(ASBR Summary LSA),
由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
链路状态ID为ASBR路由器ID。
3.只有ABR才会去转换、生成4类LSA,作为介绍信,让区域内的路由器——找到ASBR
当区域中的路由器具有5类LSA和4类LSA、同时又具有ABR的角色时。它就会再生成一条四类LSA,发送给自己的另一个区域
4.如何去生成?
答:以四类LSA,转变一下通告者去生成,再转发下去。目的:为了让另一个区域中的路由器能够知道怎么去往ASBR
当身为ASBR区域的路由器时,就通过自己区域内部的SPF路径树过去
5.如何计算COST?
答:type1:本身路由器达到ABR的COST+ABR自己收到的四类LSA的COST
type2:
6.FA地址:就是引入路由的下一跳地址,
什么情况会产生FA地址?
1.ASBR去往外部路由的出接口被宣告ospf进程中
2.ASBR去往外部路由的出接口没有被设置为静默接口
3.ASBR去往外部路由的的出接口不是P2P
作用:是五类LSA中的一个参数,用来做ospf链路优化的
1.当五类LSA中的FA地址是0.0.0.0 时,代表没有FA地址
,那么路由器在计算这条五类LSA是是要找通告者来计算
2.当五类lSA中的FA地址非0时,代表存在FA地址,那么
路由器在计算这条五类LSA时,不再找ASBR计算了,
而是找FA地址。
ospf快速收敛的方法:
1.开启ospf的 i-ospf,这个缺省开启的,增量的SPF计算,只计算受到影响的一部分,不会去计算一个完整的SPF计算,因此加快了收敛时间。
2.PRC(部分路由计算)场景:仅仅路由发生变化,拓扑没有发生变化,PRC收敛速度>i-ospf收敛。
3.配置智能定时器:通过配置智能定时器可以让他的SPF计算和LSA的产生,当网络出现振荡的时候,减少它的运行数量,保持它的本身的稳定性
3.1.LSP产生的一个间隔的定时器
3.2.SPF计算的间隔定时器
4.配置优先级收敛:保证重要的网段,当ospf发生变化的时候,打到快速收敛的目的
5.配置ospf的hello包:将hello包的hold time 的时间减小,可以让其快速的检测到邻居出现问题,然后快速收敛
6.ospf和BFD进行联动,快速检测故障,快速收敛
https://view.inews.qq.com/a/20220507A0913N00
OSPF的路由控制包括:
- 调整OSPF接口开销
- 设置等价路由:
OSPF选路时优先比较路由来源(区域内>区域间>第一外部路由>第二类外部路由),来源相同时再比较cost,cost相同形成等价路由。
在OSPF视图下:maximum load-balancing +最大值。
- 引入外部路由
- 路由聚合:
在ABR执行路由聚合:对区域间的路由执行路由汇总。
在ASBR执行路由聚合:对引入的外部路由执行路由汇总。
- 缺省路由通告
- Filter-policy:
概念:对接收、发送、引入的路由进行过滤。
但是Filter-policy只能过滤路由信息,无法过滤LSA。
Filter-policy是对OSPF计算出来的路由(加载到路由表之前)进行过滤,而不会对LSA进行过滤。
- 对发送的LSA进行过滤:
概念:当两台路由之间存在多条链路时,可以在某些链路上通过对发送的LSA进行过滤,减少不必要的重传,节省宽带资源。
通过对OSPF接口出方向的LSA进行过滤可以不向邻居发送无用LSA,从而减少邻居LSDB的大小,提高网络收敛速度。
- 对ABR Type3 LSA进行过滤:
概念:对区域内出、入方向ABR Type3 LSA (Summary LSA)设置过滤条件,只有通过过滤的LSA才能被发布和接收。
通过对区域内的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。
- 设置LSDB中External LSA的最大数量:
概念:OSPF要求同一个区域中的路由器保存相同的LSDB。随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限(OSPF Database Overflow)。
对于路由信息不断增加导致路由器系统资源耗尽而失效的问题,可以通过配置特殊区域来解决,但特殊区域不能解决动态路由增长导致的数据库超限问题。为了解决数据库超限引发的问题,通过设置LSDB中External LSA 的最大条目数,可以动态限制链路数据库的规模。