sdpf笔记

OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的自治系统内部网关协议。目前针对IPv4协议使用的是OSPF Version 2。ospf直接工作在ip层之上,ip协议号89,ospf以组播方式发送协议包

链路状态路由协议使用SPF最短路经优先算法(shortest path first spf)计算和选择路由,这类路由协议只关心网络中链路或接口的状态(up down ip地址,掩码带宽,利用率和时延等),每个路由器将已知的链路状态信息向该区域的其他路由器通告,通过这种方式,网络上的每台路由器对网络结构都会有相同的认识,随后路由器以其为依据,使用spf算法计算和选择路由(其中:区域内部传递拓扑信息,区域间传递路由信息   --链路状态型协议的距离矢量特征)

区域划分规则

非骨干区域必须与区域0直接相连

骨干区域不能被分割

ABR --区域边界路由器

        1、至少连接两个区域
        2、连接的区域中至少有一个接口连接区域0
        3、在区域0中至少有一个活跃的邻居

注意:只有真正的ABR才可以转发路由信息
OSPF相关数据包及其概括

hello包 

1、用来发现、建立并周期保活OSPF邻居关系,通过组播224.0.0.5发送。

2、10S发送一次用以确认邻居存在。

3、死亡时间:4倍hello时间

DBD --链路状态数据库描述包

该报文中携带的是路径信息的摘要。---避免重复更新,减少更新量的一种做法

 LSR --链路状态请求包

请求未知的LSA信息

LSU --链路状态更新包

携带真实的LSA信息 

LSAck --链路状态确认包

邻居关系
OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。

邻接关系
形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。

邻居状态机
OSPF共有8种状态机
分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
•Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

•Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。

•Init:收到Hello报文后状态为Init。

•2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

•Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。

•Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。

•Loading:DD报文交换完成即Exchange done,此时状态为Loading。

•Full:LSR重传列表为空,此时状态为Full。

在广播网络中建立OSPF邻接关系
1.建立邻居关系


a.RouterA的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个Hello报文(使用组播地址224.0.0.5)。此时,RouterA认为自己是DR路由器(DR=1.1.1.1),但不确定邻居是哪台路由器(Neighbors Seen=0)。

b.RouterB收到RouterA发送的Hello报文后,发送一个Hello报文回应给RouterA,并且在报文中的Neighbors Seen字段中填入RouterA的Router ID(Neighbors Seen=1.1.1.1),表示已收到RouterA的Hello报文,并且宣告DR路由器是RouterB(DR=2.2.2.2),然后RouterB的邻居状态机置为Init。

c.RouterA收到RouterB回应的Hello报文后,将邻居状态机置为2-way状态,下一步双方开始发送各自的链路状态数据库。

注意:在广播网络中,两个接口状态是DR Other的路由器之间将停留在此步骤。

2.主/从关系协商、DD报文交换

a.RouterA首先发送一个DD报文,宣称自己是Master(MS=1),并规定序列号Seq=X。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
为了提高发送的效率,RouterA和RouterB首先了解对端数据库中哪些LSA是需要更新的,如果某一条LSA在LSDB中已经存在,就不再需要请求更新了。为了达到这个目的,RouterA和RouterB先发送DD报文,DD报文中包含了对LSDB中LSA的摘要描述(每一条摘要可以惟一标识一条LSA)。为了保证在传输的过程中报文传输的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加一,作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的Seq。

b.RouterB在收到RouterA的DD报文后,将RouterA的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RouterB的Router ID较大,所以在报文中RouterB认为自己是Master,并且重新规定了序列号Seq=Y。

c.RouterA收到报文后,同意了RouterB为Master,并将RouterB的邻居状态机改为Exchange。RouterA使用RouterB的序列号Seq=Y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中RouterA将MS=0,说明自己是Slave。

d.RouterB收到报文后,将RouterA的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,此时RouterB将报文的序列号改为Seq=Y+1。

上述过程持续进行,RouterA通过重复RouterB的序列号来确认已收到RouterB的报文。RouterB通过将序列号Seq加1来确认已收到RouterA的报文。当RouterB发送最后一个DD报文时,在报文中写上M=0。

3.LSDB同步(LSA请求、LSA传输、LSA应答)

a.RouterA收到最后一个DD报文后,发现RouterB的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RouterB也收到了RouterA的最后一个DD报文,但RouterA的LSA,RouterB都已经有了,不需要再请求,所以直接将RouterA的邻居状态机改为Full状态。

b.RouterA发送LSR报文向RouterB请求更新LSA。RouterB用LSU报文来回应RouterA的请求。RouterA收到后,发送LSAck报文确认。

上述过程持续到RouterA中的LSA与RouterB的LSA完全同步为止,此时RouterA将RouterB的邻居状态机改为Full状态。当路由器交换完DD报文并更新所有的LSA后,此时邻接关系建立完成。

条件匹配
选举DR和BDR

为什么选举DR和BDR

在一个共享的广播网络多台路由器建立OSPF,有可能会产生大量的OSPF邻居
在这些大量的OSPF邻居发送大量的OSPF报文,造成其他路器接收到大量的OSPF重复报文浪费带宽资源和设备CPU计算资源

注意:DR和BDR都是接口角色

条件匹配选举规则

优先级,0-255;选择优先级大的为DR设备,默认为1。若优先级为0则代表放弃选举

若优先级相同,则比较RID值,越大越优先。

注意:

选取范围---一个广播域

非抢占模式----重选则需要重启OSPF进程。

在一个MA网络中,可以没有BDR,但是必须存在DR

条件匹配的选举过程 

DR、BDR的选举是通过Hello报文实现的,时间发生在2-way状态之后。

路由器将自己的接口的DR优先级填写在hello报文的“DR优先级字段”。

华为数通产品的接口DR优先级默认1,该参数值可以通过

当接口激活OSPF后,设备首先会检查网络上是否已经存在DR,如果存在则接收已经存在的DR设备。否则优先级最大的设备成为DR,若优先级相同,则拥有最大RID的路由器成为DR设备。

BDR选举过程与DR相同,但是是在DR选举之后进行

 [Huawei-GigabitEthernet0/0/0]ospf dr-priority ? --修改优先级
  INTEGER<0-255>  Router priority value
  
  DR优先级为0则代表该接口放弃选举DR和BDR。

OSPF工作过程
启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello报文中携带了本地的RID参数以及本地已知的邻居RID值。

邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居

建立邻居关系,并生成邻居表。

邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。

匹配成功的邻居开始建立邻接关系。

首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;

然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。

对端使用LSU报文回复完整LSA信息

本端使用LSAck报文确认回复。

当本地接收到所有的未知LSA信息后,将信息存放在LSDB中。

之后基于本地数据库生成有向图和最短路径树。

根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。

从OSPF路由表中选择最优路由加载入本地全局路由表。

收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。

结构突变

新增网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

断开网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

无法沟通-----dead time----4*hello time,状态为down,删除信息。

基础配置
[r1]ospf 1 router-id 1.1.1.1 --启动ospf,定制进程号和RID
[r1-ospf-1]area 0 
[r1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0  --精准宣告,宣告接口,为了激活接口
[r1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255  --范围宣告,

[r1]dispaly ospf peer (brief) --查看邻居表
[r1]dispaly ospf int g 0/0/0  --查看接口信息
[r1-ospf-1]bandwidth-reference 1000    --修改默认带宽为1000M,修改时需要整个网络的默认带宽一致。

cost=默认带宽(1000)/实际带宽; 

OSPF报文格式 
OSPF报文头部
固定24字节

字段解释如下

Version 是ospf 的版本 ospfv2 其值为 2

Type :ospf 类型有五种报文 分别为 1: hello 2:dd 3:lsr 4 :lsu 5 lsack

Packet length ospf 报文的总长度 包括报头在内 单位是字节

Router-id 始发该LSA的路由器ID

Area-id 始发该LSA 的区域ID

Checksum :对整个报文校验

Autype :验证类型 可分为不验证、明文验证、MD5验证 值分别为 0 1 2

Authenication :其值根据验证类型来定义, 验证为0时未作定义 为1是为密码验证 为2时为KEY-ID 和密码的MD5 验证

MD5数据添加在OSPF 报文后面不在authentication 字段里

hello 报文 (hello packet)

它是周期性的发送 来维持邻居关系 和dr /bdr 选举内容主要包括:定时器数值、DR BDR 以及自己已知的邻居 起报文格式如下图

Network mask 发送hello 包 时 接口下的子网掩码不同不能建立邻居关系

Hellointerval 发送hello 报的时间间隔不同不能建立邻居关系

RTr pri :路由器的本地优先级

Routerdeadtimeinterval:失效时间 如果在规定的时间内没有收到来自邻居的hello包则视为失效,失效时间间隔不同不能建立邻居

Designated router 指路由器本地接口的IP

Neighbor 指邻居路由器的Ip

DD 报文(database description packet )

两台路由器进行数据库同步时,用DD报文来描述自己的LSDB 内容包括LSDB中每一条LSA 的header    LSA header 只占一个条LSA的整个数据流的一小部分 这样可以减少路由器之间的协议报文流量,对端的路由器可以根据LSA 的头部 能够判断是否有这条LSA

 主要字段解释如下:

Interface MTU :在不分片情况下 在接口处容许最大发出的IP报文长度

I(initial)当发送连续的DD 时 如果是第一个报文则为1

M(more) 表示多个DD 连续发送报文,如果是最后一个dd 则表示为0 反则为1

MS :在双方交换DD 时还要确认他们的主从关系 ms=1 表示发送方为主位

Dd sequence number :双方用序列号来确认DD 收发的持续性和完整性

LSR报文(link state request)

两台路由器互相交换数据到最后一个LSA 时 如果一方发现自己还有很多不知道的DD 时就会请求对方 lsr 来继续更新自己的DATABASE

 LS Type :LSA 的类型 例如Type 1表示router lsa

Link state ID 链路状态标识

Advertising router: 产生此lsa 的路由器

5.LSU 报文

LSU 是对LSR 寻求的回答

Number of LSAs 该报文包含LSA 的数量

LASs :包含所有的LSA

6.LSAck 

LSACK 报文是用来对接收到的LSU 报文的进行确认的 内容是需要确认LSA 的header

OSPF的接口网络类型 

OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征。广播型多路访问类型

OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU及LSACK报文;以单播的形式发送DD报文和LSR报文。点到点类型

OSPF在网络类型为P2P的接口上以组播的方式发送所有数据报文。----不以单播形式发送的原因在于点到点网络可以不需要IP地址。

OSPF在点到点网络中不会选举DR和BDR。

开销值----在华为设备中,P2P网络的参考实际带宽默认为2.048(E1标准)

环回接口

 开销值恒定为0,这样的结果就是修改参考带宽不会影响到环回接口的开销值。

type----华为使用P2P来填充,而cisco使用loopback填充。

所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。----如果使用其他掩码,可能会导致环路或者路由黑洞。

witing----该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的状态切换为exstart状态。

点到多点类型

只能手工修改。

[r7-Tunnel0/0/0]ospf network-type p2mp

在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。

在P2MP环境​​​​​​​下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值