ルート障害検出なしのフェイルオーバー操作のための冗長IPリンク集約


7

ホスト間の2つのリンクの助けを借りて、ルート障害検出のための時間遅延なしに、TCP接続のフォールトトレランスを実現するテクノロジーを探しています。このようなもの:

                       link1   packet1copy1->
                     --------------------------
      packet1->     /                          \    packet1copy1/packet1copy2->
host1--------router1                            router2 ------------------------host2
                    \  link2   packet1copy2->  /
                     --------------------------

host1host2を介して接続されているrouter1router2、それらの間に2つのリンクで。各ルーターは、ホストからのすべてのパケットを複製してから、両方のリンクに同時に転送します。次に、ピアルーターまたは宛先ホストIPスタックのいずれかが、冗長パケットの除去を処理します。

編集: これは実際には、TCP(IP)トランスポート用のレプリケーションによる汎用のフォールトトレランスソリューションの検索です。ソリューションは、BGP / OSPF / Cisco IP SLAなどの適度に高速リカバリアプローチとは対照的に、リカバリが不要なタイプである必要があります。一部の独自仕様のパケット冗長ソリューションは、あまり知られていませんが、すでに知られています。特に、Engage CommunicationはVoIP用のIP Tube Protectorを提供しています。残念ながら、このソリューションは、1)標準テクノロジーよりも多くの機器であり、2)VoIPドメインのみに限定されています。ジュニパーパケット冗長テクノロジーも注目に値するかもしれませんが、冗長リンクではなく単一リンクのみに限定されているように見えます。

なぜCiscoから同様のものが見つからないのでしょうか...標準または少なくとも汎用のテクノロジーはこれに対処しますか?


3
tcpは失われたセグメントを再送信しますが、再送信なしでパケット損失をゼロにしたい場合は、tcp以外の別のテクノロジーが必要です...どのようなビジネス上の問題を解決していますか?
マイクペニントン2013

1
はい、TCPは失われたセグメントを再送信しますが、BGPのようなルーティングプロトコルでは、動作可能と見なされたルートがダウンしていることを発見するのにかなりの時間がかかります。最後に、ルーターはこれを認識してアクティブルートを切り替えますが、時間がかかり、アプリケーションレベルのプロトコルが影響を受ける可能性があります...私のビジネス上の問題は、オンラインの金融取引処理です。
セルゲイウシャコフ2013

1
標準のアプリケーションレベルのタイムアウトは40秒です。実際、ルート障害の検出に20秒程度を許可することで、トランザクション障害を回避できます。はい、アプリケーションはすでに作成されていますが、修正できます。アプリケーションレベルの暗号化は使用されません。IPsecで保護されているのは、長距離の冗長リンクのみ
セルゲイウシャコフ2013

4
ipsecトンネルを介して独自のigpルーティングプロトコルを実行し、オプションでip slaを使用して、必要に応じて失敗します...これはかなり標準的な設計です
マイクペニントン

1
ipsecリンクの終端に何を使用していますか?Cisco ASAまたはルータ、または??? 片側検出に依存することはできません...両側のIP SLA、またはhelloタイマーを適切に調整すると、ルーティングプロトコルによって障害検出の問題が修正されます
Mike Pennington 2013

回答:


0

Mikrotikルーターを使用すると、ブロードキャストモードでボンディングを使用できます。ボンディングを参照してください。4Gリンク接続を介していくつかのテストを行いました。これにより、パケット損失が1から2に減少し、TCP速度の向上によるメリットが得られます。パケット損失は完全には解消されていませんが、3つのリンクへの移動はそれ以上改善されません。次にネットワークでコーディングされたTCPについて調査します。


製品またはリソースの推奨事項は、ここでは明らかにトピックから外れています。たとえば、MikroTikなどの消費者向けデバイスも同様です。
Ron Maupin

@Netflow Mikrotikに関係なく、ブロードキャストモードでの結合に注意していただきありがとうございます:)近い将来、試してみることができるかどうかはわかりませんが、標準ベースのアプローチがあるように見えるのは良いことです。 ..
セルゲイウシャコフ2017

10

ホスト間の2つのリンクの助けを借りて、ルート障害検出のための時間遅延なしに、TCP接続のフォールトトレランスを実現するテクノロジーを探しています。このようなもの:

                       link1   packet1copy1->
                     --------------------------
      packet1->     /                          \    packet1copy1/packet1copy2->
host1--------router1                            router2 ------------------------host2
                    \  link2   packet1copy2->  /
                     --------------------------

あなたの提案に反するいくつかのことがある...

  1. host1とhost2を非常に一生懸命に動作させ、意図的なパケット複製スキームを解き明かします。
  2. 正当な理由もなく、IPSec暗号化ポイントに馬力を燃やしている
  3. TCPは、インフラストラクチャの欠陥や障害から自動的に回復するように30年以上にわたって改良されてきました。このような方法でTCPを「支援」すると、間違った問題が修正されます。問題を軽減するためにインフラストラクチャを反応させる必要があります。問題のあるインフラストラクチャを生き残るために、TCPにダクトテープを貼らないでください。

障害検出の要件は20秒なので、私は同じコメントで回答します...

必要に応じて、ISPダイバーシティを使用して2つのIPSecトンネルを構築します。IPSecトンネルを介してルーティングプロトコルを実行し、プロトコルタイマーを調整して、持続的なインフラストラクチャパケット損失を回避します。シスコがエンドツーエンドの場合、EIGRPは長い間、障害に関する非常に高速なコンバージェンスを行ってきましたが、リンクステートプロトコルは、IETFループのない代替実装で同じになっています。

オプションで、両側でIP SLAを使用して、ジッター/遅延/パケット損失の要件を満たさないトンネルを停止します。


マイクは、すべての原因に関しては、私は次のような理由から、あなたの批判を受け入れるカント:1)私の質問は求めて複製によってフォールトトレランスをあなたのソリューションがでている間、溶液の種類冗長による耐障害性タイプ。どちらのアプローチも通常は有効であると見なされますが、異なるサービス品質レベルを生み出す傾向があるため、より良いレベルのサービスを求めています。2)レプリケーションによるフォールトトレランスはより高価になる傾向がありますが、ここでは「高価」という言葉をあまり真剣に受け止めません:)とはいえ、私の「ありがとう」を受け入れて、概要を高く評価してください。
セルゲイウシャコフ2013

1
@ sn-ushakov、私が言ったように...レプリケーションによるフォールトトレランスが必要な場合は、間違ったプロトコルを使用しています。TCPは冗長性によるフォールトトレランスのために作られました。レプリケーションによるフォールトトレランスが必要な場合は、UDPと呼ばれる友人を紹介します。UDPは、必要なものにはるかに適しています。しかし、手段は、あなたが(この双方向のパケット複製を実装するために知られていないハードウェアで、私が追加される場合があります)あなたは奇妙なネットワーク設計に恋をしているという理由だけで、あなたの主要なビジネスアプリケーションを書き換えしようとしていること
マイク・ペニントン

まあ、時にはアプリケーションレベルのプロトコルは私たちの選択ではありません...そしてあなたのピアインフラストラクチャの知識はビジネスの世界で制限されているかもしれません...そして、例えば、UDP上でHTTPが設計され実装されているのはクールかもしれません真剣に、リンクステートプロトコルを指定していただきありがとうございます。最終的な解決策ではありませんが、救済になる可能性があります。BTW TCP自体は、求められているソリューションの少なくとも一部に対してすでにプロビジョニングを行っています。TCP は...複製されたデータから回復する必要があります...-RFC 793、セクション1.5、サブセクション「信頼性」
Sergey Ushakov

6
RFC 793、第1.5節を引用して自由に感じる...応答で、私が引用されますRFC 1925、セクション(3) With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea.
マイク・ペニントン

2
Engage CommunicationsはTDM over IPソリューションを販売しています。TCP over IPソリューションを求めています... IP over TDM over IPをオーバーレイすることもできますが、繰り返しますが...これは本当におかしいです。実際のネットワークエンジニアを雇う必要があります
マイクペニントン2013

4

上から

  • 私からの質問に反対票を投じてください。あなたの質問は、他の人々の回答に対するコメントでのあなたの回答に基づいて十分に明確ではありません。あなたはソリューションがネットワークエンジニアリング関連であると想定しましたが、あなたは知らないようで、誰かがあなたに必要な答えを提供してくれると期待しているような印象を与えます。

  • 次の問題要件があります。

host1とhost2はrouter1とrouter2を介して2つのリンクで接続されています。各ルーターは、ホストからのすべてのパケットを複製してから、両方のリンクに同時に転送します。次に、ピアルーターまたは宛先ホストIPスタックのいずれかが、冗長パケットの除去を処理します。

  • エンドホストのローカルルーターへの接続が、router1との間の単一のリンクを通過するトラフィックの速度の2倍でない限りrouter2(これまでに説明していません)、ホストはローカルルーターへの2つの接続を必要とします。ありませんNOネイティブソフトウェアまたは製品ANYWHEREエンドホスト上で実行すると、TCPは最初のストリームからのパケットの欠落、代替ストリームから同じNICまたは二つの別々のものとプルダウンストリーム2を取ることができます。どうすればわかりますか?これはネットワーキングが機能する方法ではないため、IPとTCPは単にそのように機能するようには設計されていません。パケットを複製するための製品があるかもしれませんが、これらは質問に対する間違った回答であるため、広く普及しているわけではなくニッチです。

なぜこれはそのようなばかげた要求です。

  • あなたは四角い穴に丸い釘を入れようとしているようです。あなたの問題の要件についての私の理解は、リモートホスト間を移動するアプリケーションのデータの冗長性が必要だということです。リンク障害が発生した場合、データはエンドツーエンドで2回送信されます。これが、デュアルTCPフローを使用してここで保護しているすべてのことであり、物理層1の障害です。あるホストから別のホストへのパケットの送信に一時停止があると、両方のルーター間リンクに到着するのが遅くなります。1つのリンクで一時的な問題が発生し、他のリンクでは発生しない(輻輳など)場合、リンクの最後にあるルーターは、両方のTCPストリームを同時に追跡して、パケットがlink2に到着したときに、そのシーケンス番号が続くことを確認する必要があります。ヘッダーがあり、link1に何も到着していない場合、link1のパケットは遅延し、それが発生した場合はそれをドロップする必要があります。

    良好なQoSスキーマのために、link1に輻輳があり、トラフィックがドロップされない状況で自分を見つけた場合、それはキューですが、link1のダウンパケットは常にlink2の背後にあります。ここでlink2に障害が発生し、ルーターがlink1のパケットをエンドホストに渡すと、dupパケットを受信し、停止して再送信するなどして、遅延が発生します。ここでは何も達成されませんでした。

ソリューションに移ります。

  • 私の意見では、2つのエンドホスト間にデュアルレイヤー2リンクを設定し、ブロードキャストドメインを拡張してお互いのNICを含めることをお勧めします。これは、直接のレイヤー2相互接続、MPLS / VPLS拡張、キャリアレイヤー2サービスを介して行うことができます。ここでは厳密には関係ありません。ホスト間でレイヤー2ネットワークを拡張すると、TCPをいじったり、クレイジーブラックマジックやバンドエイドタイプの修正を行う必要がなくなります。TCPは、基盤となるテクノロジーに完全に依存しないため、レイヤー1 /物理リンクの冗長性を維持できます。

  • MPLSベースのソリューションを使用する場合、トラフィックエンジニアリング(MPLS-TE)などの機能を使用してリンク間の遅延を監視し、常に遅延が最も小さいリンクを使用できます。MPLS FRRでBFDを使用できます。これにより、リンク間で50ms〜のフェイルオーバーが得られます。冗長フェイルオーバーソリューションは必要ないとおっしゃっていましたが、50msはかなり高速だと思います。アプリケーションが接続の50msの損失を処理できない場合は、アプリケーションの描画ボードに戻る必要があります。100%稼働しているシステムはありません。悪意のある意図/セキュリティ関連を通じて、障害、計画的なメンテナンス、および停止を計画する必要があります。すべてがある時点で発生します。あなたは現実的でなければなりません。

あるコメントで、あなたは次のように述べました。

まあ、IP SLAはこれまでのところ少なくとも一端で使用されているテクノロジーです... :)それでも両端がリンク障害を検出するのにかなりの時間がかかり、アプリケーションが時々同期しなくなります...そしてリンクはときどきキラキラしている...それが私たちが遅延のない何かを探している理由です

そのようなことはありません。起こり得るイベントが現実になるには時間が経過する必要があります。これを「許容可能な」レベルの遅延に再考する必要があります。

また別のコメントであなたは言った。

BGPは、動作可能と見なされたルートがダウンしていることを検出するのにかなりの時間がかかります。最後に、ルーターはこれを認識してアクティブルートを切り替えますが、時間がかかり、アプリケーションレベルのプロトコルが影響を受ける可能性があります

BGPにはhelloタイマーがあり、これはそのすぐ隣の存在を検出しています。デフォルトは30秒です。これもあなたが言及しているものだと思います。トポロジ内の両方のルーターが各サイトのISPと直接または相互に直接BGPを話す場合、それらのピアリングを介して2つのルーター間にGREまたはL2TP(v3)トンネルのIP-in-IPトンネルを構築し、それらのトンネルを介してBFDまたはIP SLA。これで、1秒または2秒でエンドツーエンドの接続損失を検出し、タックオブジェクトを使用して他のトンネルに再ルーティングできます。

全体として、テクノロジーのさまざまなレイヤーを混同しているようです。BGPは高速の再ルーティングを提供することを想定しておらず、TCPは複製されることが想定されていません。あなたはこの問題に取り組むために間違ったレベルの抽象化を見ています。これがお役に立てば幸いです。


2
彼はそれらを必要とせず、MPLS over IPSECなどのMPLS over GREを実行できます。彼はおそらくL2リンクに投資できますか?私ではなく、誰が彼の予算を知っているか気にしているのか。私のアイデアが最高だと言っているのではありません。私は、問題に対する解決策を提供するために単に正気で信頼性があり、コストや可用性とは無関係であり、彼が直面する問題と、ある選択肢を別の選択肢にする理由をさらに説明しています。それは純粋に技術的な答えです。
jwbensley 2013

1
@ sn-ushakovゼロタイムなどというものはありません
jwbensley '29 / 07/29

1
その文書では、自分自身を繰り返すことは述べていませんTime must pass for possible events to become actualities-ゼロタイムなどというものはありません。ボックスは、損失、遅延、ドロップなどをチェックする必要があります。これには時間がかかります。ミリ秒またはマイクロ秒の場合がありますが、ある程度の時間がかかります。たとえばBFDのように、helloタイムを50msに設定し、デフォルトのホールドタイムを3x helloにした場合、フェイルオーバーが発生するまで150ms待機する必要があります。ここで、TDMバックアップソリューションとシナリオの比較を停止してください。その性質上、必要なTCP冗長性のようなTDMサービスを提供することが可能です
jwbensley

1
... TDMパケットが正確に到着するタイミングがわかるからです。E1s / T1sのしくみを完全に理解していない場合は、まずそれについて読むことをお勧めします。次に、TDMリンクを使用する1つの理由が、保証された遅延などの信頼性のためであることを理解します。これらは、固定速度および1秒あたりのフレームレートで実行されます。IP / TCPはあらゆる規模に対応しています。TDMははるかに予測可能であり、これはTCPよりも下位層で実行されます。これは、2つのリンクでイーサネットフレームを複製するようなものです。これらのボックスがTDM over IPを実行しているという事実は、2つのTDMストリームの変更とスキューの可能性を追加します。それが理由です...
jwbensley

1
...これらのボックスには、スキュータイマーと順不同のフレーム検出器(シーケンス番号の読み取り)があります。
jwbensley 2013

1

これはアプリケーション層の問題であり、ネットワークレベルの問題ではありません。これは、特にTCP再送信が呼び出されたときに、IPのコア原則の1つが重複を防止するためです。
非常に重要な環境では、アプローチはエンドホストに2つのNICを持ち、アプリケーションに2つの固有のパケットを生成させることです。このアプローチでは、変数のパスとメトリックを使用して、既存のテクノロジーとネットワークの原則を使用できます。


申し訳ありませんが、これがアプリケーション層の問題であることには同意できません。アプリケーションには、十分な品質のTCPリンクを期待する権利があります。TCP自体は、軽度のネットワーク障害後の回復に備えており、代替ルーティングによってネットワークの耐障害性を提供​​する多数のソリューションがあります。残念ながら、私が知っているそれらのすべては、回復の必要ないものではなく、故障後の回復が速い種類のものです。私はこのタスクを冗長なネットワークエンジニアリングのタスクとして認識しています。結局のところ、RAIDを使用できる場合、RAINを使用できないのはなぜですか?:)
セルゲイウシャコフ2013

2つのtcpセッションを持つ2つのNICは、OPがより信頼できるTCPセッションを決定する必要があることを意味します。
radio-free-europe 2013

誤解を避けるために:2つのTCPセッションを意味することはありません。TCPセッションは1つである必要があります。これは、冗長性とゼロ遅延のTCPトラフィックフェイルオーバーを処理するルーターのタスクです。
セルゲイウシャコフ2013

0

問題のネットワークデバイスでこのタイプのフォワードレプリケーションを実行できるトリックやプロトコルについては知りません。このタイプのアプリケーションでは、BGP高速フェイルオーバー、BFD、その他のツールを使用して冗長性と高速障害検出をお勧めします。しかし、私は「トンネルスプリッター」と呼ばれるこのオープンソースプロジェクトに遭遇しましたhttp://coderrr.wordpress.com/2010/01/10/tunnel-splitter-accelerating-a-single-tcp-connection-over-multiple-isps/それはあなたが探しているものに合うようです。つまり、各サイトにインストールされているTSボックスは、host1とhost2の間のTCP接続をプロキシし、それらの間のトラフィックをトンネルを介して分割します。各トンネルには固有の送信元アドレスがあるため、ルーターでPBR(ポリシーベースルーティング)を使用して、link1を介したtunnel1とlink2を介したtunnel2のトラフィックを転送できます。TSボックスはトンネルを終端し、host1およびhost2への単一のTCP接続を備えています。もちろん、本当にこれを実際にテストする必要がありますが、ホワイトボードで動作するようです!


(工業グレードではありませんが)有望で適切な法案に聞こえますが、残念ながらGitHubはすでにこのプロジェクトに対して404で応答しています...このプロジェクトにその後何が起こったか知っていますか?
セルゲイウシャコフ2013

残念ながら私はしません。著者に直接連絡する必要がある場合があります。
smoothbSE 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.