一般的なアーキテクチャ
NetScaler BLXはNetScalerのソフトウェアフォームファクターであり、他のフォームファクターと同じ機能を提供します。Linux ホスト上でユーザースペースアプリケーションとして実行されます。
BLXは、パケットの受信/送信とNICポートの管理にLinuxドライバーを使用します。起動時に作成される仮想イーサネット(veths)インターフェイスblx0
よびblx1
は、LinuxホストとBLX間の通信に使用されます。 たとえば、BLX は veths を使用して Linux ホスト上の syslog デーモンにログ情報を送信します。
BLX のネットワークモードは、Linux ホストの NIC ポートを、ホスト上で実行されている他の Linux アプリケーションと共有するかどうかを定義します。BLX は、次のいずれかのネットワークモードで動作するように設定できます。
- 専用モード -Linux ホストの NIC ポートは BLX 専用で、他の Linux アプリケーションとは共有されません。
- 共有モード -Linux ホストの NIC ポートは、他の Linux アプリケーションと共有されます。
専用モードのNetScaler BLX
専用モードでは、 blx.conf
(BLX のブートアップ設定ファイル) で指定されている Linux ホストの NIC ポートは BLX 専用になります。これらの NIC ポートは、ホスト上で実行されている他のアプリケーションとは共有されません。BLX だけが専用の NIC ポートを見ることができます。
専用モードのIPアドレススキームは、従来のNetScalerと似ています。BLXには、NetScaler IP(NSIP)、仮想サーバーIP(VIP)、およびサブネットIP(SNIP)に異なるIPアドレスを割り当てることができます。
BLX は外部ネットワークからパケットを受信し、受信したパケットを処理し、設定された専用 Linux NIC ポートを介して直接応答します。LinuxカーネルのTCP/IPスタックをバイパスして、パケットを処理するための本格的なTCP/IPスタックを備えています。BLX は Linux カーネルドライバーと直接やり取りして NIC ポートから未加工のパケットを取得します。
BLXはLinuxカーネルのネットワークスタックをバイパスしますが、Linuxカーネルメモリとユーザー空間メモリ間のパケット転送には依然としてオーバーヘッドがあります。このオーバーヘッドは、パケット処理の全体的なパフォーマンスに影響します。高いパケット処理性能を得るには、データプレーン開発キット (DPDK) 互換の NIC の使用をお勧めします。BLX がサポートする DPDK 互換 NIC のリストについては、Linux ホストのハードウェア要件を参照してください。
DPDKは、ネットワークパフォーマンスを向上させるために使用されるオープンソースのLinuxライブラリとネットワークインターフェイスコントローラーのセットです。 DPDK の詳細については、DPDK の公式ウェブサイト https://www.dpdk.org/ を参照してください。
DPDKはカーネルメモリをバイパスし、パケットをユーザー空間メモリに直接配信して処理します。DPDKをLinux UIOモジュールと組み合わせると、BLXは、カーネルメモリからユーザー空間メモリにパケットをコピーするというLinuxカーネルのオーバーヘッドを必要とせずにパケットを送受信できます。メモリが割り当てられると、DPDK はバッファを管理してパフォーマンスを向上させます。
注:
以下の条件のいずれかが満たされると、BLX が DPDK サポートのない専用モードで起動することがあります。
- BLXは専用のDPDK互換NICポートをサポートしていません。
- DPDK は専用の NIC ポートをサポートしていません。
共有モードのNetScaler BLX
共有モードでは、Linux ホストの NIC ポートは他の Linux アプリケーションと共有され、パケットを送受信します。BLX には 192.0.0.1/24 の IP アドレスが自動的に割り当てられます。この IP アドレスは、管理およびデータトラフィックに使用されます。NetScalerが所有するすべてのIPアドレス(NSIP、SNIP、VIPアドレスなど)のIPアドレスは192.0.0.1と同じですが、ポート番号は異なります。つまり、この単一の IP アドレス (192.0.0.1) は、NSIP、SNIP、および VIP として機能するために異なるポート番号を使用します。
ホストの Linux NIC ポートは BLX と他の Linux アプリケーション間で共有されるため、IP テーブルルールが NAT に追加されます。この IP テーブルルールは、ホストで受信したトラフィックを BLX に転送してさらに処理するために使用されます。
Linux ホストは、受信したパケットの宛先 IP アドレスを BLX の IP アドレス (192.0.0.1
) に変換します。BLXはblx0
およびblx1
仮想インターフェイスを介してパケットを受信します。
BLX は受信したパケットを処理し、blx1
およびblx0
仮想インターフェイスを介して Linux カーネルに送信します。Linux ホストは BLX IP NAT テーブルを使用してこれらのパケットに NAT を実行し、Linux NIC ポートを介して宛先に送信します。
注:
実稼働環境では BLX を共有モードに設定することはお勧めしません。