HCIP:一次性搞定OSPF基础

一, OSPF基础

1. 技术背景(RIP中存在的问题)

  • RIP中存在最大跳数为15的限制,不能适应大规模组网
  • 周期性发送全部路由信息,占用大量的宽带资源
  • 路由收敛速度慢
  • 以跳数最为度量值
  • 存在路由环路可能性
  • 每隔30秒更新

OSPF协议特点

  • 没有跳数限制
  • 使用组播更新变化的路由和网络信息
  • 路由收敛快
  • 以cost作为度量值
  • 采用SPF算法有效避免环路
  • 每隔30分钟更新
  • 在互联网上大量使用,是运用最广泛的路由协议

OSPF传递的是拓扑信息和路由信息,RIP传递的是路由表

OSPF三张表

  • 邻居表:记录邻居状态和关系
  • 拓扑表:链路状态数据库(LSDB)
  • OSPF路由表:记录由SPF算法计算的路由,存放在OSPF路由表中

OSPF数据表

OSPF报文直接封装在IP报文中,协议号为89
请添加图片描述

头部数据包内容:

请添加图片描述

  • 版本(version):对于OSPFv2,该字段值恒为2
  • 类型(type):该OSPF报文的类型,该字段的值与报文类型的对应关系为:1-hello;2-DD;3-LSR;4-LSU;5-LSAck;
  • 报文长度(packet length):整个OSPF报文的长度(字节数)
  • 路由器ID(router identication):路由器的OSPF router-id
  • 区域ID(area identication):该报文所属的区域ID,这是一个32bit的数值
  • 校验和(checksum):用于校验报文有效性的字段
  • 认证类型(authentication type):指示该报文使用的认证类型
  • 认证数据(authentication data):用于报文认证的内容

hello

hello包携带自己的router id、被发现的邻居标识,用来周期保活的,发现,建立邻居关系
请添加图片描述

  • 网络掩码(network mask):一旦路由器的某个接口激活了ospf,该接口立即开始发送hello报文,该字段填充的是该接口的网络掩码。两台ospf路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码,否则影响邻居关系建立
  • hello间隔(hello interval):接口周期性发送hello报文的时间间隔(单位为s),两台直连路由器要建立ospf邻居关系,需要确保接口的hello interval相同,否则邻居关系无法正常建立。
  • 可选项(options):该字段一共8bit,每个比特位都用于指示该路由器的某个特定的ospf特性。options字段中某些比特位会被检查,这有可能会影响到ospf邻接关系建立(特殊区域标记)
  • 路由器失效时间(router dead interval):在邻居路由器无效前,需要等待收到对方hello报文的时间(单位为s)。两台直连路由器要建立ospf邻居关系,需要确保双方直连接口的router dead interval相同,否则邻居关系无法正常建立,缺省情况下,ospf路由器接口的router dead interval为该接口的hello interval的4倍。
  • 指定路由器(designated router):网络中DR的接口IP地址,如果该字段为0.0.0.0,则表示没有DR,或者DR尚未选举出来。
  • 备份指定路由器(designated router):网络中BDR的接口IP地址,如果该字段为0.0.0.0,则表示网络中没有BDR,或者BDR尚未选举出来。
  • 邻居(neighbor):在直连链路上发现的有效邻居,在此处填充的是邻居的router id,如果发现多个邻居,则包含多个邻居字段。

DBD(数据库描述报文)

仅包含LSA摘要
请添加图片描述

  • 接口最大传输单元(interface maximum transmission unit):接口的MTU。
  • 可选项(options):路由器支持的ospf可选项。
  • DBD报文置位符:
    I:init位,I=1,这是发给对方的第一个DBD报文,是空报文
    M:more位。M=1表示后续还有DBD报文
    MS:master位,MS=1,表示本端为主
  • DBD序列号(DD sequence number):DBD报文的序列号,在DD报文交互的过程中,DD序列号被逐次加1,用于确保DD报文传输的有序和可靠性,值得注意的是,DD序列号必须由master路由器来决定,而slave路由器只能使用master路由器发送的DD序列号来发送自己的DD报文,主从角色根据RID大小决定,大为主。
    请添加图片描述
  • LSA头部(LSA header):当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在此处,一个DD报文可能包含一条或多条LSA的头部。

LSR

请求自己没有的或自己更新的链路状态详情信息
请添加图片描述
链路状态类型,链路状态id,通告路由器——LSA三元组——通过这三个参数可以唯一的标识出一条LSA

LSU

链路状态更新信息
请添加图片描述
一个LSU报文可以包含多个LSA
当路由器感知到网络发生变化时,也可以触发LSU报文的洪泛,以便将该变化通知给网络中的其他ospf路由器。
在MA网络中,非DR,BDR路由器向224.0.0.6这个组播地址发送LSU报文,而DR及BDR会侦听这个组播地址,DR在接收LSU报文后向224.0.0.5发送LSU报文,从而将更新信息洪泛到整个ospf区域,所有的ospf路由器都会侦听224.0.0.5这个组播地址。
总结:
224.0.0.5所有运行ospf的接口会监听
224.0.0.6所有DR/BDR的接口会监听

LSack

对LSU的确认
请添加图片描述
报文中包含着路由器所确认的LSA的头部(每个LSA头部的长度为20byte)

OSPF工作过程

邻居:通过hello相互认识——2-way
邻接:邻居关系建立好后,进行一系列报文交互,最终形成完全邻接关系——full

1. 确认可达性,建立邻居

请添加图片描述
请添加图片描述

  • router id:标明的是路由器身份
  • 手工配置:ipv4地址格式
  • 自动选举:
    有环回口选环回口:IP地址大的优先
    无环回口选物理口:IP地址大的优先
2-way前,确认DR/BDR
  • 选举原因:广播网络中使用路由信息交换更加高速有序,可以降低需要维护的邻接关系数量
    请添加图片描述
  • 选举范围:每个网段都要选出一个DR和BDR(0-255)
  • 选举规则:
  1. 优先级大的优先,默认优先级是1
  2. router-id大的优先

注:DR/BDR的选举没有抢占性

  • 关系状态:
    DRother与DR建立邻接关系
    DRother与BDR建立邻接关系
    DR/BDR建立邻接关系
    DRother之间保持邻居关系

2. 摘要同步,开始建立邻接关系

  1. 向邻居发送DBD报文,此时报文中包含了LSA的摘要信息;
  2. 收到DBD后,与本地LSDB对比,向对方发送LSR,请求对方将自己没有的或者更新的LSA的完整信息发送过来;
  3. 对方需要的LSA的完整信息打包成一条LSU,发送给对方;
  4. 对方收到LSU后,回复LSack报文,确认自己已经收到LSU

邻居建立过程:
请添加图片描述

请添加图片描述

3. 完整信息同步,完全邻接关系的建立

完全邻接关系建立,LSDB表与OSPF路由表的形成

OSPF状态机

请添加图片描述

  • down:关闭状态(稳定状态),这种情况处于手动指定邻居的情况下,发送hello包后进入下一个状态
  • init:初始化状态,收到对方的hello报文(第二个hello),但没有收到对方的hello确认报文(第三个hello包)
  • attempt:一般不会出现,只出现在NBMA网络中,发出hello。但收不到对方的hello包
  • 2-way(稳定状态):双方互相发现,邻居状态稳定,并确认了DR/BDR的角色:当选举完毕后,就算出现一台优先级更高的路由器,也不会替换成新的DR/BDR;需要原DR/BDR失效,或者重置OSPF进程才会成为新的DR/BDR;
  • exstart:交换开始状态;发送第一个DD报文,但不发送LSA摘要,仅用于确定LSDB协商主从,router-id大的成为master
  • exchange:交换状态;发送后续DD报文,用于通告LSDB摘要
  • loading:读取状态,进行LSA的请求,加入和确认
  • full:邻接状态(稳定状态),两端同步LSDB;

2-way的前提:

  • router-id无冲突,修改router-id需要重置ospf进程使生效
  • 掩码长度一致(MA网络中)
  • 区域id一致
  • 验证密码一致;
  • hello-time一致
  • dead-time一致
  • 特殊区域类型一致;

full前提:

  • 两端MTU一致,否则可能卡在exstart/exchange状态

能够计算路由的前提:

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

LSDB的更新

请添加图片描述

二, OSPF的区域划分

区域产生背景

  • OSPF路由器在同一区域中洪泛LSA,为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。
  • 如果OSPF域仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题

分区好处

  • 减少LSA洪泛范围
  • 减小路由表规模
  • 提高网络扩展性,有利于组建大规模的网络;

区域类型

请添加图片描述
后边还有特殊区域,…
邻居关系过多缺点:

  • 大量产生hello包,消耗CPU性能
  • 产生重复路由通告,消耗CPU性能
  • 产生任何一台路由器的路由变化都会导致多次传递,浪费带宽资源

多区互连原则:

  • 非骨干区域与非骨干区域不能直接相连;
  • 所有非骨干区域必须与骨干区域相连;
  • 此设计是为了防止区域间环路

OSPF的路由器类型

请添加图片描述

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

三, LSA

LSA是OSPF的一个核心内容,如果没有LSA,OSPF是无法描述网络的拓扑结构及网段信息的,也无法传递路由信息,更无法正常工作。

LSA头部

在OSPFV2中,需要我们掌握的主要有6种:
请添加图片描述
LSA头部一共20byte,每个字段的含义如下:

  • 链路状态老化时间(link-state age):指示该条LSA的老化时间,即它存在了多长时间,单位为秒;
    1800s周期归0,触发当下归0
    max age——3600s——当一条LSA的老化时间达到最大老化时间时,将被认定失效,将从本地的LSDB中删掉
  • 可选项(options):每一个比特位都对应了OSPF所支持的某种特性,和hello包一样,包含特殊区域标记
  • 链路状态类型(link-state type):指示本条LSA的类型,每种LSA用于描述OSPF网络的某个部分,所有LSA类型都定义了相应的类型编号
  • 链路状态id(link-state id):LSA的标识。不同的LSA类型,对该字段的定义是不同的
  • 通告路由器(advertising router):始发路由器,产生该LSA的路由器的router-id
  • 链路状态序列号(link-state sequence number):该LSA的序列号,该字段用于判断LSA的新旧或是否存在重复
  • 链路状态校验和(link-state checksum):校验和会参与LSA的新旧比较。当两条LSA三元组相同,并且序列号也相同时,则可以使用校验和比较,和大的认定为新
  • 长度(length):一条LSA的总长度

6种类型的LSA

请添加图片描述

1. type1-LSA

  • 定义:router LSA
    描述区域内部与路由器直连的链路信息(链路类型、开销至等)
    仅在区域内部传输
    每台路由器都会产生type1 LSA

命令:[R1]dis ospf lsdb router 查看Type1 LSA的具体信息
请添加图片描述

  • LS ID:发出该LSA的路由器的router-id
  • Adv Rtr:始发路由器,产生该LSA的路由器的router-id
  • 链路ID:不同的链路类型,对链路id值的定义是不同的
  • 链路数据(link data):不同的链路类型对链路数据的定义是不同的
  • link-type:链路类型,描述该接口的二层类型
  • VEB标志位
link-type

transnet:

  • 类型:广播网络或者NBMA
  • link-id:本网络的DR的IP地址
  • data:本路由器在该网段的IP地址

P2P:

  • 类型:ppp
  • link-id:该网段对端路由器的router-id
  • data:本路由器在该网段的与对端路由器相连的接口的IP地址

stubnet(末梢网络)

  • 类型:p2p/环回口
  • link-id:该网段的网络地址
  • data:该网段的子网掩码

virtual(虚链路)

  • 类型:虚链路
  • link-id:虚链路邻居的router id
  • data:去往该虚连接邻居的本地接口的IP地址
VEB标志位
  • V位(Virtual Link Endpoint Bit):如果该比特位被设置为1,则表示该路由器位Virtual Link的端点
  • E位(External Bit):如果E比特位被设置为1,则表示该路由器为ASBR。在stub区域中,不允许出现E比特位被设置为1的type-1 LSA,因此stub区域内不允许出现ASBR
  • B位(Border Bit):如果B比特位被设置为1,则表示该路由器为两个区域的边界路由器,字母B意为边界

2. type2-LSA

  • 定义:
    network LSA
    描述区域内部的MA网络(广播网络,NBMA网络)链路的路由及掩码信息
    仅在区域内部传输
    只有DR才会产生type2-LSA

  • 命令:
    [R1]dis ospf lsdb network 查看Type2 LSA的具体信息

  • 内容:
    LS ID:该网段的DR的IP地址
    adv rtr:该网段DR的router id
    network mask:该网段DR的IP地址的子网掩码的信息

3. type3-LSA

  • 定义:
    summary LSA(聚合LSA)
    在整个OSPF域内,描述其他区域的链路信息
    以子网形式传播,类似直接传递路由
    只有ABR会产生type3-LSA

  • 命令:
    [R1]dis ospf lsdb summary 查看Type3 LSA的具体信息

  • 内容:
    LS ID:其他区域某个网段的网络地址
    adv rtv:通告该LSA的ABR的router-id
    net mask:该网段的子网掩码

  • 注:3类LSA的传递范围在ABR相邻的单区域中进行,跨区域传递时,需要进行通告者的转换,通告者变了,则将不是同一条LSA

type4-LSA

  • 定义:
    ASBR-summary LSA
    描述ASBR的信息
    只有ABR才会产生type4 LSA

  • 命令:
    [R1]dis ospf lsdb asbr 查看Type4 LSA的具体信息

  • 内容:
    LS ID:ASBR的router-id
    adv rtv:通告描述该ASBR的ABR的router id

  • 注:在ASBR本区域的内部路由器,不会产生到达该ASBR的4类LSA

type5-LSA

-定义:
AS extantl LSA:传递域外路由信息
描述AS外部引入的路由信息,会传递到所有区域(特殊区域除外)
只有ASBR才会产生type5 LSA

  • 命令:
    [R1]dis ospf lsdb ase 查看Type5 LSA的具体信息

  • 内容:
    LS ID:外部路由的目的网络地址
    adv rtv:引入该网络路由的ASBR的ABR的router-id
    net mask:引入的该目标网段的子网掩码

6. type7-LSA

  • 定义:
    NSSA LSA
    描述在NSSA区域引入的AS外部路由信息
    只会出现在NSSA和totolly NSSA区域,不能进入area 0
    7类LSA生成路由信息的标记位O_NSSA,优先级150

  • 内容:
    LS ID:外部某个网段的网络地址
    adv rtv:引入该网络路由的ASBR的ABR的router-id

三, OSPF的网络类型

定义:

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

类型:

1. NBMA(非广播对点可达网络)

  • 非广播多点可达网络,帧中继默认网络类型
  • 单播发送协议报文(天生不支持广播和组播),需要手动指定邻居(邻居变动需要重新配置)
    命令:[r2-ospf-1]peer 192.168.1.1 (邻居IP地址)
  • 需要选举DR/BDR,为了减少LSA的洪泛,减少网络负担
  • hello time是30秒,dead time是120秒

2. P2MP(点到多点网络)

  • 点到多点网络,由其他网络型手动更改
  • 模拟组播发送协议报文(帧中继建立子接口模拟组播发送报文),需要手动指定邻居;
  • 不选举DR./BDR,因为设备少,所以不选举
  • hello time 30s,dead time 120s

3. broadcast(广播网络)

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

4. P2P(点到点网络)

  • 点到点网络,ppp默认网络
  • 组播协议发送报文
  • 不选举DR/BDR,直接形成邻接关系
  • hello-time 10s,dead-time 40s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值