OSPF协议学习
前言
RIP是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值不科学、可扩展性差等问题。
IETF提出了基于SPF算法的链路状态路由协议OSPF(Open Shortest Path First)。通过在大型网络中部署OSPF协议,弥补了RIP协议的诸多不足。那么OSPF协议是如何实现的呢?面对网络扩展的需求,又该如何应对呢?
OSPF常用命令
ospf 1 router-id 1.1.1.1 //ospf标识1,router ID为1.1.1.1
area 0 //区域0
network 192.168.1.1 0.0.0.255 //宣告时使用反掩码,0~指定,255~随意数字
reset ospf process //重启ospf协议
display ospf peer brief //查看ospf协议内容
display ip routing-table protocol ospf //在该路由查看ospf学习到的路由
display ospf lsdb //查看ospf当中LSDB
interface gi 0/0/0
ospf cost 20 //接口下配置开销
ospf authentication-mode simple plain Huawei // 配置明文认证,并且密码为Huawei,必须相连OSPF设备都要配置才可以建立full关系;
OSPF的工作过程
1、建立邻居。
2、同步链路状态数据库。
3、计算最优路由。
OSPF协议报文
ospf 网络层 协议号 89
ospf报文 头部+数据内容
数据内容 hello报文 DBD LSR LSU LSACK
头部:version router id、auth、area
hello报文:hello发送周期、hello死亡周期、network mask、DR、BDR、邻居列表、option选项、优先级
建立邻居
1、RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init。
2、RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init。
3、RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
4、RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)
状态的描述
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。
2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。
邻接过程
一直到双方把自己LSA头部信息传递,其中有一个标志是0;
ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。
DR与BDR选举
在运行OSPF的MA网络和NBMA网络,会存在两个问题;
因为同一个区域的路由器必须保证他们LSDB(链路状态数据库)是一样的,因此在一个有N个路由器的网络中会形成(n*(n-1))/2 个邻接关系,我们可以做一些优化,在一个MA网络中选出DR角色出来,DR(Designated Router)即指定路由器和BDR(Backup Designated Router)和DROther(非DR路由器)。
规定:DR/BDR和BDR可以建立FULL连接关系 DROther之间只是建立2-way连接关系。
DR/BDR监听的IP:224.0.0.6
DROther监听的IP:224.0.0.5
DROther会将路由器信息发送给224.0.0.6的目标IP,因为224.0.0.6地址是DR与BDR设备监听,然后DR设备会监听到这些路由信息,就会将这些信息发送224.0.0.5的目标地址,因为224.0.0.5所有的OSPF监听的地址,这样所有的路由都可以收到该信息。
DR的作用:
1、减少连接关系数量,也就是full关系;
2、产生LSA-2;
DR与BDR选举规则:
1、接口DR优先级越大越优先;
2、优先级相等,router ID值越大越优先;
注意:
1、优先级0是不参与选举DR与BDR;
2、一般是建议手工操作DR与BDR选举;
3、只有MA网络才有DR和BDR选举;
4、P2P与P2MP中不选举DR与BDR;
5、接口优先级,默认是1,范围0~255;
设置优先级命令:ospf dr-priority 1
查看命令:display ospf interface gigabitEthernet 0/0/1
选举过程:
1、首先选择DROther集合;
2、然后选择的是BDR;
3、最后选择的是DR;
OSPF协议网络类型
数据链路层协议类型多种多样,工作机制也各不相同。
为适配多种数据链路层协议,必须考虑各类链路层协议在组网时的应用场景。
P2P网络
P2P网络是一对路由,广播、组播数据包都可以转发;
P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。
P2P所有报文都是监听224.0.0.5地址;
P2P状态变化:int >> Exstart >> Exchange >> loading >> full;
在P2P中是没有2-way邻居关系的,说明P2P类型下,是不需要选择DR和BDR的;
广播网络
广播型网络的例子:通过以太网链路相连的路由器网络;
两台或两台以上的路由器通过共享介质互连;
支持广播、组播;
Hello报文: 组播报文:224.0.0.5
DBD报文:单播报文
LSR报文:单播报文
LSU报文:单播、组播报文.5或者.6
LSACK报文:单播、组播报文 .5或者.6
NBMA网络与P2MP网络
缺省情况下,OSPF认为帧中继、 ATM的网络类型是NBMA;
NBMA网络(非广播网络)要求全网络中的路由器全连接,R1要与R2连接关系,R1要与R3连接关系,R2要与R3连接关系,该模式已淘汰了;
P2MP网络(点到多点网络),R1要与R2连接关系,R1要与R3连接关系,R2不需要和R3有连接关系;
影响FULL连接建立不起来的问题
1、不在同一个区域时不能建立full;
2、不在同一个网段时无法建立full;
3、hello Iterval 不一样时无法建立full;
4、router ID一样时无法建立full;
5、认证都要开启,否则无法建立full;