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协议分析11 -- ZEBRA初始化相关推荐

  1. 【FRR 】【BGP协议分析】 1 - BGP 初始化

    FRR支持BGP-4,BGP-4+协议,BGP协议本身的知识点,可以参考很多资料,TCP/IP路由技术是一本不错的书,建议多看几次,还有红茶哥的博客和视频 http://blog.sina.com.c ...

  2. 蓝牙协议分析(11)_BLE安全机制之Security Manager

    1. 前言 书接上文,我们在"蓝牙协议分析(10)_BLE安全机制之LE Encryption"中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是 ...

  3. 计算机网络——Wireshark软件使用与协议分析(ARP协议、IP与ICMP分析)

    实验4   Wireshark软件使用与协议分析 4.1-----ARP协议分析 一.实验目的 学习 Wireshark 的基本操作,抓取和分析有线局域网的数据包:掌握以太网 MAC帧的基本结构,掌握 ...

  4. 基于FRR全面解析BGP协议(七):FRR编译

    FRR编译 环境:centos 7.6.1810 版本:FRR 7.3 编译 下载FRR源代码包 wget https://github.com/FRRouting/frr/archive/frr-7 ...

  5. 基于FRR全面解析BGP协议(五):FRR的BGP路由策略

    FRR的BGP路由策略 过滤器 FRR提供了基于IP,基于Community和基于AS-PATH的三种类型过滤器来匹配路由. IP Access List 基于IP的路由ACL规则,比较少使用,通常是 ...

  6. 11.NDP协议分析与实践

    NDP 协议分析与实践 1. 概述 1.1 简介 Neighbor Discovery Protocol 基于 ICMPv6 实现,用于替代 IPv4 中的 ARP 和 ICMP 路由器发现 基于 I ...

  7. nginx源码分析之网络初始化

    nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...

  8. Memcache的使用和协议分析详解

    Memcache的使用和协议分析详解 作者:heiyeluren 博客:http://blog.csdn.net/heiyeshuwu 时间:2006-11-12 关键字:PHP Memcache L ...

  9. OSPF与BGP协议流程与协议格式简单学习

    OSPF概述: 1.出现意义: RIP的缺陷: 以跳数评估的路由并非最优路径; 最大跳数16导致网络尺度小; 更新发送全部路由表浪费网络资源; 收敛速度慢. 概述; OSPF协议Open Shorte ...

  10. BGP协议基础配置—学习

    BGP重要概念 IGP是运行在AS内部的路由协议,主要有RIP.OSPF及IS-IS,着重于发现和计算路由. EGP是运行在AS之间的路由协议,通常是BGP,它是实现路由控制和选择最好的路由协议. 这 ...

最新文章

  1. 浅析基于双目视觉的自动驾驶技术
  2. linux系统安全设置
  3. IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持
  4. OVS sflow(二十六)
  5. Android笔记——Matrix
  6. apollo 配置中心_.NET Core 下使用 Apollo 配置中心
  7. 14家文化机构联合抖音、今日头条启动“都来读书”计划
  8. bcp: 给boost瘦身
  9. [原创][Windows] Win7安装visual c++ 2015 redistributable x64失败
  10. index android js,reactjs – React Native项目没有index.ios.js或index.android.js
  11. JavaScriptJquery 练习 扫雷
  12. k620显卡linux驱动下载,NVIDIA英伟达Quadro系列专业显卡官方驱动
  13. mysql 最新版本_mysql最新版本是多少
  14. 软件测试周刊(第25期):不要成天到晚地找意义
  15. 【webRTC】一个基于 tornado 和 webRTC 的点对点视频语音文字聊天室
  16. java 读取文本_Java如何读取txt文件的内容?
  17. 手机收到回复TD退订的短信,需要回复吗?今天算是搞明白了
  18. opencv打开相机获取图像并保存
  19. 程序员保持健康的生活指南
  20. BP神经网络原理分析及c++代码实现(下)

热门文章

  1. 从内存分配分析程序初始化和存储
  2. eclipse中的ctrl+H使用中的问题
  3. 第三章(循环) 编程题 2
  4. 多线程设计模式总结(一)
  5. java动态代理学习笔记
  6. datacolumn 表达式 除数为0
  7. WPF版的Dock控件第二版完成
  8. 网页加密编码的几种常见方法
  9. MySQL类型float double decimal的区别
  10. 传输层的端口与TCP标志中的URG和PSH位