8.5.15. Creation of SEAs with Load Sharing

To demonstrate the generation of SEAs with load sharing, the following trunking adapters were created on the two virtual I/O servers ms05-vio1 and ms05-vio2:

$ lpar lseth ms05-vio*
LPAR_NAME  SLOT  REQ  STATE  TRUNK  IEEE  QOS   MAC_ADDR      PVID  VSWITCH    ADDL_VLAN_IDS
…
ms05-vio1  70    No   1      -      0     none  A1B58A075A46  1     ETHCTRL    -
ms05-vio1  71    No   1      1      1     none  A1B58A075A47  1     ETHTEST3   11,12,13
ms05-vio1  72    No   1      1      1     none  A1B58A075A48  2     ETHTEST3   14,15
ms05-vio1  73    No   1      1      1     none  A1B58A075A49  3     ETHTEST3   17,18,19
ms05-vio1  74    No   1      1      1     none  A1B58A075A4A  4     ETHTEST3   20,21,22
ms05-vio1  75    No   1      1      1     none  A1B58A075A4B  5     ETHTEST3   23
…
ms05-vio2  70    No   1      -      0     none  A1B58A070346  1     ETHCTRL    -
ms05-vio2  71    No   1      2      1     none  A1B58A070347  1     ETHTEST3   11,12,13
ms05-vio2  72    No   1      2      1     none  A1B58A070348  2     ETHTEST3   14,15
ms05-vio2  73    No   1      2      1     none  A1B58A070349  3     ETHTEST3   17,18,19
ms05-vio2  74    No   1      2      1     none  A1B58A07034A  4     ETHTEST3   20,21,22
ms05-vio2  75    No   1      2      1     none  A1B58A07034B  5     ETHTEST3   23
…
$

We have created 5 trunking adapters (slot 71 to 75) and a control channel (slot 70). The trunking adapters of virtual I/O server ms05-vio1 again have the higher trunking priority 1. We used the existing virtual switch ETHTEST3 as the virtual switch.

We start again with the primary SEA on ms05-vio1 and first display the candidates for a new SEA:

$ vios lssea -c ms05-vio1
NAME   STATUS     PHYSLOC                      PARENT  DESCRIPTION
ent3   Available  U78AA.001.VYRGU0Q-P1-C7-T4   pci1    4-Port Gigabit Ethernet PCI-Express Adapter (e414571614102004)
ent2   Available  U78AA.001.VYRGU0Q-P1-C7-T3   pci1    4-Port Gigabit Ethernet PCI-Express Adapter (e414571614102004)
ent39  Available  U8205.E6C.05E4E5Q-V1-C70-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent41  Available  U8205.E6C.05E4E5Q-V1-C71-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent42  Available  U8205.E6C.05E4E5Q-V1-C72-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent43  Available  U8205.E6C.05E4E5Q-V1-C73-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent44  Available  U8205.E6C.05E4E5Q-V1-C74-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent45  Available  U8205.E6C.05E4E5Q-V1-C75-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
$

The creation of the SEA works as usual with the command “vios mksea“, whereby the value sharing for load sharing must be specified for the ha_mode attribute:

$ vios mksea ms05-vio1 ent3 ent41 ent42 ent43 ent44 ent45 ha_mode=sharing ctl_chan=ent39 jumbo_frames=yes
SEA ent46 created
$

The newly created SEA is still in the primary state because the second SEA has not yet been created:

$ vios lssea ms05-vio1 ent46
                                   TIMES    TIMES   TIMES  BRIDGE
NAME   HA_MODE  PRIORITY  STATE    PRIMARY  BACKUP  FLIPFLOP  MODE
ent46  Sharing  1         PRIMARY  1        0       0         All
$

The column HA_MODE shows that the SEA is configured for load sharing. The last column, BRIDGE_MODE, is also interesting: the value All indicates that the SEA is currently responsible for forwarding using all its trunking adapters, and thus for all supported VLANs. This is also confirmed by the output of “vios lssea -V“:

$ vios lssea -V ms05-vio1 ent46
SEA    LNAGG  NAME   TYPE     VSWITCH  MODE  ACTIVE  PRIORITY  PVID  VLAN_TAG_IDS
ent46  -      ent3   real     -        -     -       -         -     -
ent46  -      ent45  virtual  ETHTEST3  VEB   True    1         5     23
ent46  -      ent44  virtual  ETHTEST3  VEB   True    1         4     20,21,22
ent46  -      ent43  virtual  ETHTEST3  VEB   True    1         3     17,18,19
ent46  -      ent42  virtual  ETHTEST3  VEB   True    1         2     14,15
ent46  -      ent41  virtual  ETHTEST3  VEB   True    1         1     11,12,13
ent46  -      ent39  control  ETHCTRL  -     -       -         1     None
$

Next we list the potential candidates for a SEA on the second virtual I/O server ms05-vio2:

$ vios lssea -c ms05-vio2
NAME   STATUS     PHYSLOC                      PARENT  DESCRIPTION
ent3   Available  U78AA.001.VYRGU0Q-P1-C6-T2   pci3    4-Port Gigabit Ethernet PCI-Express Adapter (e414571614102004)
ent4   Available  U78AA.001.VYRGU0Q-P1-C6-T3   pci3    4-Port Gigabit Ethernet PCI-Express Adapter (e414571614102004)
ent5   Available  U78AA.001.VYRGU0Q-P1-C6-T4   pci3    4-Port Gigabit Ethernet PCI-Express Adapter (e414571614102004)
ent38  Available  U8205.E6C.05E4E5Q-V2-C70-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent39  Available  U8205.E6C.05E4E5Q-V2-C71-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent40  Available  U8205.E6C.05E4E5Q-V2-C72-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent41  Available  U8205.E6C.05E4E5Q-V2-C73-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent42  Available  U8205.E6C.05E4E5Q-V2-C74-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
ent43  Available  U8205.E6C.05E4E5Q-V2-C75-T1  vio0    Virtual I/O Ethernet Adapter (l-lan)
$

Using the informations from the above output, the second SEA can be created:

$ vios mksea ms05-vio2 ent5 ent39 ent40 ent41 ent42 ent43 ha_mode=sharing ctl_chan=ent38 jumbo_frames=yes
SEA ent44 created
$

The status of the newly created SEA is BACKUP_SH:

$ vios lssea ms05-vio2 ent44
                                     TIMES    TIMES   TIMES  BRIDGE
NAME   HA_MODE  PRIORITY  STATE      PRIMARY  BACKUP  FLIPFLOP  MODE
ent44  Sharing  2         BACKUP_SH  0        1       0         Partial
$

The suffix “_SH” indicates that the adapter is currently in load sharing mode!

The status of the SEA created first, has changed, as the output of “vios lssea” indicates:

$ vios lssea ms05-vio1 ent46
                                      TIMES    TIMES   TIMES  BRIDGE
NAME   HA_MODE  PRIORITY  STATE       PRIMARY  BACKUP  FLIPFLOP  MODE
ent46  Sharing  1         PRIMARY_SH  1        0       0         Partial
$

The status (column STATE) has changed from PRIMARY (no load sharing) to PRIMARY_SH (load sharing). The value in the column BRIDGE_MODE has also changed and is now Partial. This means that the SEA is the active SEA for some trunking adapters, but not for other trunking adapters. For which VLANs a SEA is the active SEA, you can see the from the output of “vios lssea -V“:

$ vios lssea -V ms05-vio1 ent46
SEA    LNAGG  NAME   TYPE     VSWITCH  MODE  ACTIVE  PRIORITY  PVID  VLAN_TAG_IDS
ent46  -      ent3   real     -         -     -       -         -     -
ent46  -      ent45  virtual  ETHTEST3  VEB   False   1         5     23
ent46  -      ent44  virtual  ETHTEST3  VEB   False   1         4     20,21,22
ent46  -      ent43  virtual  ETHTEST3  VEB   True    1         3     17,18,19
ent46  -      ent42  virtual  ETHTEST3  VEB   True    1         2     14,15
ent46  -      ent41  virtual  ETHTEST3  VEB   True    1         1     11,12,13
ent46  -      ent39  control  ETHCTRL  -     -       -         1     None
$

The output shows that the trunking adapters ent41, ent42 and ent43 are active (column ACTIVE is True) and trunking adapters ent44 and ent45 are inactive (column ACTIVE is False). Since the number of trunking adapters is uneven, the primary SEA is assigned one more trunking adapter than the backup SEA. For the second SEA, the roles are then exactly reversed:

$ vios lssea -V ms05-vio2 ent44
SEA    LNAGG  NAME   TYPE     VSWITCH  MODE  ACTIVE  PRIORITY  PVID  VLAN_TAG_IDS
ent44  -      ent5   real     -        -     -       -         -     -
ent44  -      ent43  virtual  ETHTEST3  VEB   True    2         5     23
ent44  -      ent42  virtual  ETHTEST3  VEB   True    2         4     20,21,22
ent44  -      ent41  virtual  ETHTEST3  VEB   False   2         3     17,18,19
ent44  -      ent40  virtual  ETHTEST3  VEB   False   2         2     14,15
ent44  -      ent39  virtual  ETHTEST3  VEB   False   2         1     11,12,13
ent44  -      ent38  control  ETHCTRL  -     -       -         1     None
$