This pull request introduces support for Traffic Steering within the Service Function Chaining (SFC) framework. This enables the User Plane Function (UPF) to:
Receive and process forwarding policy information for SFC traffic.
Apply Network Service Header (NSH) encapsulation to packets based on the received policy.
The traffic steering implementation enables the N6-LAN for perform Service Function Chaining on the traffic after it leaves the UPF but before the internet. Checkout the OpenN6LAN project.
Key Changes:
Modifications to the UPF to handle forwarding policies in the FAR.
Implementation of NSH encapsulation logic within the UPF based on the presence of forwarding policy identifiers.
Updates to handle NSH headers during packet processing
Testing:
The changes can be tested by setting up the eUPF and installing FAR rules with forwarding policy identifiers. Please see below. The setup is depicted below, along with the files for setting up the environment for test.
Sessions rules to install on eUPF using pfcp-kitchen-sink, sessions-eupf.yaml in the docker compose below
Send traffic using the emulated UE. Note: you have to start with the UE without a policy for NSH since the FIB tables need to have been populate prior.
# UE with ip 12.1.1.2
docker exec -it ue-sim \
ip netns exec uegtp0 ping -c 4 8.8.8.8
# UE with ip 12.1.1.3
docker exec -it ue-sim \
ip netns exec uegtp1 ping -c 4 8.8.8.8
Firstly, thank you for this project!
This pull request introduces support for Traffic Steering within the Service Function Chaining (SFC) framework. This enables the User Plane Function (UPF) to:
The traffic steering implementation enables the N6-LAN for perform Service Function Chaining on the traffic after it leaves the UPF but before the internet. Checkout the OpenN6LAN project.
Key Changes:
Testing:
The changes can be tested by setting up the eUPF and installing FAR rules with forwarding policy identifiers. Please see below. The setup is depicted below, along with the files for setting up the environment for test.
Sessions rules to install on eUPF using pfcp-kitchen-sink,
sessions-eupf.yaml
in the docker compose belowDocker compose for setting up components for testing
networks: n4_net: driver: bridge name: demo-n4-net ipam: config: