欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

路由基础知识 OSPF路由协议详细介绍

程序员文章站 2022-08-16 16:42:21
路由基础知识 OSPF路由协议详细介绍...

本篇文档针对一些对ospf路由协议有一定的感性认识的技术人员,提供一些基于ospf报文格式的介绍,来达到了解ospf路由协议的特性和特有的一些概念的了解。

一.ospf的特性:

快速收敛;

能够适应大型网络;

能够正确处理错误路由信息;

使用区域,能够减少单个路由器的cpu负担,构成结构化的网络;

支持无类路由,完全支持超网,可变长子网等无类特性;

支持多条路径负载均衡;

使用组播地址来进行信息互通,减少了非ospf路由器的负载;

使用路由标签来表示来自外部区域的路由。

二.neighbor和adjacency的定义:

neighbor:

在网络中,ospf路由器可以发送hello报文来进行邻居寻找,当hello报文中的几个字段的内容是互相一致的时候,相邻的ospf路由器就会形成neighbor关系。

neighbor是保存在neighbor表里,需要有router id和ip地址信息。

router id的确定:

1. 选择ip地址最大的loopback接口的ip地址为router id;如果只有一个loopback接口,那么router id就是这个loopback的地址。

2. 如果没有loopback接口,就选择ip地址最大的物理接口的ip地址为router id,但是作为router id的物理接口,就不能运行ospf,也就是说这个接口无法发送接受ospf报文。

使用loopback的ip地址作为router id的好处:

a. loopback接口是逻辑接口,永远不会down,有利于ospf的稳定运行;

b. 便于控制ospf路由器的router id。

hello协议的特点:

1. 目的:

a. 用来发现ospf neighbor;

b. hello报文包含了多个需要ospf路由器协商的参数,以形成neighbor的关系;

c. 他可以用来维持邻居之间链接的存活;

d. 用来确定dr,bdr路由器的选择。

2. 报文内容:

a. router id

b. area id

c. ip地址和掩码

d. 认证方式和认证信息

e. hello interval和dead interval

f. router优先权

g. dr和bdr的router id

h. 五个字节的特性控制信息

i. 距上次hello报文后,在dead interval中,路由器的neighbor的router id列表

每个ospf路由器收到收到hello报文,将会协商上述信息,是否符合,如果不符合,hello报文会遭到丢弃。

并且当一个路由器收到一个hello报文,其中neighbor router id list里有它的router id时,就会进入2-way模式,一旦进入2-way模式,就会建立adjacency。

3. dr和bdr使用224.0.0.5(allspfrouter address)发送hello packet,而收到报文的路由器以224.0.0.6(alldrrouter address)发送确认报文,表示收到了hello packet。

4. point-to-multipoint:相当与多个点对点网络的集合,但是不会产生dr,bdr的选举,通过组播报文发送路由信息报文。

5. 只有nbma网络和采用虚拟链路的网络发送的是单播报文。

6. stub network:只有一个出口连接到路由器的网络,通常产生的报文的原地址和目的地址都是本网络中。

dr和bdr的选择,特性:

1. dr和bdr是接口的特性,和路由器本身无关。

2. dr和bdr和multiaccess网络中其他的路由器形成adjancency,但他们之间没有形成adjancency。

3. 每个接口上都会有优先级,如果优先级为0时,表示不参加选择dr,bdr。

adjacency:

是在ospf neighbor之间形成的虚拟的连接,这些连接有不同的性质,根据路由器连接的不同网络类型。

形成adjacency的步骤:

1. 邻居发现

2. 双向通信

3. 数据库同步

为了使路由器能够实现数据库的一致和同步,通过交换dd,lsr,lsu报文来达到数据库同步的目的。

4. 完全形成连接

master和slave的关系和选择

在exstart状态下,邻居之间进行协商,以决定由哪个路由器来控制database sychronization。

neighbor表项的数据结构:

neighbor表项中的信息是通过路由器从hello报文中学到的,关于邻居的一些信息。

1. neighbor id

2. neighbor ip address

3. area id

4. interface

5. neighbor priority

6. state

7. pollinterval

这是用于nbma网络的一个概念,由于nbma网络无法用组播来发送报文,也就是说无法自动发现邻居,如果当neighbor处于down的状态时候,hello报文每隔一个pollinterval时间就会发送一次,来发现和维护邻居关系。

8. neighbor option

9. inactivity time

10. dr

11. bdr

12. master/slave

13. dd sequence number

14. last received database description packet

15. lik state retransmission list

是指已经发送出去的lsa,但是还没有收到acknowledge的报文,如果超过rxmtinterval还没有收到,就会进行重传。

16. database summary list

在database synchronization时,所发送的lsa的表单。

17. link state request list

是指最新收到的在database description报文中所带的lsa清单,路由器会发送lsr到neighbor要最新的lsa,收到lsu后,会把list里的相应条目删掉。

三.neighbor状态机制

1. down

没有收到任何hello报文的时候,或是在deadinterval中,没有收到hello报文

2. attempt

只有在nbma网络里才有,手工进行neighbor的指定。

3. init

收到了hello报文

4. 2-way

当路由器看到自己的router id在邻居发来的hello报文里;在广播网络里,dr和bdr开始被选举。

5. exstart

决定master/slave关系,以初始化dd 报文序列号来交换database description报文

6. exchange

路由器开始交换dd报文的过程

7. loading

发送lsr报文已处在loading状态的报文,请求最新的通过exchange dd报文发现的未收到的lsa

8. full

完成了路由器和网络的lsa的交换

当路由器收到lsa后,会把lsa存到数据库中,然后会把收到lsa复制并从其它的ospf接口发送出去,直到整个网络区域的lsa database获得同步一致。然后每个路由器根据lsa database里的link信息进行spf运算,算出没有回路的最短路径。

四.database description报文

它是包含了路由器所有的lsa信息的报头,可以使路由器知道,neighbor上有多少lsa是自己不知道的,可以通过lsr报文来请求新的lsa。