BigIP VE KVM VM network interface mapping into tmsh Interfaces logic
I could not find any other KB, F5 document or ticket with an answer for this very basic question about how BigIP VE maps its OS level to tmsh Interface convention.
As reference, a regular Linux like RedHat 7, uses "Consistent Network Device Naming", which in general create the interface name at OS level as ens<PCI slot>p<port number>.
So, for example, in a HP server with slot1 network card and 2 ports, would have its naming mapped into ens1p0 and ens1p1. It will always map this way and never change its order, unless this card is moved to another slot!
But apparently BigIP VE uses the very old ethX network naming convention, exactly abandon to avoid during boots the interfaces to be mapped into different order.
Giving a quick look into BigIP VE OS level, I see udev scripts under /lib/udev/rules.d/ but I cannot be sure on all its logic.
My problem, and probably from many other people, is to understand how BigIP Ve maps its ethX order of the KVM setup. In my case, I have Guest configured in sequence with hostdev SRIOV devices in sequence, or PCI sot 7, then PCI slot 8 and so on, as well the MAC addresses also in sequence.
But when I see BigIP VE OS, I see it mapping my first hostdev, or PCI slot 7, as eth7, which then maps ok into interface 1.7. But then my interface PCI slot 8, as eth9, which again maps into interface 1.9, and then other 8 interfaces mapped without any reasonable order.
I see here two main problems:
1) In a disaster recover that I have to recover eventually this system, we will never know what interface order the reinstalled BigIP VE will follow, so I cannot recover any backup on this box
2) Any HOST upgrade, like KVM, could also potentially remap interfaces, again, breaking completly BigIp deployment
Besides this is a very ugly solution. I have a pair of the exact same HOST HW, with the same Guest setup, or the PCI hostdev allocations, and each one had the network mappings compltly different on BigIP VE.
I would like to understand how BigIP VE maps the Guest HW interfaces into its ethx so I can try to control and make it follow the order I want, like following PCI ID order.
See my actual configuration below:
[root@localhost:Active:Standalone] config # lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:03.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 01)
00:04.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:04.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:04.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:04.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:05.0 Communication controller: Red Hat, Inc Virtio console
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (rev 20) ->Expected to be MGMT
00:08.0 Ethernet controller: Broadcom Limited NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function->Expected to be eth0
00:09.0 Ethernet controller: Broadcom Limited NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function->Expected to be eth1
00:0a.0 Ethernet controller: Broadcom Limited NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function->Expected to be eth2
00:0b.0 Ethernet controller: Broadcom Limited NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function->Expected to be eth3
00:0c.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth5
00:0d.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth6
00:0e.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth7
00:0f.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth8
00:10.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth9
00:11.0 Ethernet controller: Intel Corporation I350 Ethernet Controller Virtual Function (rev 01)->Expected to be eth10
00:13.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
2: eth6: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:0a brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:0c brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:0d brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:0f brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:11 brd ff:ff:ff:ff:ff:ff
7: eth5: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:13 brd ff:ff:ff:ff:ff:ff
8: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master mgmt state UP qlen 1000
link/ether 52:54:00:89:3c:de brd ff:ff:ff:ff:ff:ff
--
9: eth7: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 52:54:00:6d:90:02 brd ff:ff:ff:ff:ff:ff
--
10: eth8: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:04 brd ff:ff:ff:ff:ff:ff
11: eth9: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 52:54:00:6d:90:06 brd ff:ff:ff:ff:ff:ff
--
12: eth10: <BROADCAST,MULTICAST,ALLMULTI> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 52:54:00:6d:90:08 brd ff:ff:ff:ff:ff:ff
See the PCI slot sequence as the MAC 52:54:00:6d:90:02 and incrementing by 2. So for example, the eth10 is my PCI slot c.
My search here is:
1) Understand how BigIP VE maps the physical interface into ethx, or indirectly into tmsh interfaces?
2) If editing files like /etc/ethmap, or another procedure, I can force the ordering of these interface mapping?
I have a support ticket open but so far no proper updates on it.