鳥を使用して内部ネットワーク上にエニーキャストDNSサーバーのペアをセットアップし、それらがコアルーターとOSPFを通信していると仮定します。私はインターネット上で this を見つけ、それを実現させました。
一方を他方よりも高いコストパスを持つように設定した場合、resolv.confの一方のホストからもう一方のリゾルバーに切り替えるときにクライアントにタイムアウトを発生させずにフェイルオーバーを実行するためのかわいい方法を作成しました。彼らのresolv.conf。
しかし、それは私にとって十分ではありません。 DNSサーバー間で負荷を分散したい。したがって、両方のコストを同じに設定したので、ルーターはECMPを実行し、要求の50%を一方に送信し、要求の50%をもう一方に送信する必要があります。
しかし、私の企業はDNSの大部分にTCPを使用していることがわかりました。たとえば、膨大なSRVレコードがあり、優れているためDNSSECを使用しているとします。
さて、TCPリクエストはリクエストを完了するために3つまたは4つのパケットを必要とし、これら3つのパケットの1つが常に送信されるという事実に対処するために、巧妙なエニーキャストセットアップをどのようにセットアップしますか間違ったルーターに接続し、tcp接続をリセットします。
ええと、そのようなスキームでは、無効なセッションに対するRST応答をブロックすることができますね。 :)または(さらに良いこと)、それをサービスに渡さないでください:
—無効な状態ですか?
—いいえ、試してみてください another !
P. S.はい、私はプレゼンテーションが本当に好きです " TCPエニーキャスト-FUDを信じないでください-nanog "コメントであなたに与えたリンクによる。 ;)
NANOGプレゼンテーションが言うように、パケットごとではなくフローごとのOSPFECMPを使用するだけで問題ありません。
TCPのエニーキャストは、長寿命のTCPセッションの潜在的な問題にすぎず、私が知っているほとんどすべてのDNS実装は、非常に短命のTCPセッションのみを使用します。