OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。这里路由域是指一个自治系统(AS),它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
Ip头协议字段——88eigrp 89ospf
OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
如图所示:OSPF和EIGRP分别为一个自治系统。其中:
Area0为骨干区域,为了避免区域间环路,非骨干区域之间不允许直接相互发布路由信息。因此每个区域必须连接到骨干区域。
AB为主干路由器(BR)
EF为区域边界路由器(ABR)
GH为常规路由器
C为自治系统边界路由器(ASBR)
划分区域的好处:
1、减少路由表的路由条目
2、拓朴发生改变时,只影响本区域的数据库
3、每隔30分钟泛数据库信息(周期和触发更新),划分区域后,只在本区域泛洪
4、网络设计灵活
1.Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
2. Attempt:此状态只在NBMA(非广播多路访问网络)网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval 。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为 Down状态。
3. Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未和邻居建立双向通信关系 。
4. 2-Way:在此状态下,双向通信已经建立,但是没有和邻居建立邻 接关系。这是建立邻接关系以前的最高级状态。
5. ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的 ,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
6. Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD 报文,描述本地LSDB的内容。
7. Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
8. Full:路由器的LSDB已经同步
邻居和邻接的解释
邻居(Neighbor): OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数, 如果双方的参数一致,就会彼此形成邻居关系。
邻接(Adjacency): 形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。 只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系
Router ID是一个32位的值,它唯一标识了一个自治系统内的路由器,可以为每台运行OSPF的路由器上可以手动配置一个Router ID,或者指定 一个IP地址作为Router ID。如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;如果没有配置逻辑接口, 则路由器使用物理接口的最大IP地址作为Router ID。在为一台运行 OSPF的路由器配置新的Router ID后,可以在路由器上通过重置OSPF 迚程来更新Router ID。通常建议手动配置Router ID,以防止Router ID 因为接口地址的变化而改变。
DR和BDR可以减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。 一个既不是DR也不是BDR的路由器只能与DR和BDR形成邻接关系并交换链路状态信息以及路由信息
DR:指定路由 BDR:备份指定路由
选取原则
首要因素是时间
其次是接口优先级(多路访问网络的接口优先级为1,点到点网络接口优先级为0。
ip ospf priority 可以修改接口优先级,若为0则不参与DR选举
再次是路由器ID:先比环回接口,再比物理接口
DR与BDR选取是非抢占的,以下情况会重选
重启ospf进程或路由器
参与的路由器都执行clear ip ospf process命令
DR故障
注:为了维护网络上邻接关系的稳定性,如果网络中已经存在DR和BDR, 则新添加进该网络的路由器不会成为DR和BDR,不管该路由器的 Router Priority是否最大。如果当前DR发生故障,则当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变, 重新选举BDR。这种选举机制的目的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量小。
metric值=所有目的地址到达本地路由器的入接口的cost值之和
metric值=所有本地路由器到达目的地址的路由器的出接口的cost值之和
cost=10^8/BW(接口带宽)
当然也可以使用命令sh ip ospf interface loopback 0 查看接口的cost值
修改接口cost值
Router(config)#int f0/0
Router(config-if)#ip ospf cost 1
单区域
Router(config)#router ospf process-id
Router(config-router)#network address wildcard-mask area area-id
负载均衡
路径必须为等价路径,默认最多可在路由表中加入4条等价路径
可更改特殊链路的开销以实现负载均衡
Router(config-if)#ip ospf cost 5
身份认证
(1)配置明文认证
R1(config-if)#ip ospf authentication-key ccie 设置明文密码,两端口密码要一致
R1(config-if)#ip ospf authentication 开启接口认证
R1(config)#router ospf 1
R1(config-router)#area 1 authentication 开户区域认证
(2)配置密码认证
R1(config-if)#ip ospf message-digest-key 1 md5 ccie
R1(config-if)#ip ospf authentication
(3)配置区域认证
R1(config-if)#ip ospf message-digest-key 1 md5 ccie
R1(config-router)#area 1 authentication message-digest
验证OSPF的配置
查看是否配置ospf:sh ip protocols
查看邻居表:sh ip ospf neighbor
查看链路状态数据库(拓朴表):sh ip ospf database
查看路由表:sh ip route /sh ip route ospf
查看ospf进程及相关信息:sh ip ospf
查看运行ospf接口的信息:sh ip ospf interface f0/0
关于OSPF手工汇总
1、区域间路由汇总必须在ABR上完成
2、外部路由汇总必须在ASBR上完成
3、“no-advertise”参数阻止传递汇总路由