Home › Forums › FABRIC General Questions and Discussion › Facility port and p4
- This topic has 2 replies, 2 voices, and was last updated 3 weeks, 5 days ago by
Benjamin Formby.
-
AuthorPosts
-
September 5, 2025 at 1:28 pm #8892
slice ID: 998af367-fd08-4167-9c70-1aa0d82f6ead
Hi,
I have a question regarding an experimental setup with a node, a facility port, and a P4 switch in between. My issue is that I am unable to create a connection between the facility port and the node.
To provide some context, I was able to replicate the “facility_port” example for FIU and can ping the FABRIC node from FIU, and vice versa.
I can also replicate “Layer 2 Network Topology with Edgecore Wedge100BF-32X P4 Tofino Switch on FABRIC,” where a P4 switch is connected to two nodes that can ping each other.
My goal in this experiment is to combine the two: instead of connecting two nodes to the P4 switch, I want to replace one of the nodes with a facility port. After creating the node and facility port, I set up SDX for the FIU facility port and defined the physical ports. Then I set up the P4 switch so it could transmit packets. However, I have not been able to ping the FIU server from the node or vice versa (slice ID: b6b88889-1024-451a-8d5c-727a465c3e7d). Below is how I set up the slice (please see the slice for more details):
facility_port_vlan=’4017′
facility_port_name = “AmLight-EXP-Layer2-FIU”
slice_name = “DDoS with p4”
node1_name = “DestNode”
p4_name = “P4”
network1_name = “net1”
network2_name = “net2”
model = “NIC_Basic”# print(f”VM Site: {site1}”)
# print(f”P4 Site: {site2}”)
# print(f”Facility Port Site: {facility_port_site}”)from ipaddress import ip_address, IPv4Address, IPv6Address, IPv4Network, IPv6Network
# Create Slice
slice = fablib.new_slice(name=slice_name)# Create Node 1 and its links
node1 = slice.add_node(name=node1_name, site=site1)
iface1 = node1.add_component(model=model, name=”nic1″).get_interfaces()[0]
# iface1.set_mode(“config”)# Optional: Uncomment if Node1 needs an IP address
# iface1.set_ip_addr(IPv4Address(“192.168.0.2”))# Create P4 switch and its links
p4 = slice.add_switch(name=p4_name, site=site2)
iface2 = p4.get_interfaces()[0] # Connects to net1
iface3 = p4.get_interfaces()[1] # Connects to net2# Set VLAN tag on P4 switch’s interface (iface3) to match facility port
iface3.set_vlan(facility_port_vlan) # Sets VLAN to ‘4018’ (string)# Add Facility Port
facility_port = slice.add_facility_port(name=facility_port_name, site=facility_port_site, vlan=facility_port_vlan)
facility_port_interface = facility_port.get_interfaces()[0]# Create Networks
net1 = slice.add_l2network(name=network1_name, subnet=IPv4Network(“192.168.1.0/24”))
net1.add_interface(iface1)
net1.add_interface(iface2)
net2 = slice.add_l2network(name=network2_name, subnet=IPv4Network(“192.168.1.0/24″)) # Layer 2 network for facility port
net2.add_interface(iface3)
net2.add_interface(facility_port_interface)# Submit Slice Request
try:
slice.submit()
except Exception as e:
print(f”Slice submission failed: {e}”)September 5, 2025 at 2:22 pm #8893Hello Hadi,
An announcement was posted earlier about FIU dataplane down which could be affecting your experiment. Updates should be posted on this thread about when it will be fixed:
Best,
Benjamin
September 10, 2025 at 1:27 pm #8921Following up with this post to summarize the solution:
With setting VLAN tag for the p4 switch, the p4 code would need to be updated to handle this. Instead, the VLAN tag was removed and this helped solve the issue.
-
AuthorPosts
- You must be logged in to reply to this topic.