Shared Ethernet Adapter (SEA):
Shared Ethernet Adapter (SEA) provides the ability to share a physical adapter between multiple client partitions. It provides the connection between the virtual and physical network. The SEA acts like a layer-2 bridge between internal and external network
SEA failover:
SEA failover can be achieved by having SEA configured on two VIO servers which with the bridging functionality enabled ('Access External network'). They use a control channel to determine who is currently providing the Ethernet service to the client partitions.
The client partition gets one virtual Ethernet adapter bridged by two VIO servers. From the client partition it looks like it has one virtual Ethernet adapter bridged by one VIO server - any given point of time.
The SEA also support 802.1Q VLAN tagging like a regular SEA.
Requirements for implementing SEA failover:
-
VIO servers (on the same physical managed node) with same supported level of VIO software -
At least one physical Ethernet adapter on each VIO server that has access to the external network -
At least one virtual Ethernet adapter on each VIO server with 'Access external network' enabled. If more VLANs are needed, enable 802.1Q on this virtual Ethernet adapter (same VLANs configured on the external network switch). Assign appropriate trunk priority for each of the virtual Ethernet adapter created. The one with the lowest priority number will act as the primary SEA providing Ethernet services to the client partitions. -
One virtual Ethernet with an unique VLAN id on both the VIO server that will be used as a control channel between the two SEA that will be created later. Do not proceed to creating the SEA without creating a control channel!! Doing so will cause broadcast storm on the network and possibly bring down the network completely. Hope IBM fixes this or make this procedure little more safer. -
Optional. If the VIO server needs an management IP, create another virtual Ethernet adapter in the appropriate VLAN.
Creating SEA failover:
For the sake of understanding the commands better, here are the resources that will be used for creating the SEA failover:
VIOS | Adapter | Slot Number | VLAN id | Trunk Priority | Allow Ext Network | 801.1Q | Additional VLANs |
VIO1 | ent0 | 11 | 1110 | 1 | Y | Y | 702, 700 |
VIO1 | ent2 | (Phy – C6) | N/A | N/A | N/A | Y(on the switch) | 702, 700 |
VIO1 | ent1 | 12 | 702 | N/A | N | N | N/A |
VIO1 | ent4 | 13 | 99 | N/A | N | N | N/A |
VIO2 | ent2 | 11 | 1110 | 2 | Y | Y | 702, 700 |
VIO2 | ent0 | (Phy – C4) | N/A | N/A | N/A | Y(on the switch | 702, 700 |
VIO2 | ent3 | 12 | 702 | N/A | N/A | N | N/A |
VIO2 | ent4 | 13 | 99 | N/A | N | N | N/A |
VIO1
ent2 is the physical adapter which is connected to the external network switch which supports 802.1Q for VLAN tagging and has VLANs 702 and 700 allowed on this port
ent0 is the Virtual ethernet adapter that has access to the external network, has 802.1Q enabled for VLAN tagging, has additional VLANs specified
ent4 is the virtual ethernet adapter that will be used as a control channel between the two SEAs
ent1 is a virtual ethernet adapter that will be used to create a management IP to the VIO server (this is optional)
VIO2
ent0 is the physical adapter which is connected to the external network switch which supports 802.1Q for VLAN tagging and has VLANs 702 and 700 specified.
ent2 is the Virtual ethernet adapter that has access to the external network, has 802.1Q enabled for VLAN tagging, has additional VLANs specified
ent4 is the virtual ethernet adapter that will be used as a control channel between the two SEAs
ent3 is a virtual ethernet adapter that will be used to create a management IP to the VIO server (this is optional)
Create the primary SEA:
On the primary VIOS, in this case VIO1, create the sea device using the mkvdev command:
mkvdev –sea ent2 –vadapter ent0 –default ent0 –defaultid 1110 –attr ha_mode=auto ctl_chan=ent4
This will create a new SEA ent3 (en3, et3)
IMPORTANT: Please make sure that the shared ethernet adapter is created with the ha_mode and ctl_chan specified during the time of the creating. Failing to do so will result in broadcast storm. Not so for the first SEA, but be very cautious while creating the second SEA. If these are specified, IT WILL result in a broadcast storm
Creating secondary SEA:
On the secondary VIOS, in this case VIO2, create the secondi SEA device using similar mkvdev command as before. Please read the note from the previous command before executing this command and create the SEA in one command.
mkvdev –sea ent0 –vadapter ent2 –default ent2 –defaultid 1110 –attr hamode=auto ctl_chan=ent4
This will create anew SEA ent5 (en5, et5)
Here is the network map after the SEA is created:
VIO1:
# lsmap –all –net
SVEA Physloc ------ --------------------------------------------
ent0 U8204.E8A.xxxxxxx-V1-C11-T1
SEA ent3
Backing device ent2
Status Available
Physloc U78A0.001.xxxxxxx-P1-C6-T1
SVEA Physloc
------ --------------------------------------------
ent1 U8204.E8A.xxxxxxx-V1-C12-T1
SEA NO SHARED ETHERNET ADAPTER FOUND
SVEA Physloc
------ --------------------------------------------
ent4 U8204.E8A.xxxxxxx-V1-C13-T1
SEA NO SHARED ETHERNET ADAPTER FOUND
VIO2:
SVEA Physloc ------ --------------------------------------------
ent2 U8204.E8A.xxxxxxx-V2-C11-T1
SEA ent5
Backing device ent0
Status Available
Physloc U78A0.001.xxxxxxx-P1-C4-T1
SVEA Physloc
------ --------------------------------------------
ent3 U8204.E8A.xxxxxxx-V2-C12-T1
SEA NO SHARED ETHERNET ADAPTER FOUND
SVEA Physloc
------ --------------------------------------------
ent4 U8204.E8A.xxxxxxx-V2-C13-T1
SEA NO SHARED ETHERNET ADAPTER FOUND
Testing SEA Fail over:
-
The SEA failover can be tested using the following test cases -
Manually initiate a failover by changing the status of the SEA using chdev command: chdev –dev ent3 –attr ha_mode=standby (set the mode to ‘auto’ to fail back -
Remove the network cable from one of the VIOS -
Shutdown one of the VIOS gracefully
This can be done on either of the VIO server to test the faillover/failback scenarios
Disclaimer: The instructions presented here are for informational purposes only and includes no warranties to the relevance/compatibility with any environment. Please research completely all the commands with respect to your environment before implementing.