当前位置:  技术问答>linux和unix

[百度分享]Bonding模块主要工作模式相关代码分析(一)

    来源: 互联网  发布时间:2016-09-07

    本文导语:     现在接着上面的开始讨论,讲解一下Bonding模块主要工作模式相关代码分析一部分:        关键数据结构     struct bond_params      文件:driver/net/bonding/Bonding.h    该结构是全局结构(每系统一个),对应...

   现在接着上面的开始讨论,讲解一下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~~~~~~~

    
 
 

您可能感兴趣的文章:

  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(二)
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(八)
  • PHP中数据库单例模式的实现代码分享 iis7站长之家
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(三)
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(七)
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(一)
  • 【百度分享】基于内核模块的测试代码编写(一)
  • ubuntu12.04使用c编写php扩展模块教程分享
  • 【百度分享】基于内核模块的测试代码编写(三)
  • 用smtplib和email封装python发送邮件模块类分享
  • 【百度分享】基于内核模块的测试代码编写(二)
  • [百度分享]Bonding模块工作流程综述
  • [百度分享]Bonding 模块代码及主要工作模式分析(4)
  • [百度分享]Bonding 模块代码及主要工作模式分析(1)
  • [百度分享]Bonding 模块代码及主要工作模式分析(2)
  • 『分享』从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响!!! (转载)
  • [百度分享]Bonding 模块代码及主要工作模式分析(3)
  • [百度分享]Bonding模块主要工作模式相关代码分析(二)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java单例模式4种使用方式分享
  • PHP中数据库单例模式的实现代码分享
  • 简单的观察者模式示例分享
  • java设计模式之实现对象池模式示例分享
  • 线程安全的单例模式的几种实现方法分享
  • c#使用简单工厂模式实现生成html文件的封装类分享
  • 浅析MVP模式中V-P交互问题及案例分享
  • ​docker之轻量虚拟化技术——docker实战分享
  • php利用腾讯ip分享计划获取地理位置示例分享
  • 点对点文件分享客户端 PeerProject
  • 网络文件分享 Giver
  • IM及文件分享软件 iptux
  • P2P分享软件 Alliance P2P
  • 文件分享软件 eMule Plus
  • P2P 文件分享软件 ShakesPeer
  • 分享页面内容插件 ContentShare
  • 社交分享按钮生成JS库 Socialite.js
  • P2P分享软件 Phex
  • 前端代码编辑和分享平台 RunJS
  • jQuery 分享按钮插件 Share Button
  • 昨天考过SCJP快乐大家分享
  • P2P文件分享 GNUnet
  • 响应式社交分享按钮 RRSSB
  • 谁有免费的英文Office2003(日文也成)分享一下吧!
  • 谁有qmail的日常维护,日志分析的资料分享下?
  • 代码分享
  • 谁有xml和libxml2的说明文档,分享一下吧
  • Java代码分享工具 Java Gems


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3