データセンターホストを接続するための高スループットメッシュVPN


16

パブリックデータセンターに多数のホストをレンタルしています。データセンターはプライベートVLANを提供しません。すべてのホストは、1つ(またはそれ以上)のパブリックIPv4 / IPv6アドレスを受け取ります。ホストには最新のCPU(Haswellクアッドコア、3.4GHz)が搭載されており、Gbitアップリンクがあります。データセンターのさまざまな領域(部屋?床?建物?)は、私が知る限りでは、Gbitまたは500Mbitリンクで相互接続されています。ホストはdebian wheezyを実行しています。現在、10台を超えるホストを実行していますが、近い将来の成長が期待されています。

すべてのホストが互いに安全かつ機密に通信できるようにする方法を探しています。レイヤー3は問題ありませんが、レイヤー2は問題ありません(ただし、必須ではありません)。私はVLANにアクセスできないため、何らかのVPNである必要があります。

私にとって重要なこと:

  1. 高スループット、理想的にはワイヤスピードに近い
  2. 分散型のメッシュアーキテクチャ-これは、中央要素(VPNコンセントレータなど)によってスループットが低下しないようにするためです。
  3. CPUフットプリントは過剰ではありません(AESNIとGCM暗号スイートが与えられた場合、これはばかげた要件ではないことを望みます)
  4. 操作の使いやすさ; セットアップするのにそれほど複雑ではありません。ネットワークは確立された接続を失うことなく成長できます

現在、tincを使用しています。[2]と[4]を刻みますが、ワイヤースピード960Mbit / sの約600Mbit / s(シンプレックス)にしか到達せず、1つのコアを完全に失います。また、現在開発中のtinc 1.1はまだマルチスレッド化されていないため、シングルコアのパフォーマンスにこだわっています。

従来のIPSecは、中央要素、またはトンネルのsh * tloadを設定する必要があるため([2]を達成するため)、問題外です。日和見暗号化を使用したIPsecが解決策になりますが、安定した運用コードになったことは確かではありません。

今日、私はtcpcryptを偶然見つけました。欠落している認証を除いて、それは私が望むもののように見えます。ユーザースペースの実装は臭いがしますが、他のすべてのVPNも同様です。そして、彼らはカーネルの実装について話します。まだ試していませんが、[1]と[3]の動作に興味があります。

他にどんなオプションがありますか?AWS ではない人は何をしてますか?

追加情報

GCMに興味があり、CPUのフットプリントを減らすことを期待しています。トピックに関するインテルのペーパーを参照してください。Tinc開発者の1人と話したとき、彼は暗号化にAESNIを使用しても、HMAC(SHA-1など)はGbit速度では依然として非常に高価であると説明しました。

最終更新

トランスポートモードのIPsecは完全に機能し、希望どおりに機能します。多くの評価の後、単にAES-GCMをサポートしているという理由だけで、ipsec-toolsよりOpenswanを選択しました。Haswell CPUでは、約8〜9%のCPU負荷1で、約910〜920Mbit / secのシンプレックススループットを測定しkworkerdます。


それで、ローエンドの装備?ギガビットレベルの暗号化を行った後、どのようなパフォーマンスを維持する予定ですか?方法はありません-より専門的なホストを探すか、暗号化部分を削除することをお勧めします。
トムトム14

2
@tomtomは、Intelの暗号性能に関する論文によれば、AES-128-CBCの暗号化性能は1バイトあたり4.52サイクルであり、100 MB / sが単一コアの最大450 MHzを消費することを意味します。復号化のコストはかなり低くなります。そのため、実装固有の問題がパフォーマンスを低下させない限り、最大のCPUパフォーマンスと最大のネットワークパフォーマンスを同時に必要としない負荷に対してはうまくいくはずです。
the-wabbit 14

なぜGCMが必要なのですか?IPSECはTLSの攻撃の影響を受けにくいため、CBCモードでTLSの弱点を回避するためにGCMを使用することを検討することが重要なポイントです。
ワビット14

回答:


15

あなたがいない欲しいのはVPNです。あなたがやる欲しいのではなく、トンネルモードでは、実際にIPsecのです。むしろ、トランスポートモードでIPsecが必要です。

この構成では、各ホストはピアと直接通信し、パケットペイロードのみが暗号化され、IPヘッダーはそのまま残ります。このように、物事を機能させるためにルーティング体操を行う必要はありません。

はい、各ホストにIPsec接続スタンザが必要になります(ホストがサブネットにグループ化されている場合を除き、この場合、CIDRブロックを介してこれを行うことができます)が、構成管理システムによってプログラムで簡単に生成できます。

構成の詳細については質問しませんでしたが、ポインターが必要な場合(トランスポートモードに関する情報はそれほど多くありません)、最近書いたこのブログ投稿を参照できます。


次に、これにIPSEC転送モードを使用するというアイデアを考えます。ただし、OpenSWANでPSKを使用することは、すべてのセットアップの中で最良とは限りません。LinuxにはすでにネイティブのIPSEC実装とキーイングデーモン(racoon)が付属していますが、KAME / racoonでカバーされていない特定の要件がない限り、それに固執します。
the-wabbit 14

1
本当にありがとう!あなたのアドバイスを組み合わせて、racoonでネイティブIPsec実装を使用しました。最初に小さなシングルコアマシンでテストしましたが、すでにスループットが50%増加し、レイテンシが約60%に低下しました。来週Haswellノードで確認し、その答えを受け入れます。ただし、カーネルでAES-GCMがサポートされているかどうか、およびそれをIPsecに通知する方法を把握する必要があります。
ハンク14

@ syneticon-dj-好奇心が強い...なぜopenswanではないのですか?IPsecにはまだカーネルのip xfrmビットを使用しますが、racoonではなくplutoをユーザー空間IKEデーモンとして使用します。私はopenswanが最高だと主張しているわけではありません-それは私が使用したすべてのものであり、より良いオプションがあれば、その方向を動かしたいと思います。
EEAA 14

1
それはおそらく個人的な好みに帰着するでしょうが、私はいつもFree- / OpenSWAN構成ファイルの無精さと完全にいルーティング実装に悩まされていました。私racoonctlは、商用ルーターがIPSEC制御で許可しているものに非常によく似ている動的な部分がとても好きです。KAMEはより徹底的に設計されているように感じますが、OpenSWANはむしろパッチを当てているように感じます。
the-wabbit

@ syneticon-dj、これについて詳しく説明しますか?現在、Openswanのように、複数のSA構成を必要とせずに、IPSecリンクを介して複数のネットワークをルーティングできるということですか?
rsuarez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.