NE阶段内容



RIP的缺陷

  • 最大跳数限制了网络规模
  • 以跳数为度量无法准确判断最优路径
  • 路由更新发送完整路由表消耗网络带宽
  • 收敛速度慢
  • 协议会产生路由自环

定义

  • 开放式最短路径优先,基于链路状态特征
  • 工作在IP层,协议号89

OSPF初始化流程

1.建立邻居和邻接关系

  • 发送hello报文发现和建立邻居关系,组播地址224.0.0.5
    • 接口UP
    • 双方接口IP地址在同一网段
    • 双方接口在同一区域
  • 选举DR/BDR,建立邻接关系
    • DR/BDR选举
      • 选举原因广播网络 中使路由信息交换更加高速有序
      • 选举范围每条广播链路上都需要选举出一个DR和BDR
      • 选举规则
        • 优先级数字大的优先 默认优先级都是1
        • Router-id大的优先
      • Router-id
        • 定义Rid,标识路由器身份
        • 产生方法
          • 手动配置一个IPv4地址格式作为Rid
          • 自动选举
            • 1.在所有环回口中选举IP地址最大的作为Rid
            • 2.在所有物理接口中选举IP地址最大的作为Rid
        • 建议手动配置一个本地环回口的IP地址作为Rid
    • 关系状态
      • DRother与DR建立邻接关系。DRother(其他路由器既不是DR,又不是BDR)
      • DRother与BDR建立邻接关系
      • DR与BDR建立邻接关系
      • 两个DRother之间保持邻居关系

2.邻接路由之间交换链路状态信息,实现区域内链路状态数据库同步

  • 相关概念
    • 链路状态通告
      • LSA
      • 用来描述路由器的接口、路由条目的相关信息
    • 链路状态数据库
      • LSDB
      • 存储本地所有LSA
  • 工作流程
    • 1.向邻接路由发送DD(数据库描述)报文,通告本地LSDB中所有LSA的摘要信息
    • 2.收到DD后,与本地LSDB对比,向对方发送LSR(链路状态请求) 报文,请求本地所需的LSA的完整信息
    • 3.收到LSR后,把对方所需的LSA的完整信息打包为一条LSU(链路状态更新)报文,发送至对方
    • 4.收到LSU后,向对方回复LSAck报文,进行确认

3.每台路由器根据本机链路状态数据库,计算到达每个母的网段的最优路由,写入路由器

OSPF报文类型

  • Hello报文
  • DD报文 数据库描述报文,用于描述本地LSDB所有的LSA的摘要
  • LSR报文 链路状态请求
  • LSU报文 链路状态更新
  • LSAck报文 链路状态确认

OSPF分区域管理

分区域的原因

  • 加快收敛速度
  • 把网络故障隔离在区域内部

路由器角色

  • IR 内部路由器,所有接口都处于同一个区域
  • ABR 区域边界路由器,连接不同区域的路由器
  • ASBR 自治系统边界路由器,连接外部自治系统的路由器

区域类型

  • 骨干区域
    • 只能有一个骨干区域,一般是区域0
    • 骨干区域必须是连续的
  • 非骨干区域
    • 非骨干区域必须连接到骨干区域
    • 为了防止区域间形成路由环路

常用命令

[h3c]ospf 'process id' 'router-id' 'rid' //开启OSPF进程,指定Router-id,进入OSPF协议视图

[h3c-ospf-1]area 'area id' //进入区域视图

[h3c-ospf-1-area 0.0.0.0]network 'ip address' 'wild -mask' //宣告网段

  • ‘wlid-mask’ 掩码通配符,0对应的部分需要匹配一致,1对应的部分不检查

[h3c-ospf-1]silent-interface 'interface id' //配置静默接口

[h3c-GigabitEthernet 0/0] ospf dr-pririty 'priotity' //修改OSPF接口优先级

[h3c-GigabitEthernet 0/0]ospf cost 'cost' //修改接口OSPF开销

<h3c> reset ospf 'process id' process //重置OSPF进程

[h3c]display ospf peer //查看OSPF邻居关系

  • FULL:邻接关系 2-Way:邻居关系

[h3c]display ospf lsdb //查看OSPF链路状态数据库

[h3c]display ospf routing //查看OSPF路由

SE阶段内容



OSPF基本原理

OSPF的三张表

  • 邻居表 记录邻居状态和关系
  • 拓扑表 链路状态数据库
  • 路由表 记录由SPF算法计算的路由

OSPF路由器类型

  • 区域内路由器 IR,所有接口都在同一区域
  • 骨干路由器 BR,有接口在骨干区域
  • 区域边界路由器 ABR,连接骨干区域和非骨干区域
  • 自治系统边界路由器 ASBR,连接外部自治系统,并引入外部路由

OSPF网络类型

定义
  • 对于不同的二层链路类型的网段,OSPF会生成不同的网络类型
  • 不同的网络类型,DR/BDR选举,LSA细节,协议报文发送形式等会有所不同
类型

Broadcast

  • 广播网络,以太网默认的网络类型
  • 组播发送协议报文:224.0.0.5所有运行OSPF的接口会监听 224.0.0.6所有DR/BDR的接口会监听
  • 需要选举DR/BDR
  • hello time 10秒
  • dead-time 40秒

NBMA

  • 非广播多点可达,帧中继默认的网络类型
  • 单播发送协议报文,需要手动指定邻居
  • 需要选举DR/BDR
  • hello-time 30秒
  • dead-time 120秒

P2MP

  • 点到多点网络,由其他网络类型手动更改
  • 模拟组播发送协议报文,可以自动发现邻居
  • 不选举DR/BDR
  • hello-time 30秒
  • dead-time 120秒

P2P

  • 点到点网络,PPP默认的网络类型
  • 组播发送协议报文
  • 不选举DR/BDR
  • hello-time 10秒
  • dead-time 40秒

OSFP邻接建立过程

Down 关闭状态(稳定状态)

Init 单方发现状态

收到了对方的Hello报文,但没有收到对方的hello确认报文

Attempt 只会出现NBMA网络中

发出了Hello包,但未收到对方的hello包

2-way 邻居状态(稳定状态)

邻居双方互相发现,并确认了DR/BDR角色:

  • 当选举完毕,就算出现一台更高优先级的路由器,也不会替换成为新的DR/BDR
  • 需要原DR/BDR失效,或者重置OSPF进程才会成为新的DR/BDR

2-way的前提Router-id无冲突 修改Router-id需要重置OSPF进程使生效

掩码长度一致区域ID一致验证密码一致hello-time一致dead-time一致

Exstart 交换开始状态

发送第一个DD报文: 不转发LSDB摘要、仅用于确认LSA传递的主从

DD报文置位符:

I Init位、置位则表示此报文是第一个DD报文

M more位、置位则表示还有后续DD报文

MS master位、置位则表示本端为主

Exchange 交换状态、发送后续DD报文,用于通告LSDB摘要

Loading 读取状态、进行LSA的请求、加入和确认

Full接状态(稳定状态)、两端LSDB同步

Full的前提:

两端网络类型一致 否则邻居状态FULL,但无法学习路由

两端MTU一致 否则邻居状态卡在Exstart、Exchange

LSDB更新

更新流程

I.收到LSA更新后,在本地LSDB中查询此LSA,未查到则加入LSDB

II.查到此LSA,则把收到的LSA和本地LSA进行序列号对比

III.如本地LSA序列号大,则丢弃更新,否则加入LSDB

OSPF开销计算

参考带宽

  • 计算开销的基准带宽值
  • 默认参考带宽是100M
  • 建议把网络中最高的链路带宽设置为参考带宽

计算方法

链路带宽大于等于参考带宽 cost=1

链路带宽小于参考带宽 cost=参考带宽、链路带宽(MB)

常用命令

1
2
3
4
5
6
7
8
9
10
11
[h3c]router-id 'router-id'	#配置全局Router-id的优先级更高,协议内指定router-id的优先级更高
[h3c]display ospf interface #查看OSPF接口信息,网络类型通过此命令查看
[h3c]display ospf routing #查看OSPF路由信息,可以查看路由所属区域和发布者
[h3c]display ospf statistics error #查看OSPF报错信息
[h3c]display ospf lsdb #查看本地LSDB汇总信息
[h3c-GigabitEthernet0/0]ospf network-type 'broadcast/nmba/p2mp/p2p' #配置接口网络类型
[h3c-GigabitEthernet0/0]ospf timer hello 'seconds' #配置接口HELLO时间
[h3c-GigabitEthernet0/0]ospf timer dead 'seconds' #配置接口DEAD时间
[h3c-ospf-1]Bandwidth-reference 'value' #配置参考带宽
[h3c-ospf-1]default-route-advertise #将已经存在的默认路由引入到OSPF
[h3c-ospf-1]default-route-adverise always #自动产生一条默认路由LSA下发到OSPF