IBM Support

Shared Ethernet Adapter (SEA) Fail-over with Load Balancing

How To


Summary

This article covers the basic idea with a link to a large article covering the full details.

Objective

Nigels Banner

Steps

Original from January 2012 with 72305 readers

 

Update: The developers and the manuals call this Load Sharing but most people think it is called Load Balancing

Originally, the SEA Fail-over involved a VIOS pair work together to provide a simple to set up at the client virtual machine (LPAR) redundant path to the network.  A single virtual Ethernet network is managed between two Virtual I/O Servers. The VIOS with the higher priority (lower number) is the primary and does all the network bridging I/O and the secondary does nothing unless the primary is taken down or fails. The secondary VIOS takes over and does all the network bridging until the primary returned when the primary takes over again.

Here is my diagram of a nontrivial network set up with one SEA connected to many internal virtual networks:

 image 2404


Note: All the network I/O is going through VIOS a.  This also assuming the other ent* adapters are present but not involved in the example.

   To create the SEA on VIOS a, you run the following command

  mkvdev -sea ent0 -vadapter ent3,ent4,ent5, ent6 -default ent3 -defaultid=10 -attr ha_mode=auto ctl_chan=ent9

In this symmetric VIOS example, it is the same command for VIOS b.  The all important Priority setting, decides which is primary VIOS and secondary VIOS is set at the VIOS Virtual Ethernet Adapter Properties panels on the HMC as in the following picture:

image 2405

VIOS "b" with a higher Priority number meaning it is the Secondary VIOS.

Note this set up was done with the older HMC Classic user interface and looks different on the HMC new Enhanced+ user interface.


Now let us move on to SEA Fail-over with Load Sharing (Balancing)

A simple configuration mean only half of the physical network adapters are used at one time.  If the server has 10 Gb network adapters, that seems like under used resources and hence the new Load Sharing feature to use of all the network adapters for higher bandwidth and better latency (when busy).  In the previous, diagram when both VIO Servers are running ALL the packets exit the machine that uses VIOS "a" and nothing that uses VIOS "b".

It is an unrealistic idea that with SEA Fail-over with Load Sharing gets you to "network heaven"! Here, every other packet from the client VM would go to different VIOS and its SEA. It is impossible as the client VM only "sees" the one virtual Ethernet and can't control the destination VIOS. It would also be impossible for the VIO Servers to magically cooperate to achieve a perfect split in traffic and organizing that would slow the network down enormously.  If that level of concurrency is required, you need to set up multiple virtual Ethernets on the client VM and use Link-Aggregation (also called Etherchannel or Teaming) at the client VM. The down side is a more complicated set up on every client VM. 

The SEA Fail-over with Load
Sharing pair of VIOS have to vigorously agree which VIOS does what and this decision is done at the Trunk Adapter level. This agreement is achieved with the Secondary VIOS communicating with the Primary VIOS to volunteer to take over a set of Trunk Adapters (now called Ethernet bridging on the HMC). Once configured, they split the network I/O work between them.  If you shut down a VIOS or there is a genuine failure, then the surviving VIOS takes on all the network I/O.

Pre-reqs:

  • Both VIOS must be at Version 2.2.1.0

With both VIO Servers running, we have a configuration like this:

image 2406

Note: The network I/O is going through both VIO Servers.

 If you have a simple network configuration like a single internal virtual network and a SEA bridging to the outside physical Ethernet, then the traffic can't be split between VIO Servers. We run this configuration in my test lab environment, as our needs are simple.  In production environments, there are often many virtual networks, for example: user access, systems administration, multiple tier networks, and a separate backup network.

 If you already have a suitable SEA running, you can change its mode instantly with the following command (assuming you SEA device is called ent10):

  chdev -dev ent10  -attr ha_mode=sharing

Here are some notes from the developers that might help out:

  • Load Sharing must be enabled first on the Primary SEA first - the Secondary SEA initiates the load sharing for you want the primary to be ready.

  • Obviously, both SEA's need to be in Load Sharing mode.

  • The VLAN id's of the Trunk Adapters must match.  If the first VIOS has Trunk Adapter 1 with VLAN id's say 10 and 20 and a second Trunk Adapter with VLAN id's 40 and 50, then the other VIOS needs to have the same combination. Careful planning is needed.

  • To disable Load Sharing, change the ha_mode to auto.  The other options are standby or disabled.  Find the current state of the SEA and which is primary but getting to root on the VIOS (oem_setup_env) then

  entstat -d ent10 | grep -i state

  • The entstat command on the VIOS SEA has other good information like the VLAN id's.

  • If you have a VIOS failure or shut down a SEA network, then once recovered, you can restart the Load Sharing with the previous chdev command.

VIOS Manual entries:

High recommended and detailed article on this topic from ibm.com/support

How to set up SEA failover with Load Sharing configuration


I hope this article helps you get Shared Ethernet Adapter Fail-over with Load Sharing working.
 

Additional Information


Other places to find Nigel Griffiths IBM (retired)

Document Location

Worldwide

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"Component":"","Platform":[{"code":"PF002","label":"AIX"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"HW1W1","label":"Power -\u003EPowerLinux"},"Component":"","Platform":[{"code":"PF016","label":"Linux"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
11 June 2023

UID

ibm11114827