YES IT IS A BUG ON CENTOS7!
mtu on bonding interface is ignored by default ... to sad!!!

What we can do to get around:

eth0 + eth1 (NIC) > SAN1 (BOND) > NFS (VLAN.99) and MTU=9000

# egrep "MTU=|ONBOOT=|NM_CONTROLLED=" /etc/sysconfig/network-scripts/ifcfg-*
[...]
/etc/sysconfig/network-scripts/ifcfg-NFS:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-NFS:MTU=9000
/etc/sysconfig/network-scripts/ifcfg-SAN1:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-SAN1:MTU=9000
/etc/sysconfig/network-scripts/ifcfg-SAN1.1:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-SAN1.1:MTU=9000
/etc/sysconfig/network-scripts/ifcfg-SAN1.2:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-SAN1.2:MTU=9000
/etc/sysconfig/network-scripts/ifcfg-VM1:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-VM1.1:ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-VM1.2:ONBOOT=yes

Configured with nmtui

  • /etc/NetworkManager/dispatcher.d/bond-mtu.sh
#!/bin/sh  

INTERFACE_NAME_REGEX="^bond?|SAN1|NFS"

/usr/bin/logger -t `basename $0` "starting"

if [[ $CONNECTION_ID =~ $INTERFACE_NAME_REGEX ]]; then
   if [[ $2 == up ]]; then
      MTU=$(awk -F "=" '($1 ~ "^MTU") {print $NF}' /etc/sysconfig/network-scripts/ifcfg-$CONNECTION_ID)
      if [[ $MTU > 0 ]] && [[ $MTU != 1500 ]]; then
         /usr/bin/logger -t `basename $0` -s "Setting MTU of $CONNECTION_ID to $MTU..."
         if /usr/sbin/ip link set dev $1 mtu $MTU ; then
            /usr/bin/logger -t `basename $0` "Successfully set MTU of $CONNECTION_ID to $MTU"
         else
            /usr/bin/logger -t `basename $0` "Failed to set MTU of $CONNECTION_ID to $MTU"
         fi
      fi
   fi
fi
chmod 755 /etc/NetworkManager/dispatcher.d/bond-mtu.sh
systemctl enable NetworkManager-dispatcher.service
systemctl start NetworkManager-dispatcher.service
reboot
ip a