ToB企服应用市场:ToB评测及商务社交产业平台

标题: OSPF笔记 [打印本页]

作者: 鼠扑    时间: 2023-12-29 12:54
标题: OSPF笔记
一、OSPF基础术语

Router-ID

Router-ID是一个32位无符号整数,用于唯一标识一台运行OSPF协议的路由器。
Router ID选举规则如下:
Loopback是路由器里面的一个逻辑接口。逻辑接口是指能够实现数据交换功能,但是物理上不存在、需要通过配置建立的接口。Loopback接口一旦被创建,其物理状态和链路协议状态永远是Up,即使该接口上没有配置IP地址。

区域(待补充)

链路的两端的路由器需要再同一个区域里。
待补充。。。。。计算机网络课本。。。主区域之类的

度量值

OSPF使用Cost(开销)作为路由器的度量值。每个激活了OSPF的接口都会维护一个Cost值,缺省Cost=(100Mbit/s)/接口宽带(cost的值向下取整,若小于1则取1)。其中100Mbit/s为OSPF指定的缺省的参考值,该值是可配置的。
修改Cost值:1.直接修改接口的Cost值(推荐)。2、修改参考值。

OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口cost总和

度量值修改举例:

上图(左):由于参考值缺省,且四条链路都是GE型,接口带宽相同,所以计算出的Cost值都相等。所以,对于R1来说,无论是通过R2到达R4,还是通过R3到达R4,开销都是一样的,所以会根据某种算法(例如负载均衡)选择一条路径。
上图(右):对于R1来说,两条路径开销不同,选择开销较小的路径发送数据。
二、OSPF三张表(待补充)

OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。
1、邻居表

对于OSPF的邻居表,需要了解:

2、LSDB

对于OSPF的LSDB,需要了解:

3、OSPF路由表

对于OSPF的路由表,需要了解:

三、OSPF七种状态机


状态机名称状态机描述Down(失效)该状态还没有进行hello包的收发,一旦进行hello的收发,则进入下一状态Init(初始化)接收到的hello包中并不存在本地的(自己的)route-id,但是会将发送该hello包的邻居置为init状态,此时双方并没有建立双向通信,随着双方互相收发hello包,于是才会进入下一状态2-way(双向通信)接收到的hello包中存在本地的(自己的)route-id,则双方就会进入2-way双向通信状态。该状态也是OSPF最稳定的状态之一,它标志着邻居关系的建立,同时也是邻接关系建立的基础Exstart(预启动)使用类似hello的DD报文进行主从关系(Master/Slave)选举,route-id数值大为主,优先进入下一状态。此时的DD报文是空的。Exchange(准交换)使用真正的DD报文进行数据库目录的共享Loading (加载)使用LSR、LSU、LSAck去获取未知的LSA信息LSDB同步Full(全毗邻)邻接关系建立的标志,此时不再进行LSDB的同步一些字段的详细解释:
Exstart
发送DD报文(此处DD报文不包含LSA头部信息)
作用:
1、决定主从关系(Router-ID大的为主路由器,小的为从路由器)
2、确定序列号保证报文交互的可靠性
3、比较MTU(可选,缺省不比较)
MTU对邻居建立的影响
1、主的MTU值比从设备的MTU值小;两端都会停留在Exstart状态
2、主的MTU值比从设备的MTU值大;从设备会停留在Exchange状态,主设备停留在Exstart状态
3、两端有一段未开启MTU值检测,则两端可以建立邻居
Exchange
通过交换DD报文,交换LSA头部信息
具体的交互流程
上述Exstart状态决定出主从关系后,即从设备此时收到了主设备发来的空的DD报文
从设备使用主的序列号发送DD报文来回应主(此时DD报文包含LSA头部信息)
主也通过DD报文发送自己的LSA头部信息,并将序列号加1
从又使用主的序列号回应主;一直循环,直到主与从的M位都不置位(或者说只要有一侧有未传递的LSA头,就会一直循环)
四、OSPF四种网路类型

OSPF协议支持四种网络类型,分别是点到点网络广播型网络NBMA网络点到多点网络
1、BMA

广播型网络(Broadcast Multiple Access)是指支持两台以上路由器,并且具有广播能力的网络。一个含有三台路由器的以太网就是一个广播型网络的例子。

OSPF可以在不支持广播的多路访问网络上运行,此类网络包括在hub-spoke拓扑上运行的帧中继(FR)和异步传输模式(ATM)网络,这些网络的通信依赖于虚电路。
OSPF定义了两种支持多路访问的网络类型:非广播多路访问网络(NBMA)点到多点网络(Point To Multi-Points)
2、NBMA

非广播式多路访问(Non Broadcast Multiple Access)在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置**。NBMA方式要求网络中的路由器组成全连接。
缺省情况下,OSPF认为帧中继、 ATM的网络类型是NBMA。

3、P2P

点到点网络(Point-to-Point)是指只把两台路由器直接相连的网络。一个运行PPP的64K串行线路就是一个点到点网络的例子。

4、P2MP

点到多点(point to multi point):将整个网络看成是一组点到点网络。对于不能组成全连接的网络应当使用点到多点方式。
实际情况下,没有哪一种网络拓扑是P2MP网络,需要通过命令来改变网络类型。

5、四种网络的特点

网络类型特点Hello Interval例子广播BMA需要DR和BDR的选举,不用手动指邻居
通常以组播发送HELLO报文,LSU报文,和LSACK报文,以单播形式发送DD和LSR报文
DR和BDR给非指定路由器发送消息使用的是组播224.0.0.5
非指定路由器给DR和BDR发送消息使用的是组播224.0.0.6
10秒以太网非广播多路访问NBMA连接的路由器超过两台但是没有广播功能
所有数据包均单播发送,有DR的选举,需要手动指定邻居30秒帧中继网络和ATM网络点对点P2P使用组播224.0.0.5来发送各种数据包
没有DR/BDR的选举,直接形成full邻接关系,不用手动指邻居10秒PPP链路,HDLC链路点到多点P2MPHello包以组播形式发送,其他类型数据包由单播发送
不选举DR,不用手动指邻居30秒现实中遇到的大部分属于点到点网络广播型网络,因为帧中继、 ATM网络基本已经淘汰了。
6、可根据实际情况按需调整网络类型


一条链路两端的路由器接口的OSPF网络类型应该要相同。
五、OSPF五种报文类型

OSPF报头

OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。

各个字段的解释:
五种报文类型

注:Hello报文和LSAck报文不需要确认。
LSA与LSAck是不同的:

1、Hello报文格式

Hello报文的主要作用:

2、DD报文格式

DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS
Checksum。
两台路由器在邻接关系初始化时,用DD报文(Database Description Packet)来描述自己的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header(头部)可以唯一标识一条LSA)。
LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。
在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。

各个字段的解释:
I:是否为第一个。M:后面是否还有。MA是否为Master。
3、LSR报文格式

两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已经失效的,这时需要发送LSR报文(Link State Request Packet)向对方请求所需的LSA。内容包括所需要的LSA的摘要。
LSR报文格式如下图所示,其中LS type、Link State ID和Advertising Router可以唯一标识出一个LSA,当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。

各个字段的解释:
4、LSU报文格式

用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。
LSU报文(Link State Update Packet)在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。

Number of LSAs:32比特,LSA的数量。
5、LSAck报文格式

用来对接收到的LSU报文进行确认。内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。
LSAck(Link State Acknowledgment Packet)报文根据不同的链路以单播或组播的形式发送。

LSAs HeadersLSA头部,可变,通过LSA的头部信息确认收到该LSA。
六、OSPF工作过程

OSPF工作过程概览

1、建立邻居关系


neighbor:邻居
具体过程:以R2为例
如果路由器发现所接收的合法Hello报文的邻居列表中有自己的Router ID,则认为已经和邻居建立了双向连接,表示邻居关系已经建立。
验证一个接收到的Hello报文是否合法包括:
1、如果接收端口的网络类型是广播型点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段
2、所接收的Hello报文中Hello Interval字段必须和接收端口的配置一致;
3、所接收的Hello报文中Router Dead Interval字段必须和接收端口的配置一致;
4、所接收的Hello报文中Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置一致。

2、LSDB数据库同步

邻居关系建立后,邻居之间确定主从关系,然后开始发送DD报文同步LSDB

这里提到了主从关系(Master/Slave),要与DR/BDR区分开来。
具体过程
主从路由器的选举:
​        (1)邻居状态变为ExStart以后,R1向R2发送第一个DD报文,在这个报文中,DD序列号被设置为X(假设),R1宣告自己为主路由器。
​        (2)R2也向R1发送第一个DD报文,在这个报文中,DD序列号被设置为Y(假设)。RTB也宣告自己为主路由器。
由于R2的Router ID比R1的大,所以R2应当为真正的主路由器。
数据库摘要信息的交互:
​        (3)当主从关系确定后,R1、R2的状态变为Exchange。R1发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息(LSDB的摘要信息可以类比成一本书的目录),序列号设置为R2在步骤(2)里使用的序列号(表示承认R2为真正的主路由器)。
​        (4)邻居状态变为Exchange以后,R2发送一个新的DD报文,该报文中包含LSDB的描述信息,DD序列号设为Y+1(上次使用的序列号加1)。
​        (5)R1收到R2的DD报文后,向R2发送即使R1不需要新的DD报文描述自己的LSDB,但是作为从路由器,R1需要对主路由器RTB发送的每一个DD报文进行确认。所以,RTA向RTB发送一个内容为空的DD报文,序列号为Y+1。???有点不懂这句话。
发送完最后一个DD报文之后,R1、R2的状态都变为了Loading;在此(变为Loading)之前,路由器就算在DD报文中发现了自己需要的LSA也是不会发送LSR报文的。
3、建立完全邻接关系


具体过程:接着上面的第(5)步
​        (6)邻居状态变为Loading之后,R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。
​        (7)R2收到LSR报文之后,向RTA发送LSU报文,在LSU报文中,包含了那些被请求的链路状态的详细信息。RTA收到LSU报文之后,将邻居状态从Loading改变成Full
​        (8)R1向R2发送LSAck报文,用于对已接收LSA的确认。
此时,R1和R2之间的邻居状态变成Full,表示达到完全邻接状态
邻居与邻接
遗留的问题:

关于R1与R2的状态改变,具体是在什么时候改变的状态?
DR与BDR

(1)DR与BDR的作用


除DR和BDR之外,其他路由器都是DR Other
(2)DR与BDR的选举规则(待补充)

DR/BDR的选举是非抢占式的。

例如下图:R4新加入后并不会改变原先就存在的DR/BDR,即使它的优先级比R1、R2都高。这样可以保持网络的稳定
若要使R4成为DR,需要将DR和BDR的ospf进程restart(重启)。
至于先重启DR还是BDR,等做完实验再补充。。。。。。。。。。。

DR/BDR的选举是基于接口的。

基于接口的解释:
下图中R4同连接着两个广播网络,它的两个接口的角色并不相同。

(3)不同网络类型中DR与BDR的选举操作


参考:
04 OSPF基础介绍_哔哩哔哩_bilibili
05 OSPF简介_哔哩哔哩_bilibili
06 OSPF工作原理及过程_哔哩哔哩_bilibili
OSPF-五种报文、七种状态机及其工作过程_ospf的lsu有几种-CSDN博客
精!万字15图详解OSPF路由协议 (qq.com)
OSPF——7种状态讲解_ospf七种状态-CSDN博客
[OSPF原理—详细!!ospf协议工作原理'Beyond'的博客-CSDN博客](https://blog.csdn.net/Beyonod/article/details/130559513#:~:text=二、ospf流程(步骤) 1 相邻路由器建立邻居关系 2,邻居之间交互链路状态信息并同步至LSDB 3 计算最优路径 4 将最优路径添加到路由表)
OSPF协议原理详解-CSDN博客
OSPF-五种报文、七种状态机及其工作过程_ospf的lsu有几种-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4