HCIA Datacom - ospf基本

HCIA Datacom - ospf基本

  • 动态路由因协议其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议中,OSPF(open shortest path first,开放式最短路径优先)协议是使用场景非常广泛的动态路由协议之一。
  • OSPF在RFC2328中定义,是一种基于链路状态算法的路由协议

OSPF协议概述

  • 为什么需要动态路由协议
    • 静态路由是由工程师手动配置和维护的路由条目,命令行简单明确,适用于小型或稳定的网络
  • 静态路由有以下问题:
    • 无法适应规模及较大的网络
    • 无法动态响应网络变化

动态路由协议的分类

  • 按工作区域分类

    • IGP(Interior Gateway Protocols,内部网关协议)
      • RIP
      • OSPF
      • IS-IS
    • EGP(Exterior Gateway Protocols,外部网关协议)
      • BGP
  • 按工作机制及算法分类

    • Distance Vector Routing Protocols,距离矢量路由协议)
      • RIP
    • (Link-State Routing Protocols,链路状态路由协议)
      • OSPF
      • IS-IS

距离矢量路由协议

  • 运行距离矢量路由协议的路由器周期性(30s)的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中
  • 对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这就是距离矢量算法的本质

链路状态路由协议 - LSA泛洪

  • 与距离矢量路由协议不同,链路状态路由协议通告的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)

链路状态路由协议 - LSDB组建

  • 每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑
  • 路由器将LSA存在LSDB中
  • LSDB汇总了网络中路由器对于自己接口的描述
  • LSDB包含全网拓扑的描述

链路状态路由协议 - SPF计算

  • 每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。

链路状态路由协议 - 路由表生成

  • 最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing table)

链路状态路由协议总结

1、建立邻居关系

2、链路状态信息

3、路径计算

4、生成路由表项

OSPF简介

  • OSPF是典型的链路状态路由协议,目前业内使用非常广泛的IGP协议之一
  • 针对IPv4协议使用的是OSPF Version 2;针对IPv6协议使用的是OSPF version 3.
  • 运行OSPF路由器之间交互的是LS(Link state,链路状态)信息,而不是直接交互路由。LS信息是OSPF能够正常进行拓扑及路由计算的关键信息
  • OSPF路由器将网络中的LS信息收集起来,存储在LSDB中。路由器都清楚区域内的网络拓扑结构,有助于路由器计算无环路径
  • 每台OSPF路由器都采用SPF算法计算达到 目的地的最短路径。路由器依据这些路径形成路由加载到路由表中
  • OSPF支持VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇总
  • 多区域的设计使得OSPF能够支持更大规模的网络

OSPF在园区网络中的应用

  • 在核心交换机与汇聚交换机上运行OSPF,实现园区网络内的路由可达

  • OSPF基础术语:区域

    • OSPF Area用于标识一个4OSPF区域
    • 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来识别
  • OSPF基本术语:Router-ID

    • Router -ID(router identifier,路由器标识符),用于在一个OSPF域中唯一标识一台路由器
    • Router-ID的设定可以通过手工配置的方式,或使用系统自动配置(1、loopback最大值;2、物理接口最大值)的方式
  • OSPF基本术语:度量值

    • OSPF使用开销Cost作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口cost值=100 Mbit/s / 接口带宽。其中100Mbit/s为OSPF指定的缺省参考值,该值是可配置的
    • 笼统的说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加
    • OSPF不同接口因其带宽不同,有不同的Cost

OSPF协议报文类型

报文名称 报文功能
Hello 周期性发送,用来发现和维护OSPF邻居关系
Database Description 描述本地LSDB的摘要信息,用于两台设备进行数据库同步
Link State Request 用于向对方请求所需要的LSA。设备只有在OSPF邻居双方成功交换DD报文后,才会向对方发出LSR报文
Link State Update 用于向对方发送去所需要的LSA
Link State ACK 用来对收到的LSA进行确认

OSPF三大表项 - 邻居表

  • OSPF有三张重要的表项,OSPF邻居表、LSDB表和OSPF路由表。对于OSPF的邻居表,需要了解
    • OSPF在传递链路状态信息之前,需要先建立OSFP邻居表
    • OSPF的邻居关系通过交互Hello报文建立
    • OSPF邻居表显示了OSPF路由器之间的邻居关系,使用display ospf peer查看

OSPF三大表项 - LSDB表

  • 对于OSPF的LSDB表,需要了解
    • LSDB会保存自己产生的及从邻居收到的LSA信息
    • Type标识LSA的类型,AdvRouter标识发送LSA的路由器
    • 使用命令display ospf lasb查看LSDB表

OSPF三大表项 - OSPF路由表

  • OSPF路由表和路由器路由表是两张不同的表项
  • OSPF路由表包含Destination、Cost和NextHop等指导转发的信息
  • 使用命令display ospf routing查看OSPF路由表

OSPF协议工作原理

OSPF路由器之间的关系

  • 关于OSPF路由器之间的关系有两个重要的概念,邻居关系和邻接关系
  • 考虑一种简单的拓扑,两台路由器直连。在双方互联接口上激活OSPF,路由器开始发送及侦听Hello报文。在通过Hello报文发现彼此后,这两台路由器便形成了邻居关系
  • 邻居关系的建立只是一个开始,后续会进行一系列的报文交互,例如前文提到的DD、LSR、LSU和LS ACk等。当两台路由器LSDB同步完成,并开始独立计算路由时,这两台路由器形成了邻接关系

初识OSPF邻接关系建立过程

  • OSPF完成邻接关系的建立有四个步骤,建立邻居关系、协商主/从、交互LSDB信息,同步LSDB

OSPF邻接关系建立流程

  • R1-(Hello报文) - R2(init)- (Hello报文) - R1(2-way) - (Hello报文) - R2(2-way)
R1 R2
我是1.1.1.1,我还不知道链路上有谁 Hello报文 Init(发现1.1.1.1,将他添加到我的邻居表。邻居表中R1状态为Init
2-way(发现了R2,2.2.2.2,将他添加到我的邻居表,由于R2发现了我,所以邻居表中R2的状态为2-way Hello报文 我是2.2.2.2,我发现了邻居1.1.1.1
我是1.1.1.1,我发现了邻居2.2.2.2 Hello报文 2-way(R1发现了我,我在邻居表中将1.1.1.1的状态切换到2-way)
EX-start(Exchange Start)
DD(内容为空,序列号为X)我是Master,我的Router-ID是1.1.1.1 Ex-start
Exchange(以Router ID更大的R2为主) (内容为空,序列号为Y)我是Master,我的Router-ID是2.2.2.2
DD(序列号为Y)这是我的LSDB中的LSA摘要信息 Exchange
DD(序列号Y+递增)这是我的LSDB中的LAS摘要信息
Loading
LSR我要请求xx LSA的完整信息 Loading
LSU这是请求的xx LSA的完整信息
LA ACK确认收到LSU
LSR 我要请求yy LSA的完整信息
Full Full

OSPF网络类型

  • OSPF网络类型是一个非常重要的接口变量,影响OSPF在接口上的操作,例如采用什么方式发送OSPF协议报文,以及是否需要选举DR、BDR等
  • 接口默认的OSPF网络类型取决于接口所使用的数据链路层封装
  • OSPF有四种网络类型:Broadcast、NBMA、P2MP、P2P

DR与BDR的背景

  • MA(multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网(Ethernet)是一种典型的广播型多路访问网络
  • 在MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会导致网络中存在过多的OSPF邻接关系,增加设备负担,也增加了网络中泛洪的OSPF报文数量
  • 当拓扑出现变更,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的消耗

DR与BDR

  • 为优化MA网络中OSPF邻接关系,OSPF制定了三种OSPF路由器身份,DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备用指定路由器)和DRother路由器
  • 只允许DR、BDR与其他OSPF路由器建立邻接关系。DRother之间不会建立全毗邻的OSPF邻接关系,双方停滞在2-way状态
  • BDR会监控DR的状态,并在当前DR发生故障时接替其角色

OSPF域域单区域

  • OSPF(Domain)一系列使用相同策略的连续OSPF网络设备所构成的网络
  • OSPF路由器在同一区域(AREA)内网络中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步
  • 如果OSPF域内仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题:
    • LSDB越来越庞大,同时导致OSPF路由表规模增加。路由器资源消耗增多,设备性能下降,影响数据转发
    • 基于庞大的LSDB进行路由计算变得困难
    • 当网络拓扑变更时,LSA全域泛洪和全网SPF重计算带来巨大负担

OSPF多区域

  • OSPF引入区域(Area)的概念,将一个OSPF域划分为多个区域,可以使OSPF支撑更大的规模组网
  • OSPF多区域的设计减小了LSA泛洪的范围,有效的把拓扑变化的影响控制在区域内,达到了网络优化的目的
  • 在区域边界可以做路由汇总,减小了路由表规模
  • 多区域提高了网络扩展性,有利于组建大规模网络

OSPF路由器类型

  • OSPF路由器根据其位置或功能不同,有这样几种类型:
    • 区域内路由器(Internal router)
    • 区域边界路由器ABR(Area Border Router)
    • 骨干路由器(Backbone Router)
    • 自治系统边界路由器ASBR(AS Boundary Router)

OSPF单区域&多区域典型组网

  • 中小型企业网(单区域)
  • 大型企业网(多区域)

OSPF协议典型配置

  • OSPF基础配置命令

    • 创建并运行OSPF进程
      • ospf [process-id | router-id router-id]

    process-id用于标识OSPF进程,默认进程号为1.OSPF支持多进程,在同一台设备上可以运行多个不同的OSPF进程,他们之间互不影响,彼此独立。router-id用于手工指定设备的ID号。如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号

    • 创建并进入OSPF区域
      • area area-id

    area命令用来创建OSPF区域,并进入ospf区域

    area-id可以是十进制整数或点分十进制格式。采取整数形式时,取值范围时0 ~ 42949672965

    • 指定运行OSPF的接口
      • network network-address wildcard-mask

    network命令用来指定运行ospf协议的接口和接口所属的区域。network-address为接口所在的网段地址。wildcard-mask为IP地址的反码,相当于将ip地址的掩码反转,例如0.0.0.222表示延安长度为24bit

    • 配置OSPF接口开销

      • ospf cost cost

        ospf cost命令用来配置接口上运行ospf协议所需的开销。缺省情况下,ospf会根据该接口的带宽自动计算其开销值cost取值范围时1~65535

    • 设置OSPF带宽参考值

      • bandwidth-reference value

    bandwith-reference命令用来设置公式计算接口开销所依据的带宽参考值。value取值范围时1~2147483643,单位是Mbit/s,缺省值是100Mbit/s

    • 设置接口在选举DR时的优先级

      • ospf dr-priority priority

      ospf dr-prioriyt命令用来设置接口在选举DR时的优先级。priority值越大,优先级越高,取值范围时0~255