The document outlines the prototyping of a stateless SRv6/GTP-U translation functionality aimed at implementing key SRv6 features as per IETF specifications. It describes various functions for forwarding IPv6 packets, encapsulating GTP messages, and supporting new encoding and decoding methods, while emphasizing the need for an open-source approach. The feedback from a hackathon indicates successful implementations of specific functions and plans for further contributions to the project.
Objectives
• Implements thekey SRv6 functions defined by “I-D.ietf-dmm-srv6-
mobile-uplane*”
• Needs a flexible platform to impalement all possible functions
• Try to hack the missing features already known.
• Disclose the implementation codes as open source
• Provides feedbacks to the I-D through the hack
• To Improve the specs.
• Identify the hidden missing parts of the spec.
*: https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/
3.
SRv6 Mobile UpaneFunctions
Target Function Description
End.MAP Forwards the receiving IPv6 packet and update the IPv6 DA
with mapped SID.
End.M.GTP6.D Decap the receiving GTP/UDP/IPv6 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy
End.M.GTP6.E Decap the receiving IPv6+SRH packet and encap with
IPv6/UDP/GTP-U header based on the address/ID mapping
rule.
End.M.GTP4.E Decap the receiving IPv6+SRH packet and encap with
IPv4/UDP/GTP-U header base on the address/ID mapping
rule.
T.M.Tmap Decap the receiving GTP/UDP/IPv4 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy.
End.Limit Limit the throughput of the packet flow with mapped SID.
**NEW** Encoding GTP-U Messages into SRH.
**NEW** Decoding GTP-U Messages from SRH.
4.
End.MAP in Downlink
Internet
gNBUE
N3N9 N6
IPv6 Hdr SA = U2::, DA = G::1
IPv6 Hdr SA = Z::, DA = A::
IPv6 Hdr SA = Z::, DA = A:: IPv6 HdrSA = U2::, DA = U1::
IPv6
Hdr
SA = Z::, DA = A::
IPv6 HdrSA = Z::, DA = A::
End.DX End.MAP T.Encaps.Red
UPF1
U1
UPF2
U2
SMF
AMF
N2
N11
N4
Payload
Payload
Payload
Payload
G::1
5.
End.M.GTP6.D in Uplink
IPv6Hdr SA = A::, DA = Z::
Payload
IPv6 Hdr SA = G1::, DA = X:A::1
UDP -
GTP
SA = A::, DA = Z::
Payload
TEID: 1234
IPv6 Hdr
• Without modifying the N2 interface we are steering the UE
packets to an SRGW along the designated algorithm path.
IPv6 Hdr SA = X::, DA = S1::
SR Hdr (U2::, C1::) SL=2
Payload
IPv6 Hdr SA = A::, DA = Z::
IPv6 Hdr SA = X::, DA = C1::
SR Hdr (U2::, C1::) SL=1
Payload
IPv6 Hdr SA = A::, DA = Z::
IPv6 Hdr SA = X::, DA = U2::
Payload
IPv6 Hdr SA = A::, DA = Z:: Payload
IPv6 Hdr SA = A::, DA = Z::
• SRGW advertise SID in LOC(64b of X ) + Algorithm(8b of A and B) format :
• X:A::/72 -> Low latency
• X:B::/72 -> High bandwidth
• SRGW does End.M.GTP6.D function for X:A:: and X:B::.
• X:A::1 is a type of End.M.GTP6.D SID that pops the GTP header without lookup
and pushes an outer header with SID list
• X:A:1 could be a flex-alg SID (end-to-end network slicing) for other SRv6 nodes.
• X:A::1 can be shared across UEs
SMF
InternetSR GW
X
UPF
U2
AMF
N2
N9 N6
N4
N11
Old: IPv6 addr “X::1” + TEID (1234)
New: IPv6 SID “X:A::1” + TEID (1234)
X:A:1 is BSID at X
TEID (1234) could be dummy
TE
C1
NFV
S1 N9N9
gNB
A
G1
UE
N3
End.M.GTP.6.D End.DT6End.* End.*
End.*: Appropriate SRv6 End function type for the purposes.
6.
End.M.GTP6.E in Downlink
SMF
SRGW
X
AMF
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv6 Hdr SA = X::, DA = G1::
UDP -
GTP
SA = Z::, DA = A::
Payload
TEID: 3456
IPv6 Hdr
• SRGW does End.M.GTP6.E function.
• X::2 is an SRv6 End.M.GTP6.E SID.
• Removes SRH, adds UDP and GTP with TEID received in SID ARGs
• IPv6 DA is the last segment of the SRH
• Scales (no state per UE in SR gateway)
• gNB could configure an IPv6 addresses per network slice.
• G1::1 -> Low latency
• G1::2 -> High bandwidth
IPv6 Hdr SA= U2::, DA= X::2:3456
SR Hdr ( G1::, X::2:3456, S1::) SL=1
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv6 Hdr SA = Z::, DA = A::
Payload
• UPF U2 (anchor point) maintains state of A:
• FIB lookup: A/128 is matched to <C1::, S1::, X::2:3456, G1::>
• SRGW SID X:: need be pre-configured, or through N4 or other means.
N2
N4
N11
UPF
U2N9 N6N9N9
IPv6 Hdr SA= U2::, DA= S1
SR Hdr ( G1::, X::2:3456, S1::) SL=2
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv6 Hdr SA= U2::, DA= C1
SR Hdr ( G1::, X::2:3456, S1::) SL=3
IPv6 Hdr SA = Z::, DA = A::
Payload
Remote Endpoint ==
G1:: + TEID (3456)
G1:: is a gNB IPv6 addr
TE
C1
NFV
S1
Internet
gNB
A
G1
UE
N3
End.M.GTP.6.E T.Encaps.RedEnd.*End.*
End.*: Appropriate SRv6 End function type for the purposes.
7.
End.M.GTP4.E in Downlink
SMF
SRGW
X
AMF
N2
N11
UPF
U2N9 N6
N4
N9N9
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv4 Hdr SA = SRGW, DA = G1
UDP -
GTP
SA = Z::, DA = A::
Payload
TEID: 3456
IPv6 Hdr
IPv6 Hdr
SA= U2::,
DA= X::G1:SRGW:3456
SR Hdr (X::G1:SRGW:3456, S1::)SL=0
IPv6 Hdr SA = Z::, DA = A::
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv6 Hdr SA= U2::, DA= S1
SR Hdr (X::G1:SRGW:3456, S1::) SL=1
IPv6 Hdr SA = Z::, DA = A::
Payload
IPv6 Hdr SA= U2::, DA= C1
SR Hdr (X::G1:SRGW:3456, S1::) SL=2
IPv6 Hdr SA = Z::, DA = A::
Payload
• X::G1:SRGW:3456is an SRv6 End.M.GTP4.E function
• Removes SRH, adds IPv4/UDP and GTP
• IPv4 SA, DA and GTP TEID are part of the SID’s arguments
• Scales (no state per UE in SR gateway)
Payload
IPv4 addr of gNB + TEID (3456)
TE
C1
NFV
S1
Internet
gNB
A
G1
UE
N3
End.M.GTP.4.E T.Encaps.RedEnd.* End.*
End.*: Appropriate SRv6 End function type for the purposes.
8.
SMF
SR GW
X
AMF
N2
N11
T.M.Tmap inUplink
UPF
U2N9 N6
N4
N9N9
IPv6 Hdr SA = A::, DA = Z::
Payload
IPv4 Hdr SA = G1, DA = SRGW
UDP -
GTP
SA = A::, DA = Z::
Payload
TEID: 1234
IPv6 Hdr
IPv6 Hdr SA = X::, DA = S1::
SR Hdr (U2::, C1::) SL=2
Payload
IPv6 Hdr SA = A::, DA = Z::
IPv6 Hdr SA = X::, DA = C1::
SR Hdr (U2::, C1::) SL=1
Payload
IPv6 Hdr SA = A::, DA = Z::
IPv6 Hdr SA = X::, DA = U2::
Payload
IPv6 Hdr SA = A::, DA = Z:: Payload
IPv6 Hdr SA = A::, DA = Z::
• SRGW does T.M.Tmap function.
• SRGW is a UPF Uplink Classifier. Coexist with current UPFs.
• Steers traffic into SR policy.
IPv4 addr of SRGW + TEID (1234)
TE
C1
NFV
S1
Internet
gNB
A
G1
UE
N3
T.M.Tmap End.DTEnd.* End.*
End.*: Appropriate SRv6 End function type for the purposes.
Feedback from Hackathon
•Two target functions has been implemented for VPP and P4 Switch.
• New mapping rule of GTP-U<->SRv6 has been studied
• It is possible to support both ‘Args.Mob.Session’ and ‘Drop-in’ scenario.
• The codes are now open-sourced:
• VPP and P4
Target Function Description
End.MAP Forwards the receiving IPv6 packet and update the IPv6 DA
with mapped SID.
End.M.GTP6.D Decap the receiving GTP/UDP/IPv6 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy
End.M.GTP6.E Decap the receiving IPv6+SRH packet and encap with
IPv6/UDP/GTP-U header based on the address/ID mapping
rule.
End.M.GTP4.E
(SRv6 -> GTP-U)
Decap the receiving IPv6+SRH packet and encap with
IPv4/UDP/GTP-U header base on the address/ID mapping
rule.
T.M.Tmap
(GTP-U -> SRv6)
Decap the receiving GTP/UDP/IPv4 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy.
End.Limit Limit the throughput of the packet flow with mapped SID.
**NEW** Translate GTP-U Echo Request to ICMP Echo Request and vice
versa
**NEW** Translate GTP-U Echo Reply to ICMP Echo Request and vice
versa
VPP Command Linesfor SRv6 Mobile UPlane
Function Command Line
End.M.GTP4.E “sr localsid (del) address <IPv6 address of SRGW>/<mask> behavior end.m.gtp4.e”
T.M.Tmap
“sr policy add bsid <bsid> next A1:: next B1:: next C1:: (weight 5) (fib-table 3)
gtp4_removal sr-prefix <ipv6_prefix_interworking>/<mask> local-prefix <src_prefix>/<mask>”
“sr steer l3 <IPv4 dst addr of GTP-U>/<mask> via bsid <bsid>”
13.
ToDo:
• Contribute statelessGTP-U/SRv6 translation to FD.io
• Need ”T.M.tmap” and “End.M.GTP4.E” refactoring to be integrated into VPP
distribution.
• Support IPv6 over GTP-U case with “T.M.Tmap” and “End.M.GTP4.E”.
• Implement rest of the functions:
• End.M.GTP6.E/D
• End.MAP
• Encode/decode GTP-U Messages to/from SRH