31.6 Á´Â·¾ÛºÏÓë¹ÊÕÏ×ªÒÆ

Written by Andrew Thompson.

31.6.1 ½éÉÜ

¡¡¡¡Ê¹Óà lagg(4) ½Ó¿Ú£¬ Äܹ»½«¶à¸öÍøÂç½Ó¿Ú¾ÛºÏΪһ¸öÐéÄâ½Ó¿Ú£¬ ÒÔÌṩÈÝÔֺ͸ßËÙÁ¬½ÓµÄÄÜÁ¦¡£

31.6.2 ÔËÐÐģʽ

Failover (¹ÊÕÏ×ªÒÆ)

ֻͨ¹ýÖ÷Íø¿ÚÊÕ·¢Êý¾Ý¡£ Èç¹ûÖ÷Íø¿Ú²»¿ÉÓ㬠ÔòʹÓÃÏÂÒ»¸ö¼¤»îµÄÍø¿Ú¡£ ÄúÔÚÕâÀï¼ÓÈëµÄµÚÒ»¸öÍø¿Ú±ã»á±»ÊÓΪÖ÷Íø¿Ú£» ´Ëºó¼ÓÈëµÄÆäËûÍø¿Ú£¬ Ôò»á±»ÊÓΪ¹ÊÕÏ×ªÒÆµÄ±¸ÓÃÍø¿Ú¡£

Cisco® Fast EtherChannel®

Cisco Fast EtherChannel (FEC) ÊÇÒ»ÖÖ¾²Ì¬ÅäÖ㬠²¢²»½øÐнڵã¼äЭÉÌ»ò½»»»ÒÔÌ«ÍøÖ¡À´¼à¿ØÁ´Â·Çé¿ö¡£ Èç¹û½»»»»úÖ§³Ö LACP£¬ ÔòӦʹÓúóÕß¶ø·ÇÕâÖÖÅäÖá£

FEC ½«Êä³öÁ÷Á¿ÔÚ¼¤»îµÄÍø¿ÚÖ®¼äÒÔЭÒéÍ·É¢ÁÐÐÅϢΪÒÀ¾Ý·Ö²ð£¬ ²¢½ÓÊÕÀ´×ÔÈÎÒ⼤»îÍø¿ÚµÄÈëÁ÷Á¿¡£ É¢ÁÐÐÅÏ¢°üº¬ÒÔÌ«ÍøÔ´µØÖ·¡¢ Ä¿µÄµØÖ·£¬ ÒÔ¼° (Èç¹ûÓеϰ) VLAN tag ºÍ IPv4/IPv6 Ô´µØÖ·¼°Ä¿µÄµØÖ·ÐÅÏ¢¡£

LACP

Ö§³Ö IEEE® 802.3ad Á´Â·¾ÛºÏ¿ØÖÆÐ­Òé (LACP) ºÍ±ê¼ÇЭÒé¡£ LACP Äܹ»ÔÚ½ÚµãÓëÈô¸ÉÁ´Â·¾ÛºÏ×éÖ®¼äЭÉÌÁ´Â·¡£ ÿһ¸öÁ´Â·¾ÛºÏ×é (LAG) ÓÉÒ»×éÏàͬËÙ¶È¡¢ ÒÔȫ˫¹¤Ä£Ê½ÔËÐеÄÍø¿Ú×é³É¡£ Á÷Á¿ÔÚ LAG ÖеÄÍø¿ÚÖ®¼ä£¬ »áÒÔ×ÜËÙ¶È×î´óµÄÔ­Ôò½øÐзÖ̯¡£ µ±ÎïÀíÁ´Â··¢Éú±ä»¯Ê±£¬ Á´Â·¾ÛºÏ»áѸËÙÊÊÓ¦±ä¶¯ÐγÉеÄÅäÖá£

LACP Ò²Êǽ«Êä³öÁ÷Á¿ÔÚ¼¤»îµÄÍø¿ÚÖ®¼äÒÔЭÒéÍ·É¢ÁÐÐÅϢΪÒÀ¾Ý·Ö²ð£¬ ²¢½ÓÊÕÀ´×ÔÈÎÒ⼤»îÍø¿ÚµÄÈëÁ÷Á¿¡£ É¢ÁÐÐÅÏ¢°üº¬ÒÔÌ«ÍøÔ´µØÖ·¡¢ Ä¿µÄµØÖ·£¬ ÒÔ¼° (Èç¹ûÓеϰ) VLAN tag ºÍ IPv4/IPv6 Ô´µØÖ·¼°Ä¿µÄµØÖ·ÐÅÏ¢¡£

Loadbalance (¸ºÔؾùºâ)

ÕâÊÇ FEC ģʽµÄ±ðÃû¡£

Round-robin (ÂÖת)

½«Êä³öÁ÷Á¿ÒÔÂÖת·½Ê½ÔÚËùÓ줻î¶Ë¿ÚÖ®¼äµ÷¶È£¬ ²¢´ÓÈÎÒ⼤»î¶Ë¿Ú½ÓÊÕ½øÈëÁ÷Á¿¡£ ÕâÖÖģʽΥ·´ÁËÒÔÌ«ÍøÖ¡ÅÅÐò¹æÔò£¬ Òò´ËӦСÐÄʹÓá£

31.6.3 Àý×Ó

Àý 31-1. Óë Cisco® ½»»»»úÅäºÏÍê³É LACP Á´Â·¾ÛºÏ

ÔÚÕâ¸öÀý×ÓÖУ¬ ÎÒÃǽ« FreeBSD µÄÁ½¸öÍø¿Ú×÷Ϊһ¸ö¸ºÔؾùºâºÍ¹ÊÕÏ×ªÒÆÁ´Â·¾ÛºÏ×é½Óµ½½»»»»úÉÏ¡£ ÔÚ´Ë»ù´¡ÉÏ£¬ »¹¿ÉÒÔÔö¼Ó¸ü¶àµÄÍø¿Ú£¬ ÒÔÌá¸ßÍÌÍÂÁ¿ºÍ¹ÊÕÏÈÝÔÖÄÜÁ¦¡£ ÓÉÓÚÒÔÌ«ÍøÁ´Â·ÉÏÁ½½Úµã¼äµÄÖ¡ÐòÊÇÇ¿ÖÆÐԵģ¬ Òò´ËÁ½¸ö½ÚµãÖ®¼äµÄÁ¬½ÓËÙ¶È£¬ »áÈ¡¾öÓÚÒ»¿éÍø¿¨µÄ×î´óËÙ¶È¡£ ´«ÊäËã·¨»á¾¡Á¿²ÉÓøü¶àµÄÐÅÏ¢£¬ ÒԱ㽫²»Í¬µÄÍøÂçÁ÷Á¿·Ö̯µ½²»Í¬µÄÍøÂç½Ó¿ÚÉÏ£¬ ²¢Æ½ºâ²»Í¬Íø¿ÚµÄ¸ºÔØ¡£

ÔÚ Cisco ½»»»»úÉϽ« FastEthernet0/1 ºÍ FastEthernet0/2 ÕâÁ½¸öÍø¿ÚÌí¼Óµ½ channel-group 1£º

interface FastEthernet0/1
 channel-group 1 mode active
 channel-protocol lacp
!
interface FastEthernet0/2
 channel-group 1 mode active
 channel-protocol lacp

ÔÚ FreeBSD ʹÓà fxp0 ºÍ fxp1 ´´½¨ lagg(4) ½Ó¿Ú£º

# ifconfig lagg0 create 
# ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1

ÓÃÏÂÃæµÄÃüÁî²é¿´½Ó¿Ú״̬£º

# ifconfig lagg0

±ê¼ÇΪ ACTIVE µÄ½Ó¿ÚÊǼ¤»î¾ÝºÏ×éµÄ²¿·Ö£¬ Õâ±íʾËüÃÇÒѾ­Íê³ÉÁËÓëÔ¶³Ì½»»»»úµÄЭÉÌ£¬ ͬʱ£¬ Á÷Á¿½«Í¨¹ýÕâЩ½Ó¿ÚÀ´ÊÕ·¢¡£ ÔÚ ifconfig(8) µÄÏêϸÊä³öÖÐ»á¸ø³ö LAG µÄ±êʶ¡£

lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:05:5d:71:8d:b8
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

Èç¹ûÐèÒª²é¿´½»»»»úÉϵĶ˿Ú״̬£¬ ÔòӦʹÓà show lacp neighbor ÃüÁ

switch# show lacp neighbor 
Flags:  S - Device is requesting Slow LACPDUs 
        F - Device is requesting Fast LACPDUs
        A - Device is in Active mode       P - Device is in Passive mode     

Channel group 1 neighbors

Partner's information:

                  LACP port                        Oper    Port     Port
Port      Flags   Priority  Dev ID         Age     Key     Number   State
Fa0/1     SA      32768     0005.5d71.8db8  29s    0x146   0x3      0x3D  
Fa0/2     SA      32768     0005.5d71.8db8  29s    0x146   0x4      0x3D

ÈçÓû²é¿´½øÒ»²½µÄÏêÇ飬 ÔòÐèҪʹÓà show lacp neighbor detail ÃüÁî¡£

Àý 31-2. ¹ÊÕÏ×ªÒÆÄ£Ê½

¹ÊÕÏ×ªÒÆÄ£Ê½ÖУ¬ µ±Ê×Ñ¡Á´Â··¢ÉúÎÊÌâʱ£¬ »á×Ô¶¯Çл»µ½±¸Óö˿ڡ£ ÏÂÃæµÄÃüÁî»á´´½¨ lagg0 ½Ó¿Ú£¬ ²¢Ê¹Óà fxp0 ×÷ΪÊ×Ñ¡½Ó¿Ú£¬ ¶ø fxp1 ×÷Ϊ±¸Óýӿڣº

# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1

´´½¨³É¹¦Ö®ºó£¬ ½Ó¿Ú״̬»áÊÇÀàËÆÏÂÃæÕâÑù£¬ Ö÷ÒªµÄÇø±ðÊÇ MAC µØÖ·ºÍÉ豸Ãû£º

# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:05:5d:71:8d:b8
        media: Ethernet autoselect
        status: active
        laggproto failover
        laggport: fxp1 flags=0<>
        laggport: fxp0 flags=5<MASTER,ACTIVE>

ϵͳ½«ÔÚ fxp0 ÉϽøÐÐÁ÷Á¿µÄÊÕ·¢¡£ Èç¹û fxp0 µÄÁ¬½ÓÖжϣ¬ Ôò fxp1 »á×Ô¶¯³ÉΪ¼¤»îÁ¬½Ó¡£ Èç¹ûÖ÷¶Ë¿ÚµÄÁ¬½Ó»Ö¸´£¬ ÔòËüÓÖ»á³ÉΪ¼¤»îÁ¬½Ó¡£

Àý 31-3. ÓÐÏßÍøÂçºÍÎÞÏßÍøÂç½Ó¿Ú¼äµÄ×Ô¶¯Çл»

¶ÔÓÚʹÓñʼDZ¾µÄÓû§À´Ëµ£¬ ͨ³£»áÏ£ÍûʹÓÃÎÞÏßÍøÂç½Ó¿Ú×÷Ϊ±¸Óýӿڣ¬ ÒÔ±ãÔÚÓÐÏßÍøÂç²»¿ÉÓÃʱ¼ÌÐø±£³ÖÍøÂçÁ¬½Ó¡£ ͨ¹ýʹÓà lagg(4)£¬ ÎÒÃÇ¿ÉÒÔֻʹÓÃÒ»¸ö IP µØÖ·µÄÇé¿öÏ£¬ ÓÅÏÈʹÓÃÐÔÄܺͰ²È«ÐÔ¶¼¸üºÃµÄÓÐÏßÍøÂ磬 ͬʱ±£³Öͨ¹ýÎÞÏßÍøÂçÁ¬½ÓÀ´´«ÊäÊý¾ÝµÄÄÜÁ¦¡£

ҪʵÏÖÕâÑùµÄÄ¿µÄ£¬ ¾ÍÐèÒª½«ÓÃÓÚÁ¬½ÓÎÞÏßÍøÂçµÄÎïÀí½Ó¿ÚµÄ MAC µØÖ·ÐÞ¸ÄΪÓëËùÅäÖÃµÄ lagg(4) Ò»Ö£¬ ºóÕßÊÇ´ÓÖ÷ÍøÂç½Ó¿Ú£¬ Ò²¾ÍÊÇÓÐÏßÍøÂç½Ó¿Ú£¬ ¼Ì³Ð¶øÀ´¡£

ÔÚÕâ¸öÅäÖÃÖУ¬ ÎÒÃǽ«ÓÅÏÈʹÓÃÓÐÏßÍøÂç½Ó¿Ú bge0 ×÷ΪÖ÷ÍøÂç½Ó¿Ú£¬ ¶ø½«ÎÞÏßÍøÂç½Ó¿Ú wlan0 ×÷Ϊ±¸ÓÃÍøÂç½Ó¿Ú¡£ ÕâÀïµÄ wlan0 ʹÓõÄÎïÀíÉ豸ÊÇ iwn0£¬ ÎÒÃÇÐèÒª½«ËüµÄ MAC µØÖ·ÐÞ¸ÄΪÓëÓÐÏßÍøÂç½Ó¿ÚÒ»Ö¡£ ΪÁË´ïµ½Õâ¸öÄ¿µÄÊ×ÏÈÒªµÃµ½ÓÐÏßÍøÂç½Ó¿ÚÉ쵀 MAC µØÖ·£º

# ifconfig bge0
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        ether 00:21:70:da:ae:37
        inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2 
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Äú¿ÉÄÜÐèÒª½« bge0 ¸ÄΪÄúϵͳÉÏʵ¼ÊʹÓõĽӿڣ¬ ²¢´ÓÊä³ö½á¹ûÖÐµÄ ether ÕâÐÐÕÒ³öÓÐÏßÍøÂçµÄ MAC µØÖ·¡£ ½Ó×ÅÊÇÐÞ¸ÄÎïÀíµÄÎÞÏßÍøÂç½Ó¿Ú£¬ iwn0£º

# ifconfig iwn0 ether 00:21:70:da:ae:37

ÆôÓÃÎÞÏßÍøÂç½Ó¿Ú£¬ µ«²»ÔÚÆäÉÏÅäÖà IP µØÖ·£º

# ifconfig wlan0 create wlandev iwn0 ssid my_router up

´´½¨ lagg(4) ½Ó¿Ú£¬ ÆäÖÐ bge0 ×÷ΪÖ÷ÍøÂç½Ó¿Ú£¬ ¶øÒÔ wlan0 ×÷Ϊ±¸Ñ¡½Ó¿Ú£º

# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport bge0 laggport wlan0

д´½¨µÄ½Ó¿ÚµÄ״̬ÈçÏ£¬ ÄúϵͳÉ쵀 MAC µØÖ·ºÍÉ豸ÃûµÈ¿ÉÄÜ»áÓÐËù²»Í¬£º

# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:21:70:da:ae:37
        media: Ethernet autoselect
        status: active
        laggproto failover
        laggport: wlan0 flags=0<>
        laggport: bge0 flags=5<MASTER,ACTIVE>

ͨ¹ýÉèÖÃÏÂÁÐµÄ /etc/rc.conf ÅäÖ㬠¿ÉÒÔ±ÜÃâÿ´ÎÆô¶¯ÏµÍ³Ê±¶¼ÊÖ¹¤Öظ´ÉÏÃæµÄÉèÖòÙ×÷£º

ifconfig_bge0="up"
ifconfig_iwn0="ether 00:21:70:da:ae:37"
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP"

±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.