路由基础知识 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。