[百度分享]Bonding模块主要工作模式相关代码分析(一)
现在接着上面的开始讨论,讲解一下Bonding模块主要工作模式相关代码分析一部分:         
关键数据结构     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请求。
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	网卡工作模式(全双工?)
struct bonding文件:driver/net/bonding/Bonding.h
每一个虚拟网卡对应一个该数据结构的实例。
主要成员:
名称	类型	含义
dev	struct net_device*	指向虚拟网卡(例如bond0、bond1等等)
first_slave	struct   slave *	指向被绑定的第一个物理网卡对应的slave结构。
curr_active_slave	struct   slave *	指向当前活动的网卡对应的slave结构,在不同的工作模式下有不同的含义。
current_arp_slave	struct   slave *	用于ARP状态监控(只用于bond_activebackup_arp_mon)
primary_slave	struct   slave *	如果使用BOND_MODE_ACTIVEBACKUP、BOND_MODE_TLB或者BOND_MODE_ALB模式,则指向主物理网卡对应的slave结构(primary_slave)
slave_cnt	s32	虚拟网卡所管辖的物理网络接口的个数
lock	rwlock_t	每一个虚拟网卡管辖一系列物理网卡,每一个物理网卡对应一个slave结构,所有的slave被放在一个链表中,这个读写锁用来保护该链表。
curr_slave_lock	rwlock_t	用来保护curr_active_slave的读写锁。
mii_timer	struct   timer_list	用于MII链路状态监控的定时器
arp_timer	struct   timer_list	用于ARP链路状态监控的定时器
kill_timers	s8	如果该标志置位,所有的计时器超时后就不再重新设置,从而可以被安全删除
bond_list	struct   list_head	通过该结构,所有的bonding数据结构被连接为双向链表,链表头是全局变量bond_dev_list。
------解决方案--------------------名人。。。
------解决方案--------------------好东西,顶一下
------解决方案--------------------hao, 15 个积分
------解决方案--------------------顶!!积分!!
------解决方案--------------------很牛。。
------解决方案--------------------支持,接分
------解决方案--------------------这么短时间能讲多少?
------解决方案--------------------支持一个~~up~~~~~~~