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

BufferbloatとLinux

 BufferbloatとLinux

最近勉強したLinuxのBufferbloat対応の動向まとめ

Yutaro Hayakawa

August 08, 2021
Tweet

More Decks by Yutaro Hayakawa

Other Decks in Technology

Transcript

  1. パケットネットワークにおけるスループットと遅延の関係 6 Send er Recei ver 10G 1G 100G In

    flight packets => ネットワークの中に あるパケット => 「放たれた」パケット 出典: Bufferbloat: Dark Buffers in the Internet
  2. パケットネットワークにおけるスループットと遅延の関係 7 Send er Recei ver 10G 1G 100G Bottleneck

    Bandwidth でスループットは頭打ち 出典: Bufferbloat: Dark Buffers in the Internet
  3. TCPとbufferbloat 11 出典: Bufferbloat: Dark Buffers in the Internet 現在主流のTCP輻輳制御はロスベース

    パケットロスを検出したら送信レートを下げる 現代インターネットのロスの多くはキュー溢れ (tail drop) ロスを検出した時点ではもうすでに激しい Bufferbloatが起きてしまっている 多分この辺でロスする
  4. 内部キューの制御 15 Byte Queue Limits (BQL) - ドライバーキューの長さを自動調整す る TCP

    Small Queues (TSQ) - TCPのソケットごとに使用できるQdisc キューの量を制限する拡張 fq, fq_codel, CAKE - TC Qdiscレイヤでlocally generated なトラフィックにAQMをする 出典: Queueing in the Linux Network Stack
  5. fq / fq_codel 16 FQ (Fair Queuing / Flow Queueing)

    CoDel (Controlled Delay AQM) FQでフローごとにキューを分離した上で CoDelでAQMして遅延を制御 ... 5tuple hash CoDel Manage Schedular Schedule Driver Queue
  6. BBR 17 Bufferbloatを念頭において作られた Delayベースの輻輳制御 RTprop (理想的なRTT) の推定 データを送信してから ACKが帰ってくるまでの RTTを一定時間

    計測した最小値 BtlBw (理想的な帯域) の推定 データ送信量と送信時刻を記録、 ACKが返ってきた際にレート を計算する これを一定時間計測して最大値を輻輳ウィンドウの計算に使う 計測したRTpropとBtlBwの積、つまり帯域遅延積をとると理想 的なinflightなデータの量がわかる 出典: Bufferbloat: Dark Buffers in the Internet RTprop BtlBw ここを探す
  7. PacingとEarliest Departure Time 18 ウィンドウは「どれくらい」送るかの指標「どれくら いのペースで」送るかは特に標準で規定されてい ない (How much vs

    How fast) Pacing 主にTCのレイヤでBpsでパケットの送信間隔を 調節する Earliest Departure Time TCPがパケットごとに出発時間を明示してそれを 元にTCレイヤでスケジューリング
  8. 出典 + 歴史のまとめ 19 Bufferbloat: Dark Buffers in the Internet

    (2011) bql: Byte Queue Limits (2011) tcp: TCP Small Queues (2012) fq_codel (2012) tcp: TSO packets automatic sizing (2013) fq packet schedular / SO_MAX_PACING_RATE (2013) Bottleneck Bandwidth and Roundtrip propagation time (2016) TCP internal pacing (2017) Earliest Departure Time (2018) Scheduled packet Transmission: ETF (2018) CAKE (2018) Linuxのキューイングに関する素晴らしいまとめ Queueing in the Linux Network Stack Bufferbloatに関する技術や動向をまとめたサイト https://www.bufferbloat.net/projects/ CoDelのRFC https://datatracker.ietf.org/doc/html/rfc8289 fq_codelのRFC https://datatracker.ietf.org/doc/html/rfc8290 主にTCP周りの活動のまとめ https://legacy.netdevconf.info/1.2/papers/bbr-netdev-1.2.new.ne w.pdf