Anycast is an addressing and routing method that assigns the same IP address to multiple servers across different geographic locations, enabling the network to automatically route client packets to the topologically nearest server without requiring client configuration. Root and authoritative DNS services commonly rely on anycast to distribute queries across many locations, reducing latency and improving resilience by spreading traffic loads and DDoS attack impacts across multiple sites. However, anycast deployments require careful attention to health checks, consistent zone data synchronization, and route management to avoid failures such as traffic being directed to failed services or routing changes disrupting long-lived TCP connections mid-session.
エニーキャストの仕組み
エニーキャストは、複数の場所から同じIPプレフィックスをアドバタイズすることで機能するため、どのサーバーが各パケットを受信するかはルーティングシステム自体が決定します。クライアント側の設定や特別なプロトコルは必要ありません。
- 共有アドレスの割り当て:各サーバーまたはサイトには、通常はループバックインターフェースまたはサービスインターフェース上で、同じサービスIPアドレスが設定されます。
- プレフィックスの広告:各サイトは、通常BGPを使用して、そのアドレスを含むプレフィックスを近隣サイトに広告します。
- ルーターによる経路の選択:ネットワーク上のルーターは、競合するアドバタイズメントを比較し、最短ASパスなどの通常のルーティングルールに基づいて最適な経路を選択します。
- パケットは最も近いサイトに到達する:クライアントが共有アドレスにクエリを送信すると、ネットワークはルーティング上最も近いサイトへそれを転送します。
- 障害時の撤退(Withdraw on failure):サイトが障害を起こしたり、ヘルスチェックに失敗したりすると、そのサイトはプレフィックスのアドバタイズを停止します。その後、ルーターは残りのサイトにルーティングを収束させます。
「最も近い」とは、ルーティングメトリクスにおいて最も近いことを意味し、必ずしも地理的な距離や最低のレイテンシを意味するわけではありません。セッションの途中で経路が変更される可能性があるため、設計上で経路変更が考慮されていない限り、アニキャストは、UDP経由の DNS クエリなどの短時間のステートレスな通信には適していますが、長時間の接続には適していません。
アニキャストの一般的な問題点
あるサイトがプレフィックスを繰り返し撤回して再アドバタイズすると、クライアントはサイト間を移動することになり、断続的な障害が発生します。その結果、アップストリームプロバイダーによるルートフラップダンピングによってプレフィックスが抑制され、そのサイトへのアクセスがより長期間不能になる可能性があります。
DNSソフトウェアに障害が発生しているにもかかわらず、ルーターが依然としてプレフィックスをアドバタイズし続けているサイトは、クエリを引き続き受け付け続けるものの、一切応答しません。運用担当者は、サービスが応答しなくなった際にそのルートを撤回する、ローカルなヘルスチェックを行う必要があります。
ゾーンデータや設定が同期されていない場合、インスタンスごとに異なる回答が返されることがあります。その結果、異なるリージョンにいるユーザーから矛盾した結果が報告されることになり、1つの場所からではこの問題を再現することが困難になります。
ルーティングの変更により、セッション中にクライアントが別のサイトに転送される可能性があります。これは、1パケットのみのUDPクエリでは問題になりませんが、TCP経由のDNSゾーン転送や大規模な応答など、長時間のTCP接続がリセットされる原因となる可能性があります。
クライアントがどのサイトに到達するかは、地理的な距離ではなく、ルーティングポリシーとピアリングによって決定されます。クライアントは、レイテンシの高い遠方のサイトに接続される可能性があるため、オペレーターは実際のクエリ経路を測定し、プレフィックスのアドバタイズメントを調整します。