[networking-guide] master: Major update to Team chapter (c3906a2)

stephenw at fedoraproject.org stephenw at fedoraproject.org
Fri Jul 25 06:47:04 UTC 2014


Repository : http://git.fedorahosted.org/cgit/docs/networking-guide.git

On branch  : master

>---------------------------------------------------------------

commit c3906a2dabccf8fdf2abdfd86f54b3e141cc2331
Author: Stephen Wadeley <swadeley at redhat.com>
Date:   Fri Jul 25 08:43:50 2014 +0200

    Major update to Team chapter
    
    Thanks to fleitner, jtluka, and jpriko for their reviews.


>---------------------------------------------------------------

 en-US/Configure_Network_Teaming.xml |  288 +++++++++++++++++++----------------
 1 files changed, 157 insertions(+), 131 deletions(-)

diff --git a/en-US/Configure_Network_Teaming.xml b/en-US/Configure_Network_Teaming.xml
index 75bad7c..1b6740e 100644
--- a/en-US/Configure_Network_Teaming.xml
+++ b/en-US/Configure_Network_Teaming.xml
@@ -9,7 +9,7 @@
 <section id="sec-Understanding_Network_Teaming">
   <title>Understanding Network Teaming</title>
    <para>
-     The combining or aggregating together of network links in order to provide a logical link with higher throughput, or to provide redundancy, is known by many names such as <quote>channel bonding</quote>, <quote>Ethernet bonding</quote>, <quote>port trunking</quote>, <quote>channel teaming</quote>, <quote>NIC teaming</quote>, <quote>link aggregation</quote>, and so on. This concept as originally implemented in the Linux kernel is widely referred to as <quote>bonding</quote>. The term Network Teaming has been chosen to refer to this new implementation of the concept. The existing bonding driver is unaffected, Network Teaming is offered as an alternative and does not replace bonding in <application>Fedora</application>.
+     The combining or aggregating together of network links in order to provide a logical link with higher throughput, or to provide redundancy, is known by many names such as <quote>channel bonding</quote>, <quote>Ethernet bonding</quote>, <quote>port trunking</quote>, <quote>channel teaming</quote>, <quote>NIC teaming</quote>, <quote>link aggregation</quote>, and so on. This concept as originally implemented in the Linux kernel is widely referred to as <quote>bonding</quote>. The term Network Teaming has been chosen to refer to this new implementation of the concept. The existing bonding driver is unaffected, Network Teaming is offered as an alternative and does not replace bonding in Fedora.
    </para>
    <para>
      Network Teaming, or Team, is designed to implement the concept in a different way by providing a small kernel driver to implement the fast handling of packet flows, and various user-space applications to do everything else in user space. The driver has an <firstterm>Application Programming Interface</firstterm> (<acronym>API</acronym>), referred to as <quote>Team Netlink API</quote>, which implements Netlink communications. User-space applications can use this API to communicate with the driver. A library, referred to as <quote>lib</quote>, has been provided to do user space wrapping of Team Netlink communications and RT Netlink messages. An application daemon, <systemitem class="daemon">teamd</systemitem>, which uses Libteam lib is also provided. One instance of <systemitem class="daemon">teamd</systemitem> can control one instance of the Team driver. The daemon implements the load-balancing and active-backup logic, such as round-robin, by using additional code referre
 d to as <quote>runners</quote>. By separating the code in this way, the Network Teaming implementation presents an easily extensible and scalable solution for load-balancing and redundancy requirements. For example, custom runners can be relatively easily written to implement new logic via <systemitem class="daemon">teamd</systemitem>, and even <systemitem class="daemon">teamd</systemitem> is optional, users can write their own application to use <application>libteam</application>.
@@ -74,6 +74,51 @@
     
   </table>
 </section>
+
+<section id="sec-Team-Understanding_the_Default_Behavior_of_Master_and_Slave_Interfaces">
+<title>Understanding the Default Behavior of Master and Slave Interfaces</title>
+<para>
+When controlling teamed port interfaces using the <systemitem class="daemon">NetworkManager</systemitem> daemon, and especially when fault finding, keep the following in mind:
+<orderedlist>
+  <listitem>
+    <para>
+      Starting the master interface does not automatically start the port interfaces.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+      Starting a port interface always starts the master interface.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+      Stopping the master interface also stops the port interfaces.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+      A master without ports can start static <systemitem class="protocol">IP</systemitem> connections.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+      A master without ports waits for ports when starting <systemitem class="protocol">DHCP</systemitem> connections.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+    A master with a <systemitem class="protocol">DHCP</systemitem> connection waiting for ports completes when a port with a carrier is added.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+    A master with a <systemitem class="protocol">DHCP</systemitem> connection waiting for ports continues waiting when a port without a carrier is added.
+    </para>
+  </listitem>
+</orderedlist>
+</para>
+</section>
+
 <section id="sec-Understanding_the_Network_Teaming_Daemon_and_the_Runners">
   <title>Understanding the Network Teaming Daemon and the "Runners"</title>
   <para>
@@ -148,11 +193,11 @@ The Team daemon, <systemitem class="daemon">teamd</systemitem>, uses <applicatio
   <para>
     To see some examples of the command format, issue the following command:
     <screen>~]$ <command>bond2team --examples</command></screen>
-    New files will be created in a directory whose name starts with <filename class="directory">/tmp/bond2slave.XXXXXX</filename>, where XXXXXX is a random string. After creating the new configuration files, move the old bonding files to a backup folder and then move the new files to the <filename class="directory">/etc/sysconfig/network-scripts/</filename> directory. See the <filename>bond2team(1)</filename> man page for further details.
+    New files will be created in a directory whose name starts with <filename class="directory">/tmp/bond2team.XXXXXX/</filename>, where XXXXXX is a random string. After creating the new configuration files, move the old bonding files to a backup folder and then move the new files to the <filename class="directory">/etc/sysconfig/network-scripts/</filename> directory. See the <filename>bond2team(1)</filename> man page for further details.
   </para>
 </section>
 
-<section id="sec-Selecting_Interfaces_to_Use_as_Port_for_a__Network_Team">
+<section id="sec-Selecting_Interfaces_to_Use_as_Port_for_a_Network_Team">
   <title>Selecting Interfaces to Use as Ports for a Network Team</title>
   <para>
     To view the available interfaces, issue the following command:
@@ -163,32 +208,41 @@ The Team daemon, <systemitem class="daemon">teamd</systemitem>, uses <applicatio
     link/ether 52:54:00:6a:02:8a brd ff:ff:ff:ff:ff:ff
 3: em2:  &lt;BROADCAST,MULTICAST,UP,LOWER_UP &gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
 link/ether 52:54:00:9b:6d:2a brd ff:ff:ff:ff:ff:ff</screen>
-From the available interfaces, determine which are suitable for adding to your network team and then proceed to <xref linkend="sec-Configure_a_Network_Team"/>
+From the available interfaces, determine which are suitable for adding to your network team and then proceed to <xref linkend="sec-Selecting_Network_Team_Configuration_Methods"/>
   </para>
+  <note>
+  <para>
+    The Team developers prefer the term <quote>port</quote> rather than <quote>slave</quote>, however <application>NetworkManager</application> uses the term <quote>team-slave</quote> to refer to interfaces that make up a team.</para>
+  </note>
 </section>
 
-<section id="sec-Configure_a_Network_Team">
-  <title>Configure a Network Team</title>
+<section id="sec-Selecting_Network_Team_Configuration_Methods">
+<title>Selecting Network Team Configuration Methods</title>
 
-  <bridgehead id="bh-sec-Configure_a_Network_Team_Using_NM">Configure a Network Team Using NetworkManager</bridgehead>
   <para>
-    To configure a network team using a graphical user interface, see <xref linkend="sec-Creating_a_Network_Team_Using_a_GUI" />
+    <emphasis role="bold">To configure a network team using a graphical user interface</emphasis>, see <xref linkend="sec-Creating_a_Network_Team_Using_a_GUI" />
   </para>
-  <bridgehead id="bh-sec-Configure_a_Network_Team_Using_the_CLI">Configure a Network Team Using the Command Line Interface (CLI)</bridgehead>
+
   <para>
-    To create a network team using the command line, use <systemitem class="daemon">teamd</systemitem> commands. To use this method, proceed to <xref linkend="sec-Creating_a_Network_Team_Using_teamd"/>.
+    <emphasis role="bold">To create a network team using the Team daemon</emphasis>, <systemitem class="daemon">teamd</systemitem>, proceed to <xref linkend="sec-Creating_a_Network_Team_Using_teamd"/>.
   </para>
+
   <para>
-    To create a network team using configuration files, proceed to <xref linkend="sec-Creating_a_Network_Team_Using_ifcfg_Files" />.
+    <emphasis role="bold">To create a network team using configuration files</emphasis>, proceed to <xref linkend="sec-Creating_a_Network_Team_Using_ifcfg_Files" />.
   </para>
 
+    <para>
+    <emphasis role="bold">To create a network team using the command line tool</emphasis>, <application>nmcli</application>, proceed to <xref linkend="sec-Configure_Network_Teaming_Using_nmcli"/>.
+  </para>
+
+</section>
 
   <section id="sec-Creating_a_Network_Team_Using_a_GUI">
     <title>Creating a Network Team Using a GUI</title>
 <section
       id="sec-Establishing_a_Team_Connection">
       <title>Establishing a Team Connection</title>
-      <para>You can use the GNOME <application>control-center</application> utility to direct <application>NetworkManager</application> to create a team from two or more Wired or InfiniBand connections. It is not necessary to create the connections to be teamded first. They can be configured as part of the process to configure the team. You must have the MAC addresses of the interfaces available in order to complete the configuration process.</para>
+      <para>You can use the GNOME <application>control-center</application> utility to direct <application>NetworkManager</application> to create a team from two or more Wired or InfiniBand connections. It is not necessary to create the connections to be teamed first. They can be configured as part of the process to configure the team. You must have the MAC addresses of the interfaces available in order to complete the configuration process.</para>
 
           <procedure
         id="procedure-Adding_a_New_Team_Connection">
@@ -203,10 +257,10 @@ From the available interfaces, determine which are suitable for adding to your n
           <para>Click the plus symbol to open the selection list. Select <guilabel>Team</guilabel>. The <guilabel>Editing Team Connection <replaceable>1</replaceable></guilabel> window appears.</para>
         </step>
         <step>
-          <para>On the <guilabel>Team</guilabel> tab, click <guibutton>Add</guibutton> and select the type of interface you want to use with the team connection. Click the <guibutton>Create</guibutton> button. Note that the dialog to select the slave type only comes up when you create the first slave; after that, it will automatically use that same type for all further slaves.</para>
+          <para>On the <guilabel>Team</guilabel> tab, click <guibutton>Add</guibutton> and select the type of interface you want to use with the team connection. Click the <guibutton>Create</guibutton> button. Note that the dialog to select the port type only comes up when you create the first port; after that, it will automatically use that same type for all further ports.</para>
         </step>
         <step>
-          <para>The <guilabel>Editing team0 slave 1</guilabel> window appears. Fill in the MAC address of the first interface to be bonded.</para>
+          <para>The <guilabel>Editing team0 port 1</guilabel> window appears. Fill in the MAC address of the first interface to be added to the team.</para>
         </step>
         <step>
           <para>
@@ -219,12 +273,12 @@ From the available interfaces, determine which are suitable for adding to your n
           </para>
         </step>
         <step>
-        <para>The name of the teamed slave appears in the <guilabel>Teamed connections</guilabel> window. Click the <guibutton>Add</guibutton> button to add further slave connections.</para>
+        <para>The name of the teamed port appears in the <guilabel>Teamed connections</guilabel> window. Click the <guibutton>Add</guibutton> button to add further port connections.</para>
         </step>
         <step><para>Review and confirm the settings and then click the <guilabel>Save</guilabel> button.</para>
         </step>
         <step>
-          <para>Edit the team-specific settings by referring to <xref linkend="bh-Configuring_the_Team_Tab"/> below.</para>
+          <para>Edit the team-specific settings by referring to <xref linkend="sec-Configuring_the_Team_Tab"/> below.</para>
         </step>
       </procedure>
 
@@ -259,24 +313,24 @@ From the available interfaces, determine which are suitable for adding to your n
         </listitem>
         <listitem>
           <para>
-            <guilabel>All users may connect to this network</guilabel> — Select this box to create a connection available to all users on the system. Changing this setting may require root privileges. See <xref linkend="sec-System-wide_and_Private_Connection_Profiles"/> for details. To prevent unexpected behavior during installation, ensure that this check box remains selected for any network interface that you configure.
+            <guilabel>All users may connect to this network</guilabel> — Select this box to create a connection available to all users on the system. Changing this setting may require root privileges. See <xref linkend="sec-System-wide_and_Private_Connection_Profiles"/> for details.
             </para>
         </listitem>
         <listitem>
           <para>
-            <guilabel>Automatically connect to VPN when using this connection</guilabel> — Select this box if you want <application>NetworkManager</application> to auto-connect to a VPN connection when it is available. Select the VPN from the dropdown menu.
+            <guilabel>Automatically connect to VPN when using this connection</guilabel> — Select this box if you want <application>NetworkManager</application> to auto-connect to a VPN connection when it is available. Select the VPN from the drop-down menu.
           </para>
         </listitem>
          <listitem>
           <para>
-            <guilabel>Firewall Zone</guilabel> — Select the firewall zone from the dropdown menu.
+            <guilabel>Firewall Zone</guilabel> — Select the firewall zone from the drop-down menu.
           </para>
         </listitem>
       </itemizedlist>
         </step>
 
         <step>
-          <para>Edit the team-specific settings by referring to <xref linkend="bh-Configuring_the_Team_Tab"/> below.</para>
+          <para>Edit the team-specific settings by referring to <xref linkend="sec-Configuring_the_Team_Tab"/> below.</para>
         </step>
         </procedure>
         <bridgehead
@@ -300,60 +354,23 @@ From the available interfaces, determine which are suitable for adding to your n
             </listitem>
           </itemizedlist>
 
-      <bridgehead
-        id="bh-Configuring_the_Team_Tab">Configuring the Team Tab</bridgehead>
-      <para>If you have already added a new team connection (refer to <xref
-          linkend="procedure-Adding_a_New_Team_Connection"/> for instructions), you can enter a custom JSON configuration string in the text box or import a configuration file. Click <guilabel>Save</guilabel> to apply the JSON configuration to the team interface.</para>
+<section id="sec-Configuring_the_Team_Tab">
+<title>Configuring the Team Tab</title>
+      <para>If you have already added a new team connection you can enter a custom JSON configuration string in the text box or import a configuration file. Click <guilabel>Save</guilabel> to apply the JSON configuration to the team interface.</para>
           <para>
             For examples of JSON strings, see <xref linkend="sec-Configure_teamd_Runners" />
           </para>
+          <para>
+            See <xref linkend="procedure-Adding_a_New_Team_Connection"/> for instructions on how to add a new team.
+          </para>
+          </section>
 
     </section>
+    </section>
 
-<section id="sec-Team-Understanding_the_Default_Behavior_of_Master_and_Slave_Interfaces">
-<title>Understanding the Default Behavior of Master and Slave Interfaces</title>
-<para>
-When controlling teamed port interfaces using the <systemitem class="daemon">NetworkManager</systemitem> daemon, and especially when fault finding, keep the following in mind:
-<orderedlist>
-  <listitem>
-    <para>
-      Starting the master interface does not automatically start the port interfaces.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-      Starting a port interface always starts the master interface.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-      Stopping the master interface also stops the port interfaces.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-      A master without ports can start static <systemitem class="protocol">IP</systemitem> connections.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-      A master without ports waits for ports when starting <systemitem class="protocol">DHCP</systemitem> connections.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-    A master with a <systemitem class="protocol">DHCP</systemitem> connection waiting for ports completes when a port with a carrier is added.
-    </para>
-  </listitem>
-  <listitem>
-    <para>
-    A master with a <systemitem class="protocol">DHCP</systemitem> connection waiting for ports continues waiting when a port without a carrier is added.
-    </para>
-  </listitem>
-</orderedlist>
-</para>
-</section>
-</section>
+
+<section id="sec-Configure_a_Network_Team_Using-the_Command_Line">
+  <title>Configure a Network Team Using the Command Line</title>
 
 
   <section id="sec-Creating_a_Network_Team_Using_teamd">
@@ -373,21 +390,21 @@ activebackup_ethtool_3.conf   loadbalance_1.conf             roundrobin.conf</sc
 	"runner":	{"name": "activebackup"},
 	"link_watch":	{"name": "ethtool"},
 	"ports":	{
-		"em1": {
+		"eth1": {
 			"prio": -10,
 			"sticky": true
 		},
-		"em2": {
+		"eth2": {
 			"prio": 100
 		}
 	}
 }</screen>
-  Create a working directory to store <systemitem class="daemon">teamd</systemitem> configuration files. For example, as normal user, enter a command with the following format:
-  <screen>~]$ <command>mkdir ~/teamd_working_configs</command></screen>
+  Create a working configurations directory to store <systemitem class="daemon">teamd</systemitem> configuration files. For example, as normal user, enter a command with the following format:
+  <screen>~]$ <command>mkdir ~/<replaceable>teamd_working_configs</replaceable></command></screen>
   Copy the file you have chosen to your working directory and edit it as necessary. As an example, you could use a command with the following format:
-  <screen>~]$ <command>cp /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf ~/teamd_working_configs/activebackup_ethtool_1.conf</command></screen>
+  <screen>~]$ <command>cp /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf \ ~/<replaceable>teamd_working_configs</replaceable>/activebackup_ethtool_1.conf</command></screen>
   To edit the file to suit your environment, for example to change the interfaces to be used as ports for the network team, open the file for editing as follows:
-  <screen>~]$ <command>vi ~/teamd_working_configs/activebackup_ethtool_1.conf</command></screen>
+  <screen>~]$ <command>vi ~/<replaceable>teamd_working_configs</replaceable>/activebackup_ethtool_1.conf</command></screen>
   Make any necessary changes and save the file. See the <filename>vi(1)</filename> man page for help on using the <application>vi</application> editor or use your preferred editor.
 </para>
 <para>
@@ -395,19 +412,21 @@ activebackup_ethtool_3.conf   loadbalance_1.conf             roundrobin.conf</sc
   <screen>~]$ <command>ip link show</command>
 1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
-2: ens6: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
+2: em1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
     link/ether 52:54:00:d5:f7:d4 brd ff:ff:ff:ff:ff:ff
-3: ens7: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
+3: em2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
   link/ether 52:54:00:d8:04:70 brd ff:ff:ff:ff:ff:ff</screen>
 In this example we see that both the interfaces we plan to use are <quote>UP</quote>.
 </para>
 <para>
   To take down an interface, issue a command as <systemitem class="username">root</systemitem> in the following format:
-  <screen>~]# <command>ip link set down ens6</command></screen>
+  <screen>~]# <command>ip link set down em1</command></screen>
   Repeat for each interface as necessary.
 </para>
 <para>
-  To create a team interface based on the configuration file, as <systemitem class="username">root</systemitem> user, change to the <filename class="directory">teamd_working_configs</filename> directory and then issue a command in the following format:
+  To create a team interface based on the configuration file, as <systemitem class="username">root</systemitem> user, change to the working configurations directory (<replaceable>teamd_working_configs</replaceable> in this example):
+  <screen>~]# <command>cd /home/<replaceable>user</replaceable><replaceable>teamd_working_configs</replaceable></command></screen>
+  Then issue a command in the following format:
   <screen>~]# <command>teamd -g -f activebackup_ethtool_1.conf -d</command>
 Using team device "team0".
 Using PID file "/var/run/teamd/team0.pid"
@@ -483,26 +502,24 @@ runner:
   <title>Creating a Network Team Using ifcfg Files</title>
   <para>
     To create a networking team using <literal>ifcfg</literal> files, create a file in the <filename class="directory">/etc/sysconfig/network-scripts/</filename> directory as follows:
-    <screen>DEVICE="team0"
-DEVICETYPE="Team"
-ONBOOT="yes"
-BOOTPROTO="static"
-IPADDR="192.168.11.1"
-NETMASK="255.255.255.0"
-TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'
-NM_CONTROLLED="no"</screen>
+    <screen>DEVICE=team0
+DEVICETYPE=Team
+ONBOOT=yes
+BOOTPROTO=static
+IPADDR=192.168.11.1
+NETMASK=255.255.255.0
+TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'</screen>
 This creates the interface to the team, in other words, this is the master.
   </para>
   <para>
-  To create a slave to be a member of <interface>team0</interface>, create one or more files in the <filename class="directory">/etc/sysconfig/network-scripts/</filename> directory as follows:
-  <screen>DEVICE="eth1"
-HWADDR="D4:85:64:01:46:9E"
-DEVICETYPE="TeamPort"
-ONBOOT="yes"
-TEAM_MASTER="team0"
-TEAM_PORT_CONFIG='{"prio": 100}'
-NM_CONTROLLED="no"</screen>
-Add additional slave interfaces similar to the above as required, changing the DEVICE and HWADDR field to match the ports (the network devices) being enslaved. If port priority is not specified by <literal>prio</literal> it defaults to <literal>0</literal>; it accepts negative and positive values in the range <literal>-32,767</literal> to <literal>+32,767</literal>.
+  To create a port to be a member of <interface>team0</interface>, create one or more files in the <filename class="directory">/etc/sysconfig/network-scripts/</filename> directory as follows:
+  <screen>DEVICE=eth1
+HWADDR=D4:85:64:01:46:9E
+DEVICETYPE=TeamPort
+ONBOOT=yes
+TEAM_MASTER=team0
+TEAM_PORT_CONFIG='{"prio": 100}'</screen>
+Add additional port interfaces similar to the above as required, changing the DEVICE and HWADDR field to match the ports (the network devices) being added. If port priority is not specified by <literal>prio</literal> it defaults to <literal>0</literal>; it accepts negative and positive values in the range <literal>-32,767</literal> to <literal>+32,767</literal>.
 </para>
       <para>
         Specifying the hardware or MAC address using the <command>HWADDR</command> directive will influence the device naming procedure. This is explained in <xref linkend="ch-Consistent_Network_Device_Naming" />.
@@ -578,15 +595,15 @@ em1: up 100 fullduplex</screen>
   <title>Setting the Active Port Options of a Team Using teamnl</title>
   <para>
     To set the <option>activeport</option> option in a network team, using the <application>teamnl</application> utility, issue the following command as <systemitem class="username">root</systemitem>:
-    <screen>~]# <command>teamnl team0 setoption activeport 5</command>
-~]# <command>teamnl team0 getoption activeport</command>
+    <screen>~]# <command>teamnl team0 setoption activeport 5</command></screen>
+To check the change in team port options, issue the following command as <systemitem class="username">root</systemitem>:
+<screen>~]# <command>teamnl team0 getoption activeport</command>
 5</screen>
   </para>
 </section>
 
 </section>
 
-
 <section id="sec-Controlling_teamd_with_teamdctl">
   <title>Controlling teamd with teamdctl</title>
 
@@ -594,25 +611,25 @@ em1: up 100 fullduplex</screen>
    In order to query a running instance of <systemitem class="daemon">teamd</systemitem> for statistics or configuration information, or to make changes, the control tool <application>teamdctl</application> is used.
  </para>
 <para>
-To view the current team state of a team <interface>team0</interface>, enter the following command:
-  <screen>~]$ <command>teamdctl team0 state view</command></screen>
+To view the current team state of a team <interface>team0</interface>, enter the following command as <systemitem class="username">root</systemitem>:
+  <screen>~]# <command>teamdctl team0 state view</command></screen>
   For a more verbose output:
-  <screen>~]$ <command>teamdctl team0 state view -v</command></screen>
+  <screen>~]# <command>teamdctl team0 state view -v</command></screen>
 </para>
 
 <para>
 For a complete state dump in JSON format (useful for machine processing) of <interface>team0</interface>, use the following command:
-  <screen>~]$ <command>teamdctl team0 state dump</command></screen>
+  <screen>~]# <command>teamdctl team0 state dump</command></screen>
 </para>
 
 <para>
 For a configuration dump in JSON format of <interface>team0</interface>, use the following command:
-  <screen>~]$ <command>teamdctl team0 config dump</command></screen>
+  <screen>~]# <command>teamdctl team0 config dump</command></screen>
 </para>
 
 <para>
 To view the configuration of a port <interface>em1</interface>, that is part of a team <interface>team0</interface>, enter the following command:
-  <screen>~]$ <command>teamdctl team0 port config dump em1</command></screen>
+  <screen>~]# <command>teamdctl team0 port config dump em1</command></screen>
 </para>
 
 <section id="sec-Add_a_port_to_a_Network_Team">
@@ -638,10 +655,12 @@ To view the configuration of a port <interface>em1</interface>, that is part of
     To apply a JSON format configuration to a port <interface>em1</interface> in a network team <interface>team0</interface>, issue a command as <systemitem class="username">root</systemitem> in the following format:
     <screen>~]# <command>teamdctl team0 port config update em1 <replaceable>JSON-config-string</replaceable></command></screen>
     Where <replaceable>JSON-config-string</replaceable> is the configuration as a string of text in JSON format. This will update the configuration of the port using the JSON format string supplied. An example of a valid JSON string for configuring a port would be the following:
-    <screen>{
+    <screen>
+{
   "prio": -10,
   "sticky": true
 }</screen>
+Use single quotes around the JSON configuration string and omit the line breaks.
   </para>
   <para>
   Note that the old configuration will be overwritten and that any options omitted will be reset to the default values. See the <filename>teamdctl(8)</filename> man page for more team daemon control tool command examples.</para>
@@ -659,6 +678,9 @@ To view the configuration of a port <interface>em1</interface>, that is part of
 
   <section id="sec-Configure_teamd_Runners">
   <title>Configure teamd Runners</title>
+  <para>
+    Runners are units of code which are compiled into the Team daemon when an instance of the daemon is created. For an introduction to the <systemitem class="daemon">teamd</systemitem> runners, see <xref linkend="sec-Understanding_the_Network_Teaming_Daemon_and_the_Runners" />.
+  </para>
 
    <section id="sec-Configure_the_broadcast_Runner">
     <title>Configure the broadcast Runner</title>
@@ -679,7 +701,7 @@ Please see the <filename>teamd.conf(5)</filename> man page for more information.
  <section id="sec-Configure_the_random_Runner">
      <title>Configure the random Runner</title>
      <para>
-       The random runner behaves similarly to the roundrobin runner, but it does not do percentage calculations and therefore uses less system resources.
+       The random runner behaves similarly to the roundrobin runner.
      </para>
       <para>
       To configure the random runner, using an editor as <systemitem class="username">root</systemitem>, add the following to the team JSON format configuration file:
@@ -848,7 +870,7 @@ Please see the <filename>teamd.conf(5)</filename> man page for more information.
      "link_watch": {"name": "ethtool"},
      "ports": {"em1": {}, "em2": {}}
 }</screen>
-        Configuration for connection to a <firstterm>link access control protocol</firstterm> (<acronym>LACP</acronym>) capable counterpart. The LACP runner should use <application>ethtool</application> to monitor the status of a link. It does not make sense to use any other link monitoring method besides the <application>ethtool</application> because, for example in the case of <application>arp_ping</application>, the link would never come up. The reason is that the link has to be established first and only after that can packets, ARP included, go through. Using <application>ethtool</application> prevents this because it monitors each link layer individually.</para>
+        Configuration for connection to a <firstterm>link aggregation control protocol</firstterm> (<acronym>LACP</acronym>) capable counterpart. The LACP runner should use <application>ethtool</application> to monitor the status of a link. It does not make sense to use any other link monitoring method besides the <application>ethtool</application> because, for example in the case of <application>arp_ping</application>, the link would never come up. The reason is that the link has to be established first and only after that can packets, ARP included, go through. Using <application>ethtool</application> prevents this because it monitors each link layer individually.</para>
         <para>
         Active load balancing is possible with this runner in the same way as it is done for the loadbalance runner. To enable active transmit (Tx) load balancing, add the following section:
   <screen>"tx_balancer": {
@@ -916,9 +938,8 @@ Please see the <filename>teamd.conf(5)</filename> man page for more information.
      This configuration uses <application>arp_ping</application> as the link watcher. The <option>missed_max</option> option is a limit value of the maximum allowed number of missed replies (ARP replies for example). It should be chosen in conjunction with the <option>interval</option> option in order to determine the total time before a link is reported as down.
      </para>
    <para>
-    To load a new configuration for a team port <interface>em2</interface>, with JSON configuration string <replaceable>JSON-config-string</replaceable>, issue the following command as <systemitem class="username">root</systemitem>:
- <screen>
-~]# port config update em2 <replaceable>JSON-config-string</replaceable></screen>
+    To load a new configuration for a team port <interface>em2</interface>, from a file containing a JSON configuration, issue the following command as <systemitem class="username">root</systemitem>:
+ <screen>~]# port config update em2 <replaceable>JSON-config-file</replaceable></screen>
  Note that the old configuration will be overwritten and that any options omitted will be reset to the default values. See the <filename>teamdctl(8)</filename> man page for more team daemon control tool command examples.
  </para>
  </section>
@@ -967,13 +988,13 @@ Please see the <filename>teamd.conf(5)</filename> man page for more information.
           </para>
 
   <para>
-    To configure the host name from which to derive the <systemitem class="protocol">IPv6</systemitem> address target address for the NS/NA packets, add or edit a section as follows:
+    To configure the host name that is resolved to the <systemitem class="protocol">IPv6</systemitem> address target address for the NS/NA packets, add or edit a section as follows:
    <screen>
 "link_watch": {
     "name": "nsna_ping",
     "target_host": "MyStorage"
 }</screen>
-            Host name to be converted to an <systemitem class="protocol">IPv6</systemitem> address which will be used as the target address for the NS/NA packets. An <systemitem class="protocol">IPv6</systemitem> address can be used in place of a host name. 
+The <quote>target_host</quote> option contains the host name to be converted to an <systemitem class="protocol">IPv6</systemitem> address which will be used as the target address for the NS/NA packets. An <systemitem class="protocol">IPv6</systemitem> address can be used in place of a host name. 
  </para>
 <para>
 Please see the <filename>teamd.conf(5)</filename> man page for more information.
@@ -985,7 +1006,7 @@ Please see the <filename>teamd.conf(5)</filename> man page for more information.
  <section id="sec-Configure_Port_Selection_Override">
    <title>Configure Port Selection Override</title>
 <para>
-The physical port which transmits a frame is normally selected by the kernel part of the team driver, and is not relevant to the user or system administrator. The output port is selected using the policies of the selected team mode (<systemitem class="daemon">teamd</systemitem> runner).  On occasion however, it is helpful to direct certain classes of outgoing traffic to certain physical interfaces to implement slightly more complex policies. By default the team driver is multiqueue aware and 16 queues are created when the driver initializes (see <filename>/usr/share/doc/kernel-doc-<replaceable>version</replaceable>/Documentation/networking/multiqueue.txt</filename> for details).  If more or less queues are desired, the Netlink attribute <command>tx_queues</command> can be used to change this value during the team driver instance creation.
+The physical port which transmits a frame is normally selected by the kernel part of the team driver, and is not relevant to the user or system administrator. The output port is selected using the policies of the selected team mode (<systemitem class="daemon">teamd</systemitem> runner). On occasion however, it is helpful to direct certain classes of outgoing traffic to certain physical interfaces to implement slightly more complex policies. By default the team driver is multiqueue aware and 16 queues are created when the driver initializes (see <filename>/usr/share/doc/kernel-doc/Documentation/networking/multiqueue.txt</filename> for details). If more or less queues are desired, the Netlink attribute <command>tx_queues</command> can be used to change this value during the team driver instance creation.
  </para>
  <para>
 The queue ID for a port can be set by the port configuration option <option>queue_id</option> as follows:
@@ -993,7 +1014,7 @@ The queue ID for a port can be set by the port configuration option <option>queu
 {
   "queue_id": 3
 }</screen>
-These queue ID's can be used in conjunction with the <application>tc</application> utility to configure a multiqueue queue discipline and filters to bias certain traffic to be transmitted on certain slave devices. For example, if using the above configuration and wanting to force all traffic bound to <systemitem class="ipaddress">192.168.1.100</systemitem> to use <interface>eth1</interface> in the team as its output device, issue commands as <systemitem class="username">root</systemitem> in the following format:
+These queue ID's can be used in conjunction with the <application>tc</application> utility to configure a multiqueue queue discipline and filters to bias certain traffic to be transmitted on certain port devices. For example, if using the above configuration and wanting to force all traffic bound to <systemitem class="ipaddress">192.168.1.100</systemitem> to use <interface>eth1</interface> in the team as its output device, issue commands as <systemitem class="username">root</systemitem> in the following format:
 <screen>~]# <command>tc qdisc add dev team0 handle 1 root multiq</command>
 ~]# <command>tc filter add dev team0 protocol ip parent 1: prio 1 u32 match ip dst \</command>
 <command> 192.168.1.100 action skbedit queue_mapping 3</command></screen>
@@ -1002,9 +1023,9 @@ This mechanism of overriding runner selection logic in order to bind traffic to
  </section>
 
  <section id="sec-Configure_BPF-based_Tx_Port_Selectors_for_Hash_Computation_Algorithm">
-  <title>Configure BPF-based Tx Port Selectors for Hash Computation Algorithm</title>
+  <title>Configure BPF-based Tx Port Selectors</title>
  <para>
-   The loadbalance and LACP runners uses hashes of packets to sort network traffic flow. The hash computation mechanism is based on the <firstterm>Berkeley Packet Filter</firstterm> (<acronym>BPF</acronym>) code. The BPF code is used to generate a hash rather than make a policy decision for incoming packets. The hash length is 8 bits giving 256 variants. This means many different <firstterm>socket buffers</firstterm> (<acronym>SKB</acronym>) can have the same hash and therefore pass traffic over the same link. The use of a short hash is a quick way to sort traffic into different streams for the purposes of load balancing across multiple links. In static mode, the hash is only used to decided out of which port the traffic should be sent. In active mode, the runner will continually reassign hashes to different ports in an attempt to reach a perfect balance.</para>
+   The loadbalance and LACP runners uses hashes of packets to sort network traffic flow. The hash computation mechanism is based on the <firstterm>Berkeley Packet Filter</firstterm> (<acronym>BPF</acronym>) code. The BPF code is used to generate a hash rather than make a policy decision for outgoing packets. The hash length is 8 bits giving 256 variants. This means many different <firstterm>socket buffers</firstterm> (<acronym>SKB</acronym>) can have the same hash and therefore pass traffic over the same link. The use of a short hash is a quick way to sort traffic into different streams for the purposes of load balancing across multiple links. In static mode, the hash is only used to decide out of which port the traffic should be sent. In active mode, the runner will continually reassign hashes to different ports in an attempt to reach a perfect balance.</para>
 
 <para>
    The following fragment types or strings can be used for packet Tx hash computation:
@@ -1085,37 +1106,42 @@ Connection 'Team0' (fcafb3f0-4c95-48df-9e28-7ac7213f38ba) successfully added.</s
 </para>
 <para>
   To view the team interfaces just configured, issue a command as follows:
-  <screen>~$ <command>nmcli connection show</command>
+  <screen>~]$ <command>nmcli connection show</command>
 NAME              UUID                                  TYPE        TIMESTAMP-REAL
 Team0             fcafb3f0-4c95-48df-9e28-7ac7213f38ba  team        never
 team-ServerA      981eb129-1707-4a2e-a6ea-413330d96c10  team        never</screen>
 </para>
 <para>
   To load a team configuration file for a team that already exists, issue a command as follows:
-  <screen>~]$ <command>nmcli connection modify team-ServerA team.config <replaceable>JSON-Config</replaceable></command></screen>
+  <screen>~]$ <command>nmcli connection modify team-ServerA team.config <replaceable>JSON-config</replaceable></command></screen>
+  You can specify the team configuration either as JSON string or provide a file name containing the configuration. The file name can include the path. In both cases, what is stored in the <parameter>team.config</parameter> property is the JSON string. In the case of a JSON string, use single quotes around the string and paste the entire string to the command line.
+</para>
+<para>
+  To review the <parameter>team.config</parameter> property, enter a command as follows:
+  <screen>~]$ <command>nmcli conn show team-ServerA | grep team.config</command></screen>
 </para>
 <para>
-  To add, or enslave, an interface to the team, with name <interface>team-slave-ens3</interface>, issue a command as follows:
+  To add an interface to the team, with name <interface>team-slave-ens3</interface>, issue a command as follows:
   <screen>~]$ <command>nmcli connection add type team-slave ifname ens3 master Team0</command>
 Connection 'team-slave-ens3' (a33d5d32-87d7-4dc4-8a27-5a44aabfa440) successfully added.</screen>
 Notice that the name was derived from the interface name by prepending the type.
 Alternatively, specify a name with <option>con-name</option> as follows:
-  <screen>~]$ <command>nmcli con add type team-slave con-name Team0-slave1 ifname ens3 master Team0</command>
-Connection 'Team0-slave1' (adbf21f2-51b6-492f-8fc8-48b831383ac9) successfully added.
-~]$ <command>nmcli con add type team-slave con-name Team0-slave2 ifname ens7 master Team0</command>
-Connection 'Team0-slave2' (e5317075-c0c1-472f-b25d-0433b0297ea3) successfully added.</screen>
-At time of writing, <application>nmcli</application> only supports Ethernet slaves.
+  <screen>~]$ <command>nmcli con add type team-slave con-name Team0-port1 ifname ens3 master Team0</command>
+Connection 'Team0-port1' (adbf21f2-51b6-492f-8fc8-48b831383ac9) successfully added.
+~]$ <command>nmcli con add type team-slave con-name Team0-port2 ifname ens7 master Team0</command>
+Connection 'Team0-port2' (e5317075-c0c1-472f-b25d-0433b0297ea3) successfully added.</screen>
+At time of writing, <application>nmcli</application> only supports Ethernet ports.
 </para>
   <para>
-    In order to bring up a team, the slaves must be brought up first as follows:
-    <screen>~]$ <command>nmcli connection up Team0-slave1</command>
+    In order to bring up a team, the ports must be brought up first as follows:
+    <screen>~]$ <command>nmcli connection up Team0-port1</command>
 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)</screen>
 
-<screen>~]$ <command>nmcli connection up Team0-slave2</command>
+<screen>~]$ <command>nmcli connection up Team0-port2</command>
 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)</screen>
 </para>
 <para>
-You can verify the team interface was brought up by the activation of the slaves, as follows:
+You can verify the team interface was brought up by the activation of the ports, as follows:
 <screen>~]$ <command>ip link</command>
 3:  Team0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP mode DEFAULT
     link/ether 52:54:00:76:6f:f0 brd ff:ff:ff:ff:ff:f</screen>
@@ -1178,7 +1204,7 @@ Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkMa
             class="directory">/usr/share/doc/kernel-doc-<replaceable>&lt;kernel_version&gt;</replaceable>/Documentation/</filename> — This directory, which is provided by the <package>kernel-doc</package> package, contains information on bonding which is also relevant to teaming. Before accessing the kernel documentation, you must run the following command as <systemitem class="username">root</systemitem>:</para>
         <screen>~]#&nbsp;<command>yum install kernel-doc</command></screen>
       <para>
-        <filename>/usr/share/doc/kernel-doc-<replaceable>version</replaceable>/Documentation/networking/multiqueue.txt</filename> — Describes kernel support for multiqueue devices.
+        <filename>/usr/share/doc/kernel-doc/Documentation/networking/multiqueue.txt</filename> — Describes kernel support for multiqueue devices.
       </para>
     </listitem>
     </itemizedlist>
@@ -1189,7 +1215,7 @@ Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkMa
   <para>
 <variablelist>
             <varlistentry>
-<term><ulink url="www.libteam.org"/></term>
+<term><ulink url="http://www.libteam.org"/></term>
 <listitem>
 <para>
   The upstream project.
@@ -1198,7 +1224,7 @@ Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkMa
 </varlistentry>
 
         <varlistentry>
-<term><ulink url="www.w3schools.com/json/json_syntax.asp"/></term>
+<term><ulink url="http://www.w3schools.com/json/json_syntax.asp"/></term>
 <listitem>
 <para>
   An explanation of JSON syntax.



More information about the docs-commits mailing list