1990年代のイーサネットネットワークインターフェースカードで、現在では廃止されたISAバスを介してマザーボードに接続します。この複合カードには、 (現在では廃止された) 10BASE2ネットワークで使用するためのBNCコネクタ(左)と、10BASE-Tネットワークで使用するための8P8Cコネクタ(右)の両方が備わっています。 | |
| 接続先 | マザーボードは 以下のいずれかを介して接続されます 。 以下のいずれかの方法でネットワークに接続してください 。 |
|---|---|
| 速度 | |
| 一般的なメーカー | |
ネットワークインターフェイスコントローラ(NIC、ネットワークインターフェイスカード[ 3 ]、ネットワークアダプタ、LANアダプタ、物理ネットワークインターフェイス[ 4 ]とも呼ばれる)は、コンピュータをコンピュータネットワークに接続するコンピュータハードウェアコンポーネントです。[ 5 ]
初期のネットワークインターフェースコントローラは、コンピュータバスに接続する拡張カードに実装されることが一般的でした。イーサネット規格の低コスト化と普及により、最近のコンピュータのほとんどは、マザーボードにネットワークインターフェースコントローラが内蔵されているか、USB接続のドングルに搭載されていますが、ネットワークカードも依然として利用可能です。
最新のネットワークインターフェースコントローラは、ホストプロセッサへの割り込みおよびDMAインターフェース、複数の受信および送信キューのサポート、複数の論理インターフェースへの分割、 TCPオフロードエンジンなどのコントローラ上でのネットワークトラフィック処理といった高度な機能を提供します。
ネットワークコントローラは、イーサネットやWi-Fiなどの特定の物理層およびデータリンク層規格を使用して通信するために必要な電子回路を実装します。[ a ]これにより、完全なネットワークプロトコルスタックの基盤が提供され、同じローカルエリアネットワーク(LAN)上のコンピュータ間の通信や、インターネットプロトコル(IP)などのルーティング可能なプロトコルを介した大規模ネットワーク通信が可能になります。
NIC(ネットワークインターフェースカード)は、コンピュータが有線または無線でコンピュータネットワークを介して通信することを可能にします。NICは、ネットワーク媒体への物理的なアクセスを提供するだけでなく、IEEE 802などのネットワークにおいては、ネットワークインターフェースに一意に割り当てられるMACアドレスを使用して低レベルのアドレス指定システムを提供するため、物理層とデータリンク層の両方の機能を持つデバイスです。


ネットワークコントローラは、当初はコンピュータバスに接続する拡張カードとして実装されていました。イーサネット規格の低コスト化と普及により、現在ではほとんどの新しいコンピュータにネットワークインターフェースコントローラがマザーボードに内蔵されており、この方式はLAN on Motherboard(LOM)と呼ばれています。最新のサーバーマザーボードには、複数のネットワークインターフェースが内蔵されている場合もあります。イーサネット機能は、マザーボードのチップセットに統合されているか、低コストの専用イーサネットチップを介して実装されています。追加の独立したネットワーク接続が必要な場合や、イーサネット以外のネットワークを使用する場合を除き、通常は別途ネットワークカードは不要です。コンピュータハードウェアの一般的な傾向として、システムのさまざまなコンポーネントを1つのチップに統合する方向に向かっており、これはネットワークインターフェースカードにも適用されています。
イーサネットネットワークコントローラは通常、ネットワークケーブルを接続する8P8Cソケットを備えています。古いNICにはBNCまたはAUI接続も搭載されていました。イーサネットネットワークコントローラは通常、10 Mbit/s Ethernet、100 Mbit/s Ethernet、および1000 Mbit/s Ethernet の種類があります。このようなコントローラは10/100/1000と表記され、10、100、または1000 Mbit/sのデータレートをサポートできることを意味します。10ギガビット Ethernet NIC も利用可能で、2014 年11 月現在 コンピュータのマザーボードで利用可能になり始めている。[ 6 ] [ 7 ]

SFPやSFP+のようなモジュール設計は、特に光ファイバー通信において非常に人気が高い。これらは、メディア依存型トランシーバー用の標準的なレセプタクルを定義しているため、ユーザーはネットワークインターフェースをニーズに合わせて容易に調整できる。
ネットワークコネクタに隣接または内蔵されたLEDは、ネットワークが接続されているかどうか、およびデータ通信が発生したかどうかをユーザーに知らせます。
NICには、工場出荷時に割り当てられたMACアドレスを保存するためのROMが含まれている場合があります。[ 8 ]
NICは、転送可能なパケットの有無を示すために、以下の手法の1つ以上を使用する場合があります。
NICは、パケットデータを転送するために、以下の技術の1つ以上を使用する場合があります。


マルチキューNICは複数の送信キューと受信キューを提供し、NICが受信したパケットをいずれかの受信キューに割り当てることができます。NICはハッシュ関数を使用して受信キュー間で着信トラフィックを分散できます。各受信キューには個別の割り込みが割り当てられます。これらの割り込みをそれぞれ異なるCPUまたはCPUコアにルーティングすることで、単一のNICが受信したネットワークトラフィックによってトリガーされる割り込み要求の処理を分散し、パフォーマンスを向上させることができます。[ 10 ] [ 11 ]
上記で説明したハードウェアベースの割り込みの分散は、受信側スケーリング(RSS) と呼ばれます。[ 12 ] : 82受信パケットステアリング(RPS)、受信フローステアリング(RFS)、[ 10 ] 、およびIntel Flow Directorなど、純粋にソフトウェアによる実装も存在します。[ 12 ] : 98,99 [ 13 ] [ 14 ] [ 15 ]割り込み要求を、割り込みを生成したネットワークパケットの最終的な宛先であるアプリケーションを実行している CPU またはコアにルーティングすることで、パフォーマンスをさらに向上させることができます。この手法は参照の局所性を向上させ、CPU キャッシュの利用率が高く、必要なコンテキストスイッチが少なくなるため、全体的なパフォーマンスの向上、レイテンシの低減、ハードウェア利用率の向上につながります。
マルチキューNICでは、送信トラフィックを異なる送信キューに分散することで、さらなるパフォーマンス向上を実現できます。異なる送信キューを異なるCPUまたはCPUコアに割り当てることで、内部オペレーティングシステムの競合を回避できます。このアプローチは通常、送信パケットステアリング(XPS)と呼ばれます。[ 10 ]
一部の製品では、 SR-IOV仮想化を使用して単一の10ギガビットイーサネットNICを複数の個別の仮想NICに分割し、専用帯域幅を持たせるNICパーティショニング(NPAR 、ポートパーティショニングとも呼ばれる)が採用されており、これらはファームウェアとオペレーティングシステムに対して個別のPCIデバイス機能として提示されます。[ 3 ] [ 16 ]
一部のNICはTCPオフロードエンジンを提供し、 TCP/IPスタック全体の処理をネットワークコントローラにオフロードします。これは主に、ネットワークスタックの処理オーバーヘッドが大きくなるギガビットイーサネットや10ギガビットイーサネットなどの高速ネットワークインターフェイスで使用されます。[ 17 ]
一部のNICは、ホストコンピュータに到達する前にネットワークトラフィックをユーザーがプログラム可能な処理するための 統合型フィールドプログラマブルゲートアレイ(FPGA)を提供し、時間制約のあるワークロードでレイテンシを大幅に削減できます。 [ 18 ]さらに、一部のNICは、統合型FPGA上で動作する完全な低レイテンシTCP/IPスタックと、通常オペレーティングシステムカーネルによって実行されるネットワーク操作をインターセプトするユーザースペースライブラリを組み合わせて提供しています。Linux上で動作するSolarflareのオープンソースOpenOnloadネットワークスタックはその一例です。この種の機能は通常、ユーザーレベルネットワーキングと呼ばれます。[ 19 ] [ 20 ] [ 21 ]