commit f5c0953ba8738d0ae07b8f30c8288dcd8cab2123
Author: Stephen Wadeley <swadeley(a)redhat.com>
Date: Tue Jul 29 08:59:28 2014 +0200
Remove: Specific Kernel Module Capabilities
Reuse "Using Channel Bonding" in Networking Guide
en-US/Working_with_Kernel_Modules.xml | 412 ---------------------------------
1 files changed, 0 insertions(+), 412 deletions(-)
---
diff --git a/en-US/Working_with_Kernel_Modules.xml
b/en-US/Working_with_Kernel_Modules.xml
index b4345e3..e552be6 100644
--- a/en-US/Working_with_Kernel_Modules.xml
+++ b/en-US/Working_with_Kernel_Modules.xml
@@ -510,419 +510,7 @@ fi</programlisting>
<para>Networking and SCSI modules do not generally need to be manually loaded
as they have their own particular loading mechanisms.</para>
</note>-->
</section>
- <section
- id="sec-Specific_Kernel_Module_Capabilities">
- <title>Specific Kernel Module Capabilities</title>
- <para>This section explains how to enable specific kernel capabilities using
various kernel modules.</para>
- <section
- id="sec-Using_Multiple_Ethernet_Cards">
- <title>Using Multiple Ethernet Cards</title>
- <indexterm>
- <primary>kernel module</primary>
- <secondary>Ethernet module</secondary>
- <tertiary>supporting multiple cards</tertiary>
- </indexterm>
- <para>It is possible to use multiple Ethernet cards on a single machine. For
each card there must be an <command>alias</command> and, possibly,
<command>options</command> lines for each card in a user-created
<filename><replaceable>module_name</replaceable>.conf</filename>
file in the <filename>/etc/modprobe.d/</filename> directory.</para>
- <para>For additional information about using multiple Ethernet cards, refer
to the <citetitle>Linux Ethernet-HOWTO</citetitle> online at <ulink
-
url="http://www.redhat.com/mirrors/LDP/HOWTO/Ethernet-HOWTO.html&quo...
- </section>
- <section
- id="sec-Using_Channel_Bonding">
- <title>Using Channel Bonding</title>
- <indexterm>
- <primary>kernel module</primary>
- <secondary>bonding module</secondary>
- <tertiary>description</tertiary>
- </indexterm>
- <indexterm>
- <primary>channel bonding</primary>
- <secondary>description</secondary>
- </indexterm>
- <indexterm>
- <primary>bonding</primary>
- <see>channel bonding</see>
- </indexterm>
- <indexterm>
- <primary>NIC</primary>
- <secondary>binding into single channel</secondary>
- </indexterm>
- <indexterm>
- <primary>channel bonding interface</primary>
- <see>kernel module</see>
- </indexterm>
- <para>&MAJOROS; allows administrators to bind NICs together into a single
channel using the <filename>bonding</filename> kernel module and a special
network interface, called a <firstterm>channel bonding interface</firstterm>.
Channel bonding enables two or more network interfaces to act as one, simultaneously
increasing the bandwidth and providing redundancy.</para>
- <indexterm>
- <primary>kernel module</primary>
- <secondary>bonding module</secondary>
- </indexterm>
- <indexterm>
- <primary>channel bonding</primary>
- <secondary>configuration</secondary>
- </indexterm>
- <para>To channel bond multiple network interfaces, the administrator must
perform the following steps:</para>
- <orderedlist
- continuation="restarts"
- inheritnum="ignore">
- <listitem>
- <para>Configure a channel bonding interface as outlined in the
<citetitle pubwork="book">Fedora Networking
Guide</citetitle>.</para>
- </listitem>
- <listitem>
- <para>To enhance performance, adjust available module options to
ascertain what combination works best. Pay particular attention to the
<command>miimon</command> or <command>arp_interval</command> and
the <command>arp_ip_target</command> parameters. Refer to <xref
- linkend="s3-modules-bonding-directives"/> for a list of
available options and how to quickly determine the best ones for your bonded
interface.</para>
- </listitem>
- </orderedlist>
- <section
- id="s3-modules-bonding-directives">
- <title>Bonding Module Directives</title>
- <indexterm>
- <primary>kernel module</primary>
- <secondary>bonding module</secondary>
- <tertiary>parameters to bonded interfaces</tertiary>
- </indexterm>
- <indexterm>
- <primary>kernel module</primary>
- <secondary>module parameters</secondary>
- <tertiary>bonding module parameters</tertiary>
- </indexterm>
- <indexterm>
- <primary>channel bonding</primary>
- <secondary>parameters to bonded interfaces</secondary>
- </indexterm>
- <para>It is a good idea to test which channel bonding module parameters
work best for your bonded interfaces before adding them to the <parameter
- class="option">BONDING_OPTS="<replaceable>bonding
parameters</replaceable>"</parameter> directive in your bonding interface
configuration file (<filename>ifcfg-bond0</filename> for example). Parameters
to bonded interfaces can be configured without unloading (and reloading) the bonding
module by manipulating files in the <systemitem
- class="filesystem">sysfs</systemitem> file
system.</para>
- <para>
- <systemitem
- class="filesystem">sysfs</systemitem> is a virtual file
system that represents kernel objects as directories, files and symbolic links.
<systemitem
- class="filesystem">sysfs</systemitem> can be used to query
for information about kernel objects, and can also manipulate those objects through the
use of normal file system commands. The <systemitem
- class="filesystem">sysfs</systemitem> virtual file system
has a line in <filename>/etc/fstab</filename>, and is mounted under the
<filename>/sys/</filename> directory. All bonding interfaces can be configured
dynamically by interacting with and manipulating files under the
<filename>/sys/class/net/</filename> directory. </para>
- <para>In order to determine the best parameters for your bonding interface,
create a channel bonding interface file such as
<filename>ifcfg-bond0</filename> by following the instructions in the
<citetitle pubwork="book">Fedora Networking Guide</citetitle>.
Insert the <parameter
- class="option">SLAVE=yes</parameter> and <parameter
- class="option">MASTER=bond0</parameter> directives in the
configuration files for each interface bonded to bond0. Once this is completed, you can
proceed to testing the parameters.</para>
- <para>First, bring up the bond you created by running
<command>ifconfig
<option>bond<replaceable>N</replaceable></option> <option>up</option></command>
as <systemitem class="username">root</systemitem>:</para>
- <screen>~]# <command>ifconfig bond0 up</command>
- </screen>
- <para>If you have correctly created the
<filename>ifcfg-bond0</filename> bonding interface file, you will be able to
see <computeroutput>bond0</computeroutput> listed in the output of running
<command>ifconfig</command> (without any options):</para>
- <screen>~]# <command>ifconfig</command>
-bond0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
- UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
- RX packets:0 errors:0 dropped:0 overruns:0 frame:0
- TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
-eth0 Link encap:Ethernet HWaddr 52:54:00:26:9E:F1
- inet addr:192.168.122.251 Bcast:192.168.122.255 Mask:255.255.255.0
- inet6 addr: fe80::5054:ff:fe26:9ef1/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:207 errors:0 dropped:0 overruns:0 frame:0
- TX packets:205 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:70374 (68.7 KiB) TX bytes:25298 (24.7 KiB)
-<lineannotation>[output truncated]</lineannotation>
- </screen>
- <para>To view all existing bonds, even if they are not up,
run:</para>
- <screen>~]# <command>cat
/sys/class/net/bonding_masters</command>
-bond0</screen>
- <para>You can configure each bond individually by manipulating the files
located in the
<filename>/sys/class/net/bond<replaceable>N</replaceable>/bonding/</filename>
directory. First, the bond you are configuring must be taken down:</para>
- <screen>~]# <command>ifconfig bond0 down</command>
- </screen>
- <para>As an example, to enable MII monitoring on bond0 with a 1 second
interval, you could run (as <systemitem
class="username">root</systemitem>):</para>
- <screen>~]# <command>echo 1000 >
/sys/class/net/bond0/bonding/miimon</command>
- </screen>
- <para>To configure bond0 for <parameter
- class="option">balance-alb</parameter> mode, you could run
either:</para>
- <screen>~]# <command>echo 6 >
/sys/class/net/bond0/bonding/mode</command>
- </screen>
- <para>...or, using the name of the mode:</para>
- <screen>~]# <command>echo balance-alb >
/sys/class/net/bond0/bonding/mode</command>
- </screen>
- <para>After configuring options for the bond in question, you can bring it
up and test it by running <command>ifconfig
bond<replaceable>N</replaceable> <option>up</option>
- </command>. If you decide to change the options, take the interface down,
modify its parameters using <systemitem
- class="filesystem">sysfs</systemitem>, bring it back up,
and re-test.</para>
- <para>Once you have determined the best set of parameters for your bond,
add those parameters as a space-separated list to the <parameter
- class="option">BONDING_OPTS=</parameter> directive of the
<filename>/etc/sysconfig/network-scripts/ifcfg-bond<replaceable>N</replaceable>
- </filename> file for the bonding interface you are configuring. Whenever
that bond is brought up (for example, by the system during the boot sequence if the
<parameter
- class="option">ONBOOT=yes</parameter> directive is set),
the bonding options specified in the <parameter
- class="option">BONDING_OPTS</parameter> will take effect
for that bond. For more information on configuring bonding interfaces (and <parameter
- class="option">BONDING_OPTS</parameter>), refer to the
<citetitle pubwork="book">Fedora Networking
Guide</citetitle>.</para>
- <para>The following list provides the names of many of the more common
channel bonding parameters, along with a descriptions of what they do. For more
information, refer to the brief descriptions for each
<computeroutput>parm</computeroutput> in <command>modinfo
bonding</command> output, or the exhaustive descriptions in the
<filename>bonding.txt</filename> file in the
<package>kernel-doc</package> package (see <xref
-
linkend="s1-kernel-modules-additional-resources"/>).</para>
- <variablelist
- spacing="compact">
- <title>Bonding Interface Parameters</title>
- <varlistentry>
- <term>
-
<literal>arp_interval=<replaceable>time_in_milliseconds</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies (in milliseconds) how often ARP monitoring
occurs.</para>
- <important>
- <title>Make sure you specify all required parameters</title>
- <para>It is essential that both
<literal>arp_interval</literal> and
<literal>arp_ip_target</literal> parameters are specified, or, alternatively,
the <literal>miimon</literal> parameter is specified. Failure to do so can
cause degradation of network performance in the event that a link fails.</para>
- </important>
- <para>If using this setting while in
<literal>mode=0</literal> or <literal>mode=2</literal> (the two
load-balancing modes), the network switch must be configured to distribute packets evenly
across the NICs. For more information on how to accomplish this, refer to
<filename>/usr/share/doc/kernel-doc-<replaceable>kernel_version</replaceable>/Documentation/networking/bonding.txt</filename>
- </para>
- <para>The value is set to <userinput>0</userinput> by
default, which disables it.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>arp_ip_target=<replaceable>ip_address</replaceable><optional>,<replaceable>ip_address_2</replaceable>,…<replaceable>ip_address_16</replaceable></optional>
- </literal>
- </term>
- <listitem>
- <para>Specifies the target IP address of ARP requests when the
<literal>arp_interval</literal> parameter is enabled. Up to 16 IP addresses
can be specified in a comma separated list.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <literal>arp_validate=<replaceable>value</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Validate source/distribution of ARP probes; default is
<userinput>none</userinput>. Other valid values are
<userinput>active</userinput>, <userinput>backup</userinput>, and
<userinput>all</userinput>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <literal>debug=<replaceable>number</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Enables debug messages. Possible values are:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>0</userinput> — Debug messages are disabled.
This is the default.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>1</userinput> — Debug messages are
enabled.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>downdelay=<replaceable>time_in_milliseconds</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies (in milliseconds) how long to wait after link failure
before disabling the link. The value must be a multiple of the value specified in the
<literal>miimon</literal> parameter. The value is set to
<userinput>0</userinput> by default, which disables it.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>lacp_rate=<replaceable>value</replaceable>
- </term>
- <listitem>
- <para>Specifies the rate at which link partners should transmit
LACPDU packets in 802.3ad mode. Possible values are:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>slow</userinput> or
<userinput>0</userinput> — Default setting. This specifies that partners
should transmit LACPDUs every 30 seconds.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>fast</userinput> or
<userinput>1</userinput> — Specifies that partners should transmit LACPDUs
every 1 second.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>miimon=<replaceable>time_in_milliseconds</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies (in milliseconds) how often MII link monitoring
occurs. This is useful if high availability is required because MII is used to verify that
the NIC is active. To verify that the driver for a particular NIC supports the MII tool,
type the following command as <systemitem
class="username">root</systemitem>:</para>
- <screen>~]# <command>ethtool
<replaceable>interface_name</replaceable> | grep "Link
detected:"</command>
- </screen>
- <para>In this command, replace
<replaceable>interface_name</replaceable> with the name of the device
interface, such as <userinput>eth0</userinput>, not the bond interface. If MII
is supported, the command returns:</para>
- <screen>Link detected: yes</screen>
- <para>If using a bonded interface for high availability, the module
for each NIC must support MII. Setting the value to <userinput>0</userinput>
(the default), turns this feature off. When configuring this setting, a good starting
point for this parameter is <userinput>100</userinput>.</para>
- <important>
- <title>Make sure you specify all required parameters</title>
- <para>It is essential that both
<literal>arp_interval</literal> and
<literal>arp_ip_target</literal> parameters are specified, or, alternatively,
the <literal>miimon</literal> parameter is specified. Failure to do so can
cause degradation of network performance in the event that a link fails.</para>
- </important>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <literal>mode=<replaceable>value</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Allows you to specify the bonding policy. The
<replaceable>value</replaceable> can be one of:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>balance-rr</userinput> or
<userinput>0</userinput> — Sets a round-robin policy for fault tolerance and
load balancing. Transmissions are received and sent out sequentially on each bonded slave
interface beginning with the first one available.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>active-backup</userinput> or
<userinput>1</userinput> — Sets an active-backup policy for fault tolerance.
Transmissions are received and sent out via the first available bonded slave interface.
Another bonded slave interface is only used if the active bonded slave interface
fails.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>balance-xor</userinput> or
<userinput>2</userinput> — Sets an XOR (exclusive-or) policy for fault
tolerance and load balancing. Using this method, the interface matches up the incoming
request's MAC address with the MAC address for one of the slave NICs. Once this link
is established, transmissions are sent out sequentially beginning with the first available
interface.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>broadcast</userinput> or
<userinput>3</userinput> — Sets a broadcast policy for fault tolerance. All
transmissions are sent on all slave interfaces.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>802.3ad</userinput> or
<userinput>4</userinput> — Sets an IEEE 802.3ad dynamic link aggregation
policy. Creates aggregation groups that share the same speed and duplex settings.
Transmits and receives on all slaves in the active aggregator. Requires a switch that is
802.3ad compliant.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>balance-tlb</userinput> or
<userinput>5</userinput> — Sets a Transmit Load Balancing (TLB) policy for
fault tolerance and load balancing. The outgoing traffic is distributed according to the
current load on each slave interface. Incoming traffic is received by the current slave.
If the receiving slave fails, another slave takes over the MAC address of the failed
slave.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>balance-alb</userinput> or
<userinput>6</userinput> — Sets an Active Load Balancing (ALB) policy for
fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4
traffic. Receive load balancing is achieved through ARP negotiation.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <literal>num_unsol_na=<replaceable>number</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies the number of unsolicited IPv6 Neighbor
Advertisements to be issued after a failover event. One unsolicited NA is issued
immediately after the failover.</para>
- <para>The valid range is <userinput>0 - 255</userinput>;
the default value is <userinput>1</userinput>. This parameter affects only the
active-backup mode.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>primary=<replaceable>interface_name</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies the interface name, such as
<userinput>eth0</userinput>, of the primary device. The
<literal>primary</literal> device is the first of the bonding interfaces to be
used and is not abandoned unless it fails. This setting is particularly useful when one
NIC in the bonding interface is faster and, therefore, able to handle a bigger
load.</para>
- <para>This setting is only valid when the bonding interface is in
<userinput>active-backup</userinput> mode. Refer to <filename>
/usr/share/doc/kernel-doc-<replaceable>kernel-version</replaceable>/Documentation/networking/bonding.txt</filename>
for more information.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>primary_reselect=<replaceable>value</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies the reselection policy for the primary slave. This
affects how the primary slave is chosen to become the active slave when failure of the
active slave or recovery of the primary slave occurs. This parameter is designed to
prevent flip-flopping between the primary slave and other slaves. Possible values
are:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>always</userinput> or
<userinput>0</userinput> (default) — The primary slave becomes the active
slave whenever it comes back up.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>better</userinput> or
<userinput>1</userinput> — The primary slave becomes the active slave when it
comes back up, if the speed and duplex of the primary slave is better than the speed and
duplex of the current active slave.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>failure</userinput> or
<userinput>2</userinput> — The primary slave becomes the active slave only if
the current active slave fails and the primary slave is up.</para>
- </listitem>
- </itemizedlist>
- <para>The <literal>primary_reselect</literal> setting is
ignored in two cases:</para>
- <itemizedlist>
- <listitem>
- <para>If no slaves are active, the first slave to recover is made
the active slave.</para>
- </listitem>
- <listitem>
- <para>When initially enslaved, the primary slave is always made
the active slave.</para>
- </listitem>
- </itemizedlist>
- <!-- <para>If no slaves are active, the first slave to recover is
made the active slave.</para>
- <para>When initially enslaved, the primary slave is always made the
active slave.</para>-->
- <para>Changing the <literal>primary_reselect</literal>
policy via <systemitem
- class="filesystem">sysfs</systemitem> will cause an
immediate selection of the best active slave according to the new policy. This may or may
not result in a change of the active slave, depending upon the circumstances</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>updelay=<replaceable>time_in_milliseconds</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies (in milliseconds) how long to wait before enabling a
link. The value must be a multiple of the value specified in the
<literal>miimon</literal> parameter. The value is set to
<userinput>0</userinput> by default, which disables it.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <literal>use_carrier=<replaceable>number</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Specifies whether or not <literal>miimon</literal>
should use MII/ETHTOOL ioctls or <function>netif_carrier_ok()</function> to
determine the link state. The <function>netif_carrier_ok()</function> function
relies on the device driver to maintains its state with
<literal>netif_carrier_<replaceable>on/off</replaceable>
- </literal>; most device drivers support this
function.</para>
- <para>The MII/ETHROOL ioctls tools utilize a deprecated calling
sequence within the kernel. However, this is still configurable in case your device driver
does not support
<literal>netif_carrier_<replaceable>on/off</replaceable>
- </literal>.</para>
- <para>Valid values are:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>1</userinput> — Default setting. Enables the
use of <function>netif_carrier_ok()</function>.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>0</userinput> — Enables the use of MII/ETHTOOL
ioctls.</para>
- </listitem>
- </itemizedlist>
- <note>
- <para>If the bonding interface insists that the link is up when it
should not be, it is possible that your network device driver does not support
<literal>netif_carrier_<replaceable>on/off</replaceable></literal>.</para>
- </note>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
-
<literal>xmit_hash_policy=<replaceable>value</replaceable>
- </literal>
- </term>
- <listitem>
- <para>Selects the transmit hash policy used for slave selection in
<userinput>balance-xor</userinput> and
<userinput>802.3ad</userinput> modes. Possible values are:</para>
- <itemizedlist>
- <listitem>
- <para>
- <userinput>0</userinput> or
<userinput>layer2</userinput> — Default setting. This parameter uses the XOR
of hardware MAC addresses to generate the hash. The formula used is:</para>
-
<screen>(<replaceable>source_MAC_address</replaceable> XOR
<replaceable>destination_MAC</replaceable>) MODULO
<replaceable>slave_count</replaceable>
- </screen>
- <para>This algorithm will place all traffic to a particular
network peer on the same slave, and is 802.3ad compliant.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>1</userinput> or
<userinput>layer3+4</userinput> — Uses upper layer protocol information (when
available) to generate the hash. This allows for traffic to a particular network peer to
span multiple slaves, although a single connection will not span multiple
slaves.</para>
- <para>The formula for unfragmented TCP and UDP packets used
is:</para>
- <screen>((<replaceable>source_port</replaceable> XOR
<replaceable>dest_port</replaceable>) XOR
- ((<replaceable>source_IP</replaceable> XOR
<replaceable>dest_IP</replaceable>) AND
<constant>0xffff</constant>)
- MODULO <replaceable>slave_count</replaceable>
- </screen>
- <para>For fragmented TCP or UDP packets and all other IP protocol
traffic, the source and destination port information is omitted. For non-IP traffic, the
formula is the same as the <command>layer2</command> transmit hash
policy.</para>
- <para>This policy intends to mimic the behavior of certain
switches; particularly, Cisco switches with PFC2 as well as some Foundry and IBM
products.</para>
- <para>The algorithm used by this policy is not 802.3ad
compliant.</para>
- </listitem>
- <listitem>
- <para>
- <userinput>2</userinput> or
<userinput>layer2+3</userinput> — Uses a combination of layer2 and layer3
protocol information to generate the hash.</para>
- <para>Uses XOR of hardware MAC addresses and IP addresses to
generate the hash. The formula is:</para>
- <screen>(((<replaceable>source_IP</replaceable> XOR
<replaceable>dest_IP</replaceable>) AND
<constant>0xffff</constant>) XOR
- ( <replaceable>source_MAC</replaceable> XOR
<replaceable>destination_MAC</replaceable> ))
- MODULO <replaceable>slave_count</replaceable>
- </screen>
- <para>This algorithm will place all traffic to a particular
network peer on the same slave. For non-IP traffic, the formula is the same as for the
layer2 transmit hash policy.</para>
- <para>This policy is intended to provide a more balanced
distribution of traffic than layer2 alone, especially in environments where a layer3
gateway device is required to reach most destinations.</para>
- <para>This algorithm is 802.3ad compliant.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </varlistentry>
- </variablelist>
- </section>
- </section>
</section>
<section
id="s1-kernel-modules-additional-resources">