OSPF动态路由协议
OSPF动态路由协议
链路:当一个接口被加入到OSPF进程中时,就变成了一个链路。
路由ID:用来标识路由器的IP地址,首可以指定,如果没有,则用环回接口的最高IP地址,如果没有环回地址,则用**接口的最高IP地址。
邻居:同一物理网段的路由器。
邻接关系:邻居之间交换LSA,当邻居关系LSDB同步后,形成了邻接关系。
DR/DBR:讲解如下:
一:名词解释
DR:designated router 指定路由器。
BDR:backup designated router 备份指定路由器。
二:DR/BDR出现的缘由
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息.如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系.这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源.为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去.如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步.这需要较长的时间,在这段时间内,路由的计算是不正确的.为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念.
BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网络内的所有路由器建立邻接关系并交换路由信息.当DR失效后,BDR会立即成为DR.由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的.当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算.DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息.这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量.
如下图所示,用实线代表以太网物理连接,虚线代表建立的邻接关系.可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了.
在一个LAN 连接中,OSPF将选举出一个路由器做为DR,再选举一个做为BDR,所有其他的和DR以及BDR相连的路由器形成完全邻接状态而且只传输LSA(链路状态通告)给DR和BDR。
换句话说,在一个OSPF的网络中,所有的路由器将被分为两类:指定路由器(DR/BDR)和非指定路由器(DROTHER)。所有的非指定路由器都要和指定路由器建立邻居关系,并且把自己的LAS发送给DR,而其他的OSPF路由器将不会相互之间建立邻居关系。也就是说,OSPF网络中,DR和BDR的LSDB(链路状态数据库)将会包含有整个网络的完整拓扑。|
DR从邻居处转发更新到另外一个邻居那里。DR的主要功能就是在一个LAN内的所有路由器拥有相同的数据库,而且把完整的数据库信息发送给新加入的路由器。路由器之间还会和LAN内的其他路由器(非DR/BDR,即DROTHERs)维持一种部分邻居关系(two-way adjacency)。OSPF 的邻接一旦形成以后,会交换LSA来同步LSDB,LSA将进行可靠的洪泛。
三: DR/BDR的选举
当选举DR/BDR的时候要比较hello包中的优先级priority(设置命令route(config-if)#ip ospf cost{priority} 0~255),优先级最高的为DR,次高的为BDR。不作修改默认端口上的优先级都为1,在优先级相同的情况下比较Router ID,RID最高者为DR,次高者为BDR,当你把相应端口优先级设为0时,OSPF路由器将不能再成为DR/BDR,只能为DROTHER。
在使用默认优先级的OSPF的DR选举中,所有的路由器之间会交换自己的ROUTER-ID来确定DR。ROUTER-ID可以手工指定。如果没有手工指定ROUTER-ID的话,那么路由器会先看自己有没有环回接口(Loopback),如果有环回接口,则使用环回接口上的IP地址作为自己的ROUTER-ID。如果没有环回接口的话,则会去比较自己所有物理接口上的IP地址,并从中选择最大的一个IP地址作为自己的ROUTER-ID来参与DR的选举。
那么,DR和BDR的选举就可以用以下的方式来决定:
1 首先比较优先级,优先级相同时,如果有手工指定的ROUTER-ID,则使用该ROUTER-ID参与选举;
2 如果没有手工指定的ROUTER-ID,则看自己有没有Loopback接口,有则使用Loopback接口上的IP作为ROUTER-ID参与选举;
3 如果没有Loopback接口,则比较所有的物理接口,并使用其中最大的IP作为ROUTER-ID参与选举;
4 所有的OSPF路由器交换自己的ROUTER-ID,具有所有ROUTER-ID中最大一个的路由器将作为DR,具有次大ROUTER-ID的路由器则成为BDR。
OSPF执行过程:
- 用目的地址224.0.0.5交换LSA
- 通过LSA建立邻接关系,同步LSDB。注:在LAN中,在建立邻接关系的时候,是直接选举DB/DBR,通过ROUTERID。之后所有的DBother与DB/DBR发送LSA。这时候,DBother的目的地址为224.0.0.6,DB/DBR的目的地址为224.0.0.5。
- 执行SPF算法,生成SPF树。生成路由表。
OSPF的配置:
#进入ospf配置环境
R2(config-router)router ospf 1
#通告直连网络,注意用通配符掩码
R2(config-router)#network 10.1.0.0 0.0.0.255 area 0
R2(config-router)#network 10.3.0.0 0.0.0.255 area 0
R2(config-router)#network 10.3.0.0 0.0.0.255 area 0
R2(config-router)#network 10.13.0.0 0.0.255.255 area 0
#配置接口
Ruijie (config)# interface interface-id //Enter the interface configuration mode.
Ruijie (config-if)# ip ospf cost cost-value //(Optional) Define the interface cost,用来作为ospf的spf的度量值
Ruijie (config-if)#ip ospf hello-interval seconds //(Optional) Set the Hello message send interval, which must be the same for all the nodes of the entire network.
Ruijie (config-if)#ip ospf dead-interval seconds //(Optional) Set the dead interval for the adjacent router, which must be the same for all the nodes of the entire network.
Ruijie (config-if)#ip ospf priority number //用来作为选举DR/DBR的优先级
OSPF汇总
ASBR上实现汇总,即汇总外部路由
summary-address ip-address mask[not-advertise | tag tag-id] //Configure the external route summary,注意,ip和mask是外部路由
从其他区域汇总到Area0
area area-id range ip-address mask //例如,area1的ip和mask,汇总后发送到Area0,area 1 range 被汇总的ip 被汇总的掩码
OSPF验证
有链路验证和区域验证
1、接口级别的验证(明文验证)
Configuration of RouterA:
RouterA(config)#int s1/0
RouterA(config-if)#ip ospf authentication #开启接口级别的验证
RouterA(config-if)#ip ospf authentication-key hello #配置验证口令
Configuration of RouterB:
RouterB(config)#int s0/2
RouterB(config-if)#ip ospf authentication
RouterB(config-if)#ip ospf authentication-key hello
2、区域验证(MD5验证)
RouterB(config)#router ospf 1
RouterB(config-router)#area 1 authentication message-digest #开启区域验证
Router C(config)#router ospf 1
Router C(config-router)#area 1 authentication message-digest
RouterB(config)#interface Ethernet 0/1
RouterB(config-if-Ethernet 0/1)#ip ospf message-digest-key 1 md5 hello2 #接口上配置验证口令
RouterC(config)#interface Ethernet 1/21
RouterC(config-if-Ethernet 0/1)#ip ospf message-digest-key 1 md5 hello2
OSPF基础调试命令
- show ip protocols
- show ip ospf
- show ip ospf interface
- debug ip ospf