This document discusses Shared Ethernet Adapter (SEA) failover, which provides redundancy for the network connection between virtual partitions and the external network if the Virtual I/O Server (VIOS) partition fails. SEA failover uses two SEA devices, each on a separate VIOS, connected through a control channel. The SEA with the highest priority acts as the primary adapter and will fail over to the backup SEA if it fails or loses connectivity. The failover protocol ensures only one SEA is active at a time to avoid creating network loops.
This document discusses Shared Ethernet Adapter (SEA) failover, which provides redundancy for the network connection between virtual partitions and the external network if the Virtual I/O Server (VIOS) partition fails. SEA failover uses two SEA devices, each on a separate VIOS, connected through a control channel. The SEA with the highest priority acts as the primary adapter and will fail over to the backup SEA if it fails or loses connectivity. The failover protocol ensures only one SEA is active at a time to avoid creating network loops.
This document discusses Shared Ethernet Adapter (SEA) failover, which provides redundancy for the network connection between virtual partitions and the external network if the Virtual I/O Server (VIOS) partition fails. SEA failover uses two SEA devices, each on a separate VIOS, connected through a control channel. The SEA with the highest priority acts as the primary adapter and will fail over to the backup SEA if it fails or loses connectivity. The failover protocol ensures only one SEA is active at a time to avoid creating network loops.
This document discusses Shared Ethernet Adapter (SEA) failover, which provides redundancy for the network connection between virtual partitions and the external network if the Virtual I/O Server (VIOS) partition fails. SEA failover uses two SEA devices, each on a separate VIOS, connected through a control channel. The SEA with the highest priority acts as the primary adapter and will fail over to the backup SEA if it fails or loses connectivity. The failover protocol ensures only one SEA is active at a time to avoid creating network loops.
Virtual I/O Server Shared Ethernet Adapter Failover
Why do we need a Shared Ethernet Adapter (SEA) failover device?
Virtual I/O Server (VIOS) partition provides an Ethernet bridge between partitions using virtual Ethernet and a physical adapter that has a connection to the local network. The physical adapter is allocated to the Virtual I/O server partition.
If the VIOS partition fails, this bridge between the outside network and virtual network will be broken.
The SEA failover provides a backup for this bridge connection. It would be located on a different VIOS.
What has changed?
Enhancements to the virtual Ethernet to support multiple trunk adapters on the same VLAN. Prior to this new feature, only one trunk adapter per VLAN could be configured.
To support multiple trunk adapters on the same VLAN, the adapters must have a different priority.
HMC enhanced to configure a priority value for the virtual Ethernet adapter that have trunk capability.
PHYP changed to ensure only one trunk adapter is active per VLAN. PHYP does not check priority values so, the virtual Ethernet driver was enhanced to have the ability to query the adapter priority and determine if an adapter is active.
Operation:
Only two SEA devices can be created.
A control channel is created between the two SEAs which creates a failover domain.
A control channel enables failover protocol communications. The failover protocol ensures the SEA with the highest priority is the active adapter. This ensures that multiple SEA devices do not bridge at the same time.
The highest priority device is the primary SEA and the other device in the failover domain is the backup SEA. When the VIO server with the primary SEA fails or the primary SEA detects a physical adapter failure, the failover protocol will ensure that the backup SEA becomes active until the primary recovers.
The virtual adapter properties is where the settings for trunk adapter are.
This picture (above) shows a server with three partitions and a Virtual I/O Server partition. All the partitions use a virtual Ethernet connection between them, and also connect to the VIOS partition. The VIOS partition has a physical Ethernet adapter that has a connection to the network (internet) and also a route to the virtual LAN. This physical adapter is defined as the Shared Ethernet Adapter and provides connection to the internet from the partitions LPAR 1,2 and 3 using VLAN 10. While this is a good way to share an adapter for network connectivity, it does have some disadvantages. If the VIOS partition fails, the other partitions will lose the external network connection. VLAN 10 IO Server 1 Power 5 System Ethernet Switch LPAR 1 LPAR 2 LPAR 3 Internet Internet Standalone Server Shared Ethernet Adapter VLAN 10 IO Server 1 Power 5 System Ethernet Switch LPAR 1 LPAR 2 LPAR 3 Internet Internet Standalone Server Shared Ethernet Adapter Control Channel Shared Ethernet Adapter IO Server 2 Power 5 System Ethernet Switch Standalone Server LPAR 1 LPAR 2 LPAR 3 Internet Internet VLAN 10 Shared Ethernet Adapter IO Server 1 Control Channel Shared Ethernet Adapter IO Server 2 Shared Ethernet Adapter IO Server 2 Power 5 System Ethernet Switch Standalone Server LPAR 1 LPAR 2 LPAR 3 Internet Internet Internet Internet VLAN 10 Shared Ethernet Adapter IO Server 1 Shared Ethernet Adapter IO Server 1 Adding a second VIOS partition with another physical SEA will add a level of redundancy to the server for the external network connection.
Each SEA will be comprised of a physical adapter and one or more virtual Ethernet adapters (one is enough, but it is possible to include more virtual Ethernets that serve different VLAN IDs). These virtual Ethernets must be created as trunk adapters: trunk adapters will receive all the traffic on their VLAN that is not addressed to any known MAC address. Furthermore, all SEA devices in a failover domain must define a control channel virtual Ethernet: this virtual Ethernet has a VLAN ID different from all other VLAN IDs on the Squadrons box, and for security reasons (to prevent protocol interference) must only be defined as part of the SEA in the same failover domain.
Previously, there could only be one trunk adapter per VLAN ID. It is now possible to define more than one trunk adapter for the same VLAN ID, but only one of them will be marked as active at any one time. Each trunk adapter will have an associated priority value that is assigned by the user and is used by the SEA failover protocol to determine which trunk adapter should be activated preferentially over the other. This is configured through the HMC. The next step in the setup procedure is creating and configuring the SEA device. If a SEA has several virtual Ethernets, it will make sure that all of them are trunk adapters; furthermore, they all must have the same priority value. The priority will help the protocol determine which SEA should behave as the primary at any particular time: the numerically lowest priority value will mark the SEA as primary. During the configuration, the user also specifies a high availability mode for the SEA device. There are three modes, auto, disabled, and standby. The SEA failover protocol is only applicable for the auto and standby modes. When configured in these modes the SEA device will open the control channel and start the failover protocol.
In a failure scenario:
The failover protocol takes a SEA device through six possible states and uses four message types. All message type packets are sent via the control channel of the virtual Ethernet.
The bridge function is the ability to bridge unicast or broadcast packets through the physical interface. The SEA device has three bridging modes: BRIDGE_ALL, when set will allow the SEA to bridge all packets; BRIDGE_UNICAST means to bridge only unicast packets; and BRIDGE_NONE, where all bridging ceases. BRIDGE_ALL and BRIDGE_UNICAST will only occur in the PRIMARY state. BRIDGE_NONE will occur in all other states. When the SEA device changes its state into PRIMARY from the INIT state, it has a one second window where it will perform the BRIDGE_UNICAST mode. Once that time is up, it can begin to switch to BRIDGE_ALL mode.
The initial state for a SEA device is INIT. The three steady states are PRIMARY, BACKUP, and LIMBO where the physical adapter failure causes the SEA device to remove itself until such time that the physical adapter comes back up. The two transitory states are RECOVERY and NOTIFY. The RECOVERY state is the intermediary state used by a backup device (BACKUP) that is going to become primary (PRIMARY) when the backup receives a keep alive with lower priority. The NOTIFY state is the intermediary state used by a primary (PRIMARY) device that is going to become a backup device (BACKUP).
Control Channel Shared Ethernet Adapter IO Server 2 Power 5 System Ethernet Switch Standalone Server LPAR 1 LPAR 2 LPAR 3 Internet Internet VLAN 10 Shared Ethernet Adapter IO Server 1 Control Channel Shared Ethernet Adapter IO Server 2 Shared Ethernet Adapter IO Server 2 Power 5 System Ethernet Switch Standalone Server LPAR 1 LPAR 2 LPAR 3 Internet Internet Internet Internet VLAN 10 Shared Ethernet Adapter IO Server 1 Shared Ethernet Adapter IO Server 1 A keep-alive packet is sent out to the broadcast address by the current primary SEA every half second: the purpose of this packet is to let the backups know that the primary is still up and running, and that no failover is necessary.
A recovery packet is sent out by a recovering SEA in the INIT state or a backup SEA in the BACKUP state. The purpose of this packet is to indicate to the other SEA that a higher priority SEA is recovering and will soon take over.
A notify packet is sent out in response to a recovery packet by an existing primary in the PRIMARY state, to indicate that it agrees that a higher priority SEA can become the primary.
A limbo packet is sent out in response to an adapter failure. Its use is to inform the other server to immediately take over and become the primary no matter what state it is in.
When a SEA comes up in a mode where the failover protocol is activated, it will listen on the control channel for two seconds for a keep-alive packet in order to determine if a primary SEA is already active on the network. It will do the following:
(1) If no keep-alive packets are received (i.e. this is the first SEA to come up, this sea came up after the primary went down, or both SEA devices are coming up simultaneously), after two seconds, the SEA assumes the role of the primary and begins sending keep-alive packets. At this point in time, the SEA device(s) can BRIDGE_UNICAST. The primary SEA device(s) waits one second before it does BRIDGE_ALL, just in case the backup SEA (which might think it is the primary) came up at the same time and also sends out keep-alive packets.
(2) If a keep-alive packet is received and its priority is higher, then there is a working primary and no further steps need to be taken. The SEA with the lower priority will become the backup and does not do bridge any form of traffic.
(3) If a keep-alive packet is received that is announcing a lower priority (which would happen if the original primary went down and then came up again), it means that a recovery must occur and the primary SEA must become the active SEA once again. In this case, the SEA will continuously send a recovery packet on the control channel. The new primary will not bridge any multicast or broadcast packets; instead, it will wait until it receives a notify packet from the current primary saying it is safe to bridge without creating routing loops. Once it receives confirmation, the new primary (in RECOVERY state) can make itself the primary and begin sending out keep-alive packets. The current primary (in NOTIFY state) will stop sending notify packets once it receives the keep- alive from the new primary and take the role of the backup. When it becomes the backup, it will issue a call to take down the adapter and bring it right back up. This is to ensure the switch will send the packets to the new primary.
(4) If the SEA does not receive a notify after sending the max number of recovery packets allowed, it assume the SEA that is responsible for sending notify packets went down before it was able to send notify. The SEA in the RECOVERY state will then switch to PRIMARY.
(5) It is also possible for an abnormal case that the SEA in a PRIMARY state does not hear or ignores the recovery packet but continues to send keep-alive. If this is the case, the SEA that is in the RECOVERY state should not stay in RECOVERY state but should go to the BACKUP state once it reaches its recovery iteration count. Since the SEA in the RECOVERY state is able to hear the keep-alive, it indicates there is a PRIMARY SEA and that is working but is unwilling to give up its activeness.
Each message type is only sent when the SEA device is in the corresponding state. There is only one instance where both SEA devices can be primary and that is when they both come up from the INIT state. Therefore, in any other circumstances when a SEA is in the primary state, it will ignore keep-alives.
During the initialization process, if for some reason more than one SEA has the same priority value, the MAC address of the control channel virtual adapter will be used to break the tie (the one with the numerically higher MAC address will declare itself the primary and begin sending keep-alive packets).
The protocol also takes into account the possibility of a physical adapter failure. When the physical adapter goes down, a registered callback function is invoked by the physical adapter. The SEA must stop sending keep-alives if it is the primary and begin sending out limbo packets. The SEA will continuously send limbo packets until it receives a keep- alive. In any other states, the SEA switches directly to the LIMBO state without sending out any packets. When the adapter notifies the SEA it has recovered and is now up, the protocol will be restarted. The SEA device that receives a limbo packet can switch right to the PRIMARY state and immediately send out keep-alive packets.
Another provision that is available is the ability for the administrator to force the SEA into a disabled mode. This is the backward compatible scenario where a SEA is not part of a failover domain. In this mode the SEA does not follow the failover protocol and goes directly to becoming a primary. A user can misconfigure a SEA device by setting up a SEA in disabled mode incorrectly, and detection of this is not possible.
The failover process takes some minimal time interval to complete; therefore, the administrator should attempt to reduce the occurrences of failover. However, the priority is a value chosen to indicate a preference of one SEA device as being active over another (maybe due to the resources allocated to the SEA); this is why a SEA should be reactivated once it becomes inactive even though this will cause a minor interruption.
Problem Resolution:
I f SEA c r eat i on f ai l s, ver i f y: None of the underlying adapters are being used (i.e. they do not have an IP address configured over them, or are part of another SEA or EtherChannel)
All the virtual adapters have the trunk setting enabled
All virtual adapters and the physical adapter have the same checksum offload setting (all enabled or all disabled) use lsattr E -l <adapter> -a chksum_offload
To see device-specific statistics, the command entstat d <SEA_adapter> will show: ------------------------------------------------------------- ETHERNET STATISTICS (ent9) : Device Type: Shared Ethernet Adapter
[ Generic network statistics ]
-------------------------------------------------------------- Statistics for adapters in the Shared Ethernet Adapter ent9 -------------------------------------------------------------- Number of adapters: 2
Other Statistics: Output packets generated: 0 Output packets dropped: 0 Device output failures: 0 Memory allocation failures: 0 ICMP error packets sent: 0 Non IP packets larger than MTU: 0 Thread queue overflow packets: 0
High Availability Statistics: Control Packets in: 0 Control Packets out: 1247
Type of Packets Received: Keep-Alive Packets: 0 Recovery Packets: 0 Notify Packets : 0 Limbo Packets: 0 State: PRIMARY Bridge Mode: All Number of Times Server became Backup: 0 Number of Times Server became Primary: 0 High Availability Mode: Auto Priority: 1