From: Yuya Kusakabe <yuya.kusakabe@gmail.com>
To: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Andrea Mayer <andrea.mayer@uniroma2.it>,
Shuah Khan <shuah@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org,
Yuya Kusakabe <yuya.kusakabe@gmail.com>
Subject: [PATCH 0/7] seg6: add SRv6 Mobile User Plane (RFC 9433) behaviors
Date: Mon, 04 May 2026 01:25:53 +0900 [thread overview]
Message-ID: <20260504-srv6-mup-v1-v1-0-e0a6791575cb@gmail.com> (raw)
This series adds the in-kernel data path for the SRv6 Mobile User
Plane (MUP) architecture defined in RFC 9433. SRv6 MUP integrates
GTP-U mobile traffic into an SRv6 transport domain by mapping the
5-tuple (TEID, QFI, R, U, PDU Session ID) into a single SID, allowing
operators to replace the GTP-U overlay between the gNB and the
upstream UPF with native SRv6 forwarding while keeping the radio side
unchanged.
The series implements the six MUP behaviors that an SRv6 MUP gateway
typically needs:
End.MAP (RFC 9433 Section 6.2) -- swap DA with the next SID
without consuming the SRH
End.M.GTP6.D (Section 6.3) -- IPv6/GTP-U to SRv6 headend encap
End.M.GTP6.D.Di (Section 6.4) -- drop-in mode variant of the above
(preserves the original outer DA at
SRH[0] and discards TEID/QFI)
End.M.GTP6.E (Section 6.5) -- SRv6 to IPv6/GTP-U egress encap
End.M.GTP4.E (Section 6.6) -- SRv6 to IPv4/GTP-U egress encap
H.M.GTP4.D (Section 6.7) -- IPv4/GTP-U to SRv6 headend encap
End.Limit (RFC 9433 Section 6.8) is intentionally out of scope.
All behaviors plug into the existing seg6_local lwtunnel framework, so
they are configurable through the standard "ip route ... encap
seg6local action ..." interface. No new netlink families are
introduced -- the new SEG6_LOCAL_MOBILE_* attributes extend
SEG6_LOCAL_MAX in an add-only way, and the new SEG6_LOCAL_ACTION_*
values are appended.
The egress behaviors (End.M.GTP4.E and End.M.GTP6.E) accept an
optional per-route pdu_type attribute that is the sole control
for inserting the GTP-U PDU Session Container (3GPP TS 38.415 Section
5.5.2). When pdu_type is set (dl/ul/0..15), every emitted GTP-U
packet carries the container with that PDU Type and the QFI extracted
from Args.Mob.Session. When pdu_type is unset, the egress emits
a short GTPv1-U header with no container. pdu_type must be
configured on egress routes serving 5G N3 traffic; omitting it is
intended only for LTE-only / S1-U-style deployments where no PDU
Session Container is exchanged.
The matching iproute2 patch series has been posted to iproute2-next:
https://lore.kernel.org/netdev/20260503154510.912576-1-yuya.kusakabe@gmail.com/
Link: https://www.rfc-editor.org/rfc/rfc9433
Signed-off-by: Yuya Kusakabe <yuya.kusakabe@gmail.com>
---
Yuya Kusakabe (7):
seg6: add End.MAP behavior
seg6: add End.M.GTP4.E behavior
seg6: add End.M.GTP6.E behavior
seg6: add End.M.GTP6.D behavior
seg6: add End.M.GTP6.D.Di behavior
seg6: add H.M.GTP4.D behavior
Documentation: networking: add seg6_mobile guide
Documentation/networking/index.rst | 1 +
Documentation/networking/seg6_mobile.rst | 236 ++
include/net/dropreason-core.h | 47 +
include/uapi/linux/seg6_local.h | 17 +
net/ipv6/seg6_local.c | 2667 ++++++++++++++++++--
tools/testing/selftests/net/Makefile | 6 +
.../selftests/net/srv6_end_m_gtp4_e_test.sh | 485 ++++
.../selftests/net/srv6_end_m_gtp6_d_di_test.sh | 426 ++++
.../selftests/net/srv6_end_m_gtp6_d_test.sh | 496 ++++
.../selftests/net/srv6_end_m_gtp6_e_test.sh | 401 +++
tools/testing/selftests/net/srv6_end_map_test.sh | 102 +
.../testing/selftests/net/srv6_h_m_gtp4_d_test.sh | 486 ++++
12 files changed, 5163 insertions(+), 207 deletions(-)
---
base-commit: 98878ed91b68a3150126fccef125ee7b1bb86ab2
change-id: 20260504-srv6-mup-v1-6a3d5995e74e
Best regards,
--
Yuya Kusakabe <yuya.kusakabe@gmail.com>
next reply other threads:[~2026-05-03 16:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-03 16:25 Yuya Kusakabe [this message]
2026-05-03 16:25 ` [PATCH 1/7] seg6: add End.MAP behavior Yuya Kusakabe
2026-05-03 16:25 ` [PATCH 2/7] seg6: add End.M.GTP4.E behavior Yuya Kusakabe
2026-05-03 16:25 ` [PATCH 3/7] seg6: add End.M.GTP6.E behavior Yuya Kusakabe
2026-05-03 16:25 ` [PATCH 4/7] seg6: add End.M.GTP6.D behavior Yuya Kusakabe
2026-05-03 16:25 ` [PATCH 5/7] seg6: add End.M.GTP6.D.Di behavior Yuya Kusakabe
2026-05-03 16:25 ` [PATCH 6/7] seg6: add H.M.GTP4.D behavior Yuya Kusakabe
2026-05-03 16:26 ` [PATCH 7/7] Documentation: networking: add seg6_mobile guide Yuya Kusakabe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260504-srv6-mup-v1-v1-0-e0a6791575cb@gmail.com \
--to=yuya.kusakabe@gmail.com \
--cc=andrea.mayer@uniroma2.it \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox