Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BufferbloatとLinux
Search
Yutaro Hayakawa
August 08, 2021
Technology
6
2.1k
BufferbloatとLinux
最近勉強したLinuxのBufferbloat対応の動向まとめ
Yutaro Hayakawa
August 08, 2021
Tweet
Share
More Decks by Yutaro Hayakawa
See All by Yutaro Hayakawa
Ciliumはどうテストされているのか
yutarohayakawa
1
260
How is Cilium Tested?
yutarohayakawa
6
590
eBPFのこれまでとこれから
yutarohayakawa
31
7.9k
NetKit Device
yutarohayakawa
6
1.7k
eBPFは何が嬉しいのか?
yutarohayakawa
3
2.1k
Prism: Proxies without the Pain
yutarohayakawa
0
290
ipftrace: A Linux Function Tracer for Network People
yutarohayakawa
4
6k
きっと明日から役立つeBPFのしくみ
yutarohayakawa
10
4.7k
eBPFをFreeBSDにポーティングしようとしている話
yutarohayakawa
4
3.3k
Other Decks in Technology
See All in Technology
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
210
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
190
Kiroで見直す開発プロセスとAI-DLC
k_adachi_01
0
110
"作る"から"使われる"へ:Backstage 活用の現在地
sbtechnight
0
240
Phase07_実務適用
overflowinc
0
1.3k
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
210
AIエージェント×GitHubで実現するQAナレッジの資産化と業務活用 / QA Knowledge as Assets with AI Agents & GitHub
tknw_hitsuji
0
160
TypeScript 7.0の現在地と備え方
uhyo
7
2k
SLI/SLO 導入で 避けるべきこと3選
yagikota
0
140
テストプロセスにおけるAI活用 :人間とAIの共存
hacomono
PRO
0
140
Escape from Excel方眼紙 ~マークダウンで繋ぐ、人とAIの架け橋~ /nikkei-tech-talk44
nikkei_engineer_recruiting
0
170
1GB RAMのラズピッピで何ができるのか試してみよう / 20260319-rpijam-1gb-rpi-whats-possible
akkiesoft
0
770
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Odyssey Design
rkendrick25
PRO
2
550
The untapped power of vector embeddings
frankvandijk
2
1.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
How to build a perfect <img>
jonoalderson
1
5.3k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
92
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
200
Done Done
chrislema
186
16k
How to make the Groovebox
asonas
2
2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
130
Transcript
BufferbloatとLinux Yutaro Hayakawa 1
Agenda LinuxカーネルのBufferbloat対策を概観する 1. Bufferbloatとは何か 2. Approach 1: Queuing (BQL, TCQ,
AQM, FQ) 3. Approach 2: BBR Congestion Control 2
Bufferbloatとは? ネットワーク装置がパケットをバッファリングしすぎることで起こる望まぬ遅延 * 現代インターネットには大きなバッファを備えた装置がそこかしこにあり過度にバッファリングをしている なぜバッファリングが必要か? 3 10G 1G 帯域の差を埋める 10G
10G 処理遅延を吸収する Forwarding待ちのキュー 処理待ちのキュー *https://www.bufferbloat.net/projects/
パケットネットワークにおけるスループットと遅延の関係 4 Send er Recei ver 10G 1G 100G 出典:
Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 5 Send er Recei ver 10G 1G 100G Bottleneck
Link 出典: Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 6 Send er Recei ver 10G 1G 100G In
flight packets => ネットワークの中に あるパケット => 「放たれた」パケット 出典: Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 7 Send er Recei ver 10G 1G 100G Bottleneck
Bandwidth でスループットは頭打ち 出典: Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 8 Send er Recei ver 10G 1G 100G キューイングによる遅延
出典: Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 9 Send er Recei ver 10G 1G 100G Bufferbloatが起きている状態
出典: Bufferbloat: Dark Buffers in the Internet
パケットネットワークにおけるスループットと遅延の関係 10 Send er Recei ver 10G 1G 100G ちょうどいいライン
出典: Bufferbloat: Dark Buffers in the Internet
TCPとbufferbloat 11 出典: Bufferbloat: Dark Buffers in the Internet 現在主流のTCP輻輳制御はロスベース
パケットロスを検出したら送信レートを下げる 現代インターネットのロスの多くはキュー溢れ (tail drop) ロスを検出した時点ではもうすでに激しい Bufferbloatが起きてしまっている 多分この辺でロスする
Active Queue Management (AQM) 12 ネットワーク装置がバッファの残量にかかわらず能動的にパケットを落とす キューを必要以上に長くしないことで遅延を減らす ロスベースの輻輳制御にパケロスを通じてレートを下げるよう促す パケットを落とさずにECNを使う場合もある 有名なもの
- Random Early Detection (RED) (1993) - Controlled Delay (CoDel) (2017) - Common Application Kept Enhanced (CAKE) (2018)
Delay Based Congestion Control 13 パケットロスではなく遅延で輻輳を検出する輻輳制御アルゴリズム データを送信してからACKが返ってくるまでの時間をRTTとして管理する Bufferbloatによる遅延の増大にちゃんと反応できることが期待できる ロスベースの輻輳制御に追い出されやすいという弱点がある 有名なもの
- Vegas (1994) - Bottleneck Bandwidth and Round trip propagation time (BBR) (2016)
LinuxにおけるBufferbloatへの対応 14 LinuxがBufferbloatの対応をすることには大きな意味がある サーバ、クライアント、ホームルータなどのベースになっているシェアの高い OSなため 輻輳制御のような全体で対応が必要なものの利用をユーザに促す効果 おもな対応 内部キューの制御 - BQL,
TSQ - AQM (fq_codel, CAKE) 輻輳制御 (BBR) トラフィックShaping / Pacing (fq, EDT, ETF)
内部キューの制御 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
fq / fq_codel 16 FQ (Fair Queuing / Flow Queueing)
CoDel (Controlled Delay AQM) FQでフローごとにキューを分離した上で CoDelでAQMして遅延を制御 ... 5tuple hash CoDel Manage Schedular Schedule Driver Queue
BBR 17 Bufferbloatを念頭において作られた Delayベースの輻輳制御 RTprop (理想的なRTT) の推定 データを送信してから ACKが帰ってくるまでの RTTを一定時間
計測した最小値 BtlBw (理想的な帯域) の推定 データ送信量と送信時刻を記録、 ACKが返ってきた際にレート を計算する これを一定時間計測して最大値を輻輳ウィンドウの計算に使う 計測したRTpropとBtlBwの積、つまり帯域遅延積をとると理想 的なinflightなデータの量がわかる 出典: Bufferbloat: Dark Buffers in the Internet RTprop BtlBw ここを探す
PacingとEarliest Departure Time 18 ウィンドウは「どれくらい」送るかの指標「どれくら いのペースで」送るかは特に標準で規定されてい ない (How much vs
How fast) Pacing 主にTCのレイヤでBpsでパケットの送信間隔を 調節する Earliest Departure Time TCPがパケットごとに出発時間を明示してそれを 元にTCレイヤでスケジューリング
出典 + 歴史のまとめ 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
End of Slide 20