bonding的源代码分析_第1页
bonding的源代码分析_第2页
bonding的源代码分析_第3页
bonding的源代码分析_第4页
bonding的源代码分析_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.内容*Bonding模块工作流程综述。(第3节)*Bonding链路状态监控机制(mii模式、arp模式)描述。(第4节)码,请阅读5节。模块通过MII或者ARP侦测到实际网卡故障时也会改变自定义的链路状态值(例如从在主备型工作模式中,如果物理网卡不出现故障,只有一块网卡(活动网卡)处于而一旦主网卡从故障中恢复,不管当前活动网卡是否故障都切换到主网卡。在balance-tlb和收取数据包时,物理网卡驱动的中断处理函数把数据包放入接收队列中,随后软中断NFTRXSOFTIRO的处理函数netrxaction被调用,该函数将调用接收数据包的物理网卡网卡的if(dev->master)skb->dev=dev->master;2.发送数据虚拟网卡的IP地址决定(当然前提是物理网卡没有设置IFF_NOARP标志),并且*根据被绑定物理网卡的实际链路状态(是否故障、网线是否连接)更新bonding模块自定义的物都等于0则使用参数值为100的MI链路状态监控(强默认是0值。(在ARP链路状态监控中这两个参数没有用)③如果在downdelay毫秒内物理网卡始终没有恢复正常,则该物理网卡的链路状态被设置为如果虚拟网卡工作于主备型工作模式下,则活动状态被设置为卡的链路状态都是BONDLINKDOWN,所以可能没有链路状态为BONDLINKUP或者netifcarrier_ok(dev)都返回非0值),都试图从该网卡向arp_targets表示的各个IP地址发送ARP请5.代码分析该结构是全局结构(每系统一个),对应于加载bonding模块时传入的各个参数名称类型含义BOND_MODE_ALB自适应负载均衡模式miimonint使用MII链路状态监控时的时间间隔(ms)use_carrierint使用MI链路状态监控时是否使用更新的carrier调用updelayint使用MII链路状态监控时从BACK状态切换到UP状态的时延(ms)downdelayint使用MII链路状态监控时从FAIL状态切换到DOWN状态的时延(ms)arp_targetsu32[在ARP链路状态监控中将向这些IP地址发送ARP请求。2.structslave每一个被管辖的物理网卡对应一个该数据结构的实例名称类型含义devstructnet_device*指向被绑定的物理网卡next,prevstructslave*所有的slave数据结构通过这两个指针双向链接到一起形成*循环*链表用于保存MII链路状态监控和ARP链路状态监控的时延值。用于active-backup模式下的ARP状态监控links8表示对应网卡的链路状态,取下列四个值之一:BOND_LINK_UP上线状态BOND_LINK_DOWN故障状态BOND_LINK_FAIL网卡出现故障,状态BOND_LINK_DOWN切换中BOND_LINK_BACK网卡恢复,状态BOND_LINK_UP切换中states8表示对应网卡活动状态,取下列两个值之一:BONDSTATEACTIVE活动状态BOND_STATE_BACKUP后备状态original_flagsu32保存被绑定物理网卡原来的flagsperm_hwaddru8[保存被绑定物理网卡原来的MAC地址ad_infostructad_slave_infotlb_infostructtlb_slave_info记录自适应传输负载均衡模式下的“每网卡”相关状态信息duplexu8网卡工作模式(全双工?)3.structbonding名称类型含义staticint_initbonding_init(void)2.如果内核支持proc文件系统,调用/proc/net/bonding。*bond_init2.释放*bonding_exit*bonddeinit*如果被绑定网卡处于UP状态,则ifensla8.设置slave->dev指向slavedev。slavedev.原型13.恢复slave_dev的MAC地址(根据slave->perm_hwaddr)和flags(根据slave->original_flags)。1.open/close*bond_open(net_device->open接口)2.ioctl接口staticintbond_do_ioctl(structnet_device*bond_dev,structifreq*ifr,intcmd)*链路状态设置和查询(bondethtoolioctl或者ifm*切换当前活动的物理网卡(bond_ioctl_change_active)名称含义rx_packets接收包总数rx_bytes接收字节总数__rx_missed_errors接收时丢失的包数(仅仅对某些媒体有效)tx_aborted_errors发送取消次数(例如发送超时)tx_heartbeat_errors心跳信号丢失(仅仅对某些媒体有效)tx_window_errors接收窗口错误(不明,需要进一步确staticvoidbond_set_multicast_list(structnet_device*bond_dev)staticintbondchangemtu(structnetdevice*bonddev,intnewmtu)该函数把被虚拟网卡的MTU和被它管辖的所有物理网卡的MTU设置为同一值,主要做如下操作:4.数据包传输(接收/发送)2.netif_running(bond_dev)是否返回非0值*bond_dev_queue_xmit*devqueue_xmil该函数不是bonding模块的一部分而是内核的一个标准接口,为了清楚起见也把它列出来,请参考*bond_mii_monitorstaticvoidbondmiimonitor(structnetdevice*bonddev)5.如果原来物理网卡的链路状态为2.如果虚拟网卡工作在模式4.如果虚拟网卡工作在模式模式下,调用bond_alb_handle_link_change。和netif_carrier_ok都返回非0(真)值,即本地网卡检查通过,仍然周期性地发送ARP请求出去),请参3.如果dev->flags中IFF_UP被设置,netifr用bond_arp_send_all从该网卡发送ARP请1.如果物理网卡在时间间隔delta_in_ticks内接收过数据包,就把网卡的链路状态设置为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论