OSPF详解(1)

条件匹配:

指定路由器(DR):和MA网络中其他所有设备建立邻接关系

备份指定路由器(BDR):和MA网络中其他所有设备建立邻接关系

注:在DR和BDR都存在的情况下,一个MA网络中至少需要四台设备才能看到邻居关系。

注:DR(BDR)虽然叫做指定路由器(备份指定路由器),但其工作范围在一个MA网络之中,所             以,其实质是接口的概念。

条件匹配:在MA网络中,若所有设备均为邻接关系,则将出现大量的重复更新,所以,需要进行                    DR和BDR的选举,所有非 DR/BDR(DROther)之间仅维持邻居关系即可。

DR/BDR的选举:

1,比较接口的优先级,优先级最大的为DR,次大的为BDR。

注:优先级的初始默认值为1。

修改优先级的方法:

[r1] interface GigabitEthernet0/0/0

[r1-GigabitEthernet0/0/0] ospf dr-priority?

INTEGER<0-255> Router priority value

注:如果将一个接口的优先级修改为0,则代表该接口放弃DR/BDR的选举。

2,当优先级相同时,则比较RID。RID大的路由器对应的接口为DR,次大的为BDR。

DR/BDR的选举:为非抢占模式的选举

选举时间:等同于死亡时间(最大选举时间)

<r1> reset ospf 1 process                ---重启OSPF进程

OSPF的数据包:   

OSPF的协议号: 89

ospf报文头部(公共部分):

版本:OSPF协议的版本,且OSPFv2版本字段为2。

类型:OSPF数据包的类型

Hello 用数字 1; DBD用数字 2; LSR用数字3 ;LSU用数字4; LSACK用数字5

报文长度:整个OSPF数据报文的长度,单位字节。

RID表示发出这个数据包的路由器的RID

区域ID:发出数据包的接口所在的区域的ID

校验和:确保数据完整性

认证类型和认证数据:OSPF在进行认证时,需要先比对认证类型,认证类型相同才比对认证数                                          据。

OSPF认证类型(三种):

1,null:空认证,用数字0代表

2,simple:明文认证,用数字1进行对应

3,MD5:比对摘要值认证,用数字 2代表

Hello数据包:

hello包:周期发现,建立以及保活邻居关系。DR/BDR选举也使用的是hello包

子网掩码 :发出hello包接口的ip地址对应的掩码信息, 华为设备设定邻居建立双方要求子网掩码                     必须相同,否则将无法建立邻居关系(对P2P网络不生效)

hello时间和死亡时间:邻居双方hello时间和死亡时间必须相同,否则将导致邻居关系建立失败。

8位可选项:8个标记位,每一个标记位置1,则代表其符合OSPF的某种特性。

其中存在ospf特殊区域的标记位,邻居双方如果特殊区域的标记位不同,则将无法正常建立邻居关系。

路由器的优先级:发出该数据包的接口其DR/BDR选举时的优先级。

指定路由器和备份指定路由器:携带的是DR/BDR接口的IP地址。在DR/BDR没有选出来之前,使                                                     用0.0.0.0来进行填充。

邻居:本地已知的邻居的RID。

hello包中限制邻居关系建立的参数(五种):

1,子网掩码

2,hell时间

3,dead时间

4,ospf特殊区域的标记

5,认证

DBD数据包:

DBD包:数据库描述报文

作用:

1,使用未数据的DBD包进行主从关系选举;

2,使用携带数据的DBD包进行目录信息共享。

接口的最大传输单元(MTU):华为设备默认不开启MTU值的检测功能

开启MTU的操作:

[r1-Serial4/0/0] ospf mtu-enable

注:如果两边都开启MTU值的检测功能,则双方的MTU值必须相同,不同则将停留在exstart状             态,无法向下进行。

I(init):该位置1,则代表这个DBD包是进行主从关系选举的数据包,所以,这样的数据包后面                    不包含LSA头部内容。在主从关系没有选出来之前,所有设备都认为自己是主

M(more):该位置1,则代表后面还有其他DBD包要发送。置0,代表是最后一个DBD包。

Ms(Master):该位置1,则代表发送这个数据包的设备为主。置0,则为从。

序列号:在DBD报文收发过程中,会逐次加1,用于确保DBD报文传输的有序性以及可靠性。

LSR数据包:

LSR包:链路状态请求报文,基于DBD包请求本地未知LSA信息

 

链路状态类型,链路状态ID,通告路由器:“LSA三元组” ,通过这三个参数可以唯一的标识出一条                                                                       LSA。

LSU数据包:

LSU包:链路状态更新报文,真正携带LSA信息的数据包

LSACK数据包:

LSACK包:链路状态确认报文

OSPF的接口网络类型:

OSPF的接口网络类型:指的是ospf接口在不同的网络类型下默认的不同工作方式。

网络类型

ospf接口的网络类型(工作方式)

BMA(以太网)

Broadcast,可以建立多个邻居关系。需要进行DR和 BDR选举,hello 10s,dead time 40S

P2P(PPP,HDLC)

P2P,只能建立一个邻居关系,不需要进行DR和BDR选举,hello 10s,dead time 40S

环回接口(虚拟接口)

P2P,华为设备定义为P2P类型,但实际上无数据收发。环回接口默认学习32位主机路由

P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举,hello 30S,dead time 120S。会学习邻居接口的主机路由。

NBMA(帧中继)

NBMA,可以建立多个邻居关系,需要进行DR和BDR选举,hello 30s,dead time 120S,无法自动建立邻居关系


[r2] display ospf interface GigabitEthernet 0/0/0         ---查看OSPF的接口网络类型

注:T1---1.544Mbps

       E1---2.048Mbps                   ----华为设备的串口默认遵循的是E1标准。

注:华为设备将环回接口的开销值定义为0,不会受外界影响,不受参考带宽变化的影响。

[r2-LoopBack0]ospf network-type broadcast            ---修改接口网络类型

注:如果想要还原环回接口真实的掩码长度,可以将环回接口的网络类型修改为broadcast

注:华为设备将tunnel接口的传输速率定义为64Kbps,华为设备这样设计主要目的是为了让隧道           接口的开销值变大,使数据尽可能的避免从隧道接口发出,因为走隧道接口的数据,真实还           是从物理接口发出,但是会增加复杂的封装和解封装的过程,加大资源的浪费。

注:在MGRE的环境中,还有一种全连网状拓扑,即mesh,就是所有边界设备既当中心,也做分         支,这样搭建出来的MGRE环境是一种类似 BMA的网络环境。

[r1-ospf-1] peer 12.0.0.2                        ---单播邻居,在NBMA环境下可以手工指定邻居关系。

Attempt尝试状态,过渡状态,本端手工指定邻居后将从 down到达尝试状态,之后,等对端手                    工指定后将进入下一个状态。

### OSPF LSA 详解 #### LSA 的定义与作用 链路状态通告 (Link State Advertisement, LSA)OSPF 协议的核心组件之一,用于在网络中传递路由信息和拓扑信息[^1]。每条 LSA 包含两部分内容:LSA 头部信息(即 LSA 摘要)以及链路状态描述信息。需要注意的是,并非所有的 LSA 都包含完整的链路状态描述信息,某些类型的 LSA 可能仅包含头部信息。 为了唯一标识一条 LSA,在 OSPF 中通过三个关键要素来区分它们: - **ADV Router**: 表示该 LSA 的产生者路由器。 - **Link-ID**: 表示该 LSA 所关联的特定网络或节点的标识符。 - **LSA 类型**: 定义了该 LSA 的具体类别及其用途。 #### LSA 的头部信息 LSA 的头部信息是一个固定长度的数据结构,包含了多个字段以描述该 LSA 的基本信息。这些字段通常包括但不限于以下内容: - Age: 记录 LSA 已经存在的时间,单位为秒。 - Options: 描述支持的功能选项。 - Type: 标识 LSA 的类型。 - Link-State ID: 唯一识别此 LSA 关联的具体对象。 - Advertising Router: 创建这条 LSA 的路由器的 Router ID。 - Sequence Number: 序列号用来判断新旧版本。 - Checksum: 提供数据完整性验证机制。 #### 不同类型的 LSA 和其功能 以下是常见的几种 LSA 类型及其对应的特性: ##### Type-1 LSA (Router LSA) Type-1 LSA 主要由单个路由器生成并泛洪至整个区域内。它描述了本路由器与其直连邻居之间的关系,同时也列举了本地接口的状态及成本[^3]。这种类型的 LSA 对于构建区域内的 SPF 图非常重要。 ##### Type-2 LSA (Network LSA) 当某个 DR 路由器检测到多播组成员变化或者新的邻接建立时会发送 Network LSA。这类消息主要用于广播或多址访问环境中,报告哪些设备属于同一个子网下。 ##### Type-3 LSA (Summary LSA) ABR 使用 Summary LSAs 向其他区域宣告来自不同区域汇总后的前缀列表。这有助于减少跨区间的通信量,同时保持必要的可达性信息。 ##### Type-4 LSA (ASBR-Summary LSA) 类似于 Type-3,但是专门指向 AS 边界路由器(ASBR),告知如何到达外部引入路径的目的地址范围。 ##### Type-5 LSA (External LSA) 这是最重要的外部路由传播形式之一,由 ABR 或 ASBR 发布出去,向所有区域宣布关于自治系统外的目标网络的信息。 ##### Type-7 LSA (NSSA External LSA) 在 NSSA (Not-so-stubby area)特殊场景里使用的替代方案,允许将外部路由注入而不违反 stubby rules。 --- ### 示例代码展示 LSA 结构解析逻辑 下面提供了一个简单的 Python 函数作为例子演示如何读取 JSON 文件中的模拟 LSA 数据并打印相关信息: ```python import json def parse_lsa(json_file): with open(json_file, 'r') as file: data = json.load(file) adv_router = data.get('adv_router', None) link_id = data.get('link_id', None) lsa_type = data.get('lsa_type', None) if not all([adv_router, link_id, lsa_type]): raise ValueError("Missing critical fields in the provided LSA.") print(f"Advertising Router: {adv_router}") print(f"Link Identifier: {link_id}") print(f"LSA Type: {lsa_type}") # Example usage parse_lsa('./example-lsa.json') ``` 上述脚本假设有一个名为 `example-lsa.json` 的文件存储着具体的 LSA 属性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值