OSPF

一、OSPF的特性
1.ospf全称是open shortest path first,开放式最短路径路径优先。ospf通过spf算法达到全网无环路。
2.ospf报文封装在ip报文内,以单播或组播的形式发送。
3.ospf通过LSA(link state advertisement)的形式传递路由。LSA是OSPF报文中比较重要的部分。
任何承载在ip上的的协议都通过报文进行传输的,所以理解好ospf的各个报文至关重要。

二、OSPF的相关概念
1.自治系统:运行同一协议的一组路由器,称为AS。
2.路由ID(RID):网络中唯一标识。
3.邻居:两台路由器运行协议后协商出来的关系
4.邻接:邻居关系是为了方便进行路由信息的交换,邻接是可以进行路由信息交换的过程。
5.LSA:链路状态通告,包括路由信息、接口信息等。

三、OSPF的四张表
1.邻居表:存放邻居路由器的信息。
2.拓扑表:也叫链路状态数据库(LSDB),存放LSA (链路状态信息)
3.全路由表:通过SPF算法,从拓扑表中计算出到达任一节点的所有路径。
4.路由表:根据全路由表,结合cost计算出的最优路径。

四、OSPF的报文

在第一节中已经介绍,ospf协议是承载在ip网络上的,所以ospf的建立也是通过报文的交互完成的。
1.hello报文:作用是发现、建立、维持邻居关系。以组播地址224.0.0.5每10s发送一次。40s没有收到邻居发送过来的hello报文,断开邻居关系,并且删除从邻居学习到的链路状态信息。
2.DD报文:链路状态描述,包含LSA的头部信息。
3.LSR报文:链路状态请求报文,向邻居请求一条感兴趣的LSA。
4.LSU报文:链路状态更新报文。作用是对LSR进行回应,包含了具体的LSA信息。
5.LSACK报文:链路状态确认包。作用是:对收到的LSU进行确认。

五、Router ID

任何想要运行ospf的路由器都必须有唯一的标识,叫做Router ID。Router ID的选取有以下几种方法:
①手动通过命令配置Router ID
②如果没有手动配置Router ID,将会从loopback接口中选取ip地址最大的。
③如果以上均没有,则从up物理接口中选取ip地址最大的。


六、DR/BDR
当一个网段中有至少两台路由器启用了ospf,那么需要在这些设备中选择一个DR(designated router)为指定路由器,用来给其他所有的路由器传递路由;而BDR(backup designated router)则是DR的备份,当DR失效时,BDR接替DR的功能;既不是DR也不是BDR的叫做DRother。这个概念也很重要,ospf的建立过程都跟这些息息相关。
所有的DRother都会与DR和BDR形成邻接关系,DRoter之间不会形成邻接关系,所有启用OSPF的路由器都会监听224.0.0.5这个组播地址,只有DR/BDR监听224.0.0.6,后面还会一一讲到。DR/BDR的选取规则如下:

①路由器优先级越大越优先,默认优先级是1,优先级为0代表不参加选举;
②若优先级相等通过Router ID进行选举,Router ID大的优先。

七、OSPF建立过程

ospf的建立过程分为七个状态(广播网络):

1.down:接口上没有收到任何ospf报文。
2.init(初始化):接口上收到了OSPFhello报文,但在收到的报文中的邻居列表没有看到自己的信息。
3.two-way:接口上收到了OSPFhello报文,在收到的报文中的邻居列表看到了自己的信息,并开始选取DR/BDR。
4.ex-start(预启动状态):发送空的DBD报文,目的是选举主从,主导报文的交互。
5.exchange:通过LSR报文和LSU报文交互LSA。
6.loading:回复LSAck,运行算法将LSA载入LSDB。
7.full:进入完全邻接状态,将最优的路由载入到路由表,双发LSA同步完成。

ospf的建立过程如图:

ospf的建立是依靠报文进行的:

1.建立邻居关系

a.Router A启用了ospf协议之后会从相应的接口发送hello报文(使用组播地址224.0.0.5),并且会认为自己是DR,邻居为0;

b.Router B收到了Router A的报文,从相应的接口发送hello报文(使用组播地址224.0.0.5),并且会认为自己是DR,邻居为Rrouter A,将邻居状态置为init;

c.Router A收到Router B的报文即将邻居状态置为to-way,并根据规则选取DR/BDR(选取规则参考第六点)。

2.协商主从

两个路由器互相发送空的DD报文(不包含LSA摘要信息),根据Router ID选择主从:Router ID大的成为主,主导报文交互。

DD报文上重要的三个参数:I(init),M(more),MS(master)

I:是否为第一个DD报文,置1表示是第一个DD报文,置0表示否。

M:是否后续还要DD报文,置1表示后续还有DD报文,置0表示否(即最后一个DD报文)。

MS:是否为主路由器,置1表示是主路由器,置0表示否。

a.Router A和Router B都会认为自己是主路由器:I置为1,M置为1,MS置为1发送第一个DD报文(不包含LSA摘要);

b.Router A和Router B各自收到DD报文后将邻居状态置为exstar,根据Router ID选取Router B主路由器;

c.Router A为从路由器主动发送DD报文(包含LSA摘要),I置为0,M置为1,MS置为0;

d.Router B 收到包含LSA信息摘要的DD报文,将邻居状态置为exchang,并发送自己的包含LSA信息的DD报文,I置为0,M置为1,MS置为1;

e.Router A 收到包含LSA信息摘要的DD报文,将邻居状态置为exchang。

3.LSDB同步

a.Router A根据收到DD报文的LSA信息摘要,发送LSR报文请求自己缺少的LSA,并将邻居状态置为loading;

b.Router B根据DD报文发送没有缺少的LSA,并且收到了LSR报文,即将邻居状态置为full,发送LRU报文回应;

c.Router A收到LSU报文后,将LSA加载到自己的LSDB中,回复LSAck确认收到LSU,并将邻居状态置为full。

此时,双方LSDB同步完成。

在下参考了华为的文档,更多细节可以阅读华为官方文档。https://support.huawei.com/enterprise/zh/routers/ar2200-pid-6078842

 

八、定时器

 

九、OSPF的网络类型
1.MA:广播多路访问,需要选举DR/BDR,hello时间10s
2.NBMA:非广播多路访问,需要选举DR/BDR,不发送hello包
3.p2p:点对点,不选举DR/BDR,hello时间10s

十、OSPF多区域优点
1.把大型网络分隔为多个较小的可管理的区域单元;
2.控制LSA只在区域内泛洪,有效把拓扑变化控制在区域内,拓扑的变化影响有效限制在本区域;
3.提高了网络的稳定性和扩展性,有利于组建大规模网络;
4.在区域编辑可以做路由汇总,减少路由条目。

十一、区域类型
1.骨干区域(backbone area 0):非骨干区域必须与骨干区域直接物理连接,骨干区域不能配置为特殊区域。
2.标准区域:标准的OSPF区域,骨干区域也是标准区域。
以下均是特殊区域
3.末梢区域(stub area):不能重分布引入外部路由,也不能接收外部路由,过滤3类4类5类LSA,ABR自动下发一条3类默认路由。
4.完全末梢区域(totally stub area):不能重分布引入外部路由,也不能接收外部路由,区间路由,
过滤3类4类5类LSA,ABR自动下发一条3类默认路由。
5.NSSA区域(not-so-stubly area):ABR通过7类LSA引入外部路由,过滤4类5类LSA,通过ABR时转换成5类LSA进入标准区域,需要手动下发默认路由。
6.完全NSSA区域(totally NSSA area):过滤3类4类5类LSA,ASBR通过7类LSA引入外部路由,通过ABR转换成5类LSA进入标准区域,ABR自动下发一条3类默认路由。

十二、OSPF的LSA类型

 

 

十三、路由类型
1.O :同区域学习到的路由(1类和2类)。
2.O IA:不同区域学习到的路由(3类)。
3.O E1:(5类)外部路由,同时计算AS内和外部路由的开销。
4.O E2:(5类)外部路由,不计算AS内部开销,默认重分发类型为O E2。
5.O N1:(7类)外部路由,与O E1一致。
6.O N2:(7类)外部路由,与O E2一致。
优先级: ①O>O IA>O E1>O E2。
    ②同一类型路由,优选cost小的;若相同产生等价路由。
    ③对于O E2路由,cost相同时,优选到ASBR路径短的。

posted @ 2020-09-20 21:26  驴行者  阅读(1559)  评论(0)    收藏  举报