日期:2014-05-16  浏览次数:20914 次

[百度分享]Bonding 模块代码及主要工作模式分析(2)
   5. 代码分析

         1. 关键数据结构

               1. struct bond_params

文件:driver/net/bonding/Bonding.h

     该结构是全局结构(每系统一个),对应于加载bonding模块时传入的各个参数

主要成员:
名称  类型  含义
mode  int  Bonding模块工作模式

BOND_MODE_ROUNDROBIN     balance-rr模式

BOND_MODE_ACTIVEBACKUP   active-backup模式

BOND_MODE_XOR            balance-xor模式

BOND_MODE_BROADCAST      broadcast模式

BOND_MODE_8023AD         IEEE 802.3ad动态链路聚合模式

BOND_MODE_TLB            自适应传输负载均衡模式

BOND_MODE_ALB            自适应负载均衡模式
miimon  int  使用MII链路状态监控时的时间间隔(ms)
arp_interval  int  使用arp链路状态监控时的时间间隔(ms)
use_carrier  int  使用MII链路状态监控时是否使用更新的carrier调用
updelay  int  使用MII链路状态监控时从BACK状态切换到UP状态的时延(ms)
downdelay  int  使用MII链路状态监控时从FAIL状态切换到DOWN状态的时延(ms)
primary  char[]  用来在active-backup、balance-tlb和balance-alb模式中指定主网卡
arp_targets  u32[]  在ARP链路状态监控中将向这些IP地址发送ARP请求。

               2. struct slave

文件:driver/net/bonding/Bonding.h

     每一个被管辖的物理网卡对应一个该数据结构的实例

主要成员:
名称  类型  含义
dev  struct net_device*  指向被绑定的物理网卡
next,prev  struct slave *  所有的slave数据结构通过这两个指针双向链接到一起形成*循环*链表
delay  s16  用于保存MII链路状态监控和ARP链路状态监控的时延值。
jiffies  u32  用于active-backup模式下的ARP状态监控
link  s8  表示对应网卡的链路状态,取下列四个值之一:

BOND_LINK_UP                上线状态

BOND_LINK_DOWN              故障状态

                              BOND_LINK_FAIL              网卡出现故障,状态BOND_LINK_DOWN切换中

                              BOND_LINK_BACK              网卡恢复,状态BOND_LINK_UP切换中

state  s8  表示对应网卡活动状态,取下列两个值之一:

BOND_STATE_ACTIVE            活动状态

BOND_STATE_BACKUP            后备状态
original_flags  u32  保存被绑定物理网卡原来的flags
perm_hwaddr  u8[]  保存被绑定物理网卡原来的MAC地址
ad_info  struct

ad_slave_info
记录IEEE 802.3ad动态链路聚合模式下的“每网卡”相关状态信息
tlb_info  struct tlb_slave_info  记录自适应传输负载均衡模式下的“每网卡”相关状态信息
link_failure_count  u32  网卡从BOND_LINK_FAIL切换到BOND_LINK_DOWN的次数
speed  u16  记录网卡的传输速度(10M/100M/1000G)
duplex  u8  网卡工作模式(全双工?)

               3. struct bonding

文件:driver/net/bonding/Bonding.h