HACKER Q&A
📣 scrubs

How to break down a bonded NIC pair in Linux?


Hackernews turned me onto a new bare metal hosting provider. (Thanks - great tip.) The default box comes with four Ethernet devices (2 Mellanox and 2 Intel cards). Two of them are bonded. My goal:

* How can I reconfigure these four cards so that I still have a public IP, and a local (internal) IP but such that I can free up both of the mellanox cards or both of the Intel devices so I can use them for DPDK development?

I have no need for any high speed public connections. ssh is fine. It has a IPV6 local address; I don't about that either. All IPV4 is fine. DPDK requires the cards to be IP link down before use.

I've figured this out in Amazon EC2, however, the default NIC situation defaults much simpler than this. I'm just don't have any serious know-how in this particular kind of Linux-admin. And I've never bonded or unbounded a pair of NICs.

Details follow.

TIA

===================================

user@defaulthost:~# ifconfig -a

bond0: flags=5187 mtu 1500

        inet  netmask 255.255.255.254  broadcast 255.255.255.255

        inet6 xxxx:xxxx:xxxx:xxx::1  prefixlen 127  scopeid 0x0

        inet6 xxxx::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20

        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
bond0:0: flags=5187 mtu 1500

        inet   netmask 255.255.255.254  broadcast 255.255.255.255

        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
eno1: flags=4098 mtu 1500 ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)

eno2: flags=4098 mtu 1500 ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)

enp2s0f0: flags=6211 mtu 1500

        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
enp2s0f1: flags=6211 mtu 1500

        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10

=================

user@defaulthost:~# dmesg | grep enp2

[ 6.331694] mlx5_core 0000:02:00.0 enp2s0f0np0: renamed from eth0

[ 6.372339] mlx5_core 0000:02:00.1 enp2s0f1np1: renamed from eth1

[ 9.429331] mlx5_core 0000:02:00.0 enp2s0f0: renamed from enp2s0f0np0

[ 9.484863] mlx5_core 0000:02:00.1 enp2s0f1: renamed from enp2s0f1np1

[ 11.548785] mlx5_core 0000:02:00.0 enp2s0f0: Link up

[ 11.553936] bond0: (slave enp2s0f0): Enslaving as a backup interface with an up link

[ 11.609695] bond0: (slave enp2s0f0): link status definitely up, 10000 Mbps full duplex

[ 15.421901] mlx5_core 0000:02:00.1 enp2s0f1: Link up

[ 15.429399] bond0: (slave enp2s0f1): Enslaving as a backup interface with an up link

[ 15.678759] bond0: (slave enp2s0f1): link status definitely up, 10000 Mbps full duplex

user@defaulthost:~# dmesg | grep eno

[ 2.036278] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)

[ 5.178678] igb 0000:04:00.0 eno1: renamed from eth0

[ 5.285816] igb 0000:05:00.0 eno2: renamed from eth1

==================

user@defaulthost:~# lspci | grep Eth

02:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

02:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]

04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

05:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)


  👤 wmf Accepted Answer ✓
The right way is probably to look at /etc/network/interfaces or whatever your distro is using, then restart networking. You can use ifenslave manually but that won't persist across reboots.