OSPF基础
OSPFv2和RIPv2对比
相同点
1、两者都是无类别路由协议 --- 传播时携带真实掩码
2、两者的更新方式相同
OSPFv2和RIPv2都使用组播更新方式,各组播地址如下:
RIPv2 --- 224.0.0.9
OSPFv2 --- 224.0.0.5/224.0.0.6
3、两者均支持等开销负载均衡
不同点
RIPv2只能应用在小型网络中
OSPFv2可以应用在中大型网络环境
OSPF区域划分 --- 结构化部署
OSPF域(Domain)
将一系列的OSPF路由器组成的网络称为OSPF域。
区域ID:32bit,例如0.0.0.0
OSPF多区域划分要求:
1、OSPF要求域中所有的非骨干区域(区域ID不为0的区域)都必须与Area0相连。
2、骨干区域不能被分割
OSPF区域结构部署规则的必要性
假定没有“所有骨干区域都必须与骨干区域相连”这条规则 --- “原理骨干的非骨干”
后果:会出环
定义了ABR(区域边界路由器)设备 --- 确保所有人遵循区域划分要求
ABR定义:
1、至少连接两个区域
2、连接的区域中至少有一个是区域0
3、在区域0中至少有一个活跃的邻居
作用:用于传递区域间路由
为了避免区域间的路由形成环路,==非骨干区域之间不允许直接相互发布路由==。
假定没有“骨干区域不能被分割”这条规则 --- 不连续骨干区域
后果:会出环
OSPF规定:==从非骨干区域收到的路由信息,ABR能接收,但不会使用这条路由信息(OSPF水平分割原则)==
总结
OSPF有如下规则:
1、对于伪ABR设备不允许转发区域间路由信息
2、对于真实ABR而言
能够将自己直连的非骨干区域的区域内路由信息传递给骨干区域
能够将自己直连的骨干区域的区域内路由信息传递给非骨干区域
能够将自己从骨干区域学习到的区域间路由信息传递给非骨干区域
OSPF路由器角色
- 内部路由器(IR)
- 所有接口都接入同一个区域的路由器
- 区域边界路由器(ABR)
- 工作在两个OSPF区域之间的路由器
- 骨干路由器(BR)
- 接入Area0的路由器,包括ABR,但不包括ASBR
- ASBR(AS边界路由器)
- 工作在OSPF自治系统边界的路由器
- 并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由引入到OSPF域的设备。
OSPF数据包
Hello
- 用来周期发现、建立、保活OSPF邻居关系,通过组播224.0.0.5发送。
- 10S发送一次来确认邻居的存在
- hold-time --- 4倍hello时间
- Router-ID(RID)
- 全域唯一,标识路由器身份
- 用ip地址形式标识(32bit,点分十进制)
- 配置方法
- 手工配置
- 自动配置
- 默认最大环回IP地址,若没有最大环回则选择最大的物理IP地址(路由器的RID选择)
- [r1]display router id //查看路由器全局ID值
- 注意:
- 启动OSPF进程前,必须要有接口IP地址,若存在IP地址,则第一次启动OSPF进程时,会选取第一个配置的IP地址为RID。
- 但是,若删除第一个配置的IP地址后,则恢复为上述规则。
- 在华为设备中,若没有接口IP地址,则OSPF启动后,RID为0.0.0.0
- 在思科设备中,若没有接口IP地址,则OSPF启动失败。
- 无论采用手工还是自动选择,一旦OSPF进程启动,==RID被确定,则无法变化,必须重启进程才能生效==。
- <huawei>reset ospf process //重启所有OSPF进程
DBD
- 数据库描述报文
- 该报文携带的是路径信息的摘要(为了减少更新量,并不会直接给邻居发送拓扑信息,而是将拓扑信息的目录发送给邻居)
LSR
- 链路状态请求报文
- 基于未知的LSA(链路状态通告)信息进行查询
LSU
- 链路状态更新报文
- 携带真正的LSA信息的数据包
LSAck
- 链路状态确认报文
OSPF七种状态机
- down --- 关闭状态 --- 一旦启动了OSPF协议,则发出hello包,并进入下一状态
- init --- 初始化状态 --- 收到的hello包中,存在自己的RID值,则进入下一状态
- 2-way --- 双向通讯状态 --- ==邻居关系建立的标志==。
条件匹配:匹配成功则进入下一阶段,不成功则停留在2-way
- exstart --- 预启动状态 --- 使用未携带信息的DBD包进行主从关系选举,RID大的为主
- exchange --- 准交换状态 --- 使用携带目录信息的DBD报文进行目录共享
- loading --- 加载状态 --- 邻居间使用LSR/LSU/LSAck三种报文来获取完整的拓扑信息
- full --- 转发状态 --- ==标志邻接关系的建立==。
OSPF条件匹配
- 设备接口名称
- DR --- 指定路由器
- BDR --- 备份路由器
- DRother --- 其他路由器
- OSPF称为邻接关系的条件
- 点到点 --- 不用选举DR和BDR --- 直接开始建立邻接关系(加快收敛的方法)
- MA网络 --- 在一个网络中,不限制节点数(会选举DR和BDR)
- 选举规则
- 接口优先级 --- 0-255 --- 优先级越大,为DR,次一级为BDR(默认为1)
- RID --- 越大越优先
- 选举范围 --- 一个广播进行一次条件匹配
- 角色之间的关系
- DR和DRother --- 邻接关系
- DR和BDR --- 邻接关系
- BDR和DRother --- 邻接关系
- DRother和DRother邻居关系
- 非抢占性选举模式
选举过程
1、DR、BDR的选举是通过Hello报文来实现的,选举过程发生在2-way状态之后
2、路由器将自己的接口的DR优先级填写hello报文中的 “DR优先级” 字段
3、在接口视图下可以修改DR优先级(若DR优先级修改为0,则代表不具备DR和BDR的选举资格)
4、当路由器接口激活OSPF后,首先检查网络上是否已经存在DR设备,如果存在则接收DR角色。若不存在,则拥有最高DR优先级的设备称为DR(RID)
5、BDR的选举过程和DR选举过程相同,但是是在DR选举成功之后。
DR设备使用组播224.0.0.5向该MA网络发送消息。
而DR和BDR使用224.0.0.6监听该MA网络的消息
DRother使用224.0.0.6发送自己的LSU报文
在NBMA网络中,也存在OSPF
在NBMA网络类型下,如果需要启动OSPF协议,需要手工指定邻居,否则不会发送hello报文。
若不发送hello报文,则邻居状态处于down状态。
OSPF第一次收敛的全过程
- 启动OSFP配置完成后,OSPF将向本地所有运行OSPF协议的接口组播224.0.0.5发送hello报文; hello报文中携带有本地的RID以及本地已知的邻居RID;之后生成邻居表。
- 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅hello报文保活
- 匹配成功的邻居将开始建立邻接关系。
- 首先使用未携带数据的DBD报文来进行主从关系选举;之后使用携带数据的DBD报文来共享数据库目录;之后本地使用LSR/LSU/LSACK报文来获取未知的LSA信息;
- 完成本地数据库的建立---生成数据库表。
- 之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路径,并将其添加到路由表中。
- 收敛完成,hello报文周期保活。每30min进行一次周期更新。
结构突变
1.新增网段 --- 直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
2.断开网段 --- 直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
3.无法沟通 --- 到达dead time后,断开邻居关系 --- 4倍的hello时间。
OSPF基础配置
实例:
1、启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1 //进程号仅具备本地意义,手工配置RID方法
2、创建区域
[r1-ospf-1]area 0
3、宣告
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 //精准宣告
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 //宣告网段
宣告使用反掩码形式:
32位二进制,使用点分十进制表示。由连续的0和连续的1组成;并且0代表 不可变;1代表 可变。
华为体系中,OSPF路由的优先级为10;
OSPF的COST = 参考带宽(100Mbps)/ 实际带宽
[r1-ospf-1]bandwidth-reference 1000 //修改参考带宽
如果修改参考带宽则所有设备均需修改
一条OSPF路径的COST等于从目的地到本地路由器沿途的所有设备的 入接口
OSPF报文格式
OSPF报文头部
- 版本(version)
- 对于OSPFv2而言,该字段恒为2
- 类型(Type)
- 描述OSPF数据包的类型
- hello --- 1
- DBD --- 2
- LSR --- 3
- LSU --- 4
- LSACK --- 5
- 报文长度(Packet Length)
- 整个OSPF报文的长度 --- 单位字节
- 路由器ID
- 发出该报文的路由器的RID值
- 区域ID
- 发出该报文的接口所属于的区域的ID值
- 校验和
- 验证OSPF整体数据报文的有效性
- 验证类型
- 指示该报文使用的认证类型
- 不认证 --- 0;简单认证 --- 1;MD5认证 --- 2;
- 认证数据
- 用于报文认证所对比的内容
- 若认证类型为不认证,则该字段全部用0填充。
OSPF的认证功能是存在于所有的数据交互过程中,对于任何一种数据报文,都需要进行认证。
在认证的过程中,需要对比两个字段,首先对比认证类型字段。
若相同,才会对比认证数据字段
Hello包
- ==网络掩码(Network Mask)==
- 该字段填充的是发送该报文的网络掩码
- 两台OSPF路由器如果通过==以太网接口==直连,那么双方的直连接口必须配置相同的网络掩码。(点到点网络不需要对比该参数)
- 注意:OSPF建立邻居关系需要对比子网掩码信息是华为独有,别的厂商没有这个要求。
- ==Hello间隔==
- 两台直连路由器需要确保直连接口的Hello时间间隔相同,否则邻居关系无法建立。
- 缺省情况下,P2P和BMA类型下,为10S;P2MP和NBMA为30S。
- ==可选项(Options)==
- 该字段一共8bit,每个比特位都用于指示该路由器的某个特定的OSPF特性。
- 而OSPF邻居关系建立过程中,该字段中的某些比特位将会被检查,可能影响OSPF邻居关系建立。(特殊区域的标记)
- 路由器优先级
- 【接口视角】ospf dr-priority <0-255> //修改OSPF 接口 的DR优先级
- ==路由器失效时间==
- 两台直连路由器要建立OSPF邻居关系,需要保证双方接口的dead time时间相同,否则邻居关系无法正常建立
- 缺省时间为hello的4倍
- 指定路由器
- 网络中DR设备的接口IP地址。
- 若没有DR或DR没有选举出来,则填充0.0.0.0
- 备份指定路由器
- 网络中BDR设备的接口IP地址。
- 若没有BDR或BDR没有选举出来,则填充0.0.0.0
- 邻居
- 在直连链路上发现的有效邻居,此处填充的是邻居的RID值,如果发现多个邻居,则包含多个邻居字段。
所有224.0.0.X格式的组播地址称为本地链路组播,目的IP地址是本地链路组播的数据包中的TTL值被设定为1。
所有的本地链路组播都会存在对应的组播MAC地址,01-00-5e-后24位(组播IP地址的后24位)。
限制邻居关系建立的参数
网络掩码
在R2上修改网络掩码后,
R2会将与R3的状态立即修改为Down状态。而R3会在40S死亡时间之后进行状态切换。
原因在于,R2在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。
而R3则认为是无法沟通的。故会等待死亡时间超时后才会切换状态。
并且,该情况,在R3等待40S周期内,还是可以向R2转发数据,R2可以接收到数据包,但无法回复。
Hello间隔
[r1-GigabitEthernet0/0/0]ospf timer hello 5
Dead time
[r1-GigabitEthernet0/0/0]ospf timer dead 120
注意:修改hello时间,则死亡时间随之改变,仅修改死亡时间,hello时间不变
OSPF特殊区域标记
跟修改掩码效果一样
认证字段
两者均需要等待死亡时间超时,才会从full状态切换到down状态。
DBD包
使用未携带数据的DBD报文进行主从关系选举
使用携带数据的DBD报文进行目录信息共享
使用未携带数据的DBD报文进行确认
接口最大传输单元(接口的MTU)
华为默认将该值设置为0
华为默认不对MTU值进行检测
[r1-g0/0/0]ospf mtu-enable //开启ospf MTU值检测
如果两边均开启该功能,则会进行MTU检测,并且进行检测时,若两边不同,则状态卡在exstart状态。I位 -- 主从关系选举
如果该位置为1,则不会携带LSA头部M位 -- 代表后续是否有多个DD报文
置为1,则代表后续还有DD报文
置为0,则代表MS位 -- 代表主设备
该比特位置为1,则代表Master
在主从关系选举完成之前,各个设备均会认为自己的masterDD序列号
==用于确保DD报文传输的有序和可靠性==。 -- DD序列号逐次加1.
DD序列号必须是由Master路由器决定,而从设备只能使用Master设备发送来的DD序列号来发送自己的DD报文。(隐形确认机制)LSA头部
当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在内。
一个DD报文可以包含一个或多个LSA头部信息。
LSR包
基于DBD报文请求本地未知LSA信息。
链路状态类型、链路状态ID、通告路由器 --- LSA三原则。通过三个参数唯一标识一条LSA。
LSU包
LSACK包
OSPF的不规则区域
远离骨干的非骨干区域
使用tunnel隧道解决
在R2和R3之间构建一条隧道,之后,将这个隧道宣告到OSPF-Area0,相当于将R3这个非法ABR合法化。
使用VPN隧道解决不规则区域的问题
- 可能产生选路不佳
- 可能造成重复更新
- 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域资源消耗过大。
虚链路--Vlink 解决
专门为了解决OSPF不规则区域所产生的技术,是一种虚拟的
[ospf区域]vlink-peer [邻居] //建立虚链路邻居,需要双向配置
[r1]display ospf vlink //查看vlink表
虚链路的配置条件:==只能穿越一个区域==。
==Vlink被视为骨干区域的一段延伸 --- vlink永远属于Area0==
vlink链路实际上全部使用单播报文来描述信息。
使用vlink解决不规则区域的问题
- 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域资源消耗过大。
- 只能穿越一个区域。
使用多进程双向重发布解决
把一种路由信息以另一种路由协议的方式发布出去。
解决方法:将远离的区域修改为不同的OSPF进程,然后通过重发布导入原来的OSPF进程。
[r3-ospf-1]import-route ospf 2 ---将OSPF进程2的路由导入到OSPF进程1
[r3-ospf-2]import-route ospf 1
使用重发布的问题
- 路由优先级不再是10,而是150
- 开销值为域外路由开销值,不精确。
vlink的应用场景
- vlink可以用来解决不规则区域
- vlink还可以用来修复一些次优路径或者骨干区域不健壮问题。
- vlink还可以用来解决没有骨干区域的场景。
vlink环路问题
场景1:
场景2:
解决方法:OSPF规定,vlink所在区域不允许传递聚合路由。
不同网络接口类型下的OSPF
网络类型 | OSPF接口的工作方式 |
BMA | Broadcast,可以建立多个邻居关系。需要进行DR和BDR的选举。hello 10S;dead 40S |
P2P | P2P,只能建立一个邻居关系。不需要进行DR和BDR的选举,hello 10S;dead 40S |
环回接口(虚拟接口) | P2P,华为设备定义为P2P类型,但实际上该接口无数据收发。环回接口默认学习32位主机路由。hello 10S;dead 40S |
P2MP | P2MP,可以建立多个邻居关系,不需要进行DR和BDR选举;hello 30S,Dead 120S。会学习邻居接口IP地址所对应的主机路由。 |
NBMA | NBMA,可以建立多个邻居关系,需要进行DR和BDR的选举,hello 30S,Dead 120S。无法自动建立邻居关系。 |
Vlink | vlink,以单播的形式发送hello包,hello 10S;dead 40S;不需要进行DR和BDR的选举 |
广播型多路访问类型(BMA)
[r2]display ospf interface GigabitEthernet 0/0/0 //查看ospf接口
OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文、LSU报文和LSACK报文。以单播的 形式发送DBD报文和LSR报文。
- Interfacce:接口
- Cost:开销
- State:身份
- Type:接口网络类型
- MTU:最大传输单元
- Priority:选举DR/BDR优先级
- Designated Router:DR路由器接口IP
- BDR:BDR路由器接口IP
- Timers:hello时间、死亡时间、轮询时间、重传时间、传输延迟
- 轮询时间:于状态为DOWN的邻居发送hello报的周期时间
- 重传时间:设备发送数据包需要确认时,在重传时间内没有收到确认包则会重新发送
- 传输延迟:加在LSA老化时间上,用来补偿LSA在链路传输过程中消耗的时间
P2P
OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文,在P2P网络中,可以不需要IP地址,所以用组播发送所有协议报文。
并且OSPF在P2P类型的网络中不会选举DR和BDR。
该接口类型信息中,缺少了在BMA网络中看到的DR优先级、DR和BDR的描述信息。
[r2]display current-configuration configuration ospf ? //查看所有当前配置中的关于OSPF的配置
环回接口
Type:P2P -- 在思科中有专门定义的Loopback类型作为环回接口的类型,而华为中没有定义,使用P2P来填充(没有意义)。
所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口,它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故而使用32位掩码来直接标识环回接口。保证路由信息的精确性。---避免产生环路或者路由黑洞。
[r1-LoopBack0]ospf network-type broadcast //修改网络类型为BMA
修改过后State会变成Waiting
原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会认为自己就是DR,并将相应信息填充到该接口信息中。
华为将tunnel接口的传输速率定义为64Kbps。
P2MP
OSPF在P2MP类型的接口上通常以组播的方式发送hello报文,以单播的方式发送其它报文。
P2MP类型无法由设备自动生成,必须由管理员手工更改。
P2MP类型网络不需要选举DR和BDR。
NBMA
在NBMA场景中,OSPF不会自动建立邻居关系,需要由管理员手工指定邻居。
为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送OSPF报文。需要双向配置。
[r4-ospf-1]peer ? //手工指定邻居接口IP地址
IP_ADDR IP address
LSA头部信息
链路状态老化时间(Link-State Age)
- 16bit,单位S
- 当该LSA被始发路由器产生时,该值被设置为0,之后随着该LSA在网络中被洪泛,老化时间逐渐累积。
- 最大老化时间 --- 3600S --- 当达到该时间后,该LSA会被本地路由器删除。
- 在OSPF网络中,只有始发路由器能够提前使该LSA老化,并删除全网该LSA信息。
- 组步调计时器 --- cisco -- 240S
可选项
- 内容与hello包相同
==链路状态类型(Link-State type)==
- 指代LSA的类型
==链路状态ID==
- 用来标识LSA的,不同类型的LSA,对该字段的定义不同。
==通告路由器==
- 产生该LSA的路由器的RID
链路状态序列号
- 32位bit,逐次加一
- 起始:0X80000001;截止:0X7FFFFFFF (80000001是负数,由负转正)
- 序列号空间
- 线性序列号空间(IS-IS使用)
- 循环序列号空间
- 棒棒糖序列号空间(OSPF使用)
校验和
- 会参与到LSA的新旧关系对比
长度
- 整个LSA长度
判断LSA的新旧关系
链路状态序列号、老化时间、校验和
1、具备较高序列号的LSA信息更优
2、具备相同序列号的LSA,选择拥有较大校验和的LSA
3、具备相同序列号和校验和,如果某条LSA的老化时间被设置为最大老化时间,则认为该LSA最新。
4、具备相同序列号和校验和,没有任何一条LSA的老化时间为最大老化时间,会对比两个LSA的老化时间之差。
MaxAge Diff:一个LSA实例从始发设备发出,直到被洪泛到整个AS边界所需要的最长时间),会认为两条LSA是不同的,选择较小的LSA
当差值小于等于15min,会认为两条LSA相同,选择随机一条。
类型 | LS ID | 通告者 | 作用范围 | 携带信息 |
Type-1 LSA(Router) | 通告者的RID | 区域内所有运行OSPF协议的路由器的RID | 单区域 | 本地接口直连拓扑 |
Type-2 LSA(network) | DR接口IP | 单个MA网络中DR所在的路由器的RID值 | 单区域 | 单个MA网络拓扑补充信息 |
Type-3 LSA(summary) | 目标网络号 | ABR,在通过下一个ABR设备时 会被修改为新的ABR的RID | 单区域(ABR临近的) | 路由信息 |
Type-5 LSA(ase) | 域外目标网络号 | ASBR | 整个OSPF域 | 域外路由信息 |
Type-4 LSA(asbr) | ASBR的RID | 与ASBR同区域的ABR设备,在通过下一个ABR设备时会被修改为新的ABR的RID | 除去ASBR所在区域的单区域 | ASBR位置信息 |
Type-7 LSA(nass) | 域外目标网络号 | ASBR;离开NSSA区域后由ABR设备转换为5类LSA | NSSA区域 | 域外路由信息 |
Type-1 LSA -- Router
- 对于一类LSA,网络中所有设备都会发送,并且只发送一条
- 同属于一个区域的接口共同使用一个一类LSA信息进行描述。
- 若存在多个区域,路由器会为每个区域单独产生一个一类LSA,并且每个LSA只描述接入该区域的接口。
Type-2 LSA -- network
- 在一个网络中,只需要一台设备发送
- 该LSA仅存在于MA网络中,由DR设备产生
- 链路状态ID为DR的接口IP地址
Type-3 LSA -- summary
- 通告者均为ABR设备
- 每一条路由项都使用单独的一条LSA信息进行描述
- 该LSA中的开销值,指的是通告者到达目的网段的开销值
- 设备在接收到3类LSA之后,需要根据一类LSA和二类LSA计算的拓扑信息来寻找三类LSA的通告者。
- 如果,通告者是所在区域的ABR设备,那么自然而言,设备可以通过一类和二类LSA找到通告者;若不是本区域的ABR设备通告的,则需要转换通告者。
Type-5 LSA -- ase
- 通告者---ASBR
- LS ID----域外路由信息的目标网络号
- 传播范围---整个OSPF域
- 五类LSA中携带的是域外路由信息,通过重发布导入OSPF网络,因为不同协议对开销值的算法标准 不同,所以,在路由导入之后,将直接舍弃原本的开销值,之后给路由赋予一个规定值---种子度量值。
- OSPF的种子度量值为1
- [r4-ospf-1]import-route rip 1 cost 5 //导入路由时修改种子度量值
- E位:
- 表示外部路由使用的度量值类型,OSPF定义了两种外部路由度量值类型,分别为MetricType-1(E=0)、Metric-Type-2(E=1)
- Type-1:所有设备到达域外目的网段的开销值为本地到达ASBR的开销值+种子度量值
- Type-2:域内所有设备到达域外目的网段的开销值等于种子度量值;OSPF默认使用类型2。
- [r4-ospf-1]import-route rip 1 cost 5 type 1 //修改外部路由度量值类型
- 外部路由标记
- 一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由。
- 在华为路由器上,缺省时,该字段值被设置为1。
- 转发地址---FA
- FA字段默认为0.0.0.0;则到达该外部网段的流量会被转发引入到发送这条LSA的ASBR设备。
- 而若FA字段不为0.0.0.0,则流量会被发送给这个FA字段所表示的地址。
- 作用:解决次优路径问题-----与ICMP中的重定向报文具有相同效果。
- FA字段被设置为其余数值的条件:
- 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF协议。
- 该接口的网络类型为BMA或者NBMA。
- 该接口的IP地址属于OSPF协议配置network命令范围。
- 该接口没有被配置为静默接口。
Type-4 LSA -- sum-asbr
- 链路状态ID------ASBR的RID值
- 度量值----填写的是该通告者到达ASBR的Cost值
- 四类LSA的任务就是在辅助五类LSA完成验算过程,找到ASBR的位置,里面只携带一个开销值。
Type-7 LSA -- nass
- E位----表示允许洪泛五类LSA信息,如果做成特殊区域,则E位为0
- N位---属于opention字段,允许处理七类LSA
- P位---不属于opention字段,代表支持7转5操作。
- 在7类LSA中,在不存在选路不佳的情况下,一般会使用通告者(ASBR)设备的环回接口地址作为转发地址。
- 如果存在多个环回接口,则使用最先宣告的环回接口地址作为转发地址。
- 如果没有环回接口,则使用武力接口的地址作为转发地址。
- 华为逻辑-----cisco---选择最后一个宣告的IP。
路由撤销
一类LSA
- 一类LSA实质是是在通过:序列号+1;校验和不变;老化时间=0的新LSA来覆盖掉老的一类LSA。
二类LSA
- 与一类LSA玩法相同。
三类LSA
- 三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S
五类与七类LSA
- 三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S
- 若采用seq+1,校验和不变,老化时间不变的方式撤销,当需要撤销的三类LSA数量较大时,会导致路由器会消耗大量计算资源。
OSPF优化方案
主要目的----减少LSA的更新量以及数量。
- 路由汇总(减少骨干区域的LSA更新量)
- OSPF特殊区域(减少非骨干区域的LSA更新量)
OSPF路由汇总(路由聚合)
- OSPF路由汇总是由手工部署的
- OSPF的汇总称为----区域汇总,因为OSPF在区域之间才传递路由信息,并且是对路由进行汇总而非 LSA信息。
- 域间路由汇总
- 域外路由汇总
域间路由汇总
[GS-R2-ospf-1-area-0.0.0.1] abr-summary 192.168.0.0 255.255.224.0
[GS-R3-ospf-1-area-0.0.0.2]abr-summary 192.168.32.0 255.255.224.0
只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则ABR就会通告该汇总路由,而当所有的明细路由全部失效时,ABR设备才不会继续通告该汇总路由。
汇总并不会影响ABR设备自身的明细路由。
汇总会抑制明细路由的发送。
==域间路由汇总只能汇总ABR设备自身通过一类LSA和二类LSA信息学习到的路由条目==。
域外路由汇总
[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
5类LSA汇总之后的开销值计算方法:
- Type-2------汇总网段的开销值等于所有明细路由开销值中的最大值+1
- Type-1------汇总网段的开销值等于所有明细路由开销值中的最大值
OSPF特殊区域
==第一大类设置要求:1、不能是骨干区域;2、不能存在虚链路;3、不能存在ASBR设备==
末梢区域(Stub Area)
- 如果将一个区域配置成末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在给 该区域转发4类和5类LSA信息。
- 该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的3类LSA缺省路由。
[r5-ospf-1-area-0.0.0.2]stub
[r1-ospf-1-area-0.0.0.2]stub
==注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域。==
完全末梢区域(Totally Stub Area)
在末梢区域的基础上,进一步拒绝学习3类LSA,仅保留3类缺省即可。
[r1-ospf-1-area-0.0.0.2]stub no-summary //该命令仅需要在ABR设备上配置即可
==第二大类特殊区域--1、不能是骨干区域;2、不能存在虚链路;3、存在ASBR设备。==
非完全末梢区域(NSSA)
- 如果将一个区域配置成非末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在 给该区域转发4类和5类LSA信息。
- 该区域依然需要将域外路由信息导入,但因为该区域拒绝5类LSA,所以,只能以7类LSA的形式来 继续传递域外路由信息。
- 之后,在7类LSA信息离开NSSA区域后,需要再转换成5类LSA进行传输。
- 该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设 备,会自动生成一条指向骨干区域的7类LSA缺省路由。
[r5-ospf-1-area-0.0.0.2]nssa
[r1-ospf-1-area-0.0.0.2]nssa
O_NSSA ------7类域外路由信息的标记,默认优先级也是150。
完全的非完全末梢区域(Totally NSSA)
在NSSA的基础上,进一步拒绝学习3类LSA,产生一条3类缺省LSA。
[r1-ospf-1-area-0.0.0.2]nssa no-summary
NSSA环路问题
- NSSA区域缺省路由配置错误可能会导致路由环路的产生。
场景一
场景二
[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise
R4和R5无法下发OSPF缺省路由的原因是本地路由表中的静态缺省路由被R3发送的七类缺省路由所替 代。
当删除R3的下发命令后,R4和R5均会下发七类缺省路由,并学习对方的七类缺省路由,但是并不会将从对方学习到的七类缺省路由加入到路由表中。
总结一下:
- NSSA区域的七类LSA实际上是需要ASBR或者ABR自己下发的。
- 而如果多台设备均下发成功七类LSA缺省路由,则虽然都会收到LSA信息,但并不会将其余设备的LSA缺省信息加入到本地路由表中。因为始终相信自己的缺省路由是最好的。
- 而对于第一台发布七类缺省路由的设备而言,会认为我身上已经有了一条去往外部区域的路由,并且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习。-----华为运用该逻辑解决Totally NSSA中的环路问题。
- 华为为了解决环路问题,保留了NSSA区域由ABR产生的七类LSA缺省路由,这样做的好处就是使得设备相信自己产生的这条LSA,而对于其他设备传递来的七类LSA,只接收到不使用。
- 这样一来,ABR设备就不会具备指向NSSA区域内部的缺省路由,更不会将这个缺省路由传递给骨干区域,从而避免环路问题。
==OSPF规定:在NSSA区域中,可能同时存在多个ABR或ASBR,为了防止路由环路产生,边界路由器 之间不计算对方发布的缺省路由==。
NSSA负载分担解决次优路径问题
OSPF对进行7转5操作的规范:
- P比特位用于告知路由器该Type-7 LSA是否需要转换
- 缺省情况下,转换路由器是NSSA区域中RID值最大的ABR
- 只有P比特位和FA字段不为0的Type-7LSA才能被转换为五类。
[r4-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address //在进行7转5时,删除转发地址
[r1-ospf-1-area-0.0.0.1]nssa translator-always //强制开启7转5操作,在ABR设备上配置
若本地存在两条LSA除了通告者不同外,只有FA字段的值不同,那么对于这两条五类或七类LSA而言,FA字段不为0.0.0.0的LSA优先级更高。
==NSSA区域如果没有FA字段,将会有很大的可能因为7转5操作出现次优路径==。