BOND 动态链路聚合 lacp配置及相关问题

2023-10-10 19:10

本文主要是介绍BOND 动态链路聚合 lacp配置及相关问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

内容基本都是参考的,哪里有雷同或者错的地方,请批评指正。

 

针对802.3ad模式的业务分析:

          场景:两个千兆网口,聚合成bond0

动态链路聚合抓取数据包格式分析:

 后台bond的配置信息:

查看目录 cat /proc/net/bonding/bond0

                root@2009:/# cat /proc/net/bonding/bond0

                 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

                 Bonding Mode: IEEE 802.3ad Dynamic link aggregation

                 Transmit Hash Policy: layer3+4 (1)

                 MII Status: up

                 MII Polling Interval (ms): 100

                 Up Delay (ms): 0

                 Down Delay (ms): 0

                 802.3ad info

                 LACP rate: fast

                 Min links: 0

                 Aggregator selection policy (ad_select): count

                System priority: 0

                System MAC address: 00:32:12:45:36:ee

                Active Aggregator Info:

                Aggregator ID: 1

               Number of ports: 2

                Actor Key: 9

                Partner Key: 1

                Partner Mac Address: b0:44:14:1d:5e:16

                Slave Interface: eth4

                MII Status: up

                Speed: 1000 Mbps

                 Duplex: full

                 Link Failure Count: 1

                 Permanent HW addr: 00:32:12:45:36:ee

                 Slave queue ID: 0

                  Aggregator ID: 1

                 Actor Churn State: none

                 Partner Churn State: none

                 Actor Churned Count: 0

                  Partner Churned Count: 0

                 details actor lacp pdu:

                 system priority: 0

                 system mac address: 00:32:12:45:36:ee

                 port key: 9

                 port priority: 255

                 port number: 1

                 port state: 63

                 details partner lacp pdu:

                 system priority: 32768

                 system mac address: b0:44:14:1d:5e:16

                  oper key: 1

                  port priority: 32768

                  port number: 2

                  port state: 61

                  Slave Interface: eth3

                 MII Status: up

                 Speed: 1000 Mbps

                 Duplex: full

                  Link Failure Count: 1

                  Permanent HW addr: 00:32:12:45:36:ee

                 Slave queue ID: 0

                  Aggregator ID: 1

                  Actor Churn State: none

                  Partner Churn State: none

                  Actor Churned Count: 0

                   Partner Churned Count: 0

                   details actor lacp pdu:

                    system priority: 0

                   system mac address: 00:32:12:45:36:ee

                  port key: 9

                   port priority: 255

                   port number: 2

                  port state: 63

                 details partner lacp pdu:

                 system priority: 32768

                system mac address: b0:44:14:1d:5e:16

                oper key: 1

                 port priority: 32768

                 port number: 1

                 port state: 61

         

注意是事项:Aggregator ID 必须相同才能聚合成功。

双工模式尽量都要配置成自动协商

                       root@2009:/# ethtool bond0

                       Settings for bond0:

                       Supported ports: [ ]

                        Supported link modes: Not reported

                         Supported pause frame use: No

                      Supports auto-negotiation: No

                         Supported FEC modes: Not reported

                       Advertised link modes: Not reported

                     Advertised pause frame use: No

                        Advertised auto-negotiation: No

                       Advertised FEC modes: Not reported

                       Speed: 2000Mb/s

                     Duplex: Full

                  Port: Other

                  PHYAD: 0

                  Transceiver: internal

                   Auto-negotiation: off

                  Link detected: yes

第一次使用必须配置参数:

                       cat /sys/class/net/bond0/bonding/miimon 链路状态检测,这个或者arp两种检测机制,选择配置一种。

                       cat /sys/class/net/bond0/bonding/ad_actor_sys_prio bond的优先级 配置成0 吧,这样优先级最高

                        cat /sys/class/net/bond0/bonding/lacp_rate 发送lacp的速率 配置成fast 吧

困惑及疑问:

1)是不是使用链路聚合,带宽就翻倍?

不是,这个要看具体的聚合mode,并且数据流要多,越多越均匀。

2)802.3ad 怎么查看是否聚合成功?

答:见抓包

3)静态聚合和动态聚合是否可以混合配置,就是一端静态,一端动态?

答:目前通过实验网络可以通,但是没有聚合成功(这个我不确认),因为协商后,速率是1000M

通过最近查的资料,这个是不能协商成功的,因为聚合模式必须相同

4)lacp 报文是哪里发出来了?

答:这个是bond 驱动里面,起了workqueue工作队列,周期性的发送lacpup报文。

5)lacp两端都是动态的,但是hash的算法不同,能协商成功吗,比如一端layer 1,而另一端是layer 3?

答:

6)动态链路聚合遇到坑。

一条流是不能在两个端口,均衡的,它根据hash算法,只能选择一个口。

两条流,内核版本不同,可能在一个口上,也可能在两个口上。

三条流,在两个口上一定是打不满2000M的(这个是错的,看网络拓扑)。

5)lay3+4 最新的hash算法,kernel 4.1以上就变成如下,很多资料现在写的还是老的

hash = (__force u32)flow.ports.ports; //端口号

hash ^= (__force u32)flow_get_u32_dst(&flow) ^ //目的地址

(__force u32)flow_get_u32_src(&flow); //源地址

hash ^= (hash >> 16);

hash ^= (hash >> 8);

return hash >> 1;

slave_agg_no = hash % slaves_in_agg;

802.3ad链路聚合的前提条件:   

1)速率必须相同,并且是全双工

2)lacp只能与lacp进行聚合,不能与静态混合聚合

3) 其他细节参考下面文档

内核bond 代码(kernel 2.6.32)处理流程:

                    收包:netif_receive_skb->__netif_receive_skb->bond_handle_frame(bond_3ad_lacpdu_recv(收lacp))->__netif_receive_skb->ip_rcv

                      发包:dev_queue_xmit(bond0)->__dev_xmit_skb->sch_direct_xmit->dev_hard_start_xmit->ops->ndo_start_xmit(skb, dev)->bond_start_xmit->__bond_start_xmit->bond_3ad_xor_xmit->bond_dev_queue_xmit->dev_queue_xmit(dev 是eth3)

                     周期性发lacp报文:bond_work_init_all->INIT_DELAYED_WORK->bond_3ad_state_machine_handler->ad_tx_machine->ad_lacpdu_send

连接地址:

https://www.kernel.org/doc/Documentation/networking/bonding.txt

LACP笔记 - 百度文库

https://en.wikipedia.org/wiki/Link_aggregation#Same_link_speed

LACP报文格式

What is Ethernet Auto-Negotiation? – Fosco Connect

NTRON技术白皮书:网络自动协商机制 - 百度文库

这篇关于BOND 动态链路聚合 lacp配置及相关问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182466

相关文章

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删