OSPF——开放式最短路径优先协议
是一种LS链路状态型路由协议,无类别路由协议,协议号:89,OSPF不是封装在TCP和UDP中,所以没有端口号,适用于中大型网络 --- 因为存在结构化部署(区域划分)
算法——SPF算法
最短路径优先算法,SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树
OSPF的三个版本
OSPFv1(夭折在实验室)
OSPFv2 --- IP v4
OSPFv3 --- IP v6
OSPF的基本知识
周期更新:30min
触发更新
选路规则——cost=metric值=参考带宽/接口带宽 参考带宽:20000
默认为100M
整段路径的cost值**之和**最小为最佳路径
优先级为10
** 修改参考带宽**
[r1]ospf 1
[r1]bamwidth-reference 1000
OSPF必须结构化部署——区域划分、地址划分
区域划分的主要目的:区域之间传递的是路由信息,区域内部传递的是拓扑
ABR --- 边界路由器,同时属于多个区域,并且一个接口属于一个区域,有的接口属于区域0.
区域间可以存在多个ABR,一个ABR也可以存在多个区域
区域划分的要求
1.必须满足星型topo结构,也就是说必须存在骨干0区域——中心站点
为了方便对每个区域进行管理,我们给OSPF的每个区域设定一个区域ID,称为area id --- 由32位二进制组成 --- 骨干区域的区域ID必须是0
2.必须存在ABR(区域边界路由器)
如果一个网络规模较小,不需要进行区域划分,这样的OSPF网络我们称为单区域OSPF网络,(在华为官方文档中要求,如果是单区域OSPF网络,则必须设置为区域0);如果一个网络存在多个OSPF区域,则将被称为多区域OSPF网络
OSPF的版本 V2 V3
组播更新:224.0.0.5/6 --- 0.6是相当于给DR发
五个数据包
Hello包
** **发现 建立保活邻居/邻接关系 hello time默认是10s/30s -- 在BMA中默认10s
hello包发送周期10s(30s),死亡时间是hello时间的4倍,为了区分OSPF中的每一台路由器,我们引入了RID
RID的特性
1、全网(OSPF)唯一
2、格式统一,RID要求按照IP地址的格式来进行标定(由32位二进制组成,用点分十进制组成)
RID的生成方法:
1、手工配置 --- 仅满足以上两点就好
2、自动生成 --- 如果路由器中存在环回接口,则将取环回接口的IP地址中最大的作为RID;如果,路由器上不存在环回接口,则将在路由器的物理接口中取最大的IP地址作为RID(不考虑接口的UP/DOWN状态)
DBD包
** 数据库描述包 --- 携带是路径信息的摘要 --- 相当于是本地存放LSA数据库(LSDB -- 链路状态数据库)的目录**
因为OSPF的更新量太大,两个路由器刚开始发送hello建立邻居后,不是直接发送自身拓扑(拓扑保存在数据库里),太大(有可能有重复),而是将拓扑做成一个目录给对方,让对方先看看,哪些你有,哪些你没有)
LSR包
链路状态请求包 --- 根据DBD包和本地LSA的比对的比对请求未知的LSA信息
LSU包
链路状态更新包,携带各种LSA
LSack包
链路状态确认包
OSPF的DBD包的知识盲点
1、DBD包中携带MTU值(最大传输单元),要求MTU值必须相同,否则将卡在exstart或exchange状态;
默认华为未开启MTU检测,开着就是1500B
** 开启MTU检测的配置:**
[R]interface g 0/0/1
[R-g0/0/1]ospf mtu-enable
2、隐形确认 - - 不使用确认包,而是从设备复制主设备的序列号来确认收到了主设备的DBD
3、OSPF标识位 I M MS
I 为1本地发出的第一个DBD包
M 为0,表示本地发出的最后一个DBD包;
MS为1代表主,0代表从;
七个状态机
down——协议刚启动,一旦本地发出hello包将进入下一个状态
init——两边都发出hello包进入init状态,若收到的hello包中存在自己的router-id将进入下一个状态
2-way——双向通讯状态 --- 邻居关系建立的标志之后将进行条件匹配,匹配成功将进入下一个状态,匹配不成功继续保持邻居关系
exstart——预启动状态,使用类似hello的DBD进行主从关系的选举,再选举DR/BDR,非DR/BDR将无法进入下一个状态
exchange——准交换状态,使用真正的DBD包进行数据库目录的共享,需要ACK的确认
loading——加载状态,使用LSR/LSU/LSack来获取未知的LSA信息
full——转发,邻接状态建立的标志
OSPF的工作过程
启动协议后,本地基于**224.0.0.5**组播发送hello包,若收到邻居的hello包**有自己的RID****信息**,则建立邻居关系,生成邻居表;邻居关系建立起后,用DBD包进行**条件匹配**——(建立起邻接关系的条件),条件匹配失败,则停留于邻居关系,仅hello包周期保活即可;若匹配成功,则建立邻接关系,首先用**类似****HELLO****包**的DBD包进行**主从关系选举;**之后邻接关系将使用DBD、LSR、LSU、LSack来获取未知的LSA,当收集齐所有的LSA后,**本地生成LSDB——链路状态数据库表**,再本地基于LSDB计算到达所有未知网段的最佳路径;生成路由表、收敛完成,之后每隔10s/30s发生hello包进行**周期保活**
** 主从关系选举**
通过比较RID,RID大的优先进入下一个状态,减少链路压力
** 条件匹配**
条件匹配:点到点网络将会直接匹配成功,MA网络将进行DR/BDR的选举,非DR/BDR间将无法进入下一个状态(exstart)
指定路由器 -- DR -- 和MA网络中其他所有设备建立邻接关系
备份指定路由器 -- BDR --- 和MA网络中其他所有设备建立邻接关系
在DR和BDR都存在的情况下一个MA网络**至少需要四台设备**才能看到邻居关系。
DR和BDR虽然都叫做指定路由器(备份指定路由器),但其工作范围在一个MA网络之中,所以,其**实质是接口**的概念。
** 条件匹配目的**
在MA网络中,若所有设备均为邻接关系,则将出现大量的重复更新,所以,需要进行DR/BDR的选举,所有DRother之间仅维持邻居关系即可。
** DR/BDR选举**
DR/BDR选举的目的:消除重复更新量,**点到点网络**中直接建立邻接关系
**在MA网络中**,为了避免大量的重复LSA更新——因为OSPF需要邻接间进行DBD对比,故没有接口水平分割机制;故必须进行DR/BDR选举,非DR/BDR间仅建立邻居关系,选举需要40秒,而且在每一个MA网络中均需要进行一次选举;除DRother间建立邻居关系,其他均为邻接关系
DR/BDR选举规则:
1.比较接口优先级,接口的优先级默认为1;若优先级为0,将放弃选举
2.优先级相同,比较router-id,数字大者为主
选举特点——非抢占性选举
选举时间 == 死亡时间
查看谁是DR
[r]display ospf peer
修改参选接口的优先级
[r-g0/0/1]ospf dr - priority 2
切记:DR选举非抢占,故在修改优先级后,必须重启参选设备ospf进程来重新选举
reset ospf 1 process
OSPF的报文
OSPF的报文头部
Autype -- 认证类型
Null -- 空认证 -- 0
Simple -- 明文认证 -- 1
Md5 -- 比对摘要值认证 -- 2
OSPF在认证时,需要先比对认证类型,认证类型相同才对比认证数据
Hello报文
Network -- 子网掩码 -- 华为设备设定邻居建立双方要求子网掩码必须相同,否则将无法建立邻居关系(对****P2P网络不生效)
hello时间和死亡时间 -- 邻居双方hello时间和死亡时间必须相同,否则将导致邻居关系建立失败
路由器优先级 -- 发出该数据包的接口其DR/BDR选举时的优先级。
指定路由器和备份指定路由-- 携带的是DR/BDR接口的IP****地址;在DR/BDR没有选出来之前,使用0.0.0.0来进行填充。邻居 --- 本地已知的邻居的RID。
通过查看Hello报文option字段中E的置位,判断该区域是否支持外部LSA,可以判断该区域是否为stub区域
Hello包中限制邻居关系建立的参数
- 子网掩码
- hello时间
- dead时间
- ospf特殊区域的标记
- 认证
OPTION 字段
option可选字段出现在每一个hello数据吧,DD和每个LSA中
option字段允许路由器和其他路由器进行一些可选性能的通信。
DD报文:
1、使用未携带数据的DBD包进行主从关系选举
2、使用携带数据的DBD包进行目录信息共享
1、DBD包中携带MTU值(最大传输单元),要求MTU值必须相同,否则将卡在exstart或exchange状态;
**默认华为未开启MTU检测,开着就是1500B**
开启MTU检测的配置:
[R]interface g 0/0/1
[R-g0/0/1]ospf mtu-enable
2、隐形确认 - - 不使用确认包,而是从设备复制主设备的序列号来确认收到了主设备的DBD
3、OSPF标识位 I M MS
I 为1本地发出的第一个DBD包
M 为0,表示本地发出的最后一个DBD包;
MS为1代表主,0代表从;
4、序列号 -- 在DBD报文收发工程中,会逐次加1,用于确保DBD报文传输的有序性以及可靠性。
LSR包 --- 链路状态请求报文 --- 基于DBD包请求本地未知LSA信息
链路状态类型,链路状态ID,通告路由器 --- “LSA三元组” --- 通过三个参数可以唯一的标识出一条LSA。
LSU包 --- 链路状态更新报文 --- 真正携带LSA信息的数据包
LSACK --- 链路状态确认报文
OSPF的收敛过程
OSPF的收敛被称为LSA洪泛,也称为LSDB同步;
OSPF接口网络类型,OSPF协议在不同的网络类型接口下,其不同的工作方式
接口网络类型
OSPF接口网络类型(ospf工作方式)
LoopBack 0.
Cisco – LoopBack 没有hello包 以32位主机路由发送 华为—显示为p2p类型 实际为LoopBack工作方式
点到点(串线HDLC/PPP/GRE)
p2p. hello time10s 自动建邻 不选DR/BDR
BMA/以太网
Broadcast hello time 10s 自动建邻 选DR/BDR
NBMA/帧中继
nbma hello time 30s 手工建立邻居 选DR/BDR
MGRE
p2mp. hello time10s 自动建邻 不选DR/BDR –在一个网段中只能存在一个邻居;华为设备在一个MGRE网段,接口为点到点工作方式时,仅和最先收到hello的设备建立邻居关系;Cisco在这种情况将出现邻居的翻滚;
查看ospf的接口网络类型
[R1]display ospf interface GigabitEthernet 0/0/0
** 注:在MGRE环境中,接口默认的ospf工作方式为点到点,这种方式无法实现该NBMA网段的邻居全连;故只能去修改接口的工作方式:**
修改MGRE网段所有接口为Broadcast工作方式,切记若一部分接口修改为Broadcast,另一部分接口依然保持为点到点,由于hello time相同可以建立邻居关系,**但工作机制在DR/BDR选举处不同,故最终该网段无法正常收敛;**
修改接口类型方法
[R1]int t0/0/0
[R1-Tunnel0/0/0]ospf network-type broadcast
修改时注意事项
【1】 同时,必须关注网络拓扑结构;若该网段为全连网状结构,那么DR选举将正常进行;但若为部分网状或中心到站点拓扑,将可能出现DR位置错误问题;
【2】 若网络拓扑只能为部分网状或中心到站点,需要人为手工干预DR位置
或者将所有接口的工作方式修改为点到多点工作方式;
在MGRE的环境中,还有一种全连网状拓扑 --- mesh,就是所有边界设备即当中心,也做分支,这样搭建出来的MGRE环境是一种类似BMA的网络环境。
[r1-ospf-1]peer 12.0.0.2 --- 单播邻居,在NBMA环境下可以手工指定邻居关系。
Attmpt --- 尝试状态 --- 过渡状态 --- 本端手工指定邻居后将从down到达尝试状态,之后,等对端手工指定后将进入下一个状态。
down到达尝试状态,之后,等对端手工指定后将进入下一个状态。
Ospf的点到多点工作方式:只能手工配置,适用于部分网状结构拓扑;
Hello time30s,不选DR/BDR,自动建立邻居关系;
华为设备将tunnel接口的传输速率定义为64kbps --- 华为设备这样设计主要目的是为了让隧道接口的开销值变大,使数据尽可能的避免从隧道接口发出,因为走隧道接口的数据,真实还是从物理接口发出,但是会增加复杂的封装和解封装的过程,加大资源的浪费。
OSPF的不规则区域
一台ABR设备若没有连接到骨干区域0,那么默认不能进行区域间路由的共享
1、远离了骨干的非骨干区域
2、不连续骨干
解决方案:
1)在合法与非法ABR上建立tunnel,然后将其宣告到ospf协议中
缺点:
1、周期更新、保活、触发更新对中间穿越区域产生资源占用
2、选路不佳 -- 当ospf学习到两条相同目标,但不同区域同时过来时,优选骨干区域;
2)虚链路 -- 在合法与非法ABR上建立虚链路,由合法ABR为非法ABR进行授权;使得非法ABR可以进行区域间路由的共享;因为并没有增添新的路径,故不存在选路不佳的问题 -- 双向配置
** 配置方法**
[r2-ospf-1]area 1 两台ABR共同所在的区域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR的RID
** Cisco为了避免周期信息对中间区域的占用,取消虚链路上的所有周期行为; --- 不可靠**
华为在虚链路上依旧保持周期的保活、更新 ---- 对中间资源的占用 -- 以单播的形式
虚链路只能穿越一个区域,虚链路永远属于区域零
Display ospf v link -- 查看虚链路的邻居关系
3)多进程双向重发布(推荐)
多进程 --- 同一台设备上,不同的进程可以工作在不同的接口上,建立各自的邻居关系,生成各自的数据库(不共享);仅将各自计算所得的路由加载于同一张路由表内;一个接口只能被一个进程来宣告;双向重发布,ASBR(自治系统边界路由器、协议边界路由器),讲不同进程或不同协议产生的路由进行双向共享;
** 配置方法**
[r2]ospf 1
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1
OSPF的各种LSA --- 数据库表
LSA——链路状态通告——包含了拓扑和路由的信息
LSA格式:
除了hello报文外,其他的ospf报文都携带LSA信息
类别名 Link-id(在目录中的编号)
所有的类别的LSA,均携带以下信息
Type :Router
类别名 此处为1类
Ls id :1.1.1.1
link-id 在目录中的编号
Adv rtr :1.1.1.1
通告者 --- 该LSA的更新源设备的RID
Ls age :1359
老化时间 1800s周期更新刷新为0 触发更新归0 最大3600s
Len :48
LSA的总长度
Options :E
标识发送此报文的OSPF路由器所支持的可选功能
seq# :8000000c
序列号:越大代表LSA最新,每产生一条,seq+1
chksum :0*818c
校验码:用于校验LSA的内容来确定该LSA是否最
** OSPF的LSA是1800会更新一次,每更新一次序列号会加一**
什么情况下LSA会更新
1、1800s到期会周期更新
2、触发更新(接口地址变化(增加、删除),修改接口开销值,删除接口或者删除通告)
LSA的空间
在链路状态路由协议中,为了保证每个LSA都能够被网络中所有的路由器收到,LSA需要被泛洪至各个角落。出于节约网络资源和保证网络稳定的目的,LSA中需要有序列号字段,以实现路由器只接收拥有更高序列号的LSA而丢弃其他LSA。
那么序列号的值到达了上限,该怎么办呢?这个问题有以下几种解决办法:
线性序列号空间
一个简单粗暴的解决办法就是让序列号的上限变得非常非常大,以至于几乎不可能被用完,例如IS-IS使用的就是32位现行序列号空间。
循环序列号空间
顾名思义,在循环序列号空间中,数字是被循环使用的,即当序列号到达最大值后,紧接着的序列号是0。
可是假如在一个网络中,序列号已经超过了最大值的二分之一后,某台路由器重启后,它的序列号当然是最小的,却有可能被邻居认为是最大的(已经完成了一个循环)。因此,当且仅当序列号A和B满足以下任意条件时,A>B(n为序列号空间):
A大于B且(A-B)≤n/2
A小于B且(B-A)>n/2
例如,在一个6位的循环序列号空间中,n=64。两个序列号分别为35和1,由于35>1,35-1=34,64/2=32。因为34大于32,所以认为1比35新。
可是循环序列号空间也不是完美的。如果在一个6位循环序列号空间中,出现了三种不同的序列号:8、40和44。根据上面的条件,判断结果是8比44新,44比40新,而40又比8新,这就会导致网络因LSA数据库不断更新,CPU超载而崩溃。当然在32位的循环序列号空间中可以极大地避免这种情况。
棒棒糖形序列号空间
棒棒糖形序列号空间是线性以及循环序列号空间的合体版,使用有符号数,即-k<0<k它由一个圆形和一条直线组成,因为示意图看起来酷似棒棒糖而得名。
在该序列号空间中,某台路由器重启后,它的序列号会从最小的那个负数开始,并依次增大,直到邻居将自己保留的序列号告诉它为止。在收到邻居发来的LSA后,该路由器会进入循环部分。也就是说,在路由器重启后、收到邻居LSA前,使用的是构成棒棒糖棒棒部分的负数序列号;当它清醒(作出序列号调整)之后,进入构成棒棒糖的糖部分,即由0和正数构成的循环序列号空间(清醒的路由器也都在这个空间内)。
当且仅当序列号A和B满足以下任意条件时,B比A新(n为序列号空间):
A<0且A<B
A>0,A<B且(B-A)<n/2
A>0,B>0,A>B且(A-B)>n/2
** OSPFv2使用的棒棒糖形序列号空间更为成熟。**
查看LSA信息
[r1]display ospflsdb router
类别名 传播范围 产生者 携带的信息
1类LSA-router 本区域内 本区域内的每台路由器 该区域每台设备的直连拓扑
2类LSA-Network 本区域内 - 终止于ABR 该网段的DR 该网段的拓扑
3类LSA-summary 单个OSPF域 ABR O IA 域间路由
4类LSA-asbr 除ASBR所在区域外的整个OSPF域 ABR ASBR的位置
;ABSR所在区域使用
四类的LSA实际上就是为五类服务的
5类LSA-ase 整个OSPF ASBR O E 域外路由
7类LSA-nssa 单个的NSSA区域内 ASBR O N 域外路由
6类LSA详解
Type-1:路由器LSA(Router LSA)
作用:描述路由器自身的直连链路信息(接口的地址、接口类型、接口开销打包成1类LSA通告给邻居)
产生者:每一台运行OSPF的路由器都会产生该LSA,每台设备只会发送一次
Link State ID:产生该LSA的路由器的Router-id(描述谁的信息)
ADV Router(始发路由器)(产生该种LSA的路由器):产生该LSA的路由器的Router-id(谁产生的信息)
洪范范围:仅在其产生的区域内传播,不能离开产生区域。
Router-LSA中有三个flag位
- V(virtual link):置1标识本地配置了vlink,为0标识不存在
- E(ASBR):置1标识本地是ASBR,为0不是ASBR
- B(ABR):置1标识本地是ABR,为0不是ABR
Type-2:网络LSA(Network LSA)( 有DR和BDR的路由选举)
作用:描述多点可达环境中的路由器,以及掩码网段信息(描述广播网段上的路由器的router-id)
产生者:该网段的DR
Link State ID:DR的接口IP
ADV Router:产生该LSA的DR的Router-id
洪范范围:产生该LSA的一个区域内,不能离开产生区域。
注意:Broadcast,(在收集信息的时候掩码没有包含子在内。)、NBMA网络才有二类(有DR和BDR选举的),P2P没有二类LSA,DR产生Lsa
二类是辅助一类的
Type-3:网络汇总LSA(Summary LSA)(sum-net)
作用:描述区域间的路由信息,将所连路由器的链路信息以子网的形式传播到相邻区域。
产生者:ABR
Link State ID:区域间传递路由的网络号,区域间的网络号。
ADV Router:产生或转发该LSA的ABR的Router-id
洪范范围:区域内洪范,ABR在区域间转发时会重新生成(将ARV Router改为自己)
※ 注意:正因为3类LSA描述的是路由信息,而非链路状态信息,因此,OSPF区域间是类似于距离矢量的工作原理!!!
因此,OSPF规定所有的非0区域必须直接和区域0相连,目的是为了在区域间防止环路!!!!
开销值:通告者到达目标网段的开销值
Type-4:ASBR总汇LSA(ASBR summary LSA)(Sum-Asbr)
作用:告诉其他路由器ASBR的位置,辅助5类LSA完成验算过程,里面只携带一个开销值,指的是通告者到ASBR的开销
产生者:ABR
Link State ID:ASBR的Router-id
ADV Router:产生或转发该LSA的ABR的Router-id
洪范范围:区域内洪范,ABR在区域间转发时做相应修改(ARV Router/COST),ABR在区域间转发时需要把通告路由器该为自己,cost也会被修改
开销值:通告者到达asbr的开销值
V -- 置1,则代表路由器是一个VLINK的一个端点
E -- 置1,则代表路由器是ABSR设备
B -- 置1,则代表路由器是区域边界设备ABR
Type-5:AS外部LSA(AS External LSA)(External)
作用:描述AS外部路由信息(被引入的路由信息)
产生者:ASBR
Link State ID:AS外部路由信息的网络号,就是那个引入的外部路由的网络号
ADV Router:ASBR的Router-id
洪范范围:整个OSPF路由域(特殊区域除外)
Type 1外部路由:5类LSA的cost=外部开销+内部的cost - 5类lsa的开销+本设备到达ASBR的开销
如果开销值类型为类型1,则所有域内设备到达域外目标网段的开销值为**种子度量值+本地到达通告者的开销值**
Type 2外部路由:5类LSA的cost=外部开销的值(缺省为1)(缺省情况下使用type 2的开销计算方式)
如果开销值类型为类型2,则所有域内设备到达域外目标网段的开销值为**种子度量值**
更改开销类型
Import - route rip 1 type 1
更改开销值
Import -route rip 1 cost 10 --修改后的度量值叫做种子度量值
二者可以同时更改
Metric(cost) -- 五类LSA携带的通过重发布导入进来的域外路由信息,因为不同网络对度量值的评判标准不同,所以,当域外路由导入到本网络中,我们将放弃其原先的开销值,而赋予他一个新的定义值 --- seed-metric --- 种子度量值。ospf中默认的种子度量值为1.
Forwarding address --- 转发地址 -- 一个重定向地址,类似于RIPV2中的下一跳字段,当出现选路不佳的情况,则会把最佳选路信息携带在这个字段上,则按照转发地址寻找下一跳,而不按照算法寻找通告者。5类LSA中,在不存在选路不佳的情况下,将使用0.0.0.0来填充
Tag --- 路由标记 --- 可以给5类LSA打标记,方便后面通过标记来抓取流量
[r4-ospf-1]import-route rip 1 tag ?
integre<0 - 4294967295> tag value
Type-7:NSSA AS外部LSA(AS External LSA)(NAAS自制系统外部LSA)
作用:描述NSSA区域引入的ospf外部路由信息(被引入的路由信息)
始发者:NSSA区域的ASBR
洪泛的范围:只在NSSA区域内。(特殊区域除外)。
Link State ID:外部路由器的网络号
ADV Router:始发该lsa的NSSA区域的ASBR的route-id
当ABR执行7类转5类后,ABR也会把ADR router也会转变为Route-id,(就相当于其他路由器把7转5的路由的看做了ASBR)
实际上OSPF 协议在当今的网络中广为流行,不是因为她使用了无环路的链路状态算法,而是因为她提出了区域的概念!
STUB区域
STUB区域就是一个对区域概念的最典型的应用。STUB区域的设计思想在于:在划分了区域之后,非骨干区域中的路由器对于区域外的路由,**一定要通过ABR(区域边界路由器)来转发**,或者说对于区域内的路由器来说ABR是一个通往外部世界的必经之路。既然如此,对于区域内的路由器来说,就没有必要知道通往外部世界的详细的路由了,代之以由ABR向该区域发布一条缺省路由来指导报文的发送。这样在区域内的路由器中就只有为数不多的区域内路由和一条指向ABR的缺省路由。而且无论区域外的路由如何变化,都不会影响到区域内路由器的路由表。由于区域内的路由器通常是由一些处理能力有限的低端路由器组成,所以处于STUB区域内的这些低端设备既不需要保存庞大的路由表,也不需要经常性的进行路由计算。有了STUB属性之后,网络的规划更符合实际的设备特点。
以上描述的只是STUB区域的**设计思想**,在协议文本中,对STUB区域的精确定义是:STUB区域一定是非骨干区域和非转换区域(可以配置虚连接的区域),并且在该区域中不可传递Type 5类型的LSA。 因为协议的设计者认为路由表中的绝大部分路由均是来自自治系统外部的引入的路由。(由于OSPF是链路状态算法的路由协议,LSA就是用来描述网络拓扑结构的一种数据结构。在OSPF 中将LSA分为5类:type1、2两种用来描述区域内的路由信息;type3用来描述区域间的路由信息;type4、5用来描述自治系统外部的路由信息。)OSPF链路状态公布LSA类型5定义了到达外部网络的路由,它并不洪泛到STUB区域。连接到STUB区域的ABR为外部网络发送一个缺省路由(0.0.0.0)到STUB区域。这允许STUB区域内部的某个路由器将报文转发到一个目的网络,而该网络并没有出现在stub区域路由器的路由表中。对于那些在自己的路由表中没有找到的网络报文,stub区域路由器将其转发到ABR路由器,而该ABR路由器已发送0.0.0.0 LSA
需要注意的是定义中对于过滤TYPE5类型的LSA使用的描述语言是“不可传递”,这就意味着不仅区域外的ASE(自治系统外部)路由无法传递到STUB区域中,同时STUB区域内部的ASE路由也无法传递到本区域之外。换一句更通俗的话来描述:STUB区域内的路由器都不可引入任何外部的路由(包括静态路由)。
这样的定义未免太过严厉了。因为在实际的组网中,并不是所有的设备都会运行OSPF协议。例如:用户拨号上网时使用的接入服务器就需要连接路由器上因特网,但通常接入服务器上并不支持(也不需要)OSPF协议,而是通过配置静态路由实现路由功能。很多时候ISP为了保密或易于管理的需要,在连接用户侧的路由器时使用静态路由。总之:在一个网络中所有的路由器上都配置OSPF,而不使用静态路由的情况几乎是不存在的。——也就是说STUB区域的适用条件也是不存在的。
NSSA区域
STUB区域虽然为合理的规划网络描绘了美好的前景,但她在实际的组网中又不具备可操作性,未免遗憾。但此时的OSPF协议已经基本成型,不可能再做大的修改。为了弥补缺陷,协议设计者提出了一种新的概念NSSA,并且作为OSPF协议的一种扩展属性单独在RFC 1587中描述。
NSSA需要完成如下任务:
自治系统外的ASE路由不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE路由可以在NSSA中传播并发送到区域之外。即:取消了STUB关于ASE的双向传播的限制(区域外的进不来,区域里的也出不去),改为单向限制(区域外的进不来,区域里的能出去)。
由于是作为OSPF标准协议的一种扩展属性,应尽量减少与不支持该属性的路由器协调工作时的冲突和兼容性问题。
为了解决ASE单向传递的问题,NSSA中重新定义了一种LSA——Type 7类型的LSA,作为区域内的路由器引入外部路由时使用,该类型的LSA除了类型标识与Type 5不相同之外,其它内容基本一样。这样区域内的路由器就可以通过LSA的类型来判断是否该路由来自本区域内。但由于Type 7类的LSA是新定义的,对于不支持NSSA属性的路由器无法识别,所以协议规定:在NSSA的ABR上将NSSA内部产生的Type 7类型的LSA转化为Type 5类型的LSA在发布出去,并同时更改LSA的发布者为ABR自己。这样NSSA区域外的路由器就可以完全不用支持该属性。
由于NSSA是由STUB区域的概念改进得来,所以她的名字叫做: "not-so-stubby" area ,本意是:不是那么STUB的区域。
NSSA对LSA的影响:
1:类型7LSA在一个NSSA区域内携带外部信息。
2:类型7LSA在NSSA的ABR上被转化为5lsa。
3:不允许外部LSA.
4:汇总LSA被引入。
相关配置
NSSA的原理不复杂,配置更简单,相关命令只有一条:
[Router-ospf]
area area-id nssa [ default-route-advertise ] [ no-import-route ] [ no-summary ]
area-id:是需要配置成NSSA的区域的区域号。“[]”内的参数只有在该路由器是ABR时才会生效。
关键字default-route-advertise用来产生缺省的Type-7 LSA,应用了该参数后,在ABR上无论路由器中是否存在缺省路由0.0.0.0,都会产生Type-7 LSA缺省路由;而在ASBR上当路由表中存在缺省路由0.0.0.0,才会产生Type-7 LSA缺省路由。
关键字no-import-route用在ASBR上,使得OSPF通过import-route命令引入的路由不被通告到NSSA区域。如果NSSA的路由器既是ASBR也是ABR,一般选用该参数选项。
为了进一步减少发送到NSSA区域中的链路状态发布(LSA)的数量,可以在ABR上配置no-summary属性,禁止ABR向NSSA区域内发送summary_net LSAs(Type-3 LSA)。配置该参数后,ABR会将Type3类型的LSA也过滤掉,即:NSSA区域中也不会出现区域间路由,路由表进一步精简。既然有缺省路由,那么其他指向区域外的具体路由都是没有必要的了。该参数推荐配置。
** 即:如果路由器只是一台区域内路由器,只需配置area area-id nssa即可。如果是ABR,根据实际需要,选择添加三个可选参数。**
不同类型LSA中Link State id字段的作用
路由器如何识别两个LSA是同一个
1.看LSA类型
- Link start id
- Advertising router
以上参数唯一标识一条LSA
LSA的新旧比较:
1、会先比较序列号,序列号越大越优
2、如果序列号相同,会比较校验值(checksum)越大越优
3、如果校验值也相同,会比较LSA Age时间,是否等于MAX-age时间(3600s)
4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大于15分钟(900s),小的优
5、如果age时间不等于max-age时间,会比较他们的差值,如果差值小于15分钟,说明是同一条LSA,忽略其中一条
OSPF的LSA优化 --- 减少LSA更新量
1、汇总 - 减少骨干区域的LSA数量 -- 前提要求网络存在合理的地址规划
2、特殊区域 - 减少各个非骨干区域的LSA数量
1)汇总
域间路由汇总 - ABR将本地直连的A区域1/2类LSA计算所得路由,再通过3类LSA共享到其他本地所直连的B区域时
** 配置方法**
[r1]ospf 1
[r1-ospf-1]area 1 明确路由所在区域
[r1-ospf-1-area-0.0.0.1]abr-summary 3.3.2.0 255.255.254.0
域外路由汇总 - 在ASBR上操作,将5/7类LSA向OSPF发布时进行汇总
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]asbr-summary 99.1.0.0 255.255.252.0
汇总网段开销值为所有明细路由最大的开销值+1 -- 类型二
汇总网段开销值为所有明细路由最大的开销值 -- 类型一
注意:切记华为设备默认设备不会在进行汇总配置的设备上自动生成空接口防环路由
2)特殊区域 不能是骨干区域,不能存在虚链路
1)末梢区域(路由器的边界) - 该区域拒绝4/5类的LSA进入;由该区域连接骨干区域的ABR设备,向该区域内发送一条3类的缺省路由 - 同时不存在ASBR
** 配置方法**
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.10]stub
** 注:该区域内所有设备均需要被定义,否则无法建立邻居关系**
2)完全末梢区域 -- totally stub ,在末梢区域的基础上进一步拒绝3类的LSA;仅保留一条3类的缺省路由;先将该区域配置为末梢区域,然后尽在ABR上定义完全末梢即可
** 配置方法**
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]stub no-summary
同时存在ASBR
1)NSSA非完全末梢区域 - 拒绝本区域内部产生4/5类LSA,本区域ASBR产生的5类将通过7类LSA传输,**到达ABR处进入骨干区域时,由7类转换为5类;** 在cisco设备中为了避免环路的出现,OSPF协议在NSSA区域配置完成后,不会自动产生缺省路由;而是由管理员在设备网络无环的前提下,手工添加;
** 在华为的设备中让该区域连接骨干区域0的ABR自动发下一7类缺省;**
[r1]ospf 1 [r1-ospf-1]area 1 [r1-ospf-1-area-0.0.0.1]nssa
** 注:该区域内所有设备均需要定义,否则无法建立邻居关系**
2)完全NSSA - 完全的非完全末梢区域;在普通NSSA的基础上,进一步拒绝3类的LSA,由ABR产生一条3类缺省
** 先将该区域配置为普通的NSSA,然后仅在ABR上定义完全NSSA即可**
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]nssa no-summary
** 特别注意:由于特别区域将自动产生缺省路由,指向骨干;故ISP所连接的位置很关键,否则将可能与特殊区域产生的缺省路由互为环路;要求ISP所在位置的OSPF区域不要做任何特殊区域配置**
OSPF的基本配置过程
1、启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]
2、创建区域
[r1-ospf-1]area 0
3、宣告 --- 激活接口;发布路由
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.255.255.255
**反掩码宣告:反掩码(由连续的0和1组成,0所对应位不变,1对应位可变)**
OSPF的扩展配置
1、认证 --- 接口认证
[r3]interface GigabitEthernet 0/0/1 在直连邻居的接口上配置即可
[r3-GigabitEthernet 0/0/1]ospf authentication-mode md5 1 cisco123 密文认证,key 编号1,密码为cisco123,密码直接以MD5值传递;
** 区域认证——区域认证,区域内****所有路由器****都需要认证,保证区域内连接安全**
[r1]ospf 1
[r1]area 1
[r1]intface g0/0/0
[r1-g0/0/0]authentication-mode simple cipher huawei
2、静默接口 - 只接受不发送路由协议的信息,其他信息正常通过;华为称为静默接口;只能配置于连接用户的接口,不得用于连接OSPF邻居的接口,在OSPF中,静默接口将针对单播和组播包生效
[r1]ospf 1
[r1-ospf-1]silent-interface GigabitEtherent 0/0/0
3、修改计时器 - OSPF的hello time为10s或30s;dead time为hello的4倍;将计时器的时间修改小
可以加快收敛速度,但将增加对网络资源的占用;故修改时间不宜过小,还要维持原有的倍数关系
[r3]interface GigabitEthernet 0/0/1
[r3-interface GigabitEthernet 0/0/1]ospf timer hello 5
**修改本端的dead time自动四倍,直连邻居间的hello 和dead time时间必须完全一致,否则无法建立邻居关系**
** Waiting time --- 等待计时器 **-- DR和BDR选举时的选举时间,时间长短等同于死亡时间,死亡时间一旦修改,等待时间会同步变更
** Poll -- 轮询时间** --- 120s --- 与状态为down的邻居关系发送hello包的间隔时间。在NBMA网络环境下,如果一方指定了邻居关系,则会将邻居的状态改为过渡状态,期间会按照默认30s一次发送hello包,但是,如果对方一直没有指定,经过一个等待时间(120s等同于死亡时间),将会将邻居的状态置为down状态。之后,按照120s的间隔发送hello包。
[r5 -GigabitEthernet0/0/0]ospf timer poll ?
INTEGRE<1-3600> Second(s)
** Retransmit --- 重传时间** --- 默认为5s --- 发送信息需要进行确认,如果重传时间内没有收到对方的确认,则将重传。
[r5-GIgabitEnthernet0/0/0]ospf timer retransmit ?
INTEGRE<1-3600> Second(s)
**Transmit delay --- 传输延时** -- 1s --- 这个时间是附加在LSA老化时间上的,因为LSA在传输过程中,时间不会发生变化,所以,需要通过这个时间来补偿传输过程中消耗的时间。
[r5 -GigabitEthernet0/0/0]ospf trans-delay 2
4、缺省路由 --- 3类的缺省、5类的缺省、7类的缺省
**3类的缺省** 配置特殊区域后将自动生成 -- 末梢、完全末梢、完全NSSA
特点 --- 标记为ospf,优先级为10
**5类的缺省 **本地路由表中通过其他协议或OSPF的其他进程生成了缺省路由条目,前提是之后使用重发布机制架构该条目重发布到OSPF的协议中来;
** 配置方法**
[r4]ospf 1
[r4-ospf-1]default-route-advertise
默认导入路由起始度量为1,类型为2,优先级默认150;
[r4-ospf-1]default-route-advertise type 1 cost 10 修改类型和起始度量
本地路由表中没有缺省条目,也可以让设备强制向内网发送一条5类缺省
[r4-ospf-1]default-route-advertise always 默认类型为2,cost值为1
[r4-ospf-1]default-route-advertise always type 1 cost 10 修改类型和起始度量
** 7类的缺省**:普通的NSSA区域将自动产生7类的LSA,也可在NSSA区域内手动生成7类缺省
** 配置方法**
[r4]ospf 1
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]nssa default-route-advertise 默认类型2,起始cost为1
** 优选顺序:内部产生的缺省优于外部产生的缺省,类型1优于类型2**
5、路由过滤,指的是ospf中针对3类,5类,7类lsa进行过滤
[r1-ospf-1-area-0.0.0.2]abr-summary 192.168.0.0 255.255.252.0 not advertise --- 过滤3类LSA
[r4-ospf-1]asbr-summary 172.16.0.0 255.255.252.0 not-advertise --- 过滤5类/7类LSA
版权归原作者 嗨害嗨 所有, 如有侵权,请联系我们删除。