Port Channeling on Linux Server Hosts
Avi Vantage support for Linux server (bare metal) clouds includes support for port channel (bond) interfaces on the Linux server hosts.
A port channel interface is a grouping of multiple physical interfaces into a single logical interface. Port channel interfaces provide fault tolerance, bandwidth aggregation, and load balancing for traffic between switches, routers, and servers.
A port channel interface is treated as any other Ethernet interface, so it also can be configured with an IP address as well as VLAN trunking.
Up to eight physical links can be grouped into a single port channel interface.
Note: Port channeling is also referred to as port bonding, port trunking, and link aggregation.
Load Balancing Among Link Interfaces
The transmitting link for outgoing traffic is selected based on a hash of the traffic flow’s source and destination IP addresses and Layer 4 protocol ports to achieve load balancing.
Link Failure Recovery
Traffic flowing on a failing link is automatically redirected to the other links within the port channel interface to achieve fault tolerance.
In the terminology of the Linux interface configuration files, a bond interface consists of a master interface and one or more slave (secondary) interfaces.
Note: Ensure that all slave interfaces are of the supported interface types. You can use the
cat /proc/net/bonding/bond0 command to verify the interface type.
This section shows a set of sample configuration files for a port channel. Interface bond0 has two member interfaces, ens1f0 and ens1f1. Interface bond0.652 is a VLAN interface under bond0.
Note: Port channeling is supported only through feature configuration in the Linux server’s interface configuration files. Port channeling cannot be configured through Avi Vantage.
If the interface IPs are configured manually on the Linux server, then a reboot is required. A
systemctl restart network will not reset the Docker sufficiently to support Avi Vantage’s functioning.
The configuration for ens1f0 and ens1f1 each include the following options, identifying the interfaces as secondary members of a logical interface whose primary member is bond0:
The bond0.652 interface configuration uses the MASTER or SLAVE options, along with the following option:
Interface bond0’s Configuration file: /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 IPADDR=10.124.251.101 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no NM_CONTROLLED=no BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4 use_carrier=1"
Note: The following commands ensure that the configured interface is not placed under the network manager’s control.
Interface ens1f0’s Configuration file: /etc/sysconfig/network-scripts/ifcfg-ens1f0
DEVICE=ens1f0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no NM_CONTROLLED=no
Interface ens1f1’s Configuration file: /etc/sysconfig/network-scripts/ifcfg-ens1f1
DEVICE=ens1f1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no NM_CONTROLLED=no
Configuring VLAN on bond0 interface:
- Navigate to Infrastructure, and click on the Service Engine (SE) where the VLAN interface is to be created.
- Click on the edit button, and the following pop-up window will appear.
- Click on Create VLAN Interface.
- Select the parent interface from the drop-down list, fill in the VLAN and IP Address fields, and then click on Save.
- The VLAN interface appears on the Service Engine edit page.
- Click on Save to commit the changes.