Operator reference — internal. This page is the source of truth for which server NIC
connects to which switch port carrying O-RAN fronthaul (eCPRI) and PTP timing, and the
standard switch-port configuration for those ports.
Why this page exists. COSMOS previously encoded a fronthaul port by naming the NIC
FH1/FH2. That naming was retired — the dedicated fronthaul NICs are now named
DATA1a/DATA2a(they are the second port on the data plane) and the fronthaul rides as a
tagged VLAN on the data-plane port, not on a separately-named interface. With no
FH*name to look at, nothing on the host tells you which port carries PTP — so the wiring
is recorded here and in the inventory attributeINF_ptp_switch_porton each server.
Every O-RAN 7.2 server's fronthaul NIC connects to one dedicated switch port configured as a
G.8275.1 PTP boundary-clock (BC) master, trunked as follows:
| Setting | Value | Purpose |
|---|---|---|
switchport access vlan <data-VLAN> |
the server's data1 (or data2) VLAN, untagged | node data plane + untagged PTP delivery |
switchport trunk allowed vlan 4-5 |
VLAN 4 tagged (eCPRI U/C-plane), VLAN 5 tagged (PTP S-plane) | O-RAN fronthaul |
mtu 9216 |
jumbo | eCPRI IQ frames |
ptp enable / ptp role master |
BC master toward the server | server's ptp4l syncs its PHC from this port |
ptp transport layer2, announce -3, sync -4 |
G.8275.1 (domain 24) | matches the fabric BC |
Two wiring types (image/config scripts must branch on this):
srv1/srv2-lg1, osc srv20/srv5): a separate 25 G Intelice) NIC per plane is the fronthaul port (DATA1a/DATA2a), distinct from themlx5 DATA1/DATA2 data ports. ptp4l runs on the FH NIC; eCPRI VLAN 4 via its DPDK VF.srv6/srv7, BubbleRAN): the DATA1 portDATA1 name). srv7 additionally has a dedicatedsync0, no IP).GPS -> sw-orus (FibroLan, TGM, clock 00:05:80:ff:fe:07:db:b5, class 6)
| G.8275.1, domain 24
v
sw-rt1-top-new (OS10 BC, clock 20:04:0f:ff:ff:48:72:50, 1 step)
| 1/1/23:1 = ptp SLAVE (uplink to sw-orus GM)
|-- 1/1/21:1 -> srv20.osc (master)
|-- 1/1/21:2 -> srv5.osc (master)
|-- 1/1/25:1 -> srv1-lg1.sb1 p1 (master)
|-- 1/1/25:2 -> srv2-lg1.sb1 p1 (master)
|-- 1/1/25:3 -> srv1-lg1.sb1 p2 (master)
|-- 1/1/25:4 -> srv2-lg1.sb1 p2 (master)
`-- Po2 -> sw-tor2-cr1 (SLAVE side)
|
sw-tor2-cr1 (OS10 BC, clock 3c:2c:30:ff:ff:89:51:80, 2 steps)
|-- 1/1/13 -> srv6.rrail Data1 (master)
|-- 1/1/14 -> srv7.rrail Data1 (master)
`-- 1/1/10 -> srv7.rrail sync0 (master)
| Server | FH NIC (role / MAC) | Switch : port | Native VLAN | Tagged | MTU | PTP |
|---|---|---|---|---|---|---|
| srv1-lg1.sb1 | DATA1a / 50:7c:6f:6c:76:9c |
sw-rt1-top-new : 1/1/25:1 | 38 (data1) | 4, 5 | 9216 | master |
| srv1-lg1.sb1 | DATA2a / 50:7c:6f:6c:76:9d |
sw-rt1-top-new : 1/1/25:3 | 39 (data2) | — | 9216 | master |
| srv2-lg1.sb1 | DATA1a / 50:7c:6f:6c:76:38 |
sw-rt1-top-new : 1/1/25:2 | 38 (data1) | 4, 5 | 9216 | master |
| srv2-lg1.sb1 | DATA2a / 50:7c:6f:6c:76:39 |
sw-rt1-top-new : 1/1/25:4 | 39 (data2) | — | 9216 | master |
| srv20.osc | DATA1a / 6c:fe:54:91:68:68 |
sw-rt1-top-new : 1/1/21:1 | 58 (data1) | 4, 5 | 9216 | master |
| srv5.osc | DATA1a | sw-rt1-top-new : 1/1/21:2 | 58 (data1) | 4, 5 | 9216 | master |
| srv6.rrail | Data1 / ens4f1np1 90:5a:08:21:0f:39 |
sw-tor2-cr1 : 1/1/13 | 55 (data1) | 4 | default¹ | master |
| srv7.rrail | Data1 / dpdk0 90:5a:08:21:13:7a |
sw-tor2-cr1 : 1/1/14 | 55 (data1) | 4 | default¹ | master |
| srv7.rrail | sync0 (PTP-only) / 90:5a:08:21:13:7b |
sw-tor2-cr1 : 1/1/10 | 4093 | — | default¹ | master |
¹ The rrail edge ports allow only VLAN 4 (VLAN 5/S-plane arrives untagged on the native VLAN via
the BC) and do not set mtu 9216 explicitly — a known deviation from the sb1/osc standard.
This same mapping is stored per-server in the inventory attribute INF_ptp_switch_port:
curl -s 'http://am-rt1.cosmos-lab.org:5054/inventory/attribute_list?set=srv1-lg1.sb1.cosmos-lab.org' \
| grep -oE 'INF_ptp_switch_port="[^"]*"'
You need the FH NIC's MAC (from the server ip -br link, or the INF_control_mac/data MACs in
inventory). Then look it up in the switch forwarding table.
# 1) On the server: identify the fronthaul NIC + its MAC
ssh root@<console> ssh root@<server> 'ip -br link | grep -iE "DATA1a|DATA2a|ens4f1|dpdk0|sync0"'
# 2) On the switch: find the port the MAC is learned on (OS10)
ssh -i ~/.ssh/id_ed25519 sysadmin@10.250.250.157 # sw-rt1-top-new (sb1, osc)
# or: ssh sysadmin@10.250.0.176 # sw-tor2-cr1 (rrail)
sw# show mac address-table address 50:7c:6f:6c:76:9c
# -> VlanId Mac Address Type Interface
# 38 50:7c:6f:6c:76:9c dynamic ethernet1/1/25:1
# 3) Confirm the port's role
sw# show running-configuration interface ethernet 1/1/25:1
sw# show ptp clock # BC identity, GM, domain, offset-from-master
Apply to the server-facing port (OS10; substitute the port and the server's data VLAN).
This is the sb1/osc "gold" config; for a Type-B rrail port use switchport trunk allowed vlan 4.
ssh -i ~/.ssh/id_ed25519 sysadmin@10.250.250.157
sw# configure terminal
sw(config)# interface ethernet 1/1/25:1
sw(conf-if-eth1/1/25:1)# description "srvX-lg1.sb1 E810 p1"
sw(conf-if-eth1/1/25:1)# no shutdown
sw(conf-if-eth1/1/25:1)# switchport mode trunk
sw(conf-if-eth1/1/25:1)# switchport access vlan 38 # <- the node's DATA1 VLAN (untagged)
sw(conf-if-eth1/1/25:1)# switchport trunk allowed vlan 4-5 # <- eCPRI (4) + PTP S-plane (5), tagged
sw(conf-if-eth1/1/25:1)# mtu 9216
sw(conf-if-eth1/1/25:1)# ptp enable
sw(conf-if-eth1/1/25:1)# ptp role master
sw(conf-if-eth1/1/25:1)# ptp transport layer2
sw(conf-if-eth1/1/25:1)# ptp announce interval -3
sw(conf-if-eth1/1/25:1)# ptp sync-interval -4
sw(conf-if-eth1/1/25:1)# end
sw# write memory
The switch must already be a G.8275.1 boundary clock (ptp clock boundary profile g8275.1,
domain 24, ptp system-time enable) with a slave port up toward the GM (on sw-rt1-top-new that
is 1/1/23:1 -> sw-orus). Verify the whole path locked:
sw# show ptp clock # Offset From Master should be a few ns; Steps Removed small
# On the server:
ssh root@<server> 'journalctl -u ptp4l | tail' # expect rms < ~200 ns servoing to master
After changing the record (new server, re-cable, VLAN change) update both:
ssh root@am5 "curl -s -X POST http://localhost:5012/inventory/attribute_modify --data-urlencode 'name=<fqdn>' --data-urlencode 'attribute=INF_ptp_switch_port' --data-urlencode 'value=<switch:port(...)>'"attribute_add the first time a server gets the attribute).ssh -i ~/.ssh/id_ed25519 sysadmin@10.250.250.157 (OS10);sysadmin@10.250.0.176.Last verified: 2026-07-18 (live switch config read from sw-rt1-top-new + sw-tor2-cr1).