目录
ospf基础知识
ospf出现的背景:
手工配置静态路由过于繁琐且容易出错,就有了动态路由协议
ospf是什么:
开放式最短路径优先协议,选举最优的路由.
适用于中、大型网络规模,常见的场景有:
&政企网,层次化的网络架构中
&数据中心内部,用于实现把不同的网段打通
ospf的骨干区域和非骨干区域:
ospf里把area 0 定义为骨干区域,除了骨干区域其他的都是非骨干区域,骨干区域和非骨干区域必须相连
ospf的单区域配置:
拓扑图:
要求:不配置静态路由,实现全网互通
配置:
R1:配置
ospf 1 router-id 1.1.1.1 //指定ospf进程号, 指定router-id
area 0.0.0.0 //指定区域id
network 192.168.1.0 0.0.0.255 //宣告直连网段
network 192.168.12.0 0.0.0.255 //宣告直连网段
R2:配置
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.12.0 0.0.0.255
R3:配置
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.2.0 0.0.0.255
display ospf peer brief //查看邻居表简要信息
display ip routing-table //查看路由表
PC1 ping PC2 验证结果
ospf的三 五 七 故障排错
ospf三个的工作过程:
建立邻居-同步数据库-选举最优路由
ospf的五种报文:
hello报文:建立,维护,断开邻居
dd报文:用于发送简要的数据库信息
lsr报文:请求自己数据库没有的lsa
lsu报文:对于收到的lsr,更新lsa给对方
lsack:对于收到更新的lsa后,表示确认
ospf的七种状态:
down:最开始的状态,发送hello报文
init:发送hello报文,但是hello报文不含自己的router-id
2-way:发送hello报文,而且hello报文含有自己的router-id,邻居关系已经完全建立
exstart:开始建立邻接关系,开始发送第一个dd报文,dd报文中含有数据库的简要信息
exchange:开始交互剩下的dd报文,完成lsa的同步
loading:开始交互剩下的lsr,lsu,lsack
full:邻接关系已经完全建立
这提供几个排错的知识:
路由器停留在init状态:同网段的路由器不能互通,配置了路由的策略,接口未开启
路由器停留在2-way状态:dr没有选举成功
路由器停留在exstart状态:master设备的mtu值小于slave设备的mtu(就是mtu值不一致)
router-id大的为master设备
路由器停留在exchange状态:master设备的mtu值大于slave设备的mtu(就是mtu值不一致)
当状态已经是full,但是无法同步数据库:两端的网络类型不一样,例如一端是广播,一端是点对点
ospf的dr和bdr
dr是什么:
dr就相当于大哥,其他的路由器就相当于小弟,所有小弟只需要和大哥建立连接,不需要和旁边的小弟建立连接,
作用:
减少邻接关系,加快ospf的数据库的同步,减少了ospf的协议流量
特点:
不可以抢占,选举原则:先比较优先级(默认为1),优先级一样,则比较router-id
修改优先级
[R2-G0/0/0]ospf dr-priority 100 //修改接口的优先级为100
<r1>reset ospf process //在用户视图下,重启ospf的进程
<r2>reset ospf process
bdr:dr的备份
dr一定存在,bdr可以存在也可以不存在
dr-other
除了dr和bdr其他的路由器都是dr-other
ospf的多区域配置
拓扑图:
要求:使用ospf要求全网互通
配置:
R1配置:
ospf 1 router-id 1.1.1.1
area 0.0.0.12
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
R2配置:
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 192.168.23.0 0.0.0.255
area 0.0.0.12
network 192.168.12.0 0.0.0.255
R3配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.34.0 0.0.0.255
R4配置:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 192.168.34.0 0.0.0.255
network 192.168.45.0 0.0.0.255
R5配置:
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 192.168.45.0 0.0.0.255
area 0.0.0.56
network 192.168.56.0 0.0.0.255
R6配置
ospf 1 router-id 6.6.6.6
area 0.0.0.56
network 192.168.2.0 0.0.0.255
network 192.168.56.0 0.0.0.255
**常用查询命令**
display ip interface brief 查看接口IP地址
display ospf interface 查看dr /bdr信息
display ospf lsdb 查看ospf数据库信息
lsa解析
一类lsa:用来描述自己的,我在哪个网段,我的子网掩码是多少,我连着谁,用来计算区域内的路由信息和拓扑信息
二类lsa:用来描述dr的子网掩码,同时记录了和dr的相连的路由器的信息,完善区域内的拓扑信息
三类lsa:一类lsa和二类lsa的汇总,发送到其他区域,实现区域与区域之间的通信,每经过一个ABR设备, (通告路由器)都会变化一次,变成所有经过的那台ABR的 Router-id
五类的lsa:由lsdb(连接外部的路由器)产生,用来描述外部的路由信息,他将泛洪到所有区域
四类的lsa:由同时属于lsdb的那个区域的abr产生,帮助其他的abr找到asbr的router-id,为了配合5类的lsa,计算外部路由信息
七类的lsa:
-产生的路由器:AdvRouter : NSSA区域的ASBR的Router-id
用于通告NSSA区域的外部路由
特殊区域
作用:为了保护另外一个区域不受外部链路的影响
减少路由表和数据库的规模,减少设备的压力,减少路由数量
stub区域
作用:保护一个区域不受来自外部链路的影响,避免外部路由对路由器带宽和存储资源的消耗,缩减LSDB和路由表的规模,减少路由信息数量,降低设备负载
不接收,4类和5类的LSA
只接收,1类,2类,3类的LSA
拓扑图:
配置(ospf多区域的配置这里就不再赘述,这里主要介绍区域的设置和路由的引入):
[R1]ospf 1
[R1-ospf-1]area 12
[R1-ospf-1-area 0.0.0.12]stub
**R6配置**
#
interface GigabitEthernet0/0/0
ip address 192.168.67.6 255.255.255.0
#
ip route-static 192.168.3.0 24 192.168.67.7
**R7配置**
interface GigabitEthernet0/0/0
ip address 192.168.67.7 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.3.254 255.255.255.0
#
ip route-static 192.168.0.0 16 192.168.67.6
R6上在OSPF进程下引入静态路由
**R6配置**
ospf 1 router-id 6.6.6.6
import-route static
外部引入路由:一定要进行宣告进入ospf区域,路由才可以进入
stub-no summary
区域的ABR会自动产生一条默认的3类的LSA,帮助转发数据,相比stub区域多了3类的lsa
配置:
[R1-ospf-1-area 0.0.0.12]stub no-summary
nssa区域
-作用:保护一个区域不受来自外部链路的影响,避免外部路由对路由器带宽和存储资源的消耗,缩减LSDB数据库的规模,减少路由表信息数量,降低设备负载,但是nssa自己区域的设备又可以引入外部路由
-该区域允许接受1类,2类,3类,7类的LSA
-该区域不学习和接受,4类,5类LSA
-NSSA区域的ABR会自动产生表示默认路由的7类的LSA
-NSSA区域的ABR会自动的将7类的LSA转成5类的LSA
-7类的LSA只能在特殊区域NSSA内部传播
-该区域会通过ABR生产成一条默认的7类LSA,用于访问外部网络
(结合了stub区域的特点,但是还可以接收外部的路由)
配置:
[R1-ospf-1-area 0.0.0.12]nssa
nssa no-summary
该区域不接收3类,4类,5类的lsa
但是该区域会通过ABR生产成一条默认的3类LSA和7类LSA用于访问外部网络
该区域的ABR会自动的将7类的LSA转成5类的LSA
7类的LSA只能在特殊区域NSSA内部传播
路由汇总
概念:将具有多条有相同前缀的路由汇总成一条路由
作用:减少路由条目,减小设备的压力,减小数据库的规模,减小其他区域不稳定链路的影响
区域间的路由汇总:
在区域间的路由器上宣告多条路由,在abr上面汇总
拓扑:
配置:
区域间路由汇总:ABR汇总
第一步:配置接口信息(在R1上配置)
interface LoopBack0
ip address 10.10.1.1 255.255.255.0
#
interface LoopBack1
ip address 10.10.2.1 255.255.255.0
#
interface LoopBack2
ip address 10.10.3.1 255.255.255.0
#
interface LoopBack3
ip address 10.10.4.1 255.255.255.0
interface LoopBack4
ip address 10.10.5.1 255.255.255.0
第二步:宣告路由(在R1上配置)
ospf 1 router-id 1.1.1.1
area 0.0.0.12
network 192.168.12.0 0.0.0.255
network 10.10.1.0 0.0.0.255
network 10.10.2.0 0.0.0.255
network 10.10.3.0 0.0.0.255
network 10.10.4.0 0.0.0.255
network 10.10.5.0 0.0.0.255
第三步:配置ABR汇总信息(在R2上配置-ABR上配置)
ospf 1 router-id 2.2.2.2
area 0.0.0.12
abr-summary 10.10.0.0 255.255.0.0
外部路由汇总
拓扑和配置和区域间的路由汇总是一样的,唯一不同点是在asbr上面汇总
区域配置错误的解决办法
情景:骨干区域无法和非骨干区域连接在一起,无论怎么规划都不行
解决方案:
vlink虚拟链路
拓扑图:
配置(建立一条虚拟链路,指向对方的router-id):
AR2:
ospf 1 router-id 2.2.2.2
area 0.0.0.12
network 192.168.12.0 0.0.0.255
area 0.0.0.34
network 192.168.23.0 0.0.0.255
vlink-peer 5.5.5.5
AR5:
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 192.168.56.0 0.0.0.255
area 0.0.0.34
network 192.168.45.0 0.0.0.255
vlink-peer 2.2.2.2
注:十分的脆弱,且很依赖传输区域
多进程导入
一台设备上可以有多个ospf进程,利用这些进程相互独立的特点,通过进程互相引入的方式,学习不同进程下的路由,就像在OSPF中引入其他路由协议一样
拓扑图:
配置:
AR2配置:
ospf 1 router-id 2.2.2.2
import-route ospf 3 //导入ospf进程3
area 0.0.0.12
network 192.168.12.0 0.0.0.255
#
ospf 3 router-id 2.2.2.2
import-route ospf 1 //导入ospf进程1
area 0.0.0.56
network 192.168.23.0 0.0.0.255
注:多进程导入相当于改变了网络结构,像在OSPF中引入其他路由协议一样
建立隧道
通用路由封装协议,GRE使用Tunnel里面的ip地址,作为建立区域0邻居关系的地址,建立一条隧道,通过隧道地址进行互通,真正的建立邻居的隧道地址,在传输过程中不会解封装,通过隧道地址在区域34进行转发,只有到达隧道的终点,才会解封装,漏出真实的地址,实现了跨越多个网络建立了直连的区域0 的邻居关系(就相当于从东北穿着毛衣去了三亚,到了三亚把衣服脱了下来,你还是你,只是在路途需要毛衣)
拓扑:
配置:
配置GRE隧道
sysname R2
#
interface LoopBack0
ip address 20.20.20.20 255.255.255.0 //配置loopback接口,
做隧道中的源IP地址 ,为什么,因为稳定,不会down
interface Tunnel0/0/3 //创建隧道接口
ip address 10.10.10.2 255.255.255.0 //给隧道接口配置IP地址,(在已经建立的隧道, 在ospf中区域0建立邻居)
tunnel-protocol gre //把隧道的模式,定义为GRE
source 20.20.20.20 //进入隧道的数据要进行二次封装,在原始的数据包的IP头部前,在加1层IP头部,封装新的源IP和目的IP
destination 50.50.50.50 //二次封装的目的IP地址
sysname R5
#
interface LoopBack0
ip address 50.50.50.50 255.255.255.0
#
interface Tunnel0/0/3
ip address 10.10.10.5 255.255.255.0
tunnel-protocol gre
source 50.50.50.50
destination 20.20.20.20
sysname R2
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0 //创建区域0
network 10.10.10.0 0.0.0.255 //把隧道接口的IP地址,宣告进区域0,让R2变成ABR
area 0.0.0.12
network 192.168.12.0 0.0.0.255
area 0.0.0.34
network 20.20.20.0 0.0.0.255 //把loopback接口的IP地址,宣告进区域34
network 192.168.23.0 0.0.0.255
sysname R5
#
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 10.10.10.0 0.0.0.255
network 192.168.56.0 0.0.0.255
area 0.0.0.34
network 50.50.50.0 0.0.0.255
network 192.168.45.0 0.0.0.255
注:这种是最好的,最常用的
ospf选路
进入接口视图 输入命令:ospf cost 5 (默认是1),利用自己设置开销值,让流量按照我们自己规划的方向走
这里还扩展一个小知识:ospf type1 和ospf type 2
type 1 :计算内部开销值+外部开开销值
type 2 :只计算外部的开销值
为什么可以在接口上选路,为什么还要设置type 1 和 type 2 ?
当出现两个出口设备的时候,就要设置type1,因为出去和回来的路径不对称就会导致 外网无法访问内网这个需求满足不了(当然不需要这个服务,就当了解)
ospf的配置错误的排错思路
ospf的邻居关系建立不成功的可能的原因
1.路由器id相同
2.区域id不同
3.认证类型不同,不能ping通
(一端是接口认证,一端是区域认证)
( 一端认证是md5 一端是simple)
4.认证数据不同(密码不同 )
5.hellointerval配置不同
6.routerdeadinterval配置不同
7.接口mtu不同
8.帧中继map映射缺少broadcast关键字