最近興味を持った論文リスト

1996

The effectiveness of affinity-based scheduling in multiprocessor networking

An Evaluation of Network Stack Parallelization Strategies in Modern Operating Systemsと近い内容らしい

2000

End-System Optimizations for High-Speed TCP

Zerocopy, Offloading, RDMA, Jumbo packetなどを使ったスタックの最適化の効果を定量的に評価

2001

Alpine: A User-Level Infrastructure for Network Protocol Development

ユーザモードで動作するNetwork stackの実装と評価。
FreeBSDで実装されたが後にLinuxへ移植された。

2002

Increasing Web Server Throughput with Network Interface Data Caching

頻繁にアクセスされるコンテンツをNIC上にキャッシュする事で負荷を削減

TCP Servers: Offloading TCP Processing in Internet Servers. Design, Implementation and Performance

ネットワークプロセッシングをオフロードするアーキテクチャを実装した。
これは、SMP環境のあるCPUでも実行できるし、クラスタのあるノードでも実行できる。

Queue Pair IP: a hybrid architecture for system area networks

Socket APIEthernetをInfiniBandに似たQueue Pairで置き換え、IP/GbE・IP/Myrinetと比較、性能が高い事を確認した。
Myrinet SAN&LANai 9 programmable network interfaceで実験を実施。

Daytona - A User-Level TCP Stack

LinuxへのユーザレベルTCPスタック実装。

2003

Implementing a Clonable Network Stack in the FreeBSD Kernel

FreeBSDのネットワークスタックを多重化するパーティショニング機構「VIMAGE」の解説。

2004

Demultiplexed Architectures: A Solution for Efficient STREAMS Based Communication Stacks

STREAM Stackをdemultiplexedする事によってBSD Stackに近いMP性能を得た。

ETA: Experience with an Intel Xeon processor as a packet processing engine

Intel ResearchはETA projectにてマルチプロセッササーバのXeon processorをパケットプロセッシングエンジンとして用いるソフトウェアプロトタイプを開発した。
これはサーバにおけるTCP/IPネットワーキングをアクセラレートする為のモデルになる。
ETAプロトタイプはAMPな動作を行う、つまりパケットプロセッシングエンジンなCPUはホストOS上のリソースの上で動作しない。

2005

Architectural Characterization of Processor Affinity in Network Processing

Affinityによるネットワークプロセッシングパフォーマンスへの影響について

Direct Cache Access for High Bandwidth Network I/O

DCAの仕組みと効果について。

2006

An Evaluation of Network Stack Parallelization Strategies in Modern Operating Systems

Network stackのMP最適化方法に、Message based parallelismとConnection based parallelismの2つがあって、Connection based parallelismの方が性能を出しやすい。

Supra-linear Packet Processing Performance with Intel Multi-core Processors

パケットプロセスを行うユーザプログラムをマルチコア環境へ最適化する。

Evaluating Network Processing Efficiency with Processor Partitioning and Asynchronous I/O

Asynchronous I/O用の新しいカーネル構造・インタフェースとその性能評価。

2007

The Performance Analysis of Linux Networking – Packet Receiving

slide
Linuxカーネルのネットワークスタックに対するパフォーマンス解析

Interactivity vs. fairness in networked Linux systems

スケジューリングと通信性能に関する解析

2009

Helios: heterogeneous multiprocessing with satellite kernels

x86とARMのヘテロ環境にて、ARMで動く「サテライトカーネル」にてネットワークスタックとNICドライバを動かし、x86の「コーディネータカーネル」とリモートチャンネルで通信してデータの受け渡しを行う、と言うようなヘテロでマルチカーネルなOSを作った。
サテライトカーネルを使うことによりパケット処理をオフローディングして性能を稼ぐことが出来る事を実測値で検証した。

Characterization of Direct Cache Access on multi-core systems and 10GbE

DCAによって最後まで残っていたメモリパフォーマンスの悪さの問題が解決し10Gでも十分なパフォーマンスが得られるようになるが、マルチコアにおいてはコアへの適切な分散が行われている事が重要で、これが正しく行われていればDCAでかなりのパフォーマンス向上を得ることが出来る。
将来、40GbE, 100GbEになると更に追加の改良が必要になるが、そのような改良の一例としてユーザーモードネットワークスタックやiWARPのようなオフローディングが考えられる。

Sorting reordered packets with interrupt coalescing

リオーダが必要なパケットをソートする。

EINIC: an architecture for high bandwidth network I/O on multi-core processors

EINIC(Enhanced Integrated NIC)を提案。
共有キャッシュ(2次か3次)を分割し一部をIO用の領域として用い、パケットデータのキャッシュに使う。

A Multi-Threaded Network Interface Using Network Processors

IXP28xx Network ProcessorPCIボードとして使用し、マルチスレッド化されたネットワークインタフェースを実装した。

Improved Forwarding Architecture and Resource Management for Multi-Core Software Routers

multiqueueへ最適化する事でsoftware routerを高速化

Environmental Independence: BSD Kernel TCP/IP in Userspace

NetBSD rumpによるネットワークスタックのユーザ空間実装について

2010

On-chip FIFO cache for network I/O: A feasibility study

メインプロセッサのキャッシュに頼らず、ネットワークデータをキャッシュする分離されたFIFOキャッシュを用意し性能の向上を図る。

2011

Why Can Some Advanced Ethernet NICs Cause Packet Reordering?

何故Intel Ethernet Flow DirectorがTCPパケットの受信においてpacket reorderingを発生させてしまうのか、その原因を説明する。
Flow DirectorではRSSのハッシュテーブルの先にリンクドリストを持つことにより、各フローの情報を確実に管理し、かつフローが属するCPUを追跡出来るようにしている。
Flow DirectorではOSからアプリケーションの実行されているCPUを教える事で配達先CPUを追跡出来るのだが、Process Migrationの度にキューが変わってしまい、ここでPacket reorderが発生する余地が出来てしまう。これが著しくパフォーマンスをデグレートさせる。
プロセスをpinningするのは有効な対処法だが、もっと根本的にはNICの構造を改良する必要があると考える。

A Transport‐Friendly NIC for Multicore/Multiprocessor System

A-TFNと呼ぶ新しいNICを提案する。
これは、RSSやFlow Directorが持つaffinityの制御の不完全性を解決する。

ServerSwitch: A Programmable and High Performance Platform for Data Center Networks

汎用な部品だけを使ってL3スイッチをNIC上に実装した。

ClearStream: Prototyping 40 Gbps transparent end-to-end connectivity

40 GbEの性能評価を行った。
8コアのIntelマシンの性能に40コアのAMDマシンの性能が追いつかなかった。
これは、NUMAアーキテクチャになっていてメモリリソースの距離が均一でない事に起因する。
コアにpinningしてiperfを試すと、ある特定のコアが速くある特定のコアが遅い事が分かる。

netmap: fast and safe access to network adapters for user programs

multiqueueの各Ringをmmapしてユーザランドへ直接見せ、RAWパケットの受信能力を桁違いに引き上げる実装。
プロトコルスタックを迂回して届き、ユーザランドでそれを処理するスタックは同時に提供されていないので、既存のネットワークアプリがそのまま動く訳ではない。