New link aggregation chapter
Andrew Thompson
thompsa at FreeBSD.org
Thu Aug 30 20:39:20 UTC 2007
Hi,
I have put together a Handbook section on lagg(4) here
http://nzfug.nz.freebsd.org/nzfug/HandbookUpdates/NetworkAggregation
I have also attempted to do the markup in the attached patch. I would
appreciate if someone would be able to fix up any mistakes I have made
and commit this.
cheers,
Andrew
-------------- next part --------------
Index: chapter.sgml
===================================================================
RCS file: /home/ncvs/doc/en_US.ISO8859-1/books/handbook/advanced-networking/chapter.sgml,v
retrieving revision 1.399
diff -u -p -r1.399 chapter.sgml
--- chapter.sgml 19 Aug 2007 18:33:27 -0000 1.399
+++ chapter.sgml 30 Aug 2007 20:23:15 -0000
@@ -2859,6 +2859,194 @@ BEGEMOT-BRIDGE-MIB::begemotBridgeDefault
</sect2>
</sect1>
+ <sect1 id="network-aggregation">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Andrew</firstname>
+ <surname>Thompson</surname>
+ <contrib>Written by </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <title>Link Aggregation and Failover</title>
+
+ <indexterm><primary>lagg</primary></indexterm>
+ <indexterm><primary>failover</primary></indexterm>
+ <indexterm><primary>fec</primary></indexterm>
+ <indexterm><primary>lacp</primary></indexterm>
+ <indexterm><primary>loadbalance</primary></indexterm>
+ <indexterm><primary>roundrobin</primary></indexterm>
+
+ <sect2>
+ <title>Introduction</title>
+ <para>The &man.lagg.4; interface allows aggregation of multiple network
+ interfaces as one virtual interface for the purpose of providing
+ fault-tolerance and high-speed links.</para>
+ </sect2>
+
+ <sect2>
+ <title>Operating Modes</title>
+
+ <sect3>
+ <title>failover</title>
+
+ <para>Sends and receives traffic only through the master port. If the
+ master port becomes unavailable, the next active port is used. The
+ first interface added is the master port; any interfaces added after
+ that are used as failover devices.</para>
+ </sect3>
+
+ <sect3>
+ <title>fec</title>
+
+ <para>Supports Cisco EtherChannel. This is a static setup and does not
+ negotiate aggregation with the peer or exchange frames to monitor the
+ link, if the switch supports LACP then that should be used
+ instead.</para>
+
+ <para>Balances outgoing traffic across the active ports based on hashed
+ protocol header information and accepts incoming traffic from any
+ active port. The hash includes the Ethernet source and destination
+ address, and, if available, the VLAN tag, and the IPv4/IPv6 source
+ and destination address.</para>
+ </sect3>
+
+ <sect3>
+ <title>lacp</title>
+
+ <para>Supports the IEEE 802.3ad Link Aggregation Control Protocol
+ (LACP) and the Marker Protocol. LACP will negotiate a set of
+ aggregable links with the peer in to one or more Link Aggregated
+ Groups. Each LAG is composed of ports of the same speed, set to
+ full-duplex operation. The traffic will be balanced across the ports
+ in the LAG with the greatest total speed, in most cases there will
+ only be one LAG which contains all ports. In the event of changes in
+ physical connectivity, Link Aggregation will quickly converge to a
+ new configuration.</para>
+
+ <para>Balances outgoing traffic across the active ports based on hashed
+ protocol header information and accepts incoming traffic from any
+ active port. The hash includes the Ethernet source and destination
+ address, and, if available, the VLAN tag, and the IPv4/IPv6 source
+ and destination address.</para>
+ </sect3>
+
+ <sect3>
+ <title>loadbalance</title>
+
+ <para>This is an alias of <emphasis>fec</emphasis> mode.</para>
+ </sect3>
+
+ <sect3>
+ <title>roundrobin</title>
+
+ <para>Distributes outgoing traffic using a round-robin scheduler
+ through all active ports and accepts incoming traffic from any active
+ port. This mode will violate Ethernet frame ordering and should be
+ used with caution.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Examples</title>
+
+ <sect3>
+ <title>LACP aggregation with a Cisco switch</title>
+
+ <para>This example connects two interfaces on a &os; machine to the
+ switch as a single load balanced and fault tolerant link. More interfaces
+ can be added to increase throughput and fault tolerance. Since frame
+ ordering is mandatory on Ethernet links then any traffic between two
+ stations always flows over the same physical link limiting the maximum
+ speed to that of one interface. The transmit algorithm attempts to use as
+ much information as it can to distinguish different traffic flows and
+ balance across the available interfaces.</para>
+
+ <para>On the Cisco switch add the interfaces to the channel group.</para>
+
+ <screen>
+interface FastEthernet0/1
+ channel-group 1 mode active
+ channel-protocol lacp
+!
+interface FastEthernet0/2
+ channel-group 1 mode active
+ channel-protocol lacp
+!
+ </screen>
+
+ <para>On the &os; machine create the lagg interface.</para>
+
+ <screen>&prompt.root; <userinput>ifconfig lagg0 create</userinput>
+&prompt.root; <userinput>ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1</userinput></screen>
+
+ <para>View the interface status from ifconfig, ports marked as
+ <emphasis>ACTIVE</emphasis> are part of the active aggregation group
+ that has been negotiated with the remote switch and traffic will be
+ transmitted and received. Use the verbose output of &man.ifconfig.8;
+ to view the LAG identifiers.</para>
+
+ <screen>
+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>
+ </screen>
+
+ <para>The switch will show which ports are active, for more detail use
+ <userinput>show lacp neighbor detail</userinput>.</para>
+
+ <screen>
+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
+ </screen>
+
+ </sect3>
+ <sect3>
+ <title>Failover mode</title>
+
+ <para>Failover mode can be used to switch over to another interface if
+ the link is lost on the master.</para>
+
+ <screen>&prompt.root; <userinput>ifconfig lagg0 create</userinput>
+&prompt.root; <userinput>ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1</userinput></screen>
+
+ <screen>
+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>
+ </screen>
+
+ <para>Traffic will be transmitted and received on
+ <devicename>fxp0</devicename>, if the link is lost on
+ <devicename>fxp0</devicename> then <devicename>fxp1</devicename> will
+ become the active link. If the link is restored on the master
+ interface then it will once again become the active link.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
<sect1 id="network-diskless">
<sect1info>
<authorgroup>
More information about the freebsd-doc
mailing list