OVS Bond lacp源码分析

2023-05-16

近期项目中要使用Ovs bond接口,Ovs Bond 只有三种模式:balance-tcp,balance-slb,active-backup。这三种模式的工作方式如下:

1、active-backup:主备模式
2、balance-slb:负荷分担,根据源MAC地址负荷分担
3、balance-tcp:负荷分担,根据IP地址+TCP端口进行负荷分担。

虚拟交换机 bond支持以下几种模式,根据实际组网需求进行选择:

网络类型本端bond_mode本端 LACP对物理交换机 bond-mode对端 LACP
vxlanactive-backupOff不配 bond 
balance-slbOff不配 bond 
 Balance-tcpActive必须配bondActive或者passive
VlanActive-backupOff不配 bond 
Balance-slbOff不配 bond 
Balance-tcpActive必须配bondActive 或者passive

重点说下,Balance-tcp模式和Lacp。Ovs Bond的部分代码如下:

static struct bond_slave *
choose_output_slave(const struct bond *bond, const struct flow *flow,
                    struct flow_wildcards *wc, uint16_t vlan)
{
    struct bond_entry *e;
    int balance;

    balance = bond->balance;
    /* 
       判断lacp的状态,若配置了没协商起来,状态就是LACP_CONFIGURED     
    */
    if (bond->lacp_status == LACP_CONFIGURED) {
        /* LACP has been configured on this bond but negotiations were
         * unsuccussful. If lacp_fallback_ab is enabled use active-
         * backup mode else drop all traffic. 
            若lacp_fallback_ab没配置为active-backup(协商失败使用),则直接丢包 */ 
        if (!bond->lacp_fallback_ab) {
            return NULL;
        }
        balance = BM_AB;
    }

    switch (balance) {
    case BM_AB:
        return bond->active_slave;
   /* BM_TCP模式下,必然要协商起来,没协商起来就要丢包 */
    case BM_TCP:
        if (bond->lacp_status != LACP_NEGOTIATED) {
            /* Must have LACP negotiations for TCP balanced bonds. */
            return NULL;
        }
        if (wc) {
            flow_mask_hash_fields(flow, wc, NX_HASH_FIELDS_SYMMETRIC_L4);
        }
        /* Fall Through. */
    case BM_SLB:
        if (wc) {
            flow_mask_hash_fields(flow, wc, NX_HASH_FIELDS_ETH_SRC);
        }
        e = lookup_bond_entry(bond, flow, vlan);
        if (!e->slave || !e->slave->enabled) {
            e->slave = get_enabled_slave(CONST_CAST(struct bond*, bond));
        }
        return e->slave;

    default:
        OVS_NOT_REACHED();
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OVS Bond lacp源码分析 的相关文章

随机推荐

  • 最大信息系数(MIC)——大数据时代的相关性分析

    在信息爆炸的当今社会 xff0c 单靠人力已经不能在无穷无尽的数据中有效的捕获信息 数据挖掘这一学科的兴起也预示着在各行业即将展开一场数据革命 在大数据集中识别两个变量的相关关系越来越重要 数据的相关性又分为线性相关和非线性相关 利用Pea
  • C语言开发《扫雷》游戏,你从未体验过的联网对战版

    一 简介 单机版扫雷总会有些枯燥 xff0c 不妨试试联网对战版扫雷 xff01 开发环境 xff1a VS2019 43 EasyX 20210224 游戏玩法 xff1a 左键按下翻开方块 xff0c 翻开雷判输 xff0c 或翻开最后
  • C语言趣味小游戏开发《找方块》!测试你眼力见的时候到了~

    程序介绍 该程序是仿照最近网上流行的找方块游戏编写的 xff0c 虽然没有仿照的一模一样 xff0c 但是也实现了他的一些功能 个人觉得可玩性还是挺高的 xff0c 是一个不错的娱乐放松的游戏 编写简介 该游戏的编写还是挺容易的 xff0c
  • C语言高仿贪吃蛇大作战,800行代码就能实现,结尾有源码~

    这是一个贪吃蛇大作战类游戏 xff0c 修改特性为 AI 不互杀 xff1b 该程序有四个类 xff1a 蛇基类 SnakeBase xff0c 玩家类 Player xff0c AI 类 xff0c Game 类 xff1b SnakeB
  • 黑苹果10.15.2 安装总结记录

    先展示一下我这一次折腾的最终效果 xff1a 桌面显示正常 xff0c wifi正常 xff0c 核显正常 xff0c 蓝牙没弄 xff0c 声卡没弄 安装vs for mac xff0c 微信 xff0c 网易云音乐 xff0c 打开多个
  • docker容器技术基础入门

    docker容器技术基础入门 容器 Container 传统虚拟化与容器的区别Linux容器技术Linux NamespacesCGroupsLXCdocker基本概念docker工作方式docker容器编排 容器 Container 容器
  • C++中的future和promise使用方法

    future和promise C 43 43 11中std future提供了一种访问异步操作结果的机制 异步操作不能马上就获取操作结果 xff0c 只能在未来某个时候获取 xff0c 但可以以同步等待的方式来获取结果 xff0c 可以通过
  • select、poll、epoll简介

    select poll epoll都是IO多路复用机制 xff0c 都可实现同时监听多个I O事件的状态 xff0c 多路复用就是通过一种机制监视多个描述符 xff0c 一旦某个描述符读或者写就绪就能通知代码进行读写操作 本质他们都是同步I
  • 【无标题】

    pro git学习笔记 持续更新ing 感觉一直对git的了解不够深入 xff0c 每次都是用到什么功能现去找 xff0c 但这样每次查询都耗费时间并且可能出错 xff0c 索性将git系统性地学习一遍 xff0c 下面是记录的学习笔记 一
  • C++中的std::string_view和std::span

    string view是C 43 43 17标准引入 xff0c std span是C 43 43 20引入 xff0c 两个特性都比较类似 1 std string view string view是字符串的视图 xff0c 由于传统的s
  • 《Word中同一标点符号在不同位置空白间距不一致应怎样调》

    在写文档时出现类似于下图这种情况 xff0c 段落格式设置一模一样 xff0c 同样是中文标点符号 xff0c 没有空格 xff0c 都是半角 xff0c 但就是标点的空白间距不同 设置方法 xff1a 段落 中文版式 选项 版式 字符间距
  • 【技巧】十大深度学习技巧和经验总结

    作者简介 xff1a 在读博士 xff0c 伪程序媛 xff0c 人工智能领域学习者 xff0c 深耕机器学习 xff0c 交叉学科实践者 xff0c 周更前沿文章解读 xff0c 提供科研小工具 xff0c 分享科研经验 xff0c 欢迎
  • VS中报错IntelliSense: argument of type "void *" is incompatible with parameter of type "const char *"

    在用VS编写C 43 43 程序的时候 xff0c 遇到这样的问题IntelliSense argument of type void is incompatible with parameter of type const char xf
  • VS控制台程序被暂停,回车继续运行

    最近用vs调试程序时 用控制台定时1s打印一次信息 xff0c 调试过程发现偶尔出现控制台停止打印 不管是否开启多线程 xff0c 都会出现该问题 xff0c 而且也怀疑可能是sleep xff08 xff09 延时阻塞导致的问题 后来多次
  • VS如何设置显示代码行数

    设置VS显示代码行数 可以方便调试代码 xff0c 工具 选项 文本编辑器 C C 43 常规 行号勾选上 参考了https jingyan baidu com album af9f5a2d2e193543140a4533 html pic
  • 程序员自我介绍

    转自https www cnblogs com univeryinli p 5838781 html 一个常规的面试 xff0c 寒暄之后面试官提出的第一个问题几乎千篇一律 xff1a 请您简单地做一下自我介绍 有些被面试者都会问 xff1
  • win10磁盘占用率过高解决办法

    最近总觉得系统用起来很卡 xff0c 一看任务管理器发现win10磁盘占用率接近100 xff0c 而且在任务管理器中也关不掉 xff0c 然后百度了一下 xff0c 发现可能是家庭组导致 xff0c 结果还真是 xff0c 下面给出解决方
  • 2020届华为C++软件开发实习面试经验

    前几天去华为实习面试 xff08 虽然笔试0AC xff0c 还是收到面试通知 xff09 xff0c 现在记录一下面试心得 xff0c 后面继续好好准备 实习面试分技术面和综合面 xff1a 1 感觉技术面试重视基础 xff0c 问c 4
  • 自己编写的字符串分割函数mysplit()

    利用strtok 函数封装成的字符串分割函数mysplit sourceStr为源字符串 splitSymbol为分隔符号 strArray为分割后的字符串 xff0c 以vector形式返回 include lt iostream gt
  • OVS Bond lacp源码分析

    近期项目中要使用Ovs bond接口 xff0c Ovs Bond 只有三种模式 xff1a balance tcp xff0c balance slb xff0c active backup 这三种模式的工作方式如下 xff1a 1 ac