2025年Frrouting学习笔记(三)——FPM协议规范

Frrouting学习笔记(三)——FPM协议规范本篇翻译自 doc developer fpm 一 FPM 概述 FPM 代表 Forwarding Plane Manager 转发平面管理器 它是一个用于 Zebra 的模块 与 FPM 交换消息的封装头由 frr 树中的文件 FPM FPM h 定义 路由本身以 Netlink 或 protobuf 格式编码

大家好,我是讯享网,很高兴认识大家。

本篇翻译自doc/developer/fpm

一、FPM概述

        FPM代表Forwarding Plane Manager(转发平面管理器),它是一个用于Zebra的模块。

        与FPM交换消息的封装头由frr树中的文件“FPM/FPM.h”定义。路由本身以Netlinkprotobuf格式编码,Netlink是默认格式。

        Netlink是Linux中对消息进行编码以与内核空间进行通信的标准格式,也是它所使用的套接字类型的名称。FPM netlink的使用与Linux的不同之处在于:

  1. Linux netlink套接字以多播方式使用数据报,FPM用作流,并且是单播的。
  2. FPM网络链接消息可能比正常消息包含更多或更少的信息

        Linux netlink套接字消息(例如:RTM_NEWROUTE可能会添加一个额外的路由属性来通知VxLAN封装)。

        Protobuf是许多新的序列化格式之一,其中消息模式用专门构建的语言表示。从模式生成用于对有线格式进行编码/解码的代码。Protobuf消息可以很容易地扩展,同时保持与旧代码的向后兼容性。ProtobufNetlink相比具有以下优势:

  1. 用于序列化/反序列化的代码是自动生成的。这降低了出现错误的可能性,允许快速集成第三方程序,并使添加字段变得容易。
  2. 消息格式不与操作系统(Linux)绑定,可以独立发展。

目前,“zebra”中有两个FPM模块:

  1. ``fpm``
  2. ``dplane_fpm_nl``

1.1 fpm

        第一个FPM实现是使用“zebra”路由处理函数中的钩子构建的。它使用自己的netlink/protobuf编码函数将“zebra”路由数据结构转换为格式化的二进制数据。

1.2 dplane_fpm_nl

        新的FPM实现是使用“zebra”的数据平面框架作为插件构建的。它只支持netlink,并共享“zebra”netlink函数,将路由事件快照转换为格式化的二进制数据。

二、协议规范

        FPM(在任何模式下)使用TCP连接与外部应用程序进行通信。它作为TCP客户端运行,并使用CLI配置的地址/端口连接到FPM服务器(默认为端口“2620”)。

        FPM用一个标头将所有数据帧化,以帮助外部读取器计算它必须读取多少字节才能读取完整消息(这有助于模拟数据报,就像在最初的netlink Linux内核使用中一样)。


讯享网

2.1 帧头:

2.12 版本

        目前只有一个版本,因此应该始终为“1”

2.3 消息类型

        定义我们使用的下划线协议:netlink`1'`)或protobuf`2'`)。

2.3 消息长度

        此帧中按网络字节顺序排列的数据量。

2.4 数据

        netlink或protobuf消息负载。

2.5 来自ASIC的路由状态通知

        dplane_fpm_nl能够从底层fpm实现读取路由网络链接消息,该消息可以告诉zebra路由是否已卸载/失败或受阻。

        最终开发人员必须将数据发送到已创建的同一套接字,以侦听来自ZebraFPM消息。发送的数据必须具有“Frame Header”“Version”设置为1“Message Type”设置为1,以及适当的消息长度。消息数据必须包含RTM_NEWROUTE网络链接消息,该消息发送与路由相关联的前缀和下一跳。最后,rtm_flags必须包含rtm_F_OFFLOADrtm_F_TRAPrtm_F_OOFFLOAD_FAILED,以表示ASIC中的路由发生了什么。

小讯
上一篇 2025-04-06 07:25
下一篇 2025-04-09 07:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44711.html