VPP Prototyping for Stateless
SRv6/GTP-U Translation
2019.05.28
S.Matsushima, K.Ebisawa
Objectives
• Implements the key 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/
SRv6 Mobile Upane Functions
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.
End.MAP in Downlink
Internet
gNBUE
N3 N9 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
End.M.GTP6.D in Uplink
IPv6 Hdr 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.
End.M.GTP6.E in Downlink
SMF
SR GW
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.
End.M.GTP4.E in Downlink
SMF
SR GW
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.
SMF
SR GW
X
AMF
N2
N11
T.M.Tmap in Uplink
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.
SRv6 Mobile User Plane in IETF104 Hackathon
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
Hackathon Topology
Hack target
VPP1
VPP4
D4::
IPv4 over GTP/UDP/IPv4 IPv4 over SRH/IPv6
VPP2
D2::
IPv4 over IPv6 IPv4 over GTP/UDP/IPv4
T.M.Tmap End.M.GTP4.E
VPP3
D3::
scapy scapy
VPP Command Lines for 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>”
ToDo:
• Contribute stateless GTP-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
SRv6 Mobile Hackathon team
in IETF104@Prague

VPP for Stateless SRv6/GTP-U Translation

  • 1.
    VPP Prototyping forStateless SRv6/GTP-U Translation 2019.05.28 S.Matsushima, K.Ebisawa
  • 2.
    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.
  • 9.
    SRv6 Mobile UserPlane in IETF104 Hackathon
  • 10.
    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
  • 11.
    Hackathon Topology Hack target VPP1 VPP4 D4:: IPv4over GTP/UDP/IPv4 IPv4 over SRH/IPv6 VPP2 D2:: IPv4 over IPv6 IPv4 over GTP/UDP/IPv4 T.M.Tmap End.M.GTP4.E VPP3 D3:: scapy scapy
  • 12.
    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
  • 14.
    SRv6 Mobile Hackathonteam in IETF104@Prague