====== Network and Infiniband ======
===== General =====
==== Adjust MTU (optional) ====
It is highly recommended to increase MTU for eth network, as usage on it will be ssh and data, and that increasing MTU will increase data performances without reducing ssh performances. 9000 would be a good value for ethernet, and 65520 for infiniband IPoIB (prefer using directly connected_mode).
To do so, add the following parameter in incfg-enp0sx files:
MTU=9000
===== Ethernet =====
==== Bonding - LACP (optional) ====
LACP can be used on pets servers to increase bandwidth (with multi-streams only) and reliability (in case one NIC fail, the other will continue to operate). LACP is often used on master nodes and io nodes. You need first to configure your switch to gather links, then on OS side, do the following (to gather eth0 and eth1 into one LACP):
Edit (in /etc/sysconfig/network-scripts/) ifcfg-eth0:
DEVICE=eth0
TYPE=Ethernet
MTU=9000
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
SLAVE=yes
MASTER=bond0
Then edit ifcfg-eth1:
DEVICE=eth1
TYPE=Ethernet
MTU=9000
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
SLAVE=yes
MASTER=bond0
And create ifcfg-bond0 with the following content:
DEVICE=bond0
MTU=9000
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPADDR=10.0.0.1
NETMASK=255.255.0.0
BONDING_OPTS="miimon=100 mode=4 lacp_rate=1 xmit_hash_policy=layer3+4"
Bonding needs a kernel module to be loaded.
/etc/modprobe.d/bonding.conf
alias netdev-bond0 bonding
And after reboot your bond should be up.
More : http://backdrift.org/lacp-configure-network-bonding-linux
==== VLAN (optional) ====
VLAN can be used to divide your network, for management or security reasons.\\
VLAN can also be used on a bonding interface (bond0 most of the time).
Here is an example how to configure it, after having done configuration on switch side.
Native VLAN is 10.0.0.0, in **ifcfg-bond0** :
DEVICE=bond0
MTU=9000
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPADDR=10.0.0.1
NETMASK=255.255.0.0
BONDING_OPTS="miimon=100 mode=4 lacp_rate=1 xmit_hash_policy=layer3+4"
VLAN 10 is 10.10.0.0, in **ifcfg-bond0.10** :
DEVICE=bond0.10
MTU=9000
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.10.0.1
NETMASK=255.255.0.0
USERCTL=no
IPV6INIT=no
IPV6_AUTOCONF=no
VLAN=yes
VLAN need a kernel module to be loaded.
/etc/modprobe.d/8021q.conf
8021q
And after reboot, your VLANs should be up.
===== Infiniband (optional) =====
To install infiniband, use manufacturer provided modules, or use the RHEL/CENTOS provided (RDMA). See https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Configure_InfiniBand_and_RDMA_Networks.html
In short, you need to install packages, and reboot system. Diag and utils tools are optional but very useful. We are going here to install official RHEL infiniband.
yum groupinstall "Infiniband Support"
yum install infiniband-diags ibutils
systemctl enable rdma
reboot
After reboot, check with ibstatus if interface is "ACTIVE". After that, you just need to configure an ip on it like any other interfaces, taking into account the MTU choose.
Then, you need to start a subnet manager on your IB network (if not, all interfaces will be in PULLING). You can start opensmd on main server, here batman. DO NOT start opensm/opensmd on another server. There can be only one (like highlanders) on the IB network. Beware, some advanced IB switch can also integrate a subnet manager, ensure you only use one.
If you want to start the subnet manager on master node (batman), use:
systemctl start opensmd
systemctl enable opensmd
Then I you should do a snapshot of your fabric (see below) to use it regularly to check if something has change in the fabric. This is a very simple and efficient fabric check.
==== Identification ====
Switches
ibswitches
HCAs in the fabric (Host Channel Adapters
ibhosts
==== Display ====
Fabric topology
ibnetdiscover
Route through the fabric (slid is the LID of the source node and dlid is the LID of the destination node in the fabric)
ibtracert slid dlid
Link status of a node
ibportstate lid port
Counters of a node
Note that this command can be used locally without arguments to obtain the informations of local port.
perfquery lid port
Data counters of a node
ibdatacounts lid port
Low level informations of a node
smpquery switchinfo lid
Low level informations of a port
smpquery portinfo lid port
==== Diagnostic ====
Check the entire fabric
ibdiagnet -v -r
Check a specific route
ibdiagpath -v -l slid dlid
Take a snapshot of the fabric after installation, and check changes of the stack when something occurs
Create snapshot
osmtest -f c
Compare with snapshot
osmtest -f v
Check which links are experiencing significant errors
ibdiagnet -c 100 -P all=1
Check all ports (remove -v for only errors output)
ibcheckstate -v
==== Other ====
Clearing error counters
ibclearerrors
Clearing data counters
ibclearcounters
Reset a port
ibportstate lid port reset
Setting port speed (value = 1 for low speed, 7 for high)
ibportstate lid port speed
More informations, see :
* https://docs.oracle.com/cd/E18476_01/doc.220/e18478/fabric.htm
* https://wiki.archlinux.org/index.php/InfiniBand