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

Research on Symmetric NAT Traversal in P2P applications

Ren
May 02, 2022

Research on Symmetric NAT Traversal in P2P applications

Ren

May 02, 2022
Tweet

More Decks by Ren

Other Decks in Research

Transcript

  1. P2Pアプリケーションにおける
    Symmetric NAT Traversal の研究
    Yong Wang, Zhao Lu, Junzhong Gu
    ©2006 IEEE
    内藤研究室
    K18039 B4 後藤 廉
    2021.07.14 論⽂ゼミ

    View full-size slide

  2. P2Pによるクライアント間通信
    n P2P(Peer-to-Peer)通信︓ピア間で直接送受信
    Ø ⼤量のデータを送信する様々なアプリケーションで利⽤
    ü 例︓)ファイル共有, VoIP, IM, ビデオ会議
    Ø 集中型サーバのコストを実質的に排除し帯域消費を抑制
    n P2P通信の諸問題(NAT越え問題)
    Ø NATがピア間のデータストリームをブロック
    2
    Private-NW Private-NW
    Peer
    Peer
    Peer

    View full-size slide

  3. NAT Table
    STUN Server
    GlobalIP: GS
    Port: 3478
    n STUNサーバを⽤いて変換情報を管理
    Ø 単⼀のアドレス変換を⽣成してSTUNサーバに登録
    Ø STUNサーバは通信開始者に相⼿ノードの情報を通知
    STUN(Session Traversal Utilities for NAT)
    3
    NAT
    GlobalIP: GA
    Port: GX
    Client-A
    PrivateIP: PA
    Port: PX
    Client-A
    [GA:GX]
    Sender=Client-A
    src=GA:GX
    dst=GS:3478
    UDP Packet
    Sender=Client-A
    src=PA:PX
    dst=GS:3478
    Private-NW
    Client-B
    GlobalIP: GB
    Port: GY
    Filter Transformation Info
    *:* PA:PX ↔ GA:GX

    View full-size slide

  4. STUN Server
    GlobalIP: GS
    Port: 3478
    n STUNサーバを⽤いて変換情報を管理
    Ø 単⼀のアドレス変換を⽣成してSTUNサーバに登録
    Ø STUNサーバは通信開始者に相⼿ノードの情報を通知
    NAT Table
    STUN(Session Traversal Utilities for NAT)
    3
    NAT
    GlobalIP: GA
    Port: GX
    Client-B
    GlobalIP: GB
    Port: GY
    Client-A
    PrivateIP: PA
    Port: PX
    Filter Transformation Info
    *:* PA:PX ↔ GA:GX
    Private-NW
    Query Client-A
    Client-A
    [GA:GX]
    UDP Packet
    Sender=Client-B
    src=GB:GY
    dst=GA:GX
    Sender=Client-B
    src=GB:GY
    dst=PA:PX
    Client-A
    [GA:GX]

    View full-size slide

  5. STUNの問題点
    n Symmetric NAT環境下ではトラバーサル不可能
    Ø 宛先毎にアドレス変換を⽣成
    Ø NATテーブルに記述されていない相⼿からの通信は破棄
    4
    Private-NW
    Client-B
    GlobalIP: GB
    Port: GY
    UDP Packet
    Sender=Client-A
    src=PA:PX
    dst=GS:3478
    NAT
    GlobalIP: GA
    Port: GX
    Client-A
    PrivateIP: PA
    Port: PX
    STUN Server
    GlobalIP: GS
    Port: 3478
    Client-A
    [GA:GX]
    Sender=Client-A
    src=GA:GX
    dst=GS:3478
    Sender=Client-B
    src=GB:GY
    dst=GA:GX
    NAT Table
    Filter Transformation Info
    GS:3478 PA:PX ↔ GA:GX

    View full-size slide

  6. TURN Server
    GlobalIP: GS
    Port: 3478
    n TURNサーバが両者間で通信を中継してトラバース
    Ø Symmetric NAT環境下でのデバイス間通信をサポート
    Ø 通信時は常にTURNサーバを介した送受信が必要
    NAT-B
    PrivateIP: GB
    Port: GY
    NAT-A
    PrivateIP: GA
    Port: GX
    TURN(Traversal Using Relays around NAT)
    5
    Client-A
    PrivateIP: PA
    Port: PX
    Client-B
    PrivateIP: PB
    Port: PY
    NAT Table
    ID・Password
    Authentication
    successful
    Generate "GS:GN" as relay IP
    Filter Transformation Info
    GS:3478 PA:PX ↔ GA:GX
    RelayIP=GS:GN

    View full-size slide

  7. TURN Server
    GlobalIP: GS
    Port: 3478
    n TURNサーバが両者間で通信を中継してトラバース
    Ø Symmetric NAT環境下でのデバイス間通信をサポート
    Ø 通信時は常にTURNサーバを介した送受信が必要
    NAT-B
    PrivateIP: GB
    Port: GY
    NAT-A
    PrivateIP: GA
    Port: GX
    TURN(Traversal Using Relays around NAT)
    5
    Client-A
    PrivateIP: PA
    Port: PX
    Client-B
    PrivateIP: PB
    Port: PY
    Allow communication with Client-B
    NAT Table
    Filter Transformation Info
    GS:3478 PA:PX ↔ GA:GX
    Request Permission
    about Client-B
    Allow access
    to Client-B RelayIP=GS:GN

    View full-size slide

  8. TURN Server
    GlobalIP: GS
    Port: 3478
    RelayIP=GS:GN
    n TURNサーバが両者間で通信を中継してトラバース
    Ø Symmetric NAT環境下でのデバイス間通信をサポート
    Ø 通信時は常にTURNサーバを介した送受信が必要
    NAT-B
    PrivateIP: GB
    Port: GY
    NAT-A
    PrivateIP: GA
    Port: GX
    TURN(Traversal Using Relays around NAT)
    5
    Client-A
    PrivateIP: PA
    Port: PX
    Client-B
    PrivateIP: PB
    Port: PY
    Sender=TURN Server
    src=GS:GN
    dst=GB:GY
    NAT Table
    Filter Transformation Info
    GS:3478 PA:PX ↔ GA:GX
    Sender=Client-A
    src=PA:PX
    dst=GS:3478
    XOR-PEER-ADDR=GB:GY
    UDP Packet
    経路冗⻑化問題

    View full-size slide

  9. 分散型P2Pテクノロジの課題
    6
    P2P通信は集中型サーバのコストを実質的に排除し,
    ネットワーク帯域幅の消費を抑えることが可能
    しかし, 多くのクライアントはLAN内に存在するため
    NATがデータストリームをブロック
    STUN及びTURNを⽤いたNAT Traversalには
    問題が介在し, 効果的に対処することが不可能
    これらの課題を解決する新たな NAT Traversal が必要

    View full-size slide

  10. 提案システム
    n “予測”と”⾛査”に基づくNAT Traversal
    Ø Predicting︓NATが次に使⽤するポート番号を予測
    Ø Scanning︓ポート番号を段階的に変化させてパケットを送信
    n 中央のサーバを介さずにSymmetric NATをトラバース
    Ø リレーによって発⽣していた経路冗⻑化問題を排除
    Ø 最終的にUDP Hole PunchingによりP2Pで直接通信を実現
    7
    STUNが有効でない状況においてSymmetric NATを
    トラバースしてP2Pで直接通信を実現する PS-STUN の提案
    内部から通信を⾏なった後, ⼀定期間のみ外部ネットワークからの
    通信を許可するNATの性質を利⽤して通信⽤の⽳を開ける。
    UDP Hole Punching

    View full-size slide

  11. n NATによる変換ポートの⽣成規則から分類
    n PS-STUNによるNAT Traversalが実現されるケース
    Client-A
    PrivateIP: PA
    Port: PX

    ・ N個のUDP Packet

    Symmetric NATの分類
    8
    Class NAT-A NAT-B Traversal Probability
    A P-type Symmetric IP or Port Restricted Very good
    B R-type Symmetric IP or Port Restricted Good
    C P-type Symmetric P-type Symmetric Very good
    MCU
    Global: GS
    Filter Transformation Info
    GS:P1 PA:PX ↔ GA:GX1
    GS:P2 PA:PX ↔ GA:GX2
    ・・・ ・・・
    GS:PN PA:PX ↔ GA:GXN
    Private-NW
    P(Progressive)型 Symmetric NAT︓ポート番号が連続的
    R(Random)型 Symmetric NAT︓ポート番号がランダム

    View full-size slide

  12. MCU(PS-STUN)
    クラスA・クラスBにおけるPS-STUN
    9
    Client-A
    [GA:Xʼ]
    Client-B
    [GB:Yʼ]
    GA:Xʼ
    UDP Packet UDP Packet
    Ask Client-A to send
    UDP Packet to Yʼ
    Client-A
    PrivateIP: PA
    Port: X
    Client-B
    PrivateIP: PB
    Port: Y
    GB:Yʼ

    View full-size slide

  13. UDP Packet



    Sender=Client-B
    src=GB:Yʼ
    dst=GA:Xʼ+Δpre_x
    NAT Table
    クラスA・クラスBにおけるPS-STUN
    9
    MCU(PS-STUN)
    GB:Yʼ
    Filter Transformation Info
    GB:Yʼ PA:X ↔ GA:Xʼ+Δx
    Client-A
    PrivateIP: PA
    Port: X
    Client-B
    PrivateIP: PB
    Port: Y
    NAT-A port predicted
    to be Δ𝑥 ≤ Δ𝑝𝑟𝑒_𝑥
    GA:Xʼ
    UDP Packet
    Sender=Client-A
    src=GA:Xʼ+Δx
    dst=GB:Yʼ
    Predicting
    Scanning
    Δ𝑥 ≤ Δ𝑝𝑟𝑒_𝑥

    View full-size slide

  14. クラスCにおけるPS-STUN
    10
    Client-A
    PrivateIP: PA
    Port: X
    Client-B
    PrivateIP: PB
    Port: Y
    NAT-A port predicted
    to be Δ𝑥 ≤ Δ𝑝𝑟𝑒_𝑥
    MCU(PS-STUN)
    GB:Yʼ
    GA:Xʼ
    Predicting
    NAT-B port predicted
    to be Δ𝑦 ≤ Δ𝑝𝑟𝑒_𝑦
    Predicting

    View full-size slide

  15. クラスCにおけるPS-STUN
    10
    Client-A
    PrivateIP: PA
    Port: X
    Client-B
    PrivateIP: PB
    Port: Y
    MCU(PS-STUN)
    GB:Yʼ
    GA:Xʼ
    NAT Table
    Filter Transformation Info
    GB:Yʼ+Δy PA:X ↔ GA:Xʼ+Δx
    ・・・ ・・・
    NAT Table
    Filter Transformation Info
    GA:Xʼ+Δx PB:Y ↔ GB:Yʼ+Δy
    ・・・ ・・・
    Scanning



    UDP Packet
    UDP Packet



    Δ𝑦 ≤ Δ𝑝𝑟𝑒_𝑦
    Δ𝑥 ≤ Δ𝑝𝑟𝑒_𝑥

    View full-size slide

  16. クラスCにおけるPS-STUN
    10
    Client-A
    PrivateIP: PA
    Port: X
    Client-B
    PrivateIP: PB
    Port: Y
    MCU(PS-STUN)
    GB:Yʼ
    GA:Xʼ
    NAT Table
    Filter Transformation Info
    GB:Yʼ+Δy PA:X ↔ GA:Xʼ+Δx
    ・・・ ・・・
    NAT Table
    Filter Transformation Info
    GB:Yʼ+Δy PA:X+α ↔ GA:Xʼ+Δx
    ・・・ ・・・
    Filter Transformation Info
    GA:Xʼ+Δx PB:Y ↔ GB:Yʼ+Δy
    ・・・ ・・・
    Filter Transformation Info
    GA:Xʼ+Δx PB:Y+β ↔ GB:Yʼ+Δy
    ・・・ ・・・
    UDP Packet
    Sender=Client-A
    src=GA:Xʼ+Δx
    dst=GB:Yʼ+Δy
    UDP Packet
    Sender=Client-B
    src=GY:Yʼ+Δy
    dst=GA:Xʼ+Δx
    +α +β

    View full-size slide

  17. PS-STUNの評価
    n クラスA︓P型Symmetric NAT ⇔ Restricted NAT
    11
    オフセットが15以下と⼩さく, ⽐較的簡単に
    スキャンニングが成功し, NAT Traversalを実現可能
    30
    45
    40
    0
    25
    35
    10
    15
    20
    5
    1 4 7 10 13 17 21 24 28 30 44 62 67 85 113 175
    Port offset
    Success count
    1
    1
    0.8
    0
    0.6
    0.4
    0.2
    Success rate
    1 2 3 4 5 6 7 8 9 10 11
    Δx (decreases 10 times)
    オフセットと
    スキャンニング成功回数の関係
    NAT Traversalの成功率

    View full-size slide

  18. 5
    PS-STUNの評価
    n クラスB︓R型Symmetric NAT ⇔ Restricted NAT
    12
    30
    40
    0
    25
    35
    10
    15
    20
    Success count
    1
    0.8
    0
    0.6
    0.4
    0.2
    Success rate
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    NAT-Aのマッピングポートに
    連続して割り当てられた2つの
    ポート間のオフセット分布
    NAT Traversalの成功率
    -174
    -154
    -134
    -114
    -94
    -74
    -54
    189
    166
    6
    -14
    106
    126
    -34
    26
    46
    66
    86
    146
    Port offset (decreases 10 times)
    Δx (decreases 100 times)
    ヒット率向上のためにはより多くの
    スキャンニングを実⾏することが効果的

    View full-size slide

  19. PS-STUNの評価
    n クラスC︓P型Symmetric NAT ⇔ P型Symmetric NAT
    13
    Ø すべてのポートに対して1回のみスキャンした場合
    Ø すべてのポートに対して2回スキャンした場合
    オフセット100以上で2つの Δ𝑥 を予測して
    スキャンした場合, トラバーサル成功率がほぼ100%
    送信間隔︓500ms
    送信間隔 1回⽬︓100ms
    送信間隔 2回⽬︓1000ms
    NATのワークロードがビジー状態にある時
    予測される Δ𝑥 を増⼤することで対処可能

    View full-size slide

  20. n P型Symmetric NATにおけるΔ𝑥の値の予測
    Ø Δ𝑥の最⼩値はNATの現在の最⼤作業負荷𝑊をテストして推定
    Ø 現状のMCUでは Δ𝑥 ≥ 𝑊と推定
    n クライアントにおけるスキャンパケットの送信速度
    Ø ⾼速︓UDPパケットの⼀部がルータで廃棄される可能性を有す
    Ø 低速︓𝑋! + Δ𝑥 を他のクライアントに使⽤される可能性を有す
    PS-STUNの改善
    14
    𝑊 = 𝑀𝐴𝑋 𝑋"#$ − 𝑋" / 𝑇 𝑖 > 0, 𝑖 < 𝑡𝑒𝑠𝑡 𝑡𝑖𝑚𝑒𝑠
    ︓𝑖 番⽬のパケットに対してNATにより割り当てられたポート番号
    𝑋!
    Δ𝑥 = 𝑊 + α(Δα ≥ 0︓誤差許容係数)
    ➡ テストの不正確さやNATの作業負荷のバーストを改善
    NATのワークロードを監視し, パケットの送信間隔を
    変動させるようクライアントに依頼
    ︓クライアントからMCUへのUDPパケットの送信間隔
    𝑇

    View full-size slide

  21. まとめ
    15
    STUNはSymmetric NATをトラバースすることが
    不可能であり, TURNによる転送処理は経路冗⻑化問題が介在
    Symmetric NATの特性に基き新たな
    トラバーサルソリューションを提供する PS-STUN を提案
    今後, NAT Traversal能⼒とシステム性能を
    ⼤幅に向上させることが⾒込める
    検証より, 多くの状況でクライアント間の直接接続を
    実現することが可能であると証明

    View full-size slide

  22. 以下, 参考スライド
    16

    View full-size slide

  23. NAT (Network Address Translation)
    n グローバルIPとプライベートIPを変換
    Ø NAT越え問題が介在
    Private IPv4 Global IPv4
    10.0.1.2:1444 200.1.1.1:1444
    10.0.1.3:1444 220.1.1.1:1445
    L2 Switch NAT Router
    NAT Table
    Private-NW
    PC-1
    10.0.1.2/24
    PC-2
    10.0.1.3/24
    223.40.7.10
    Internal
    Local
    200.1.1.1
    10.0.1.1
    Internal
    Global
    10.0.1.3/24
    223.40.7.10
    17

    View full-size slide

  24. KeepAlive
    UDP Hole Punching
    n UDP Hole Punchingは代表的なNAT Traversal
    Ø 内部から通信を⾏なった後, ⼀定期間のみ外部ネットワークからの
    通信を許可するNATの性質を利⽤
    Ø keep-aliveパケットを併⽤することによりコネクションを維持
    18
    NAPT
    GlobalIP: GA
    Port: GX
    Client-A
    PrivateIP: PA
    Port: PX
    Private-NW
    Client-B
    GlobalIP: GB
    Port: GY
    NAT Table
    Transformation Info destination
    PA:PX ↔ GA:GX GB:GY
    Sender=Client-A
    src=PA:PX
    dst=GB:GY
    UDP Packet
    UDP Packet
    Sender=Client-B
    src=GB:GY
    dst=GA:GB

    View full-size slide

  25. UDP Hole Punchingの問題点
    n 両デバイスがNAT配下に存在する場合トラバースは不可能
    Ø NATによって⽣成された変換情報を互いに知ることが困難
    19
    STUN (Session Traversal Utilities for NAT) の登場
    UDP Hole Punching のみで
    NAT Traversalを実現するのは⾮現実的
    両デバイスの間に変換情報を記録するサーバが必要

    View full-size slide

  26. NATの分類
    n マッピングとフィルタリングの特性より4種類に分類
    Ø マッピング特性
    ü NATテーブルに保持されるエントリの変換規則
    Ø フィルタリング特性
    ü NATの外部から内部に充てられたパケットのフィルタリング規則
    n Cone型NAT︓単⼀のエントリを作成
    Ø Full Cone NAT
    ü ⼀度も送信したことのないWAN側からのパケットも受信可能
    Ø Restricted Cone NAT
    ü ⼀度送信したことのある “IP” からのパケットであれば受信可能
    Ø Port Restricted Cone NAT
    ü ⼀度送信したことのある “IP及びPort” からのパケットであれば受信可能
    n Symmetric型NAT︓宛先毎にエントリを作成
    Ø Symmetric NAT
    ü マッピングが存在する宛先デバイスからのパケットであれば受信可能
    20

    View full-size slide

  27. NAPT
    GlobalIP: GA
    Port: GX
    Port: C2
    Full Cone NAT
    n ⼀度も送信したことのないWAN側からのパケットも受信可能
    Ø パケットは変換情報が存在すれば内部のIP/Port宛てに転送
    Ø アクセスフィルタは常に “ ∗:∗ (𝑎𝑛𝑦)” を指定
    21
    Client-A
    PrivateIP: PA
    Port: PX
    NAT Table
    Private-NW
    Filter Transformation Info
    *:* PA:PX ↔ GA:GX
    Port: B1
    Port: B2
    Private: GB
    Private: GC
    Port: C1
    Packet sent
    IP Packet

    View full-size slide

  28. NAPT
    GlobalIP: GA
    Port: GX
    Port: C2
    Restricted Cone NAT
    n ⼀度送信したことのあるIPからのパケットであれば受信可能
    Ø パケットは変換情報が存在すれば内部のIP/Port宛てに転送
    Ø アクセスフィルタは常に “𝐼𝑃:∗ (𝑃𝑜𝑟𝑡 𝑎𝑛𝑦)” を指定
    22
    Client-A
    PrivateIP: PA
    Port: PX
    NAT Table
    Private-NW
    Filter Transformation Info
    GB:* PA:PX ↔ GA:GX
    Port: B1
    Port: B2
    Private: GB
    Private: GC
    Port: C1
    Packet sent
    IP Packet

    View full-size slide

  29. NAPT
    GlobalIP: GA
    Port: GX
    Port: C2
    Port Restricted Cone NAT
    n ⼀度送信したことのあるIP及びPortからのパケットであれば受信可能
    Ø パケットは変換情報が存在すれば内部のIP/Port宛てに転送
    Ø アクセスフィルタは常に “𝐼𝑃: 𝑃𝑜𝑟𝑡” を指定
    23
    Client-A
    PrivateIP: PA
    Port: PX
    NAT Table
    Private-NW
    Filter Transformation Info
    GB:B1 PA:PX ↔ GA:GX
    Port: B1
    Port: B2
    Private: GB
    Private: GC
    Port: C1
    Packet sent
    IP Packet

    View full-size slide

  30. NAPT
    GlobalIP: GA
    Port: GX
    Port: C2
    Symmetric NAT
    n マッピングが存在する宛先デバイスからのパケットであれば受信可能
    Ø ⼀デバイスが複数の変換情報を保有
    Ø NATテーブルには複数レコード存在
    24
    Client-A
    PrivateIP: PA
    Port: PX
    NAT Table
    Private-NW
    Filter Transformation Info
    GB:B1 PA:PX ↔ GA:GX
    GC:C1 PA:PXʼ ↔ GA:GXʼ
    Port: B1
    Port: B2
    Private: GB
    Private: GC
    Port: C1
    Packet sent
    IP Packet

    View full-size slide

  31. NAPT
    GlobalIP: GA
    Port: GX
    Port: C2
    Symmetric NAT
    n マッピングが存在する宛先デバイスからのパケットであれば受信可能
    Ø ⼀デバイスが複数の変換情報を保有
    Ø NATテーブルには複数レコード存在
    25
    Client-A
    PrivateIP: PA
    Port: PX
    NAT Table
    Private-NW
    Filter Transformation Info
    GB:B1 PA:PX ↔ GA:GX
    GC:C1 PA:PXʼ ↔ GA:GXʼ
    Port: B1
    Port: B2
    Private: GB
    Private: GC
    Port: C1
    Packet sent
    IP Packet

    View full-size slide

  32. n STUN (Session Traversal Utilities for NAT)
    Ø STUNサーバを導⼊して変換情報を記録
    Ø 相⼿デバイスに通知することでNAT Traversalを実現
    n TURN (Traversal Using Relays around NAT)
    Ø TURNサーバが両者の間で通信を中継
    Ø TURNを介することでSymmetric NATに対応可能
    n ICE (Interactive Connectivity Establishment)
    Ø STUNやTURNなど複数のNAT Traversalを応⽤
    Ø デバイスが存在するNW環境に最適なNAT越えを実現
    Cone型 Symmetric型
    NAT Traversal Full Cone Rest-Cone Port-Rest-Cone Symmetric
    STUN ○ ○ ○ ×
    TURN ○ ○ ○ ○
    ICE ○ ○ ○ ○
    NATの種類とトラバーシング
    26

    View full-size slide

  33. 論⽂・参考⽂献
    [1] Research on Symmetric NAT Traversal in P2P applications
    ©2006 IEEE - Yong Wang, Zhao Lu, Junzhong Gu
    [2] RFC 5128 (UDP Hole Punching)
    https://tex2e.github.io/rfc-translater/html/rfc5128.html
    [3] RFC 8489 (STUN)
    https://tex2e.github.io/rfc-translater/html/rfc8489.html
    [4] RFC 8656 (TURN)
    https://tex2e.github.io/rfc-translater/html/rfc8656.html
    [5] RFC 8445 / RFC 8839 (ICE)
    https://tex2e.github.io/rfc-translater/html/rfc8445.html
    https://tex2e.github.io/rfc-translater/html/rfc8839.html
    27

    View full-size slide