OSPF(开放最短路径优先)协议概述:
- 链路状态路由协议
- 无类路由协议
- 要点:RouterID、区域ID
- 触发更新 、以传播 LSA 代替路由表更新
- 快速响应变更(比距离矢量路由协议快)
- 邻居发现--使用Hello包发现邻居并简历相邻关系,通过组播地址发送给所有参与SPF计算的路由器
-组播地址:224.0.0.5、224.0.0.6
- OSPF采用SPF算法计算到达目的的最短路径
-链路(Link):路由器接口
-状态(State):描述接口以及其与邻居路由器之前的关系
- 三张表:
-邻居表 //show ip ospf neighbor
-拓扑表 //show ip ospf database
-路由表 //show ip route
OSPF Area:
-为了适应大型的网络,OSPF在AS内划分多个区域
区域0:主干区域
其他区域:正常区域;所有正常区域与主干区域直连 (也可以通过虚链路穿透)
-每个OSPF路由器只维护所在区域的完整链路状态信息
OSPF Router-ID:
-Router-ID:用于在一个OSPF区域中唯一标识一台路由器
-OSPF Router-ID的设定可以通过手工配置的方式,或者通过自动选取的方式
-自动选取的机制是:若配置有loopback口,则选取最大的loopback口地址,若无,则选取活跃物理接口中IP地址最大的作为Router-ID
OSPF ProcessID(仅本地有效):
一、OSPF单进程
-OSPF ProcessID,范围为1-65535,仅本地有效,用来在本地区分不同的OSPF进程
-上图意思是,对于R1而言,它并不关心它的直连OSPF邻居-R2使用的是什么OSPF进程号
-虽然OSPF ProcessID本地有效,但是仍然建议,除非有特殊需求,否则全网使用一致的OSPF进程ID,这将方便网络管理和维护
二、OSPF多进程
-一台路由器可创建多个OSPF进程,使用OSPF ProcessID进行区分,不同的进程相互独立;
-上图R2使用OSPF进程20与R1建立邻居关系,使用OSPF进程30与R3建立OSPF邻居关系;
-这两个OSPF进程相互独立,R2通过OSPF进程20/10从R1/R3学习到的OSPF路由(严格的说,应该是LSA),默认不会直接更新给R3/R1;
-R2这两个OSPF进程虽然彼此隔离,但是都可以为R2自身贡献路由,例如R1更新过来一条路由1.1.1.0,R3更新过来一条3.3.3.0,那么在R2的全局路由表里都是能看到这两条路由的。这两条路由不会互相灌进对方的OSPF进程(造成的直接结果是R1没有R3的路由,R3没有R1的路由),除非 -- 路由重发布;
-有一点要注意:如果R1及R3都向R2更新同一条路由。R2会根据COST来选,如果等价,R2会以"先到先得"的原则,谁的路由先过来,就优选谁;
//*什么情况下需要用到多OSPF进程呢?一般而言,一台路由器创建一个OSPF进程,可以实现网络的需求,但是在一些特殊的、复杂的环境当中,单一的OSPF进程可能无法满足要求,因此在一台路由器上创建多个OSPF进程,这样一来的直接好处是,这台路由器从原先的角色--OSPF interArea Router,变成了一台ASBR,它可以在进程之间重发布、可以过滤路由或LSA、可以操控路由、可以做基于route-map的策略、可以做路由汇总等等。
OSPF度量值(Metric):
-OSPF使用路径开销(Cost)作为度量值;默认情况下,该值的计算结果取决于接口的带宽
-在每一个运行OSPF的接口上,都维护者一个接口Cost
-接口Cost=100M/接口带宽,其中100M为OSPF的参考带宽
-路径开销是指到达目标的所有路径开销之和
修改接口的Cost值
Router(config)#interface fa0/1 Router(config-if)#ip ospf cost number(取值范围1~65535) //OSPF路由器在接口上使用cost值来决定最佳路径
配置loopback接口地址
//用于产生路由器的Router ID Router(config)# interface loopback 0 Router(config-if)# ip address IP地址 掩码
开启OSPF路由进程
//本路由器的进程号,用于标识同一路由器上的多个OSPF进程(仅本地有效) Router(config)# router ospf 进程号
指定OSPF协议运行的接口和所在的区域
//宣告特定的网络到OSPF区域 Router(config-router)# network 网络号 反向掩码(通配符掩码) area 区域号
*通配符是一个用于决定哪些IP地址位该精确匹配(0代表精确匹配)哪些地址位被忽略的32位数值,通常用于处理访问控制列表(ACL)、OSPF和EIGRP等路由协议的网络通告。
OSPF建立邻居关系需满足条件:
-Area-id:两个路由器必须在共同的网段上,它们的端口必须属于该网段上的同一个区,且属于同一个子网
-验证(Authentication OSPF):同一区域路由器必须交换相同的验证密码,才能成为邻居
-Hello Interval和Dead Interval: OSPF协议需要两个邻居路由器的这些时间间隔相同,否则就不能成为邻居路由器
-stub区域标记:两个路由器可以在Hello报文中通过协商Stub区域的标记来成为邻居
OSPF工作流程
1、OSPF网络中,直连的路由器之间建立邻接关系(建立邻居表)
2、OSPF将LSA泛洪到区域中的所有OSPF路由器,从而使这些路由器了解该OSPF网络内的链路状态信息,以创建 OSPF 链路状态数据库(建立拓扑表)
3、使用 SPF 算法计算到每个目的地的最短距离,并将其置于路由表中(建立路由表)
宣告方式:
一、网段宣告
OSPF单区域配置命令:
单区域存在的问题
LSA泛洪严重,OSPF路由器的负担很大
区域内部动荡会引起全网路由器的SPF计算
LSDB庞大,资源消耗过多,设备性能下降,影响数据转发
每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总
OSPF多区域配置命令:
R1
R1(config)#interface GigabitEthernet0/0
R1(config-if)#ip address 10.64.0.1 255.255.255.0
R1(config-if)#ip ospf cost 10
R1(config)#router ospf 9
R1(config-router)#network 10.64.0.0 0.0.0.255 area 0
R2
R2(config)#interface GigabitEthernet0/0
R2(config-if)#ip address 10.64.0.2 255.255.255.0
R2(config)#interface GigabitEthernet0/1
R2(config-if)#ip address 10.2.1.2 255.255.255.0
R2(config)#router ospf 8
R2(config-router)#network 10.64.0.0 0.0.0.255 area 0
R2(config-router)#network 10.2.1.0 0.0.0.255 area 1
R3
R3(config)#interface GigabitEthernet0/1
R3(config-if)#ip address 10.2.1.1 255.255.255.0
R3(config)#router ospf 5
R3(config-router)#network 10.2.1.0 0.0.0.255 area 1
多区域的优点
减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的
在区域边界可以做路由汇总,减小了路由表
充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由
多区域提高了网络的扩展性,有利于组建大规模的网络
二、接口宣告
//查看邻居列表 Router#show ip ospf neighbor //查看链路状态数据库 Router#show ip ospf database //查看OSPF接口 Router#show ip ospf interface //查看ospf路由条目 Router#show ip route ospf //查看OSPF的配置 Router#show ip ospf //查看当前路由协议 Router#show ip protocols //查看到达网络192.168.1.0的路由信息 Router#show ip route 192.168.1.0