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.

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.

Traffic flowing on a failing link is automatically redirected to the other links within the port channel interface to achieve fault tolerance.

Configuration Example

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:

  • MASTER=bond0
  • SLAVE=yes

The bond0.652 interface configuration uses the MASTER or SLAVE options, along with the following option:

  • VLAN=yes

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.
USERCTL=no
NM_CONTROLLED=no

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:

  1. Navigate to Infrastructure, and click on the Service Engine (SE) where the VLAN interface is to be created.
  2. Click on the edit button, and the following pop-up window will appear.
  3. Click on Create VLAN Interface.
  4. Select the parent interface from the drop-down list, fill in the VLAN and IP Address fields, and then click on Save.
  5. The VLAN interface appears on the Service Engine edit page.
  6. Click on Save to commit the changes.