07.动态路由协议OSPF

一、OSPF协议概述

1.1 为什么需要动态路由协议

静态路由不灵活的地方

1.路由多起来,工作量巨大

2.改变非常不灵活,需要工程师强干预

动态路由的优点

  1. 路由自学习
  2. 对于拓扑的改变有一定的适应能力

动态路由协议缺点?

  1. 需要有较强的理解和分析能力(ISIS、BGP)
  2. 网络较大,那么收敛时间较长(可以把收敛当作从开始到路由学习完整的过程)
  3. 网络较大,会带来一定的设备负担,特别是当网络设计不合理的时候

1.2 动态路由协议分类

距离矢量 DV

传达的是路由信息(道听途说)

有点盲人摸象的感觉,井底之蛙,蒙在鼓里

缺点,可能会有环路存在(水平分割来解决)

链路状态

传递链路信息(客观描述)

设备知道全网的地图(上帝视角),能够自己分析自己计算路由。

1.3 OSPF的路由计算

tep 1 客观描述

建立邻居关系,然后都会向它的邻居来描述自身使能了OSPF的接口情况,内容包括(但是不限于)网络类型、开销、IP掩码等。

Step 2 整合

每台OSPF路由器都描述自身启用OSPF的链路状态信息,最后进行交换,最终形成一个叫做LSDB(链路状态数据库)的表。类似于中国每个省份把自己省份的地图进行集合,然后通告给中国其他的省份

Step 3 使用SPF计算路由

以本设备为根,以SPF算法计算到达该拓扑的任意地方的路径。类似于以自身为起点去往中国的任何一个地方。

由于知道了整个拓扑信息,就相当于使用了上帝视角,做到“路由自主、路由自由”。SPF算法可以保证没有环路。

Step 4 提交路由表

OSPF计算出来的提交路由表,根据优先级、度量值的比较,从而写入路由表

1.4 OSPF基础术语

区域

类似于分组,使用区域来标识每个设备的的分组

一个设备可能位于多个区域(多个分组)

一个链路的两端位于一个区域

Router-ID

作用
  1. 标识一台设备,从而标识产生的LSA等信息
  2. 参与一些OSPF选举

选举原则

1.优先选择协议下手动指定的

 [AR1]#ospf 1 router-id 1.1.1.1

2.若没有手动指定,设备会选取全局Router ID作为OSPFRouterID

3.若都没有指定,那么动态选举

  1. 如果存在配置了IP地址的Loopback接口,则选择Loopback接口地址中最大的作为全局Router ID。
  2. 如果设备上不存在Loopback接口或者存在Loopback接口但没有配置IP地址,则从其他接口的IP地址中选择最大的作为全局Router ID(不考虑接口的UP/DOWN状态)

注意:

Router-ID要稳定,就像身份证一样,换了所有的都要换

ENSP

度量值Cost

  1. 度量值的缺点,如果100M,开销为1,1000M也为1,万兆为1。。。。这个不大合理
  2. 带宽越大度量值越小
  3. 理解成去往目的地所有设备的出接口开销会更好理解

OSPF报文类型

HELLO

用于发现、建立和维持邻居关系,同时进行DR/BDR选举、验证等等工作

DD(DBD)

1.用于exstart和exchange阶段的Master和Slave选举以及DD报文的交互

2.DD报文里面包含的设备收集到的LSA信息的摘要(类似于不可描述的学习资料的目录)

LSR     request

当发现自己没有的学习资料,直接进行请求

LSU

予以详细内容LSA的更新,里面包含一个LSA的完整信息。

LSAck

对于LSU进行予以确认

报文要和状态机进行结合使用

OSPF三张表
邻接表(邻居表)

  1. 先交朋友,再办事
  2. 通过hello报文,来建立邻居关系
LSDB表

收集链路信息,形成LSDB表

OSPF路由表

最终还是要提交全局的IP路由表

二、OSPF协议工作原理

邻居关系 vs 邻接关系

邻居关系:泛泛之交,只是见面打声招呼,即相互之间只发送hello报文

邻接关系:除了打招呼意外,还会有很多深入的交流,例如发起LSR请求,LSU更新和LSAck确认。

很奇怪的是,我们一般都说邻居关系,但实际上指的就是邻接关系,只有在讨论DR和BDR的时候,才会严格区分邻居关系和邻接关系

OSPF网络类型

  1. 一般而言,网络工程师在部署OSPF网络的时候,需要保证建立邻居关系的双方网络类型一致。
  2. 在封装了PPP的串行口上,默认为P2P链路
  3. 在以太网链路上,默认为Broadcast网络,当明确就是两个设备进行直连,例如两个设备直接使用以太网互联,那么可以修改为P2P,其他则不能修改。

这个仅作了解

DR与BDR

DR和BDR作用

在广播网络和NBMA网络中,任意两台路由器之间都要传递路由信息。网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。

为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去

为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DROther)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

邻接关系的情况,深入交换,停留在Full

DR<--->BDR

DR<---->DRother

BDR<--->DRother

邻居关系的情况,只是见面打声招呼,停留在Two-Way

DRother<--->DRother

如果MA没有使用DR/BDR技术,那么邻接个数就是n(n-1)/2个,使用DR/BDR则变成2(n-2)+1个,如果一个广播域中设备越多,效果越明显

DR与BDR的选举

DR的选举原则:

a)比较在此多路访问网络接口的OSPF优先级(默认值为1,可配置范围0~255,该值越大越优先。0表示此设备不参与该网段的DR选举,一定为DROther

b)如果接口的OSPF优先级相同,则选举在此MA网络中Router-id大的成为DR

c)DR的选举是非抢占的(为了能够让接口OSPF优先级大者成为DR,在DR选举中引入了一个Wait Timer,该计时器默认为Dead计时器--以太网接口为40秒,即该网段中在40秒内启用的OSPF路由器则根据接口优先级来选举DR)

Q:DR挂了怎么办?

A:BDR顶上来

Q:三种角色中,哪个是必不可少的?

A:DR

Q:一个区域内DR可以有多少个?

A:有几个MA网络,就有几个DR

详细到感天动地的OSPF邻居建立过程

1、刚开始双方都处于down State,双方均为发现对方

2、OSPF的hello报文是周期性发送的,现在假设A先发送hello报文至组播地址224.0.0.5,在hello报文中表明自己的RouterID为1.1.1.1,并且Active neighbor列表中没有看到任何路由器,此时A进入Init State

  1. B收到后,并在hello报文中表明自己的RouterID为2.2.2.2,并且在Active neighbor中写入A的Router ID 1.1.1.1。

4、A收到后,发现B的hello报文中包含自己的RouterID,对方看到我了,而我现在也看到对方,此时进入Two-Way State

Two-Way State

在p2p网络中(封装HDLC和ppp)

Two-Way阶段直接略过,紧接着交换LSA信息,最后直奔Full状态

在MA网络(Ethernet、FR)

为了减少LSA的泛洪,需要在这个阶段选举DR和BDR,需要等待大约40秒,因      此MA网络邻居建立较慢。

5、考虑到双方可能知道的拓扑信息都很多,因此没必要上手就全部就换,而是通过交换DBD摘要信息来“查缺补漏”,从而提高效率。

但是DBD也是至关重要的,如何保证其可靠性呢?IP报文无法实现可靠性,因此可以通过第一个DBD报文携带的RouterID来选取Master和Slave(谁的RouterID大谁为Master),双方使用Masterseq编号,进行DD报文交换,并且只有Master能将seq+1(窗口仅为1),Slave只能沿用Master的序列号(Master99Slave也用99),从而保证DBD不丢失。此时处于ExStart State(主要用来确定Master和Slave)  

R2的第一个DD报文

R1的第一个DD报文

但是R2的RouterID为2.2.2.2,大于R1,因此R2是Master,R1是Slave

R1使用R2的序列号进行更新,并且只有R2可以将序列号+1

6、双方通过后续的DBD将自己的LSDB中的LSA以摘要形式进行同步,此时处于Exchange State

7、双方通过DBD都知道自己缺少啥了,此时就通过LSR来进行请求某条缺失的特定的LSA,收到LSR后就要回复LSU,收到LSU后,回复LSAck(Loading State -Full State

只有LSU包含完整的LSA信息!!!

display ospf peer详解

OSPF区域的概念

单区域的问题

  1. 数量越多LSDB就越大,性能消耗大
  2. 拓扑改变SPF就要重算一次
  3. 没有办法有效地进行路由控制(例如汇总)

多区域的优势

  1. 通过划分骨干(Area 0)和非骨干,使得每个区域的LSDB减小,减少路由器负担
  2. SPF算法的影响范围限制在区域内
  3. 使得路由汇总、过滤等成为可能

多区域的注意事项

  1. 非骨干区域原则上必须和骨干区域互联
  2. 通过合理的层次化划分,防止区域间的环路

OSPF路由器类型

ABR:一定是骨干和非骨干之间的设备

ASBR:引入外部路由(非本OSPF计算的路由)的设备

三、OSPF典型配置

1.进程process

进程只是在本设备上进行OSPF的划分,进程和进程之间是相互独立的。IA阶段只要考虑单进程即可。

2.area id

区域id,要么使用十进制,要么是用点分十进制。

area 10 = area 0.0.0.10

area 0.0.1.2 = area 258(2^8+2^1)

实际工程中,建议双方的标识方式一致即可(要么都用十进制,要么都用点分十进制),避免换算

3.network

network不是通告,是激活,是确定哪个(些)接口属于哪个区域。

反掩码,将4个255减去掩码就是反掩码。必须是先0后1

其中0标识必须匹配,1标识无需匹配。

掩码:用来确定网络位和主机位!!!

反掩码:用来确定哪些bit需要匹配,0表示必须匹配,1表示无需匹配。

例如路由器有三个接口

192.168.1.1/24

192.168.2.1/24

192.168.3.1/24

此时使用命令

ospf 1

    area 0

    network 192.168.0.0 0.0.255.255

那么三个接口均启用OSPF被划入区域0

建议的写法

  1. 接口级别的精确写法

network  192.168.2.1 0.0.0.0

  1. 反掩码级别的精确写法

network 192.168.2.1 0.0.0.255   =  192.168.2.0 0.0.0.255

  1. 偷懒摸鱼级别的写法

network 0.0.0.0 255.255.255.255

Q:如果一个Loopback的IP地址被选为了Router ID,那么这个接口需要启用OSPF吗?

A:

cost根据需要进行修改,要记住是去往目的网段的沿途出接口的开销

带宽参考值不建议修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TvT<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值