この記事は Linux Advent Calendar 2021 の20日目の記事として書かれました。 はじめに AF_XDPは高速なパケット処理を行なうために作られたアドレスファミリー(AF_INETやAF_PACKETの一種)です。AF_XDPのソケットを用いて準備したユーザ・カーネル間で共有するメモリ領域とXDPを活用してデバイスドライバと直接やり取りすることで効率的なパケット処理を実現します。 AF_XDPには、XDP_SKBモードとXDP_DRVモードの2つの動作モードが用意され、XDP_DRVモードにはさらにゼロコピーモードとコピーモードが存在します。この記事ではそれらの動作モードが実際にどのように動作するのかをコードを見ながら解説します。 参照したLinuxのバージョンは5.15です。また具体例として参照するデバイスドライバはixgbeです。 AF_XDP概説 AF_XDPは
この記事は、分散アプリケーションを構成するネットワークサービス間の依存関係マップを構築するための基礎技術の改善提案をまとめたものである。第8回WebSystemArchitecture研究会での発表と同等の内容であり、そのときのスライドを以下に掲載しておく。 また、本手法のプロトタイプと評価実験のためのコードを次のGitHubリポジトリに公開している。 1. はじめに クラウドの普及により、サービス事業者は機能追加やアクセス増加への対応が容易となっている。その一方で、クラウド上に展開される分散アプリケーション内の構成要素の個数と種類が増加しているため、構成要素の依存関係が複雑化している。そのため、システム管理者が、システムを変更するときに、変更の影響範囲を特定できず、想定よりも大きな障害につながりうる。よって、システム管理者の手によらず、ネットワークサービス(ネットワーク通信するOSプロセ
皆さんはLinuxネットワークスタックの問題にあたってしまった時、あるいは単なる興味でLinuxネットワークスタックの中を調べたいと思い立った時、どのようにして調査を進めますか?カーネルのソースコードに printk を仕込んでカーネルを再コンパイルするでしょうか?もしくは最初からソースコードを読むという強い方もいらっしゃるかもしれません。どちらの方法もなかなかの茨の道です。おそらく、ほとんどの方は最終的にftrace やbpftraceなどのDynamic Tracingツールを使って、カーネルの動作を実際に動かしながら見るという方法に至ると思います。 この記事では ipftrace2 というDynamic Tracingツールの基本的な使い方をサンプルとともに紹介します。ipftrace2はネットワークスタック、特にパケット処理の部分をトレーシングをすることに特化した作りになっており、
2021年11月10日と11日の2日間、LINE株式会社が主催するエンジニア向け技術カンファレンス「LINE DEVELOPER DAY 2021」がオンラインで開催されました。そこで岡田遥来氏が、LINEで最もよく使われるミドルウェアの1つ「Kafka」クラスターのリクエスト遅延を、どのように解決したかについて紹介しました。後半は、実際どのように問題を特定して解決したかについて。前半はこちら。 TCP windowの概念について 岡田遥来氏:さて、このようにブローカーがSYN flood状態になって、一部のクライアントのhandshakeがSYN Cookiesを使ったフローにフォールバックしてしまっていたことがわかったわけですが、実はこのSYN Cookiesというのは、TCPスループットの悪化を引き起こすケースがあるということが知られています。これについて見るために、まずはTCP w
At InfinyOn we are seeing an increasing amount of traffic in Infinyon Cloud. Given our current projections we anticipate over 1 million edges to connect our platform in the next 12-18 months. One of bottlenecks is the compute resources needed to process ingress traffic. We have a couple of places in our cloud offering where we needed to intercept TCP network traffic, perform some analysis on the f
eBPFでcommit logを調べてみるといろいろと面白そうなものが出てくるな。例えば、TCP-BPF [netdev 2.2]。TCPコネクションのパラメータをBPFで操作できる。さらに最近(バージョン5.5以降)では、輻輳制御もeBPFで実装できるようになっているようだ。eBPFによりカーネルからどんどん機能を追い出してLinuxはマイクロカーネル化するのだという鼻息荒い発表も見かけるが(「eBPF - Rethinking the Linux Kernel」[QCon2020])、正直これが正しい方向性なのかよくわからない。面白いけど。 eBPFを使っているわけではないが、輻輳制御をユーザレベルで実装するという研究はいくつかある(「Restructuring Endpoint Congestion Control」 [SIGCOMM2018]、「Deploying Safe Use
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く