5.17 NIC Teaming Solution

You can configure the NIC teaming solution by first editing the and then using INETCFG.

5.17.1 Transferring Commands by Using autoexec.ncf

Console commands can be executed by using the autoexec.ncf file (or by using any .NCF file if you want to run the file separately instead of at boot time). Commands in the file are executed in a specified sequence at boot time.

  1. Load physical drivers.

  2. Load the virtual driver.

  3. Bind the virtual driver to physical drivers.

  4. Add the necessary post-bind commands.

  5. Bind IP to the virtual driver with an IP address.

Using Post-Bind Commands

Post-bind commands need a special syntax in order to distinguish them from other load commands.

Teaming drivers act as both protocol and driver.

As Protocol: Real NICs bind to this protocol.

As Drivers: They bind to the upper layer (network layer).

INETCFG, on its first load, prompts you to transfer commands from autoexec.ncf to netinfo.cfg. autoexec.ncf contains only load and bind commands. The first command is for loading a protocol and the second one is for binding a protocol to a driver.

When acting as a protocol, the post-bind commands must be enclosed within two # lines. The first # line in the autoexec.ncf file should follow this syntax:

#PostBindCommand-<ProtocolName>

ProtocolName is the name of the user-specified protocol. Post-bind command is the command line that needs to be executed after all bindings.

An autoexec.ncf file would appear as follows:

#PostBindCommand-<ProtocolName>
<post bind command1>
<post bind command2>
<post bind command3>
# End of postbind commands

It is called a post-bind command because in the LB & FT solutions provided by third-party drivers such as Compaq, Dell, this command must be executed after all bind commands of the user-specified protocol (CPQANS for Compaq, ians for Dell). This special syntax is the only requirement for INETCFG to recognize any post-bind command.

For example, you would enter the following commands in autoexec.ncf if you were using Compaq's NIC teaming solution:

Load ce100b frame=ethernet_ii
Load cpqnf3 frame=ethernet_ii
Load cpqans frame=ethernet_ii
Bind cpqans cpqnf3
#postbindcommand cpqans
Load cpqans commit
# End of post bind command
Load tcpip
Bind ip cpqans addr=172.16.1.1

5.17.2 Configuring Teaming by Using INETCFG

To use INETCFG to set up a team of network boards:

  1. At the server console, enter INETCFG.

    You can use INETCFG to enable and configure various protocol stacks and to bind the protocols to the network interfaces

  2. (Conditional) Transfer the commands from autoexec.ncf to netinfo.cfg when prompted.

  3. (Conditional) If you choose to delete the netinfo.cfg file or if it has been corrupted, make sure you also delete the tcpip.cfg file.

  4. In INETCFG, select Boards and add or verify that the correct LOAD commands exist for each network board. For example:

    Load ce100b frame=ethernet_ii
    
    Load cpqnf3 frame=ethernet_ii
    
    Load cpqans frame=ethernet_ii
    
  5. Add a command to load a virtual driver. For example:

    Load cpqans frame=ethernet_ii
    
  6. Bind the virtual driver to each network board in the team. For example:

    Bind cpqans ce100b
    
    Bind cpqans cpqnf3
    
  7. Add a beginning post-bind command:

    #postbindcommand cpqans
    
  8. Add the post-bind command following the syntax LOAD virtual_driver COMMIT. For example:

    Load cpqans commit
    
  9. Add the closing post-bind command if applicable.

  10. Enter the command to load the IP protocol:

    Load tcpip
    
  11. Bind the IP address to the virtual driver. For example:

    Bind ip cpqans addr=172.16.1.1
    
  12. Verify that you entered the commands correctly.

    If you follow the steps correctly, you see a file with commands similar to the following:

    Load ce100b frame=ethernet_ii
    
    Load cpqnf3 frame=ethernet_ii
    
    Load cpqans frame=ethernet_ii
    
    Bind cpqans ce100b
    
    Bind cpqans cpqnf3
    
    #postbindcommand cpqans
    
    Load cpqans commit
    
    # End of post bind command
    
    Load tcpip
    
    Bind ip cpqans addr=172.16.1.1
    
  13. Enable the configuration by selecting Reinitialize System.

5.17.3 Example Configurations

The following examples show how INETCFG should be used to configure NIC teaming drivers.

Example 1: Configuring CPQANS to Provide the NIC Teaming Solution

The configuration through autoexec.ncf is as follows:

Load ce100b frame=ethernet_ii name=ce100b_1_eii slot=1
Load ne2000 frame=ethernet_ii name=ne2000_1_eii slot=2
Load cpqans frame=ethernet_ii name=alb_team mode=alb
Bind cpqans ce100b_1_eii
Bind cpqans ne2000_1_eii
#PostBindCommand cpqans
Load cpqans commit
#
Bind ip cpqans addr=172.16.1.2 mask=255.240.0.0 gate=172.16.1.3

Commands 1, 2, and 3 should be configured in the boards section.

Command 7 must be entered in Protocols > User Specified Protocol. First, insert a protocol name. In this example, it is CPQANS. (This name must be the same as the one that will be entered in the bindings section later.) Then enter post-bind commands.

Commands 6 and 8 help in parsing autoexec.ncf to transfer commands to INETCFG.

Commands 4, 5, and 9 are from the Bindings section.

Example 2: Add some wording to say what the example does

Suppose autoexec.ncf contains the following lines:

Load ce100b frame=ethernet_ii name=ce100b_1_eii slot=1
Load ne2000 frame=ethernet_ii name=ne2000_1_eii slot=2
Load cpqans frame=ethernet_ii name=alb_team mode=alb team=1
Load cpqnf3 frame=ethernet_ii name=cpqnf3_1_eii slot=3
Load n100 frame=ethernet_ii name=n100_1_eii slot=4
Load cpqans frame=ethernet_ii name=nft_team mode=nft team=2
Bind cpqans ce100b_1_eii team=1
Bind cpqans ne2000_1_eii team=1
Bind cpqans cpqnf3_1_eii team=2
Bind cpqans n100_1_eii team=2
#PostBindCommand cpqans
Load cpqans commit team=1
Load cpqans commit team=2
# This is the end of post bind commands
Bind ip cpqans addr=172.16.1.2 mask=255.240.0.0 gate=172.16.1.3 

If these lines are not in autoexec.ncf, you can do a similar configuration as follows. (This example is similar to the previous one. The only difference is that there are two teams.)

Commands 1 to 6 are in the boards section.

Commands 12 and 13 are in the user-specified protocol section and Steps 11 and 14 help in parsing autoexec.ncf.

Commands 7 to 10 are through bindings. Team=1 or 2 must be entered in the parameters field.

Command 15 is another binding.

Whenever a new driver is going to be added and bound to CPQANS, an extra post-bind command, “load cpqans recommit”, must be added in the user-specified protocol section.

NOTE:load cpqans commit is a time-sensitive command. Make sure that it is executed before binding IP to CPQANS and after all bindings of CPQANS are configured. For example, suppose configuration through INETCFG is as follows:

  • 1. Load D1 and D2 from boards and load CPQANS.
  • 2. Enter CPQANS as a protocol and add the proper post-bind commands in the user-specified protocol section.
  • 3. Add bindings for CPQANS as well as TCPIP.
  • 4. Reinitialize the system

If, by mistake, the system is reinitialized before Step 3, the configuration might not succeed (even though Step 4 has been executed) because load cpqans commit was executed at the wrong time.

To avoid this situation, you should use two post-bind commands: load cpqans commit team = xxx and load cpqans recommit team = xxx for each configured team in the post-bind commands section.

5.17.4 Fine-Tuning with SET Parameters

These third-party NIC teaming solutions provide some set parameters for fine-tuning the configuration. They can also take place in the post-bind commands section.

5.17.5 Using Multiple Post-Bind Commands

The load cpqans commit and load cpqans recommit commands should be executed after the execution of bindings of NIC teaming drivers to physical drivers and before the execution of bindings of IP NIC teaming drivers. All commands of a particular configuration in INETCFG would be executed only after a re-initialization. So, as part of the configuration, you should update the post-bind commands section according to the configuration.

For example, the first time three bindings (CPQANS to D1, CPQANS to D2, and IP to CPQANS) are configured, the post-bind commands section should contain load cpqans commit.

If you add another binding (for example CPQANS to D3) to INETCFG after a re-initialization, the post-bind commands section should contain load cpqans recommit instead of load cpqans commit.You should make this change before doing another re-initialization. Otherwise, an inactive configuration may result.

A similar case is disabling a binding and later re-enabling it. This is because enabling a binding is similar to adding a new binding (provided disabling and enabling of the binding contain a re-initialization in between).

To avoid these types of complicated reconfigurations associated with NIC teaming solutions, we recommend that you use load cpqans commit team = xxx and load cpqans recommit team = xxx for each team you configure.