目录
OSPF基础
动态路由简介
相较于静态路由协议而言动态路由协议不需要管理员手工配置去干预静态路由配置,它能够自己及时的感应网络拓扑变化为路由选择新的路径来转发数据流量
动态路由协议的分类
按工作区域/自治系统来分类的话主要有两大类
- IGP(内部网关协议): RIP,OSPF,IS-IS
- EGP(外部网关协议): BGP(较为特殊 基于距离矢量算法的改良和增强)
按照工作机制及算法分类的话主要有两大类
- 距离矢量路由协议: RIP
- 链路状态路由协议: OSPF,IS-IS
距离矢量路由算法协议
周期性的泛洪和学习邻居/自己的路由表,缺点:收敛慢 环路问题以及不知道网络拓扑 只是简单的知道去往目的网段的方向和开销
链路状态路由协议-LSA泛洪
通告的是链路状态而不是路由信息
建立邻居关系,互相交互LSA(链路状态通告 描述了路由器接口状态信息如接口的开销 连接的对象等等)对所在网络拓扑清晰
链路状态路由协议-LSDB维护
每台路由器都会生成LSA,路由器将LSA放到自己的LSDB(链路状态数据库),路由器解析LSDB中所存储的LSA进行解析,进而了解全网拓扑
链路状态路由协议-SPF算法
每台路由器基于LSDB使用SPF(最短路径优先算法)进行计算. 每台路由器计算出一颗以自己为根的无环的最短路径"树"
简单来说OSPF的工作流程:建立邻居关系->转发LSA存入LSDB->通过算法计算路径->存入路由表
OSPF简介
OSPF概述
- 是IETF定义的一种基于链路状态的内部网关路由协议.目前针对ipv4协议使用的是OSPF(Version2);针对ipv6协议使用的是OSPF(Version3)
- 优点:
- 基于SPF算法,以累计链路开销作为选路参考值 保证没有环路
- 采用组播方式收发部分协议报文
- 支持区域划分
- 支持等价路由进行负载分担
- 支持报文认证
应用场景
大型企业网络 核心层和汇聚层部署在OSPF的骨干网络 接入层和汇聚层部署在非骨干区域
OSPF基础术语
- Router ID 用于再自治系统中标识唯一一台运行OSPF的路由器,他是一个32位的无符号整数
- 手动配置OSPF的Router ID(建议)
- 没有手动配置的话则使用Lookback接口中最大的IP地址作为Router ID
- 如果没有配置Lookback接口,则使用物理接口中最大的IP地址作为Router ID
- 区域
- OSPF area用于标识一个OSPF的区域
- 区域是从逻辑上划分为不同的组,每个组用区域号(area ID)来标识
- OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(和ipv4一样)呈现,为了方便起见我们也会用十进制的形式来表示.
- 度量值
- OSPF使用Cost(开销)作为路由的度量值,每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost=100Mbit/s除以接口带宽.其中100Mbit/s为OSPF所指定的缺省参考值,这个值是可以手工配置的(不建议配置 网络庞大).取值最小为1 四舍五入计算
- OSPF以累计Cost为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的Cost总和. 开销越小优
- 控制数据转发路径可以修改开销值,修改开销值建议直接修改接口Cost值 默认FE接口Cost=1 默认GE接口Cost=1 默认Serial接口Cost=64
OSPF三大表项
- 邻居表
- OSPF在传递链路状态信息之前,需要建立OSPF邻居关系
- OSPF的邻居关系通过交互HELLO报文建立
- OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看
- LSDB(链路状态数据库)
- LSDB会保存自己产生的及从邻居收到的LSA信息
- Type标识LSA的类型,AdvRouter标识发送LSA的路由器
- 使用命令行display ospf lsdb 查看LSDB表
- OSPF路由表
- OSPF路由表和路由气的路由表是两张不同的表
- OSPF路由表包含了Destination Cost NextHop等指导转发信息
- 使用display ospf routing 可以查看OSPF路由表
- 需要注意的点: 在OSPF路由表中的最优路由未必会在路由表里 因为不同协议之间还存在一个比较
OSPF报文类型和格式
- OSPF一共定义了五种类型的报文,不同类型的报文有着相同的头部格式
- OSPF报文直接采用ip封装,在报文的ip头部中,协议号为89
OSPF工作过程
建立邻居关系
- OSPF使用hello报文发现和建立邻居关系
- 在以太网链路上,缺省时,OSPF采用组播的形式发送hello报文(目的地址224.0.0.5)
- OSPF Hello报文中包含了路由器的Router ID,邻居列表等信息
邻居状态的变化: Down(初始状态表示从没收到过任何邻居的信息)->Init(收到了邻居的信息但还未存入邻居表中)->2-way(在此状态下路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中)
Hello报文主要作用
- 邻居发现:自动发现邻居路由器
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系
- 邻居保持:通过周期性发送和接收,检测邻居运行状态 发送时间默认10s 失效时间为发送时间的4倍 40s
建立邻接关系
发送DD报文后建立邻接关系 状态变化如下:
- 2-way
- Exstart:开始发送DD报文,此状态下的DD报文不包含链路状态信息
- Exchange:发送包含链路信息摘要的DD报文
- Loading:相互发送LSR报文,LSU报文,LSAck报文.校验同步等操作
数据库描述DD LSDB内容汇总(仅包含LSA摘要) 互相发送dd报文建立邻接关系 第一次dd报文状态变为(exstart)并不会发送lsdb数据 仅确认主从关系 确认完主从关系后 状态变为(exchange)再发送dd报文进行一个lsdb摘要信息的同步
DR与BDR的作用
为了减少多路访问网络环境中的LSA广播流量 OSPF定义了在多路访问网络中选择一个路由器作为DR(指定路由器),使其作为所有链路状态更新和LSA(链路状态通告)的集中点;同时选择一个BDR作为DR的备份
DR的主要功能:
- 产生代表该网络的LSA
- 和本多路访问网络中其他的OSPF路由器建立邻接关系,以收集并发各个路由器的链路状态信息,同步各路由器中的链路状态数据库 同区域中的路由器和DR建立关系就行 DR失效后BDR接替 除了这两个路由器之外的路由器称为DRouter BDR只接收不发送更新信息
DR和BDR的选择规则:
- 接口优先级 越大越优0-255 默认为1 大于0才能进行选举
- 优先级相同比路由器ID 越大越优
- 只有一个的话 即是DR也是BDR
- 基于接口而言 多个接口可能有多个身份 选举完毕再人为修改优先级不进行人为选举 选举是非抢占的
OSPF基本配置
肝不动了 后面补
OSPF路由计算
区域内路由计算
LSA报文概述
链路状态类型,链路状态ID,通告路由器三个信息唯一的标识了一个LSA
链路老化时间(默认0-3600s),链路状态序列号,校验和,用于判断LSA的新旧
LSA类型
-
Router LSA(Type-1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
-
Network LSA(Type-2):由 DR 产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
-
Network Summary LSA(Type-3):由 ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
-
ASBR Summary LSA(Type-4):由 ABR 产生,描述到 ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
-
AS External LSA(Type-5):由 ASBR 产生,描述到 AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了 Stub 区域和 NSSA 区域)。
-
NSSA External LSA(Type-7):由 NSSA(Not-So-Stubby Area)区域内的 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
-
Opaque LSA:用于 OSPF 的扩展通用机制,目前有 Type-9、Type-10 和 Type-11 三种。其中,Type-9 LSA 仅在本地链路范围进行泛洪,用于支持 GR(Graceful Restart,平滑重启)的 Grace LSA 就是 Type-9 的一种类型;Type-10 LSA 仅在区域范围进行泛洪,用于支持MPLS TE 的 LSA 就是 Type-10 的一种类型;Type-11 LSA 可以在一个自治系统范围进行泛洪。
Router-LSA
- 每台路由器都会产生.描述了该路由器直连接口的信息
- 只能在所属区域内泛洪
- ASBR和ABR可以在一类LSA中表明身份
- 使用link来承载路由器直连接口的信息 每条link均包含 链路类型,链路ID,链路数据,度量值这几个关键信息
- 路由器可能会采用多个link描述某个接口
- 缺点:在MA网络中没有网段信息 无法判断路由器所连网段
- 查看一类LSA命令 display ospf lsdb router self-originate
Network-LSA
- 2类LSA 由DR产生,描述网段的链路状态,在所在区域内传播 DR只有在广播型网络以及NBMA网络中才需要选举 在p2p网络中不会选举DR所以也就没有2类LSA
- 记录了该网段所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码 弥补了一类LSA的缺点
- 查看命令 display ospf lsdb network self-originate
SPF计算过程
- 路由器将自己作为最短路径树的树根,根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。
- 广播网络中DR和其所连接路由器的Cost值为0.
- SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路.
- 将Router-LSA、Network-LSA中的路由信息以叶子节点形式附加在对应的OSPF路由器上,计算最优路由。
- 已经出现的路由信息不会再添加到SPF树干上。
区域间路由计算
区域间路由计算过程
-
单区域OSPF存在的问题
- 一系列连续的OSPF路由器构成的网络称为OSPF域(Domain)。
- OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知
- 当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗。
- 当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算。
- 单区域的设计,使得OSPF无法部署路由汇总。
-
区域划分
- RouterLSA和NetworkLSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗。
- 划分区域后,路由器可以分为两种角色:
▫区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5。
▫区域边界路由器(Area Border Router):该类设备接口分别连接两个及两个以上的不同区域。如R2、R3。
-
区域间路由信息传递
-
OSPF区域间路由信息传递是通过ABR产生的NetworkSummaryLSA(3类LSA)实现的
-
区域间路由防环机制
区域间路由的环路产生
- OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似。
- 对于区域间路由的传递,OSPF也需要一定的防环机制。
防环机制1
防环机制2
防环机制3
虚连接的作用及配置
- OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续。
- 虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
OSPF引入了多区域的概念,使得该协议能够支持更大规模的组网。
OSPF使用3类LSA来描述区域间的路由信息。
为了避免出现区域间路由环路,OSPF设计了多个规则。
OSPFVirtualLink是一种虚拟的、逻辑的链路,被部署在两台OSPF路由器之间,它穿越某个非骨干区域,用于实现另一个非骨干区域与Area0的连接。VirtualLink应该始终作为一种临时的技术手段来解决非骨干区域没有与Area0直接相连的情况。
外部路由计算
- ASBR(ASBoundaryRouter):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。如图中的R1。
- ASBR将外部路由信息以AS-externalLSA(5类LSA)的形式在OSPF网络内泛洪。
- AS-externalLSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)。
OSPF路由遵循以下优先级顺序,区域内路由>区域间路由>Metric-Type-1外部路由>Metric-Type-2外部路由。
LSA是OSPF链路状态信息的载体,随着网络规模逐渐变大,网络业务逐渐变得复杂,通过OSPF区域的划分以及大量外部路由的引入,路由器的LSDB中可能存在大量的1类、2类、3类、4类、5类LSA,容易造成设备性能的浪费。下面会讲到stub等区域来解决此问题.
OSPF特殊区域及其他特性
前面的内容讲到了OSPF可以划分区域去减轻单区域里LSDB的规模(主要减轻一类和二类LSA),从而减轻路由器的负荷,虽然OSPF能划分区域但是它依旧需要去维护域间路由和外部路由(域间路由的三类LSA和外部域间路由的四类五类LSA),网络拓扑一旦扩大 路由器所维护的LSDB的规模也依然会很庞大,这样对于非骨干区域的低端路由器而言非常吃力.
按传输区域划分可划分两个区域 传输区域和末端区域
- 传输区域:除了承载本区域发起的流量和访问本区域的流量外,还承载了一些不属于本区域的流量即"穿越流量".
- 末端区域:只承载本区域发起的流量和访问本区域的流量
那么末端区域的路由器是不是可以减小LSDB的规模呢? 答案是肯定的
Stub区域和Totally Stub区域
Stub区域
-
Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由(即四类五类LSA),Stub区域中路由器的LSDB和路由表规模就会减小
- 为了保证Stub区域能够到达AS外部,Stub区域的ABR将生成一条缺省路由(由三类LSA描述),向区域内下发静态路由出口指向ABR
-
配置Stub区域需要注意几点:
- 骨干区域不能被配置为Stub区域
- Stub区域中的所有路由器都必须将该区域配置为Stub
- Stub区域内不能引入也不接收AS外部路由
- 虚连接不能穿越Stub区域
那么问题又来了,既然ABR下发了缺省路由出口指向了ABR 为什么查看OSPF路由表的时候还会有去往其他区域的三类LSA呢? 一条缺省指出去不就够了吗?答案如你所见 我们可以这样去设置 直接保留一条缺省三类LSA指向ABR即可 .
Totally Stub区域
- Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域内传播
- Totally Stub区域内的路由通过本区域ABR下发的缺省路由(三类LSA描述)到达其他区域以及AS外部.
- 配置Totally Stub区域是需要注意 在ABR上追加no-summary关键字
- AS外部以及其他区域的拓扑信息发生变化时不会导致Totally Stub区域内的路由器重新计算.减少设备资源的浪费.
NSSA区域和Totally NSSA区域
Stub区域和Totally Stub区域存在的问题:
- OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由引入造成设备资源消耗
- 对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不
能满足需求了
NSSA区域与Totally NSSA区域
- NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域引入的外部路由。
- TotallyNSSA与NSSA区域的配置区别在于前者在ABR上需要追加no-summary关键字
回顾LSA
LSA工作原理
- 如果收到的LSA本地没有,则更新LSDB并泛洪该LSA。
- 如果本地LSDB已存在该LSA,但是收到的更新,则更新LSDB并泛洪该LSA。
- 如果收到的LSA和LSDB中相同,则忽略,并终止泛洪。
- 如果收到的LSA损坏,例如Checksum错误,则不接收该LSA。
那么问题叒叒来了 特殊区域的LSDB得到了优化 那么普通区域的LSDB能不能也优化一下呢?
区域间路由汇总和外部路由汇总
在ABR执行路由汇总
- 路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。
- OSPF路由汇总的类型:
- 在ABR执行路由汇总:对区域间的路由执行路由汇总。
- 在ASBR执行路由汇总:对引入的外部路由执行路由汇总。
在ASBR执行路由汇总
- 在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总。
- NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总。
- 在NSSA区域中,ABR执行7类LSA转化成5类LSA动作,此时它也是ASBR。若配置路由汇总,则对由7类LSA转化成的5类LSA进行汇总。
OSPF协议特性
Silent-Interface
- 通过Silent-Interface的配置,增强OSPF的组网适应能力,减少系统资源的消耗。
- Silent-Interface有以下特性:
- Silent-Interface不会接收和发送OSPF报文。
- Silent-Interface的直连路由仍可以发布出去。
- R1的GE0/0/1接口在OSPF network命令的网段范围内。
- 到达该接口的路由将被通告到OSPF,使得其他设备能够访问Server。
- 由于该接口上未连接任何其他OSPF路由器,因此管理员将该接口配置为Silent-Interface,该接口将不再收发Hello报文,从而避免了对Server的性能降低。
OSPF报文认证
- OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收。
- 路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:
- 区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致。
- 接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致
以上就是所有OSPF的内容QAQ