Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BBSakura Networksでの SRv6 Mobile User Plane(MUP)...

BBSakura Networksでの SRv6 Mobile User Plane(MUP) 関連の取り組みまとめ / Development status of SRv6 MUP at BBSakura Networks

2023/02/16に開催された、BBSakura公開社内勉強会 Vol. 1の発表資料です。

https://bbsakura.connpass.com/event/274051/

BBSakura Networks, Inc

February 20, 2023
Tweet

More Decks by BBSakura Networks, Inc

Other Decks in Technology

Transcript

  1. 発表者自己紹介 • Kusakabe Yuya(@higebu) • 小樽市在住(移住7年目) • 社会人14年目。。。(36歳) • 7,

    4, 1歳児の父 • 2017年からモバイルコア開発 • SRv6 MUPでは主にC-planeを担当 • 普段はテックリード兼モバイルコア開 発運用チームのリーダー • 本日は自宅から発表 • Hayasaka Takeru(@takemioIO) • 仙台市出身, 京都市在住 • 社会人2年目(24歳) • 前職はゲーム会社、日下部に誘われて 仕事の中身がSwitchからSwitchにSwitch することになりネットワークに関する開発へ • SRv6 MUPでは主にD-planeとAgentを担当 • 普段はモバイルコアの実装&設計を担当 ◦ @higebu の手下をやっている • 今日は西新宿のオフィスから発表
  2. なぜ SRv6 MUP をやってるのか • 自社開発のモバイルコアを使ったサービスを運用した経験から SRv6 MUP と いう技術に対して将来性を感じているから

    • 親の親会社であるソフトバンク株式会社のプレスリリースにもコメント させていただいています ◦ MECやネットワークスライシングを低コストかつ容易に実現する「SRv6 MUP」の開発に成 功 | 企業・IR | ソフトバンク
  3. SRv6 Mobile User Plane(MUP)概要 • モバイルネットワークのUser PlaneをSRv6で置き換える技術 • IETFで標準化中 ◦

    draft-mhkk-dmm-srv6mup-architecture-04 ▪ 全体的なアーキテクチャについて ◦ draft-ietf-dmm-srv6-mobile-uplane-24 ▪ パケットフロー、SRv6 Behaviorについて ◦ draft-mpmz-bess-mup-safi-01 ▪ BGP-MUP SAFIについて ◦ draft-murakami-dmm-user-plane-message-encoding-05 ▪ U-planeでのGTP-U Message-SRv6変換について
  4. 3GPP 5G Architecture UE gNB SMF AMF UPF DN UPF

    N3 N9 N6 N4 N11 N1 N2 • SMF がセッション毎の GTPv1-U トンネルの管理を N4 で行う • N3、N9 のところにセッション毎の GTPv1-U トンネルが生成される • 実際の環境では全ての Function が複数ある • MEC のような用途では DN も複数あり、標準仕様では UPF でバケツリレー。。。 UE: User Equipment gNB: gNodeB, next generation Node B AMF: Access and Mobility Management Function SMF: Session Management Function UPF: User Plane Function DN: Data Network
  5. SRv6 MUP Architecture UE gNB SMF AMF MUP-PE DN MUP-GW

    N3 N6 N11 N1 N2 • 5.3. Enhanced mode with unchanged gNB GTP-U behavior のときの構成 • N3 は GTPv1-U のまま、N9 が SRv6 になる • 4種類の経路情報を使う(ISD, DSD, ST1, ST2) MUP-C: MUP Controller MUP-GW: MUP Gateway MUP-PE: MUP Provider Edge MUP-C BGP Type 1 ST Route Type 2 ST Route Interwork Segment Discovery Route Direct Segment Discovery Route N9 未定義の Northbound API
  6. Uplink Packet Flow MUP-GWの挙動 • DSD(Prefix-SID)と ST2(TEID) を元に TEID 毎の

    SID を生成しておく ◦ ※DSD と ST2 に含まれる Direct Segment ID で紐付けができる ◦ UPF アドレスの Prefix と TEID を SR Policy と紐付けておく • gNB から UPF アドレス宛ての GTPv1-U のパケットが来たら H.M.GTP4.D or End.M.GTP6.D (N3 のアドレスによる) を行う ◦ TEID をキーに SID を参照(SID Bとする) ◦ IPv4 or IPv6, UDP, GTPv1-U ヘッダの decap ◦ GTPv1-U ヘッダに含まれる TEID、QFI を SID B にコピー(Args.Mob.Session) ◦ IPv6 DA、SRH を作り、パケットを転送(IPv6 DA または SID[0] が SID B になる) MUP-PEの挙動(End.DT4/6) • IPv6 ヘッダを decap して転送 H.M.GTP4.D End.M.GTP6.D End.DT4/6 DN MUP-PE MUP-GW gNB N3 N6
  7. Downlink Packet Flow DN MUP-PE MUP-GW gNB N3 N6 End.M.GTP4/6.E

    H.Encaps MUP-PE の挙動 • ISD(Prefix-SID)と ST1(TEID/QFI/gNB Address)を元に UE アドレス毎の SID を生成しておく ◦ ※ISD の Prefix に ST1 の gNB Address が含まれるかどうかで紐付けができる • DN から UE アドレス宛のパケットが来たら、UE アドレスをキーに SR Policy を参照し、 SRv6 で Encap MUP-GW の挙動 • SID で指定されている End.M.GTP4.E or End.M.GTP6.E を実行 • End.M.GTP4.E: IPv6 ヘッダを decap、 IPv6 DA に含まれる IPv4 SA、DA と TEID を元に生成した IP、UDP、 GTPv1-U ヘッダで encap して転送 • End.M.GTP6.E: IPv6 DA に含まれる TEID を元に生成した GTPv1-U ヘッダで encap、 SID[0]( gNB アドレス)を宛 先アドレスにして転送
  8. SRv6 MUPの既存実装 • 製品 ◦ Arrcus Networks: Arrcus enables SoftBank

    Corp. to demonstrate automated 5G Network Slicing by Using SRv6 MUP with SRv6 Flex-Algo ◦ 古河ネットワークソリューション: SRv6 MUP を作った話(公開版) • OSS ◦ VPP SRv6 Mobile Plugin: VPP(DPDK)によるU-plane実装(ドラフトの著者が開発) ◦ ebiken/p4srv6: P4によるU-plane実装 ◦ takehaya/Vinbero: XDPによるU-plane実装(発表者の早坂が学生時代に開発)
  9. MUP-GW/PEを作るには? • C/Dのインテグレートをどんな技術でどうやって作るかを考える • OSSのDplaneではVPPを採用 ◦ VPPは機能が豊富で(論文上では)性能が良さそうなのが嬉しい(cf. XDP元論文 ◦ Draftの提案者が自ら書いてて神なのでそれを良くしたい

    • OSSのCplaneはGoBGPを採用 ◦ 普段の開発でGoは大変慣れ親しんでいるので開発してもメンテしても 我々のスキルセットとして面倒が見れそう ◦ GoBGPのメンテナンスが大変しっかりしてて、コードベースが綺麗である点に好感がある • VPPにはGoVPPというAPIを自動生成する機能があり、それを経由すれば Goを利用した開発が綺麗にできる。GoBGPで経路を入れれば... • しかしGW/PEの動作を実現するためには後述する取り組みが必要でした...
  10. VPPで取り組んでいる機能 • そもそもSRv6 MUP Uplane Pluginに対してのAPIの口がなかった ◦ 37628: srv6-mobile: Implement

    SRv6 mobile API funcs (レビュー中) ◦ 詳細: VPPにSRv6 MUP Plugin APIを追加している話 • PEのDLの際に複数のSrcアドレスを適用したい ◦ つまりN3の口になってるGWが複数ある場合を想定しており、これによりDLが実装可能に。 ◦ 37863: sr: support define src ipv6 per encap policy (マージ済み) • GWのULでLookupの際にTEIDを見る機能がない ◦ 現在鋭意実装中。。。(この発表までにパッチにしたかった😇) ◦ これによりULが実装可能になる • 主に発表者の@takemioIOが実装しています
  11. GoBGPで取り組んでる機能 • 実装済みの機能 ◦ Initial support for BGP-MUP SAFI and

    Extended Community #2567 ◦ Fixes for BGP-MUP SAFI and support Prefix SID attribute in Interwork/Direct Segment Discovery route #2583 ◦ その他 nitsなfixや改善...etc(合計 11個のPRが取り込まれている) • 今後追加したい機能 ◦ VRFにSegment情報を設定したら広報できる機能 • 詳細: GoBGPにBGP Extensions for the Mobile User Plane (MUP) SAFIを 実装した話 | BBSakura Networks Blog • 主に発表者の@higebuが実装しています
  12. IETF116 Hackathon • “The BGP software would run as a

    MUP-Controller and/or a MUP-PE.” • MUP-CとMUP-PEを作って持って行きたい!
  13. まとめ • SRv6 MUPを動かすためにOSSに対してコントリビュートしてる • Dplane/Cplaneを合わせてMUP-GW/PEにするAgentを実装している • MUP-CとMUP-PEをIETF116で動作検証したい!そして自慢したい! • We

    are hiring中です!(最後の発表なので宣伝) ◦ この発表にワクワクできて、ドラフトやRFC,3GPP等を読み解くのが好きで、Go,C,Python などを流暢に読み書きできて、LinuxやSRv6,BGPに詳しく、高速パケット処理系 や可用性の高いネットワークとコントローラーの実装ができるよ!って方をお待ちしてます! • IETF 116でお会いしましょう!:) ◦ ちなみに初日(3/25)は@higebuが誕生日 らしいので会ったら祝ってあげてください👏
  14. BGP-MUP SAFI • I-D.draft-mpmz-bess-mup-safi • セッション情報をBGPの経路として配る仕組み • BGP-MUP NLRI ◦

    Architecture Type ▪ 1: 3gpp-5g ◦ Route Type ▪ 1: Interwork Segment Discovery route ▪ 2: Direct Segment Discovery route ▪ 3: Type 1 Stream Transformed (ST) route ▪ 4: Type 2 Stream Transformed (ST) route • BGP MUP Extended Community +-----------------------------------+ | Architecture Type (1 octet) | +-----------------------------------+ | Route Type (2 octets) | +-----------------------------------+ | Length (1 octet) | +-----------------------------------+ | Route Type specific (variable) | +-----------------------------------+
  15. BGP MUP Extended Community • IANA: BGP Transitive Extended Community

    Types ◦ 0x0c SRv6 MUP Extended Community • Sub-Type ◦ 0x00 Direct-Type Segment Identifier type • Value ◦ 6 bytes Direct Segment Identifier • Direct Segment Discovery routeとType 2 ST routeで使う 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0x0c | 0x00 | Direct Segment Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Direct Segment Identifier (cont.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  16. BGP-MUP SAFI Route Types 1. Interwork Segment Discovery route (ISD)

    ◦ Interwork Segmentを収容するPE(VRF)で生成される ◦ 3GPP 5GではN3 RANインターフェース 2. Direct Segment Discovery route (DSD) ◦ Direct Segmentを収容するPE(VRF)で生成される ◦ 3GPP 5GではN6 DNインターフェース 3. Type 1 Session Transformed route (ST1) ◦ MUP-Cが生成する ◦ 3GPP 5GではUEアドレス、TEID、QFIなどUplink方向のSIDを生成するための情報を含む 4. Type 2 Session Transformed route (ST2) ◦ MUP-Cが生成する ◦ 3GPP 5GではgNBのN3アドレス、TEIDなどDownlink方向のSIDを生成するための情報を含む
  17. 1. Interwork Segment Discovery route • RD • Prefix Length

    ◦ AFI_IP: 最大32 ◦ AFI_IP6: 最大128 • Prefix ◦ gNodeBのN3アドレス(IPv4 or IPv6) • Route Target Extended Community(MUST) • Next hop(MUST) ◦ PEのIPv6アドレス • Prefix-SID Attribute(MUST) ◦ Locator ▪ PE ◦ Function ▪ AFI_IP: End.M.GTP4.E ▪ AFI_IP6: End.M.GTP6.E +-----------------------------------+ | RD (8 octets) | +-----------------------------------+ | Prefix Length (1 octet) | +-----------------------------------+ | Prefix (variable) | +-----------------------------------+
  18. 2. Direct Segment Discovery route • RD • Address ◦

    Unique PE identifier • Route Target Extended Community(MUST) • MUP Extended community(MUST) ◦ Direct Segment Identifier • Next hop(MUST) ◦ PEのIPv6アドレス • Prefix-SID Attribute(MUST) ◦ Locator ▪ PE ◦ Function ▪ End.DT4/6, End.DX4/6 or End.M.GTP4/6.E +-----------------------------------+ | RD (8 octets) | +-----------------------------------+ | Address (4 or 16 octets) | +-----------------------------------+
  19. 3. Type 1 Session Transformed (ST) route • RD •

    Prefix Length ◦ AFI_IP: 最大32 ◦ AFI_IP6: 最大128 • Prefix ◦ UEアドレス • TEID ◦ gNodeB側のTEID • QFI • Endpoint Address Length ◦ IPv4: 32 ◦ IPv6: 128 • Endpoint Address ◦ gNodeBのN3アドレス • Route Target Extended Community(SHOULD) • Next hop(MUST) ◦ MUP-Cのアドレス +-----------------------------------+ | RD (8 octets) | +-----------------------------------+ | Prefix Length (1 octet) | +-----------------------------------+ | Prefix (variable) | +-----------------------------------+ | Architecture specific (variable) | +-----------------------------------+ 3gpp-5g Specific BGP Type 1 ST Route +-----------------------------------+ | TEID (4 octets) | +-----------------------------------+ | QFI (1 octet) | +-----------------------------------+ | Endpoint Address Length (1 octet) | +-----------------------------------+ | Endpoint Address (variable) | +-----------------------------------+
  20. 4. Type 2 Session Transformed (ST) route • RD •

    Endpoint Length • Endpoint Address ◦ UPFのN3アドレス • TEID ◦ コア側のTEID • Route Target Extended Community(MUST) • MUP Extended community(MUST) ◦ Direct Segment Identifier • Next hop(MUST) ◦ MUP-Cのアドレス +-----------------------------------+ | RD (8 octets) | +-----------------------------------+ | Endpoint Length (1 octet) | +-----------------------------------+ | Endpoint Address (variable) | +-----------------------------------+ | Architecture specific Endpoint | | Identifier (variable) | +-----------------------------------+ 3gpp-5g Specific BGP Type 2 ST Route +-----------------------------------+ | TEID (0-4 octets) | +-----------------------------------+