To improve available network bandwidth and fault tolerance, multiple virtual function (VF) network interfaces assigned to Avi Load Balancer SEs can be aggregated to form port channels or bonded interfaces.
Prerequisites
No port channel-specific configuration is needed on the switch.
To achieve the intended benefit, port-channel member interfaces should be associated with different physical function (PF) devices or pNICs.
CSP configuration
SRIOV should be enabled on CSP pNICs being used. The following CSP command could be used for this.
avinet-1(config)# pnic enp7s0f0 sr-iov numvfs 32 switchmode vep
Configuration
The member (secondary) interfaces to be bonded together to form a port-channel (bond) can be configured using the Avi Load Balancer SE metadata (yml) file as follows:
avi.bond-ifs.SE: '1,2'
The configuration above directs the SE to bond interfaces 1 and 2 to form a port-channel.
If multiple port channels are required, the indices of member interfaces for different port channels should be specified with space in-between, as shown below:
avi.bond-ifs.SE: '1,2 3,4'
The above configuration makes the SE create two port channels - one with interfaces 1 and 2 and the other with interfaces 3 and 4.
Once the SE is up, the Edit Service Engine window in the Avi Load Balancer UI shows information about bonded and secondary interfaces.
Run the CLI command show serviceengine <SE_IP_Address> interface
to view the interface configuration.
[admin:10-128-2-20]: > show serviceengine 10.128.2.22 interface +------------------------------------+-----------------------------------------------------+ | Field | Value | +------------------------------------+-----------------------------------------------------+ | se_uuid | 10-128-2-22:se-bb2c9806-fe17-4c66-9fb0-dd5b89a456f8 | | proc_id | PROC_Aggregate | | vnics[1] | | vnic_name | eth2 | | vnic_id | 4 | | mac_address | 02:5a:80:02:11:0c | | interface_stats | | | ipackets | 69180 | | ibytes | 4446364 | | ierrors | 0 | | rx_nombuf | 0 | | opackets | 0 | | obytes | 0 | | oerrors | 0 | | rx_kni | 0 | | tx_kni | 2175 | | tx_kni_errs | 0 | | ip_checksum_drops | 0 | | l4_checksum_drops | 0 | | tx_queue_full_retries | 0 | | rx_pkt_iterations | 64223 | | rx_queue_full | 0 | | rx_max_single_burst | 22 | | rx_mim_etype_p2s | 0 | | tx_mim_etype_p2s | 0 | | tx_mim_frags_etype_p2s | 0 | | rx_mim_etype_s2p | 0 | | tx_mim_etype_s2p | 0 | | tx_mim_frags_etype_s2p | 0 | | tx_frags_p2s | 0 | | local_flow_probes_req_sent | 0 | | local_flow_probes_req_received | 0 | | flow_probes_ignored_same_vnic | 0 | | flow_probes_ignored_in_tw | 0 | | vnic_parent | 4 | | vnic_weight | -1 | | vlan_id | 0 | | num_vs_delete_drops | 0 | | vrf_id | 1 | | vrf_ref | global | | vnic_mtu | 1500 | | interface_disabled | False | | linux_intf_name | eth2 | | vnic_owner | 0 | | vnics[2] | | | vnic_name | eth1 | | vnic_id | 5 | | mac_address | 02:4a:80:02:11:0c | | interface_stats | | | ipackets | 611590 | | ibytes | 59185414 | | ierrors | 0 | | rx_nombuf | 0 | | opackets | 542345 | | obytes | 65622481 | | oerrors | 0 | | rx_kni | 0 | | tx_kni | 2175 | | tx_kni_errs | 0 | | ip_checksum_drops | 0 | | l4_checksum_drops | 0 | | tx_queue_full_retries | 0 | | rx_pkt_iterations | 337424 | | rx_queue_full | 0 | | rx_max_single_burst | 22 | | rx_mim_etype_p2s | 0 | | tx_mim_etype_p2s | 0 | | tx_mim_frags_etype_p2s | 0 | | rx_mim_etype_s2p | 0 | | tx_mim_etype_s2p | 0 | | tx_mim_frags_etype_s2p | 0 | | tx_frags_p2s | 0 | | local_flow_probes_req_sent | 0 | | local_flow_probes_req_received | 0 | | flow_probes_ignored_same_vnic | 0 | | flow_probes_ignored_in_tw | 0 | | vnic_parent | 5 | | vnic_weight | -1 | | vlan_id | 0 | | num_vs_delete_drops | 0 | | vrf_id | 1 | | vrf_ref | global | | vnic_mtu | 1500 | | interface_disabled | False | | linux_intf_name | eth1 | | vnic_owner | 0 | | vnics[3] | | | vnic_name | bond0 | | vnic_id | 32 | | mac_address | 02:5a:80:02:11:0c | | ip_info[1] | | | ip_addr | 10.160.100.246 | | net_mask | 255.255.255.0 | | ip_info[2] | | | ip_addr | 10.160.100.235 | | net_mask | 255.255.255.255 | | ip_info[3] | | | ip_addr | 10.160.100.236 | | net_mask | 255.255.255.255 | | interface_stats | | | ipackets | 680768 | | ibytes | 63631658 | | ierrors | 0 | | rx_nombuf | 0 | | opackets | 542345 | | obytes | 65622481 | | oerrors | 0 | | rx_kni | 0 | | tx_kni | 0 | | tx_kni_errs | 0 | | ip_checksum_drops | 0 | | l4_checksum_drops | 0 | | tx_queue_full_retries | 0 | | rx_pkt_iterations | 0 | | rx_queue_full | 0 | | rx_max_single_burst | 0 | | rx_mim_etype_p2s | 0 | | tx_mim_etype_p2s | 0 | | tx_mim_frags_etype_p2s | 0 | | rx_mim_etype_s2p | 0 | | tx_mim_etype_s2p | 0 | | tx_mim_frags_etype_s2p | 0 | | tx_frags_p2s | 0 | | local_flow_probes_req_sent | 0 | local_flow_probes_req_received | 0 | | flow_probes_ignored_same_vnic | 0 | | flow_probes_ignored_in_tw | 0 | | vnic_parent | 32 | | vnic_weight | -1 | | vlan_id | 0 | | num_vs_delete_drops | 0 | | vrf_id | 1 | | vrf_ref | global | | vnic_mtu | 1500 | | mbr_intfs[1] | | | if_name | eth2 | | linux_name | eth2 | | active | True | | mbr_intfs[2] | | | if_name | eth1 | | linux_name | eth1 | | active | True | | interface_disabled | False | | linux_intf_name | bond0 | | vnic_owner | 0 | +------------------------------------+-----------------------------------------------------+