前言
OSPF是内部网关协议(IGP)的一种,基于链路状态算法(LS)。使用链路状态广播(LSA),传给区域内所有路由器。
一、OSPF基本特点
支持无类域间路由(CIDR)-支持超网聚合
无路由自环-无环协议(因为必须经过area0,永不成环)
收敛速度快(每10s发送一次Hello)
使用IP组播收发协议数据-基于ip协议
采用组播地址224.0.0.5(所有ospf的路由器都会监听这个组)和224.0.0.6(DR和BDR一个组)
支持多条等值路由-支持等价负载均衡
支持协议报文的认证-支持认证,协议更安全
两个路由器形成邻居的关系,需要在同一网段
二、状态机
Down 表明没有收到hello包,不是物理接口的down
init(确认对端router-id) 表明收到对方hello包,但是hello包里没有自己的router-id,类似1-way
Attempt(尝试) 此状态只在NBMA类型中出现(邻居手工指定),接口激活后,状态直接由Down--Attempt 路由器周期发送Hello
2-way(邻居关系) 表明收到对方hello包,且有自己的router-id,建立邻居关系,选举DR/BDR
exstart 主从选举router-id大的为master,小的为slave(主先发,从后发),交互DD报文(空),并确定序列号,协商MTU(默认不开启)
注:如果两端MTU值不相同,则不会进入下一状态
exchange 继续互发DD报文(含摘要信息LSA头部)
loading 发送LSR、LSU、LSACK,同步LSDB
full(邻接关系) 交互完了LSDB,以自己为根计算路由,加入IP路由表中
三、OSPF工作过程:
1、 启动配置完成后,邻居间组播收发hello包,建立邻居关系;生成邻居表;
2、之后进行条件的匹配,匹配失败的邻居将保持为邻居关系,仅hello包周期保活即可;选举DR和BDR;
3、主从选择;router-id大的为master,小的为slave
4、 匹配成功的邻居间,将进行邻接关系的建立;过程中先使用DBD进行目录交互,在使用LSR(链路状态请求 ) LSU(链路状态更新 --携带具体的LSA信息) LSack(链路状态确认)来获取本地未知的LSA信息;最终完成邻接关系间的LSDB同步;生成数据库表;
5、再然后,本地基于LSDB,生成有向图再转成树型结构再树形结构当中进行最短选路 整个过程称为SPF(最短路径优先)算法
6、基于树形结构计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;
收敛完成,hello包周期保活;每30min邻居间再周期比对DBD包;
四、具体报文分析
1.Hello(1.建立邻居2.维护邻居)
主要参数:掩码 Hello间隔 Option字段 优先级 死亡时间 DR、BDR、邻居的router-id
影响建立OSPF邻居的原因:①Hello/Dead时间间隔不一致②Router-ID冲突③验证不一致/未通过④区域类型不匹配⑤区域ID不一致
a、建立邻居
(首先R1发送的Hello包内peer-id=空,R2收到包后给R1回包的时候在Hello包内的peer-id里加上自己的router-id)
b、DR、BDR的选举
2.DBD(描述本地的LSDB的摘要信息,进行数据库同步)
主要参数:MTU
①在Exstart状态下:路由器先发送空的DD报文(内含I,M,MS) 方便协商主备
Option字段(I---init,M---more,MS---master)
I:初始位(主从选举成功后置0) M:1表示后续还有包 0表示这是最后一个包 MS:表示此设备是主
DD序列号由主决定!!!如果Master未收到回复,则间隔5s重传该DD报文
②选举出主备后,在Exchange状态下:发送目录(LSA头部)描述自己的LSDB
3.LSR(向对方请求自己所需的完整LSA)
主要参数:LSA类型 LSA标识 产生此LSA的路由器的Router-id
4.LSU(向对方发送所需的LSA)
注:当网络发生变化时,也触发LSU的报文泛洪
LSA头部主要参数:LSA老化时间 Option字段 LSA类型 LSA标识 产生此LSA的路由器的Router-id LSA序列号 校验和 长度
LSA flag字段:(V---Virtual Link,E---External,B---Border) 只存在1类LSA里
V:“1”表示虚连接的端点发出的设备
E:“1”表示ASBR
B:“1”表示边界路由器(当一台设备同时连了两个及以上的区域,也可置1)
LSA头部里面的FA字段(Forwarding Address,转发地址)
7类LSA中的Option字段的P位:用于告诉路由器是否需要7转5,将此LSA通告出去。
如果在ABR上引入了外部路由,产生的7类LSA不会置P,所以不会再被通告出去
OSPF 将引入的 AS 外部路由AS-external-LSA(5)分为 Type1 和 Type2 两类
路由类型 | 含义 |
Intra Area | 区域内路由。 |
Inter Area | 区域间路由。 |
第一类外部路由(Type1 External) | 这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和 OSPF 自身路由的开销具有可比性。到第一类外部路由的开销=本设备到相应的 ASBR 的开销+ASBR 到该路由目的地址的开销。 |
第二类外部路由(Type2 External)
| 这类路由的可信度比较低,所以 OSPF 协议认为从 ASBR 到自治系统之外的开销远远大于在自治系统之内到达 ASBR 的开销。 所以, OSPF 计算路由开销时只考虑 ASBR 到自治系统之外的开销,即到第二类外部路由的开销=ASBR 到该路由目的地址的开销。 |
一类比二类优先!!!
路由汇聚:(只能在ABR,ASBR上做)做了的结果在其他区域可以看出
[RTB-ospf-1-area-0.0.0.1]abr-summary 20.1.1.0 255.255.255.0
另外,使用abr-summary时可增加cost,缺省情况下,汇总路由的cost是被汇总前的明细路由里cost最大的那个。
[Huawei-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
另外,使用asbr-summary时可增加cost,缺省情况下,①如果被汇总的明细路由度量值类型为type1,则汇总路由的cost等于明细路由的cost最大值;②如果被汇总的明细路由度量值类型为type2,那么汇总路由的cost等于明细路由cost的最大值+1
一条OSPF路径的cost=从目的地到源地址沿途所有入接口cost的总和
做了路由汇聚的特性:
- 抑制明细路由,向外通告默认路由
- 减少路由表大小,降低更新的大小,系统消耗降低
- 至少有一条明细路由存在,路由器才能聚合
- 在聚合范围内的路由抖动,不影响聚合路由
- 聚合只能在ABR、ASRB上做