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