<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>blog@insidesystems.net: Improving Network Reliability on FreeBSD</title>
    <link>http://blog.insidesystems.net/articles/2008/06/27/improving-network-reliability-on-freebsd</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Improving Network Reliability on FreeBSD</title>
      <description>&lt;p&gt;If you didn&amp;#8217;t notice it during the FreeBSD 7.0/6.3 release, FreeBSD got a great new tool from OpenBSD.  The &lt;a href="http://www.freebsd.org/doc/en/books/handbook/network-aggregation.html"&gt;lagg&lt;/a&gt; device.&lt;/p&gt;


	&lt;p&gt;This device allows you to setup links with failover, or to combine them using &lt;span class="caps"&gt;LACP&lt;/span&gt;, and the operation is dead simple.  Here&amp;#8217;s an example rc.conf, that just does a basic link failover:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
cloned_interfaces="lagg0" 
ifconfig_bge0="up" 
ifconfig_bge1="up" 
ifconfig_lagg0="laggproto failover laggport bge1 laggport bge0 192.168.1.5 netmask 255.255.255.0" 
&lt;/code&gt;
&lt;/pre&gt;

Or if you use 802.1q trunks
&lt;pre&gt;
&lt;code&gt;
cloned_interfaces="lagg0 vlan0" 
ifconfig_em0="up" 
ifconfig_em1="up" 
ifconfig_lagg0="laggproto failover laggport em0 laggport em1" 
ifconfig_vlan0="vlan 22 vlandev lagg0 192.168.1.5 netmask 255.255.255.0" 
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;The only downside of this, at all, is you need to write a quick nagios plugin to check for dead links, but fortunately, that&amp;#8217;s easy enough to do as well.&lt;/p&gt;


	&lt;p&gt;Note: We don&amp;#8217;t currently use &lt;span class="caps"&gt;LACP&lt;/span&gt;, because we&amp;#8217;ve had some issues with it losing connectivity altogether, after alternating link failures.&lt;/p&gt;Example ifconfig output from a successful lagg setup:
&lt;pre&gt;
&lt;code&gt;
em0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=19b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4&amp;gt;
    ether 00:15:17:73:61:f4
    media: Ethernet 100baseTX &amp;lt;full-duplex&amp;gt;
    status: active
    lagg: laggdev lagg0
em4: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=19b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4&amp;gt;
    ether 00:15:17:73:61:f4
    media: Ethernet 100baseTX &amp;lt;full-duplex&amp;gt;
    status: active
    lagg: laggdev lagg0
lagg0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=19b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4&amp;gt;
    ether 00:15:17:73:61:f4
    inet 192.168.1.52 netmask 0xffffff00 broadcast 192.168.1.255
    media: Ethernet autoselect
    status: active
    laggproto failover
    laggport: em4 flags=0&amp;lt;&amp;gt;
    laggport: em0 flags=5&amp;lt;MASTER,ACTIVE&amp;gt;

&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Example ifconfig output from a successful vlan and lagg combination:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
bge0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=9b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM&amp;gt;
    ether 00:11:0a:30:21:04
    media: Ethernet autoselect (1000baseTX &amp;lt;full-duplex&amp;gt;)
    status: active
    lagg: laggdev lagg0
bge1: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=9b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM&amp;gt;
    ether 00:11:0a:30:21:04
    media: Ethernet autoselect (1000baseTX &amp;lt;full-duplex&amp;gt;)
    status: active
    lagg: laggdev lagg0
lagg0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=9b&amp;lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM&amp;gt;
    ether 00:11:0a:30:21:04
    media: Ethernet autoselect
    status: active
    laggproto failover
    laggport: bge0 flags=0&amp;lt;&amp;gt;
    laggport: bge1 flags=5&amp;lt;MASTER,ACTIVE&amp;gt;
vlan0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500
    options=3&amp;lt;RXCSUM,TXCSUM&amp;gt;
    ether 00:11:0a:30:21:04
    inet 192.168.1.145 netmask 0xffffff00 broadcast 192.168.1.255
    media: Ethernet autoselect
    status: active
    vlan: 22 parent interface: lagg0
&lt;/code&gt;
&lt;/pre&gt;</description>
      <pubDate>Fri, 27 Jun 2008 16:05:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:4b5f53ed-3dc4-454e-b9db-b8977ef9f80e</guid>
      <author>Kevin Way</author>
      <link>http://blog.insidesystems.net/articles/2008/06/27/improving-network-reliability-on-freebsd</link>
      <category>FreeBSD</category>
      <category>Networking</category>
      <category>freebsd</category>
      <category>lagg</category>
      <category>lacp</category>
      <category>link</category>
      <category>aggregation</category>
      <category>vlan</category>
      <category>network</category>
    </item>
  </channel>
</rss>
