免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1173 | 回复: 0
打印 上一主题 下一主题

Linux Ethernet Bonding Driver HOWTO (五) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 17:04 |只看该作者 |倒序浏览
13. 交换机行为的问题
=================================
13.1 链路建立和故障恢复的延时
---------------------------------
  某些交换机会出现不合适的行为,关于交换机报告的链路启动和关闭的时间。
  首先,当链路启动时,某些交换机可能指示链路已经启动(载波有效),但在一段时间里并没有把流量从这个接口上通过,这个延迟一般是由于某种类型的自协商或路由协议,但也可能在交换机初始化时发生(比如在交换机失败后恢复时),如果你发现这是个问题,给bonding模块的updelay选项指定一个合适的值,用于指定相关接口的延时值。
  其次,某些交换机可能一次或多次“反弹”(bounce)链路状态,当链路改变状态时。这最通常在交换机初始化时发生,同样,一个合适的updelay值可以解决问题。
  要注意的是:当bonding接口没有激活的链路,驱动会立刻重用第一个链路,即使指定了updelay参数(这时updelay被忽略),如果有slave接口等待updelay超时,第一个进入该状态的接口会立刻被重用,这可以减少网络的断线时间,如果updelay值被设得过大,而且由于这只在没有连接时发生,就算忽略updelay也没有任何问题。
  其它的关于交换机时间的考虑在于,如果交换机需要很长时间进入备份模式,在一个链路断开后不要立刻激活备份接口可能更合适。错误恢复可以通过指定bonding模块的downdelay选项来指定延时。
13.2 Incoming包重复
---------------------------------
  有时你会发现在bonding设备第一次使用时,或在它休眠了一段时间后,会发生短暂的重复数据包爆发。这很容易通过"ping"网络中的其它主机来发现,可以发现ping的输出中有重复标记(通常每个slave重复一个)。
  比如,一个在active-backup模式下的bond,有五个slave都连接到同一个交换机,输出可能如下:
# ping -n 10.0.4.2
PING 10.0.4.2 (10.0.4.2) from 10.0.3.10 : 56(84) bytes of data.
64 bytes from 10.0.4.2: icmp_seq=1 ttl=64 time=13.7 ms
64 bytes from 10.0.4.2: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 10.0.4.2: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 10.0.4.2: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 10.0.4.2: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 10.0.4.2: icmp_seq=2 ttl=64 time=0.216 ms
64 bytes from 10.0.4.2: icmp_seq=3 ttl=64 time=0.267 ms
64 bytes from 10.0.4.2: icmp_seq=4 ttl=64 time=0.222 ms
  这不是由于bonding驱动的错误,这是很多交换机在更新它们的MAC转发表的一个副作用。开始的时候,交换机没有关联包里的MAC地址到一个特定的交换机端口,因此它可能把这个包发送给所有的端口,直到MAC转发表被更新。既然bond绑定的接口可能占有一个交换机上的多个端口,当交换机(临时地)给所有端口发送流量时,bond设备就会收到同一个包的多份复制(每个slave设备一份)。
  重复包行为是由交换机决定的,某些交换机有这个问题,而有些没有。如果交换机有这个问题,你可能清楚MAC转发表来发现它(在大多数Cisco交换机上,特权指令“clear mac address-table dynamic”可以清楚)。
14. 硬件相关的考量
=================================
  本节包含一些额外的信息,用于配置特定硬件平台上的bonding,或者针对特别的交换机或其它设备的bonding配置。
14.1 IBM刀片服务器(BladeCenter)
---------------------------------
  适用于JS20和类似的系统。
  在JS20刀片服务器上,bonding驱动只支持balance-rr,active-backup,balance-tlb和balance-
alb模式,这主要是由于刀片服务器内部的网络拓扑所决定的,如下文所述。
JS20网络适配器信息
---------------------------------
  所有的JS20系列有两个Broadcom千兆以太网卡集成在planar(IBM这么称呼“主板”)上。在刀片的底盘(chassis)上,所有JS20刀片的eth0端口被硬连接到#1 I/O模块,类似的,所有eth1端口被连接到#2 I/O模块。一个附加的Broadcom daughter卡可以被安装到JS20上来提供两个或更多千兆以太网卡,这些端口,也就是eth2/eth3等等,相应地被连接到#3和#4 I/O模块。
  每个I/O模块可能包含一个交换机后者一个passthrough模块(它可以让端口直连到外部的交换机)。某些bonding模式要求特定的刀片内部网络拓扑以正常工作,如下文。
  更多的刀片相关的网络信息可以在IBM红宝书上找到(
www.ibm.com/redbooks
):
"IBM eServer BladeCenter Networking Options"
"IBM eServer BladeCenter Layer 2-7 Network Switching"
刀片网络配置
---------------------------------
  因为刀片可以有非常多的方法进行配置,这里的讨论将主要针对最基本的一些配置情况。
  通常,在1和2 I/O模块会里使用以太交换模块(Ethernet Switch Modules,ESM),这时,JS20的eth0和eth1端口将会连接到不同的内部交换机上(在对应的I/O模块上)。
  passthrough模块(OPM或CPM,指Optical Passthrough Modules或Copper Passthrough Modules)
直接连接I/O模块到外部的交换机,通过使用#1和#2 I/O模块里的passthrough模块,JS20的eth0和eth1接口可以被重定向到外部的网络,并连接到一个外部的交换机上。
  依赖于ESM和PM的混合,展现给bonding的网络可能是一个单交换机拓扑(所有都是PM),或者是一个多交换机拓扑(一个或多个ESM,0个或多个PM),也可能把ESM连在一起,产生一个更像上文“多Switch下的高可靠性”一节描述的例子的配置。
特定模式的需求
---------------------------------
  balance-rr模式要求对bond中的设备使用PM,所有设备都连接到外部交换机上,那些交换机在对应的端口必须被配置为“etherchannel”或“trunking”,正如balance-rr通常使用时的要求一样。
  balance-alb和balance-tlb模式可以和ESM或PM(或者混合)一起工作,唯一的要求是:对这些模式,所有的网络接口必须能够到达所有通过bonding设备的流量所对应的目的地址(也就是,网络必须会聚到刀片外部的一点)。
  active-backup模式没有特别的需求。
链路监控的问题
---------------------------------
  当使用ESM时,只有ARP监控能可靠地监测到到外部交换机的链路断开,这一点也不出乎意料,但刀片cabinet考试建议“外部的”网络端口是系统的以太端口,如果这样的话,在这些“外部的”端口和JS20系统的设备间应该存在一个交换机。MII监控只能监测ESM和JS20系统间的链路异常。
----------------------------------------------------------------------------------------
  When an Ethernet Switch Module is in place, only the ARP
monitor will reliably detect link loss to an external switch.  This is
nothing unusual, but examination of the BladeCenter cabinet would
suggest that the "external" network ports are the ethernet ports for
the system, when it fact there is a switch between these "external"
ports and the devices on the JS20 system itself.  The MII monitor is
only able to detect link failures between the ESM and the JS20 system.
----------------------------------------------------------------------------------------
  当使用PM时,MII监控可以监控到“外部”端口的异常,因为这些“外部”端口是直连到JS20系统的。
其它考虑
---------------------------------
  Serial Over LAN(SoL,局域网上的串口连接)链路只能通过主以太(eth0)建立,因此如果eth0链路断开将会导致SoL连接的断开,它不会被通过其它网络流量来恢复,因此SoL系统超出了bonding驱动的控制范围。
  在使用bonding时,有可能需要关闭交换机(内部ESM,或外部交换机)的生成树功能,来避免错误恢复的延迟问题。
15. 常见问题(FAQ)
=================================
1. 它是否是SMP(对称多处理器)安全?
  是的,老的2.0.xx版本的bonding补丁不是SMP安全的,但新的驱动从一开始就被设计为SMP安全的。
2. 它需要哪种类型的网卡?
  任何ethernet类型的网卡都可以(你甚至可以使用混合的网卡:比如一块Intel EtherExpress PRO/100和一块3com 3c905b)。对大多数模式而言,设备并不需要有同样的速度。
3. 我可以创建多少个bonding设备?
  没有限制。
4. 一个bonding设备最多有多少个slave设备?
  这只受限于Linux支持的网络接口的数量和/或系统中可安插的网卡数量。
5. 当slave连接断开时会发生什么?
  如果链路监控被启用,断开的设备将会被禁用,active-backup模式会切换到一个备份的链路,其他模式会忽略掉断开的链路。但这个链路依然会被监控以发现它是否恢复,当链路恢复时它会重新加入bond(不管哪种工作模式),参见“高可靠性”一节以及每种工作模式的文档以获得更多信息。
  链路监控可以通过miimon或者arp_interval参数启用(在上文的模块参数一节中有描述)。通常,miimon通过监控底层网络驱动获得的载波状态来判定网络状态,而arp监控(arp_interval)通过判断本地网络里相邻主机的连通性来判定。
  如果链路监控没有启用,bonding驱动不会监测到链路故障,它会假定链路一直是可用的,这有可能会导致丢包,而且会导致性能的下降,确切的性能下降依赖于bonding的模式和网络的配置。
6. bonding可以被用于"高可用性"(High Availability)吗?
  是的,参看"高可用性"(High Availability)一节。
7. 它可以和哪种交换机/系统一起工作?
  确切的答案依赖于工作的特定模式。
  在基本的balance模式(balance-rr或者balance-xor)下,bonding可以在任何支持etherchannel(也称为trunking)的系统运行。大多数目前的可管理交换机都有支持,很多不可管理的交换机也有支持。
  高级balance模式(balance-tlb和balance-alb)没有特别的交换机需求,但需要设备驱动支持特定功能(在上文的模块参数一节里有描述)。
  在802.3ad模式,bonding可以和支持IEEE 802.3ad动态连接聚合(Dynamic Link Aggregation)的
系统一起工作,大多数可管理交换机和很多不可管理交换机都支持802.3ad。
  active-backup模式可以和任何二层(Layer-II)交换机一起工作。
8. bonding设备从什么地方获取它的MAC地址?
  如果没有显式的配置(通过ifconfig或ip link),bonding设备的MAC地址来自它的第一个slave设备,这个MAC地址会被其后的所有slave设备使用,并一直保留(即使第一个slave被移除),除非bonding设备断开或者重新配置。
  如果你想修改MAC地址,可以通过ifconfig或者ip link命令:
# ifconfig bond0 hw ether 00:11:22:33:44:55
# ip link set bond0 address 66:77:88:99:aa:bb
  MAC地址也可以这样修改:首先断开设备,然后修改slave的MAC地址(或者它们的顺序):
# ifconfig bond0 down ; modprobe -r bonding
# ifconfig bond0 .... up
# ifenslave bond0 eth...
  这个方法会自动选用增加的下一个slave的地址。
  为了恢复你的slave的MAC地址,你需要从bond上解除该slave(`ifenslave -d bond0 eth0'),bonding设备会恢复被从属前的MAC地址。
16. 资源和链接
=================================
最近版本的bonding驱动可以在最新的linux内核里找到,网站在
http://kernel.org
本文的最新版本可以在最新版的内核源码中找到(名为:Documentation/networking/bonding.txt)
,或者在bonding的sorceforge网站:
http://www.sourceforge.net/projects/bonding
关于bonding驱动的讨论可以在bonding-devel的mail list找到,该mail list位于sourceforge.net。
如果你有任何问题或疑问,直接给该mail list发送邮件,地址为:
bonding-devel@lists.sourceforge.net
  订阅或解除订阅的方法可以在下面的地址找到:
https://lists.sourceforge.net/lists/listinfo/bonding-devel
Donald Becker的Ethernet驱动和拨号程序可以在这边找到:
-
http://www.scyld.com/network/
你也可以在
www.scyld.com
找到很多关于Ethernet、NWay、MII等的很多信息。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19489/showart_1860550.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP