随笔一篇,以便日后翻阅,如有问题欢迎指正
eNSP版本:1.3.00.100



目录

  • 前言
  • Ⅰ . OSPF 概述
  • 一、OSPF简介
  • 二、链路状态路由协议工作流程
  • Ⅱ . OSPF 概念
  • 一、区域
  • 二、Router - ID
  • 三、度量值
  • 四、OSPF协议报文类型
  • 五、OSPF三大表项 —— 邻居表
  • 六、OSPF三大表项 —— LSDB 表
  • 七、OSPF三大表项 —— OSPF路由表
  • Ⅲ . OSPF 工作原理
  • 一、OSPF 邻居建立
  • 二、OSPF 网络类型
  • 1. P2P —— Point-to-Point(点对点)
  • 2、P2MP —— Point Multi-Point(点到多点)
  • 3、BMA —— Broadcast Multiple Access(广播式多路访问)
  • 4、NBMA —— Non-Broadcast Multiple Access(非广播式多路访问)
  • 三、DR / BDR
  • 四、OSPF 单区域
  • 五、OSPF 多区域
  • 六、OSPF 路由器类型
  • Ⅳ . OSPF 基础配置
  • Ⅴ . OSPF配置案例



前言

先认识一些知识点和术语:

  • 静态路由的缺点:
  • 无法适应大规模的网络
  • 无法动态响应网络变化

既然静态路由无法满足动态响应,那便采用不同的动态协议
(此处仅按照工作机制算法分类):

  • 距离矢量路由协议(Distance Vector Routing Protocols):运行协议的路由器周期性泛洪自己的路由表,对于路由器自身而言并不知道网络拓扑结构,只是简单明白要去往的目的地在哪里、有多远。例如:RIP协议
  • 链路状态路由协议(Link-State Routing Protocols):宣告的是 LSA ,描述了路由器接口的状态信息(接口开销、连接对象),最终每台路由器会形成自己的数据库(路由详情参数表)。例如:OSPF协议、IS-IS协议。
  • LSDB:链路状态数据库,用于描述整个区域所有接口相关状态的信息
  • RIB(Routing Information Base):路由信息表,存储所有的路由信息:
  • 存有所有通过动态路由协议学到的路由条目
  • 存有所有的直连网络
  • 存有另外配置的路由条目,如静态路由

Ⅰ . OSPF 概述

一、OSPF简介

OSPF:Open Shortest Path First —— 开放式最短路径优先
基于链路状态算法的路由协议,帮助路由器构造路由表

  • 典型的链路状态路由协议, IGP 协议之一
  • ipv4对应的OSPF版本为 Version 2,ipv6对应的则是 Version 3
  • 运行OSPF的路由器之间交互的是 LS(Link State)—— 链路状态
  • OSPF的路由器采用 SPF算法 计算最短路径
  • OSPF支持 VLSM(Variable Length Subnet Mask)—— 可变子网掩码,且还支持路由聚合
  • 多区域的设计使得OSPF支持更大规模的网络
  • OSPF在园区网络中的核心交换机和汇聚交换机上可以实现园区的路由可达
  • OSPF协议封装在IP协议之上,IP协议的功能只能尽力而为的帮他传输报文,所以便衍生出OSPF自己的传输机制
  • OSPF支持的网络类型(不同网络类型影响邻居建立和路由计算的过程):
  • Broadcast(广播型)
  • NBMA(非广播型的多点接入)
  • P2MP(点到多点传输)
  • P2P(点到点传输)

二、链路状态路由协议工作流程

  1. 路由器之间先建立邻居关系
  2. 泛洪自身LSA完善各自的LSDB
  3. 各自把自己当做树根去寻找到达其他路由器最短的路径
  4. 将最短的路径记录到 RIB 路由信息表

Ⅱ . OSPF 概念

一、区域

  • OSPF Area 用于标识一个OSPF区域
  • 区域是从逻辑上将设备划分为不同的组,每个组用区域号 Area ID 来标识

二、Router - ID

Router - ID(Router Identifier)—— 路由器标识符

  • 用于在一个OSPF域中唯一 的标识一台路由器
  • 可以通过手动配置,也可以使用系统配置
  • 形式根ipv4地址形式一样

三、度量值

  • OSPF使用COST(开销)值作为路由的度量值
  • 每一个激活OSPF的接口都会维护一个接口的COST值,缺省接口的COST值为stp ospf冲突不 ospf state init_网络协议,100Mbit/s为默认值,可以进行手动配置
  • 100M --> Cost 1
  • 10M --> Cost 10
  • 1G --> Cost 1(因为Cost最小值为1,所以需要手动修改Cost值或者修改参考值)
  • 整条路由开销值是整条路径开销值的总和

四、OSPF协议报文类型

报文

简写

描述

Hello

周期性发送,用来发现和维护OSPF令居关系

Database Description

DD

描述本地 LSDB 的摘要信息,用于两台设备进行数据库同步

Link State Request

LSR

用于向对方发送请求所需要的 LSA,且只有在邻居双方成功交换 DD 报文后才会对对方发出 LSR 报文

Link State Update

LSU

用于向对方发送其所需的 LSA

Link State ACK

LSA

用于对收到的 LSA 进行确认

摘要信息:想邻居发送目录,确保邻居缺失哪类信息,并返回 LSR 请求报文,收到 LSR 后把缺失的详细内容打包成 LSU 发送并返回 LSA 确认收到报文


五、OSPF三大表项 —— 邻居表

  • 通过Hello报文成功建立邻居关系后会将信息加入邻居表
    通过命令 display ospf peer查看邻居表

六、OSPF三大表项 —— LSDB 表

  • 形成用于计算开销值的数据库容器,用于保存来自邻居以及自己产生的 LSA 信息
  • Type 标识 LSA 类型,ADV Router(边界路由器 —— ABR) 标识 LSA 的产生者
  • 通过 display ospf lsdb查看 LSDB 表

七、OSPF三大表项 —— OSPF路由表

  • OSPF路由表和 路由器中的路由表 是两张不同的表项
  • 此表中包含 Destination、Cost、Next Hop(下一跳)等作为指导作用的信息,择优选择最佳路径放入IP路由表

Ⅲ . OSPF 工作原理

OSPF路由器之间存在两种关系:邻居关系邻接关系

  • 若只考虑一种简单的拓扑,存在两台路由器直连状态下,在双方互联接口上激活OSPF协议,路由器便开始发送并侦听Hello报文。在通过Hello报文发现彼此后,此时两台路由器便建立起了邻居关系
  • 邻居关系建立只是一个开始,后续会进行一系列的报文交换直到各自同步完自己的LSDB并开始计算路由时,这两台路由器便建立起了邻接关系

一、OSPF 邻居建立

  • 关系:双方通过 Hello 报文交互发现彼此后便建立起邻居关系
  • 关系:双方会进行 DD、LSR、LSU、LS、ACK报文互传并同步 LSDB 数据库,且开始独立计算报文
  • 稳定邻居关系建立步骤:
    ① 建立初步邻居(双向交互Hello报文后)
    ② 协商主从 (交互DD报文)
    ③ 交互 LSDB 信息(交互各自的摘要)
    ④ 同步 LSDB (更新 LSA )
    ⑤ 各自计算路由开销
  • stp ospf冲突不 ospf state init_OSPF_02

  1. 初步邻居建立细节
    ① R1 先向所在链路上发送 Hello 报文并等待回应
    ② 链路上的 R2 收到报文后会将 R1 的信息添加进邻居表,并将 R1 的状态标识为 init(初始状态)
    ③ R2 回应 R1 的报文并向对方确认已收到
    ④ R1 将 R2 的信息存入路由表,并将 R2 的状态标识为 2-Way(双边邻居)
    ⑤ R1 再向 R2 发送确认报文,R2 路由表中将 R1 的信息更新为 2-Way
  2. stp ospf冲突不 ospf state init_OSPF_03

  • 当一台OSPF路由器收到其他路由器发来的首个Hello报文时会从初始Down状态切换为Init状态。
  • 当OSPF路由器收到的Hello报文中的邻居字段包含自己的Router ID时,从Init切换2-way状态
  1. 协商主从并交互报文细节
    ① R1 向邻居 R2 发送 DD 报文,内容为空,序列号随机,告诉 R2 我是 Master(主)和自己的 Router-ID。发送完后自己的状态将变为 Ex-start(Exchange Start —— 准启动状态),表明已经对外发送过报文且已宣誓过主权了
    ② R2 同样也会向 R1 发送且经历①的步骤,但由于序列号大的为主,所以最终 R2 宣誓主权成功成为主路由器,且所有路由器发送的序列号都要听从 R2 的
    ③ R1 回复 R2 的报文带上 R2 规定的序列号和自己 LSDB 中的 LSA摘要,发送后自己的状态变为 Exchange
    ④ R2 回复 R1 的报文序列号 +1 递增,并也发送自己的 LSA摘要,随后变为 Exchange 状态
    ⑤ R1 回复确认报文,双方比较后得知自己缺失的信息
  2. stp ospf冲突不 ospf state init_网络协议_04

  3. 同步 LSDB 细节
    ① R1 和 R2 对比各自收到的 DD 报文后发现缺失的信息,随机向对方发送 LSR 请求报文请求缺失的部分,自身状态变为 Loading
    ② 双方收到来自对方的 LSR 请求后,把对方缺失的信息封装到 LSU Update报文后回复对方自身完整的 LSA 信息
    ③ 双方收到 LSU 得到较完整的 LSA 信息后同步自身 LSDB ,并回复确认收到报文。如果另一方迟迟没收到对方的确认消息,会再向对方发送 LSU
    ④ 双方同步完 LSDB 后,状态变为 Full(完全邻接状态)
  4. stp ospf冲突不 ospf state init_stp ospf冲突不_05

  5. 邻居表参数详情
  6. stp ospf冲突不 ospf state init_网络协议_06


二、OSPF 网络类型

  • OSPF网络类型是一个非常重要的接口变量,此变量将直接影响到OSPF在接口上的操作
  • 一般情况下,链路两端的OSPF网络接口类型必须一致,否则双方无法正常建立邻居关系
  • 接口默认的OSPF网络类型取决于接口所使用的数据链路层封装,例如:
  • 千兆口 —— 广播型(Broadcast)
  • 串行口 —— 点到点(P2P)
  • 帧中继 —— 广播式多路访问(NBMA)
  • P2MP无默认,需要手动修改
  • 可以通过命令行手动更改网络类型适应不同网络场景:
    [R]ospf network-type ______

1. P2P —— Point-to-Point(点对点)

stp ospf冲突不 ospf state init_stp ospf冲突不_07

  • P2P指在一段链路上只能连接两台网络设备的环境
  • 当PPP链路接口采用PPP封装时,OSPF在该接口采用的缺省接口类型为P2P

2、P2MP —— Point Multi-Point(点到多点)

stp ospf冲突不 ospf state init_网络_08

  • 相当于将多条P2P链路的一端进行捆绑得到的网络
  • 没有任何链路协议缺省状况下会被认定为P2MP网络类型,该类型必须手动更改得到
  • 常用做法是将非全连通的NBMA改为点到多点的网络

3、BMA —— Broadcast Multiple Access(广播式多路访问)

stp ospf冲突不 ospf state init_网络_09

  • BMA也被称为Broadcast,指一个允许多台设备接入且支持广播的环境
  • 当接口采用Ethernet封装时,OSPF在该接口上采用的缺省网络类型为BMA

4、NBMA —— Non-Broadcast Multiple Access(非广播式多路访问)

stp ospf冲突不 ospf state init_链路_10

  • 指一个允许多台网络设备接入且不支持广播的环境,例如帧中继(Frame-Relay)网络

三、DR / BDR

问题背景:以太网是一种典型的广播型多路访问网络,在多路访问网络中,如果每台OPSF路由器都与其他OSPF路由器建立关心的话,会导致网络中存在过多LSA交互,一旦网络规模庞大,会造成LSA泛洪和宽带资源浪费等问题,增加设备负担,且一旦设计网络拓扑变化,也会造成资源浪费

stp ospf冲突不 ospf state init_网络协议_11

  • 所以为了优化网络邻接关系,OSPF指定了三种路由器身份
  • DR —— Designated Router(指定路由器)【班长】
  • BDR —— Backup Designated Router(备用指定路由器)【副班长】
  • DRother —— Designated Router other(其他指定路由器)【班委】
  • 规定:
  • 只允许DR(班长)、BDR(副班长)与其他OSPF路由器(同班同学)建立邻接关系。
  • DRother(班委)之间不会相互建立邻接关系,双方均停留在 2-Way 状态
  • BDR(副班长)受DR(班长)监督,一旦BDR发生故障或更替时,DR马上接手工作
  • 比较有意思且接地气的解释:DR、BDR和DROther的关系之通俗演绎

四、OSPF 单区域

域 —— Domain
区域 —— Area

  • 同属一个OSPF域的路由器会在网络中泛洪LSA,前提是此区域内的路由器都已成功同步LSDB
  • OSPF域不能只有一个,否则会出现诸多问题:
  • LSDB越来越庞大,导致OSPF路由表规模增加,消耗资源过多,设备性能下降,影响工作效率
  • 庞大的LSDB极大影响路由计算
  • 拓扑变更会给LSA全域洪泛和全网 SPF计算 带来巨大负担

五、OSPF 多区域

  • 将一个OSPF域划分成多个域,使得OSPF支持更大的组网
  • 多区域的设计减小了LSA的洪泛范围有效的把拓扑变化影响控制在主区域内,达到网络优化的目的
  • 在区域边界可以做路由汇总,减小路由表规模
  • 多区域提高了网络拓展性,有利于组件大规模网络
  • 区域分类:
  • 骨干区域 —— Area0
  • 非骨干区域 —— 除Area0以外的所有区域
  • 多区域互联原则: 防止区域间环路,非骨干区域 与 非骨干区域 不能直连,所有 非骨干区域 必须与 骨干区域 相连
  • 多区域编号唯一且以路由器为边界,但同一路由器可属多个区域

六、OSPF 路由器类型

根据位置和功能不同划分不同路由器类型:

  • 区域内路由器(Internal Router)
  • 区域边界路由器(Area Border Router —— ABR)
  • 骨干路由器(Backbone Router)
  • 自治系统边界路由器(AS Boundary Router —— ASBR)

Ⅳ . OSPF 基础配置

  1. (系统视图)创建并运行OSPF进程
    [R] ospfprocess-id (router-id)
  • “process-id” 用于标识OSPF进程,默认为1。OSPF支持多进程。同一设备可运行不同的OSPF进程,相互独立且互不影响邻居的建立。
  • “router-id” 用于手动指定设备的ID号,默认情况从当前接口IP地址自动选取一个ip地址号作为设备号
例:
 [R] ospf 1 router-id 1.1.1.1
  1. (OSPF视图)创建并进入OSPF区域
    [R-ospf-1] area area-id

用于进入OSPF中area区域,“area-id” 取值范围为0~4294967295,且可以采用点分十进制形式表达

例:
 [R-ospf-1] area 0
  1. (OSPF区域视图)指定运行OSPF的接口
    [R-ospf-1-area-0.0.0.0] networknetwork-addresswildcard-mask
  • “network-address” 为接口所在网段地址
  • “wildcard-mask” 为接口IP地址的反掩码(1变0,0变1。例:掩码为/24的地址的反掩码为0.0.0.255)
例:
 [R-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
  1. (接口视图)配置OSPF接口开销
    [R-GigabitEthernet0/0/0] ospf cost cost

在接口上运行OSPF协议所需开销,缺省情况下OSPF根据接口带宽自动计算其开销值 (1~65535) ,也可以手动更改,最小值为1

例:
 [R-GigabitEthernet0/0/0] ospf cost 100
  1. (OSPF视图)设置OSPF带宽参考值
    [R-ospf-1] bandwidth-reference value

设置开销计算公式(stp ospf冲突不 ospf state init_网络协议_12)的分子值(也就是接口带宽的参考值),取值范围 1~2147483684,单位Mbit/s,默认单位100Mbit/s

例:
 [R-ospf-1] bandwidth-reference 1000
  1. (接口视图)设置接口在选举DR时的优先级
    [R-GigabitEthernet0/0/0] ospf dr-prioritypriority

“priority” 值越大优先级越高,取值范围为0~255,默认值为1。不设置priority的情况下默认以Router-id作为优先级判断依据

例:
 [R-GigabitEthernet0/0/0] ospf dr-priority 10
  1. (接口视图)配置OSPF认证

博主用的eNSP版本见页眉

  1. [R-GigabitEthernet0/0/0] ospf authentication-modeauthentication-mode

首先需要明确,OSPF中一共有两种认证方式

  • 区域认证:一个区域的所有路由器在该区域下的认证模式和口令必须一致
  • 链路认证:相比于区域认证更加灵活,可专门针对某个邻居设置单独的认证模式和密码

如果同时配置了链路认证和区域认证,优先使用链路认证

而两种认证方式又各自包含四种验证模式

  • hmac-md5算法:秘钥是经过hmac-md5算法算法加密传输
  • md5算法:秘钥是经过md5算法加密传输
  • keychain:可以同时配置多个秘钥,不同秘钥可单独设置生效周
  • simple:(简单验证模式) 数据传输过程中,认证秘钥和秘钥ID都是明文传输
  • null:空,不配置验证模式
[R-GigabitEthernet0/0/0]ospf authentication-mode ?
 	  hmac-md5  Use HMAC-MD5 algorithm
 	  keychain  Keychain authentication mode
 	  md5       Use MD5 algorithm
 	  null      Use null authentication
 	  simple    Simple authentication mode

常例:
(a)、simple 简单认证
[R-GigabitEthernet0/0/0]ospf authentication-mode simpleauthentication-identifierpassword-display-modepassword

“authentication-identifier” —— 验证标识符,取值范围1~8
“password-display-mode” —— 密码加密方式:plain(明文) / cipher(密文),取值范围0~32

注:对端需要采用同样的认证方式和加密方式才可查看邻居表

[R-GigabitEthernet0/0/0]ospf authentication-mode simple plain 1 cipher huawei
 
 [R-GigabitEthernet0/0/0]dis th
 [V200R003C00]
 #
 interface GigabitEthernet0/0/0
  ip address 192.168.1.2 255.255.255.0 
  ospf authentication-mode simple plain huawei 		#密码以明文方式显示
 #
 return

(b)、md5 认证
[R-GigabitEthernet0/0/0]ospf authentication-mode md5authentication-identifierpassword-display-modepassword

“authentication-identifier” —— 验证标识符,取值范围1~255
“password-display-mode” —— 密码加密方式:plain(明文) / cipher(密文),加密后取值范围20~392

注:对端需要采用同样的认证方式和加密方式才可查看邻居表

[R-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher huawei123
 
 <R1>dis cu
 ......
 #
 interface GigabitEthernet0/0/0
  ip address 192.168.1.1 255.255.255.0 
  ospf authentication-mode md5 1 cipher %$%$1txV;(QD_!UVl'9=9a'&T(wv%$%$	#密码以密文方式显示
 ......
  • 如果采用链路认证的方式,就需要在同一OSPF的链路接口下都配置上链路认证的命令(验证模式和口令参数)
  • 如果采用区域认证的方式,在同一区域中,仅需在OSPF进程下的相应区域视图下配置命令来设置验证模式和口令即可,所以在同一区域中如果有多台OSPF设备需要配置认证,建议选用区域认证

Ⅴ . OSPF配置案例

stp ospf冲突不 ospf state init_网络_13


步骤:配置设备接口 ----> 配置OSPF ----> 结果验证

配置设备接口:

R1:
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]undo info-center e
Info: Information center is disabled.
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.1.1 24
[R1-GigabitEthernet0/0/0]q
[R1]

R2:
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy R2
[R2]undo info-center e
Info: Information center is disabled.
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.1.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.2.1 24
[R2-GigabitEthernet0/0/1]q
[R2]

R3:
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy R3
[R3]undo info-center e
Info: Information center is disabled.
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.2.1 24
[R3-GigabitEthernet0/0/1]q
[R3]


配置OSPF:

R1:
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]q
[R1-ospf-1]q
[R1]

R2:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]area 1
[R2-ospf-1-area-0.0.0.1]network 192.168.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.1]q
[R2-ospf-1]q
[R2]

R3:
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 1
[R3-ospf-1-area-0.0.0.1]network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.1]q
[R3-ospf-1]q
[R3]


结果验证:

在R2上查看结果:
<R2>dis ospf peer brief 

	 OSPF Process 1 with Router ID 2.2.2.2
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             1.1.1.1          Full        
 0.0.0.1          GigabitEthernet0/0/1             3.3.3.3          Full        
 ----------------------------------------------------------------------------
<R2>

验证结果:邻居状态为 “Full”,则标识成功和邻居建立邻接关系