Introduction
FMADIO Devices have a unique network topology. While we use the Linux operating system the combination of FPGA devices, LXCs, Time Synchronization and custom interfaces make the topology less standard.
Below is a generic network topology diagram showing the standard configuration.
FMADIO Network Topology
Description
Linux Physical Network Interface
This indicates a regular linux network interface, typically using the in-kernel network driver.
FMADIO network refer to these as “phy” physical interfaces, for example phy0. Typically in linux systems the physical network interface is the logical network interface, for example eth0. FMADIO systems its slightly more abstracted.
Generally
phy0, phy1 are the low speed 1G RJ45 interfaces on the system
phy10, phy11 are the SFP/SFP28/QSFP/QSFP28 10G - 100G high speed management interfaces
Example:
phy0
phy1
phy10
phy11
Linux External Bridge Interface
Linux has the concept of a “bridge” network interface. It runs and operates exactly the same as a physical network interface but has not physical network drivers attached. FMADIO systems refer to these External Bridge interfaces as management interface, and named man0, man1, man10, man11.
Typically a single physical interface is attached to a logical management interface. For example below is how phy0 and man0 are mapped.
fmadio@fmadio100v2-228U:~$ sudo brctl show man0
bridge name bridge id STP enabled interfaces
man0 8000.e0d55e5d2150 no phy0
fmadio@fmadio100v2-228U:~$
In the above we see man0 as the logical bridge interface, which a single phy0 interface atached.
The reason for this structure is described later, primary it allows an LXC Container to use bridged networking with its own IP address on the same physical network interface.
Example:
man0
man1
man10
man11
Linux Internal Bridge Interface
A linux internal bridge is a standard linux bridge but has no physical network ports attached. Its primary purpose is a private interface from the FMADIO Host system to the FMADIO LXC container system, where traffic will never egress from the box.
This interfaces are named “fmad0” and have a static IP allowing FMADIO Host and LXC containers to have pre-defined network topology without worry of the external physical network topology.
Example:
fmad0
FPGA Capture Interface
Finally the FPGA Capture interfaces are also shown in the above diagram. These interfaces have no linux networking connectivity and reside outside the usual linux network configuration.
FPGA Capture ports have no regular linux network interfaces
These interfaces are controlled entirely by the FMADIO OS, the usual Linux networking tools do not operate with them.
Example:
cap0
cap1
cap2
cap3
cap4
cap5
cap6
cap7
Interface List
bmc
The bmc interface is not present on the FMADIO Host system, however all systems have a physical BMC network interface which requires IP port, subnet, gateway etc configuration.
phy0
This is the 1G RJ45 based copper physical network interface.
phy1
This is the second 1G RJ45 based copper physical network interface.
man0
This is the default 1G low speed management port. Typically its configured with a static IP address and the primary management interface. Its usually bridged with phy0
physical interface
man1
This can be a secondary interface, one typical use case is to run the PTPv2 network on the man1 interface so it does not interfere with the general management network
phy10
High speed physical interface, typically an Intel 710 or 810 based 10/25/40/100G physical interface.
phy11
High speed physical interface, typically an Intel 710 or 810 based 10/25/40/100G physical interface.
man10
Usually a 10G, 40G or 100G high speed management interface. This provides high speed data transfer and access to the system.
man11
Also a 10G, 40G, 100G high speed management interface. One typical example is man10 provides general core network access, while man11 provides dedicated cloud network access.
fmad0
This is the internal bridged network, it runs on the subnet 192.168.255.0/24
cap0
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. In some scenarios this may be a lane within a QSFP28/MPO12 physical connection.
cap1
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. In some scenarios this may be a lane within a QSFP28/MPO12 physical connection.
cap2
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
cap3
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
cap4
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
cap5
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
cap6
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
cap7
FPGA capture port either a physical SFP/SFP28/QSFP28 interface. When running 8×10G mode the system can have 8 physical capture ports.
LXC Port Forwarding
Port forwarding on the host system into the LXC system is a convenient and simple to use way to access resources within an LXC container.
This is configured using regular Linux iptables configuration located in
/opt/fmadio/etc/iptables.conf
An example is forwarding port 8021 on the FMADIO Host system to port 3000 (Grafana) running inside an LXC Container on the system. This is described below.
An example iptables configuration file for this looks like.
fmadio@fmadio100v2-228U:~$ cat /opt/fmadio/etc/iptables.conf
# Generated by iptables-save v1.6.1 on Mon Feb 5 13:44:51 2024
*mangle
:PREROUTING ACCEPT [5134902:12730600695]
:INPUT ACCEPT [4690551:12653869027]
:FORWARD ACCEPT [200:13048]
:OUTPUT ACCEPT [4706895:872657173]
:POSTROUTING ACCEPT [4706935:872658917]
COMMIT
# Completed on Mon Feb 5 13:44:51 2024
# Generated by iptables-save v1.6.1 on Mon Feb 5 13:44:51 2024
*nat
:PREROUTING ACCEPT [448824:77026595]
:INPUT ACCEPT [4501:295594]
:OUTPUT ACCEPT [82233:11014821]
:POSTROUTING ACCEPT [81566:10975253]
# pcap2json
-A PREROUTING -p tcp -m tcp --dport 3021 -j DNAT --to-destination 192.168.255.21:3000
-A POSTROUTING -o man0 -j MASQUERADE
-A POSTROUTING -o fmad0 -j MASQUERADE
COMMIT
# Completed on Tue Nov 28 15:30:44 2023
# Generated by iptables-save v1.6.1 on Tue Nov 28 15:30:44 2023
*filter
:INPUT ACCEPT [15028:3079580]
:FORWARD ACCEPT [1651:509287]
:OUTPUT ACCEPT [14446:4545136]
COMMIT
# Completed on Tue Nov 28 15:30:44 2023
fmadio@fmadio100v2-228U:~$
All the usual iptables forwarding, nating, ACL options are avaliable on the system.
LXC Virtual Network
The above diagram shows how a logical bridge network can share the same physical network with the host. It is an convenient way to run multiple IP addresses on the same physical network however using a single physical network interface.