解決策 1:
ASIC。
汎用 CPU とタスク固有のソフトウェアを使用する代わりに、ソフトウェアをスキップして、シリコンにタスクを直接処理させることができます。
高性能ネットワーキング ハードウェアは、IP アドレスを巨大なインターネット ルーティング テーブルと比較する、CAM テーブルでスイッチングの決定をチェックする、ACL と照合してパケットをチェックするなど、計算量の多い (しかし論理的には比較的単純な) タスクにソフトウェアの代わりに ASIC を使用します。 .これにより、時間に敏感な操作の速度に大きな違いが生じ、汎用 CPU よりも大きな利点が得られます。
解決策 2:
ハイエンドの専用ルーターは、ハードウェアでより多くのルーティングを実行できるため、より高速な CPU とより多くの RAM を搭載した PC よりも優れたパフォーマンスを発揮します。
これは、60 ドルのギガビット イーサネット スイッチが、イーサネット スイッチとして機能する 4 つの 2 ポート GigE カードを搭載した 2,000 ドルの PC よりも優れている理由と同じです。スイッチは、スイッチになるようにゼロから構築されています。
解決策 3:
「IOS以外」?
IOS はほとんどすべての違いを生みます。 CentOS は汎用のオペレーティング システムです。多種多様なハードウェア構成を使用して、非常に幅広いシナリオで十分に機能するように設計されています。一方、IOS は、Cisco 機器に見られる非常に特殊なタイプのハードウェアを使用して、ネットワーク機器に期待される種類のワークロードのみを処理するように非常に微調整されています。
正確を知る プログラミングしているハードウェアの部品によって、パフォーマンスと互換性の面で非常に長い道のりが必要になります。
解決策 4:
ソフトウェアとハードウェアの両方に言いたいことがあります。 Intel と TP-Link NIC (心臓部に Realtek チップを使用) を汎用サーバー ハードウェアで比較し、ルーティングで専用ソフトウェアと汎用ソフトウェアを比較しました。
ハードウェア側では、オンボードの ASIC が IP トラフィックを処理できる場合、プロセッサの負荷が低くなり、高速になります。 2 つのオンボード INtel NIC チップが DMA によって直接通信し、メイン CPU をバイパスしてパケット転送を処理していることに気付きました。一方、Realtek チップは、パケットが到着するたびに中断します。
ソフトウェア側では、ソフトウェアがルーティングで使用されるように設計されている場合、より効率的にすることができます。私は pfSense+PF (ルーターとして使用することを目的とした変更された FreeBSD) と汎用目的の Ubuntu 12.04+iptables の両方をルーティング ソフトウェアとして使用しましたが、最初のものは明らかにトラフィックをはるかに高速に切り替えます。 (Linux 3.13 カーネルの新しい nftables のおかげで、Ubuntu 14.04 はほぼ同じ速度になりました。)
ただし、専用ルーターには大きな欠点が 1 つあります。それは、トラフィックのスイッチング以外の多くのことを実行できず、仮想化できないことです。現在のエッジ ルーターは、Ubuntu 14.04 を実行する ESXi クラスター内の仮想マシンであり、侵入検知システムおよびロード バランサーとしても機能します。
解決策 5:
私の知る限り、これは汎用オペレーティング システムのオーバーヘッドです。接続の速度に関係なく、パケットはカーネルのコンテキスト内でパケットごとに処理されるため、システムの遅延と負担が増加します。他の回答ですでに説明されていると思います.
そうは言っても、人気と実現可能性が高まっている有望な新しい「っぽい」テクノロジーがあり、これやその他の点でLinuxシステムからより手ごわい競争相手を生み出す可能性があります。つまり、InfiniBand
StackOverflow に関する次の Q&A をご覧ください:TCP カーネル バイパスの実装方法
さらに読む:
- CCGrid '11 でのチュートリアル:誰でもわかる Infiniband と 10 ギガビット イーサネット
- LinuxJournal 記事の InfiniBand と Linux
- Linux から InfiniBand へのアクセス - Intel DeveloperZone
- InfiniBand オープンソース プロジェクト