路由1.0-OSPF协议

简介

OSPF (开放最短路径优先)协议,使用链路状态而不是距离矢量进行路径选择。 OSPF传播LSA (链路状态通告),而不是路由表更新。因为只交换 LSA而不交换整个路由表,OSPF网络能以较快的方式收敛。

OSPF同一区域中的每台路由器都有相同的链路状态数据库,(一个包含每台路由器可用接口和可达邻居的列表),也就是说,每台路由器会得知邻居的所有条目,然后自行决定最优路径。【EIGRP是会从邻居处得知最优路径】

一些基本概念

区域概念

  • 骨干区域或区域0:骨干区域的两个主要要求是,骨干区域必须连接所有其他非骨干区域,且此骨干区域必须总是连续的;不允许分割骨干区域。一般来说,骨干区域中没有终端用户。
  • 非骨干区域:此区域的主要功能是连接终端用户 和资源。非骨干区域通常根据功能性或地理位置进行划分。不同非骨干区域之间的流量必须总是经过骨干区域。

在区域内,路由器交换详细的链路状态信息。

从一个区域传输到另一个区域的信息中,仅包含LSDB条目的明细汇总,并不包含源区域的拓扑详情。这些来自另一个区域的汇总LSA会被直接放到路由表中。

(关于LSA后面还有详细说明)

分不同区域的原因

  • 减少路由选择的开销
  • 加速会聚
  • 用单一的网络地区来减弱网络的不稳定性

路由器类型

IR

内部路由器:所有接口都只连接到一个 OSPF区域。 此路由器完全在区域内部。

BR

骨干路由器:至少有一个接口连接到骨干区域。

ABR

区域边界路由器:至少有两个接口分别连接不同区域(包含骨干区域在内)。ABR中包含每个区域的LSDB(拓扑表)信息,为每个区域进行路由计算,且在区域之间通告路由信息。

ASBR

自治系统边界路由器:至少有一个接口连接到一个OSPF区域,且至少有一个接口连接到外部非OSPF区域。(比如外部用的是EIGRP协议)

指定路由器和备份路由器

  • 指定路由器一般称为DR,但是报文中的DR字段是指定路由器的接口IP地址(在选举过程中成为DR的接口)
  • 备份路由器称为BDR,但是报文中的BDR字段是备份路由器的接口IP地址(在选举过程中成为DR的接口)

在DR和BDR出现之前,每一台路由器和他的邻居之间成为完全网状的OSPF邻接关系,这样5台路由器之间将需要形成10个邻接关系,同时将产生25条LSA。而且在Broadcast即广播多址网络中(比如以太网),还存在自己发出的LSA从邻居的邻居发回来,导致网络上产生很多LSA的拷贝,所以基于这种考虑,产生了DR和BDR


DR的工作:

  • 描述这个多路访问网络和该网络上剩下的其他相关路由器
  • 管理这个多路访问网络上的flooding过程
  • 同时为了冗余性,选取一个BDR作为双备份

注意:

  • 只有在广播和非广播的多路访问网络(如以太网和帧中继)的网络分段上才会需要DR/BDR。点到点(串口)不需要
  • 每台路由器都仅与DR/BDR建立完全邻接关系,和其他路由器不需要邻接,只向DR/BDR发链路状态信息。(发送给DR的hello包,组播地址224.0.0.6)

三种表

邻居表

hello包维护邻居关系,IP组播周期性发送。

组播地址:224.0.0.5,224.0.0.6(发给指定路由器DR)

邻居要建立邻接才能共享路由更新(点到点链路不需要)

建立了邻接才能进入拓扑表

拓扑表(LSDB)

LSA更新并维护数据库,数据库即拓扑表

路由表

SPF算法构建SPF树,最优路径进入路由表

LSA基本概念

LSA全称链路状态通告,它包含有在OSPF路由器中共享的链路状态和路由信息。

七类LSA

公有的头部

在这里插入图片描述

options:指明当前LSA的能力

三元组(索引):

  • LS Type
  • Link State ID
  • Advertising Router

作用:

比较LSA数目的多少,确定双方是否完全一样,是否有差别

LS Age(老化时间);序列号 ;校验和来确定判断新旧

序列号越大越新,每一次LSA泛洪,序列号+1
序列号确定 比较校验和,越大越新
校验和确定比较老化时间,LS Age越小越新

1类LSA(Router LSA)

每台路由器为所属的每个区域生成路由器链路通告。路由器链路通告描述了区域中的路由器链路状态, 只在特定区域中泛洪。

在这里插入图片描述

内容:拓扑+路由(即邻居和网段)

传播范围:intra-area(本区域内)不跨越ABR

一些字段:

  • Link State ID:源路由器RID(即路由器本身RID)

  • Advertising Router:通告自己的RID

  • Flags:描述自己的身份

    V(Virtual Link endpoint):虚链路端点
    E(AS boundary router):ASBR
    B(Area border router):ABR


Links:描述自身的拓扑

在这里插入图片描述

  • 1:Point-to-Point:描述邻居的拓扑

    Link ID:邻居路由器的RID
    Link Data:始发路由器接口IP地址
    Link Type:1

  • 2:Transit Network:描述DR接口&DR和自己相连的接口

    Link ID:DR接口的IP地址
    Link Data:始发路由器接口IP地址
    Link Type:2

  • 3:Stub network:表示自身的路由

    Link ID:网络/子网的IP地址
    Link Data:网络/子网的掩码
    Link Type:3

  • 4:Virtual-Link:

    Link ID:邻居路由器的RID
    Link Data:邻居的接口IP地址
    Link Type:4

2类LSA(Network LSA)

DR为广播型网络生成网络链路通告。网络链路通告中描述了一组连接到特定多路访问网络的路由器。网络链路通告在包含该网络的区城中泛洪。

在这里插入图片描述

内容:拓扑+路由。和DR相连的所有网络信息

传播范围:intra-area,不跨越ABR

一些字段:

  • Link State ID:DR的接口IP
  • Advertising Router:通告DR的RID
  • Attached Router:邻居的RID

3类LSA(Summary LSA)

ABR将从一个区域中学习到的信息汇总成汇总链路通告, 并发给另一个区域。汇总并不是默认开启的 。

内容:路由。告知区域内路由器区域外的路由条目(网段)

传播范围:inter-area,跨越ABR

一些字段:

  • 头部+掩码+Metric(只有路由信息)
  • Link State ID:内部的网段
  • Advertising Router:距离最近的ABR的RID

Ad Router 逐跳变,每经过一个ABR都会改变

4类LSA(ASBR summary LSA)

ASBR汇总链路通告负责通知OSPF 域的其余部分,如何到达ASBR。

内容:拓扑。ABR通告如何到达ASBR

传播范围:跨区域

一些字段:

  • Link State ID:ASBR的RID
  • Advertising Router:距离最近的ABR的RID

Ad Router 逐跳变,每经过一个ABR都会改变

5类LSA(AS External LSA)

自治系统外部链路通告由 ASBR生成, 描述了到达自治系统外部目的网络的路由。

内容:路由

传播范围:跨区域

一些字段:

  • Link State ID:外部网段
  • Advertising Router:ASBR的RID
  • Type:E1,E2
  • Tag:重分布的时候通过route-map打tag

只有E和N类型的LSA可以打tag;Ad Router全称不变

6类LSA

组播OSPF应用中 使用的专用LSA。

7类LSA(NSSA external LSA)

内容:路由。在NSSA区域中描述引入的外部路由

区域类型

Stub(末梢)

  • 只允许1,2,3号LSA进入
  • 过滤5号LSA
  • 自动产生默认路由

Totally stub(完全末梢)Cisco独有

  • 只允许1,2号LSA进入
  • 禁止3,5号LSA
  • 自动产生默认路由

NSSA

  • 禁止4,5号LSA
  • 外部自治系统的路由信息从ASBR以7号LSA形式进入NSSA区域
  • 7号LSA从NSSA经过ASBR去往其他区域会转化为5号LSA
  • default-information originate产生默认路由

Totally NSSA(Cisco独有)

  • 过滤3,5号LSA
  • 外部自治系统的路由信息从ASBR以7号LSA形式进入NSSA区域
  • 自动产生默认路由

五种路由协议包

OSPF使用5种类型的路由协议包,共享通用的协议头部(OSPF Header)。每个OSPF包被直接封装在IP头部中。OSPF的IP协议号是89

共享的同一头部

在这里插入图片描述

Message Type:指明这个数据包是五种类型中的哪一种

Source OSPF Router:这里是路由器的RID(router-id)

Hello包

在这里插入图片描述
作用:

  • 发现邻居,维持邻居关系(保活)
  • 保证邻居能够双向通信(参数同步)
  • 选举DR/BDR

option字段:当前Hello包具有哪些能力(相应位置1)

在这里插入图片描述

报文各字段含义:

在这里插入图片描述

DBD(数据库描述)包

在这里插入图片描述
作用:

  • 描述LSDB(拓扑表),使路由器之间可以比对数据库是否同步
  • 选举DR/BDR
  • 交换数据库的摘要信息
摘要:LSA头部

通过比较LSA头部就可以比较LSA的数目和新旧

报文各字段含义:

  • OSPF Header:通用头部,前面有描述,这里不做赘述

  • OSPF DB Description

    • Interface MTU:交换数据的每个包的最大容量,按1500将数据库切片成数据包发送,每个数据包大小为1500
    • option:和前面大同小异
    • DB Description 置位:

      R
      MS:置1表示为Master
      I,M:组合来保证数据包的顺序

      00:不是第一个包,后面也没包了 即最后一个包
      01:不是第一个包,后面还有 即若干数据包的中间一个包
      10:是第一个包,后面没有(说明数据库较小)
      11:是第一个,后面还有 即第一个包,(说明数据库被拆分)
      

    • DD Seq:这个包的序号。OSPF基于IP而不是TCP,IP协议不保证有序,这个序列号保证了该协议的可靠

    I,M置位和DD Seq,三者确保了数据包的有序性

  • LSA Type(前面有各种类型的具体描述)

LSR(链路状态请求)包

在这里插入图片描述

作用:

  • 在数据库同步过程中使用。
  • 路由器会发送LSR, 请求其OSPF邻居发送本地缺失LSA(三元组确定)的最新版本。(关于三元组,前面有描述)

LSU(链路状态更新)包

在这里插入图片描述

作用:

  • 泛洪LSA, 以及发送对LSR包的LSA响应。

    LSA响应只会发给之前以LSR包形式请求LSA的直连邻居。

  • 进行泛洪时,邻居路由器负责把收到的LSA信息(这个信息是在收到的LSR中)重新封装在新的LSU包中。

注意:这个包里放着具体的LSA,不是只有三元组了

LSAck(链路状态确认)包

在这里插入图片描述

作用:

  • 负责进行可靠的LSA泛洪。(OSPF基于IP,不保证可靠性;如果是基于TCP,TCP的ack就能达到该目的)
  • 路由器必须明确确认每个收到的LSA, 可以用 一个LSAck包确认多个LSA。

邻接关系的建立(7种状态)

  1. Down:没有给邻居发任何报文,也没有收到任何报文。

    写network命令,发hello包(组播形式)

  2. Init:当路由器从邻居收到了一个Hello包,但是没有在邻居的Hello包中看到自己的路由器ID时, 它将转为init状态。

    在此状态中,路由器将记录所有邻居的路由器ID, 并开始将它们包含在发给邻居的Hello包中。

  3. Two-way:邻居收到了一个hello,这个hello中有我的RID,表示邻居已经收到了我的hello报文,说明之前曾交互过hello报文,此时一个双向通信已经建立

    如果是多路访问链路,进行DR/BDR的选举

    DR/BDR选举规则

    a. 比较优先级(接口优先级为0表示放弃选举,默认为1,范围0-255)
    b. 优先级相同,比较RID,越大越优先
    注意:OSPF为非抢占性,修改优先级后必须重启OSPF进程(clear ip ospf process)

  4. Exstart:确定谁发DBD。选举主从路由器,并且确认邻接建立的初始序列号。当路由器收到初始的DBD包时, 它把发出这个DBD包的邻居状态转为ExStart

    一开始发送DBD包为空,没有任何LSA报头信息,双方宣告自己为主路由器。交互过程中RID高的为主路由器,较低为从路由器,从路由器回复一个MS设置为0的DBD包,该包是第一个携带LSA摘要信息的数据包

    MTU不匹配的邻居,会保持在exstart状态(邻居MTU较大),
    MTU较小的会重复init态到exchange态
    
  5. Exchange:主路由器带动从路由器交互描述整个链路状态的 DBD 报文。

  6. Loading:根据交互的DBD 报文可以得知双方需要的LSA 信息,根据自己没有而邻居有的LSA向邻居请求。单播发LSR

  7. Full:收到邻居的LSU回复。链路状态请求表为空,双方邻接关系建立完成

邻接关系的建立条件

  1. 报文头部中匹配的字段

    a. 版本一致

    V2:IPv4
    V3:IPv6
    

    b. RID不能冲突

    如果发生冲突,会因为无法选举出主从路由器而停留在Exstart/Exchange状态
    

    c. 一条链路的两端必须在同一个区域

    d. 区域类型和认证类型要一致


  2. Hello 包中要匹配的字段

    a. 掩码一致

    b. hello时间的dead time需要一致

    失效计时器值。
    当此计时器过期时, 路由器将终结邻居关系。 
    每次路由器从特定邻居收到一个OSPFHello包时, 它都会重置失效计时器值。
    

    c. option中的E位、N位一致

    d. NBMA中要对邻居指peer,双方要互指

    e. 建立邻居的接口不能是静默接口(silent- interface)

    f. Router priority字段

    为0:该路由器放弃选举DR/BDR
    选举过程必须至少一个DR,网络中至少有一个路由器接口的优先级不为0
    

  3. DBD报文中要匹配的字段

    MTU:
    如果不匹配,就会停在exstart状态,这个状态双方交互first DBD选择主从,如果开启MTU检测,只有一致才可以选出主从


整个网络路由过程

  1. 建立邻居邻接关系:OSPF路由器必须与其邻居建立邻接关系之后才能共享信息。OSPF路由器从所有启用OSPF的接口发送Hello包,用来确定这些链路上是否有OSPF邻居。 如果发现了邻居,OSPF路由器会尝试与该邻居建立邻接关系。
  2. 交换链路状态通告:邻接关系建立后, 路由器交换LSA (链路状态通告)。LSA包含每条直连链路的状态和开销。 路由器将LSA泛洪给邻接的邻居。 接收到LSA的邻接邻居立即将LSA泛洪给其他的直连邻居, 直到区域中的所有路由器都有相同的LSA为止。
  3. 构建拓扑表:收到LSA之后,OSPF路由器会基千收到的LSA构建LSDB (拓扑表)。此数据库中最终会拥有网络拓扑的所有信息。 对于区域中所有路由器,LSDB中一定都要有相同的信息。
  4. 执行SPF算法:路由器执行SPF算法。SPF算法构建SPF树。
  5. 构建拓扑表:路由器把SPF树中的最优路径放入到路由表中, 并基于路由表中的条目作出路由决策。

接口网络类型

  1. Point-to-point(HDLC/PPP):组播地址224.0.0.5,hello发给所有路由器动态检测邻居,直接邻接(只有两台设备),不要DR/BDR
  2. Broadcast(Ethernet):有DR,发给DR的组播地址224.0.0.6
  3. NBMA(FR、ATM等):非广播的多路访问型网络
  4. Loopback:默认情况下,配置在环回口的任意子网通告为/32的主机路由。ip ospf network point-to-point命令可改为点到点
  5. Virtual-Link:虚链路

路由认证

  1. NULL

  2. 明文认证

  3. 密文认证:MD5

  4. 区域认证:全接口开认证

  5. 接口认证:

    a. 接口配置密钥
    b. 接口、区域进程开启认证
    c. 虚链路认证(配置在进程虚链路指令后,配置原理同上)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值