IPsecのパケットロス発生原因と対策
こんにちは。クレスコ・デジタルテクノロジーズの高橋です。
IPsecは拠点間のセキュアな通信を実現する際によく使われる技術ですが、今回はIPsecで発生するパケットロスの原因と対策について紹介したいと思います。
■あわせて読まれている資料:
対応事例やネットワークサービス一覧を掲載!
→ネットワークテクノロジーサービス
目次[非表示]
IPsec概要
パケットロスの話の前に、IPsecの概要について説明します。
IPsecでは送信側(イニシエータ)と受信側(レスポンダ)の間でSA (Security Association) を確⽴します。
SAとはセキュアな通信路(トンネル)のことで、暗号化による通信データの秘匿や改ざんの検知を実現します(注1)。
また、SAは一方通行のトンネルのため、送受信の双方向の通信を行うために送信用と受信用の2つのSAを確立します。
このSAの確立にはIKE (Internet Key Exchange)プロトコルが用いられます。
(注1)IPsecにはESPとAHの2種類のプロトコルがありますが、暗号化と改ざん検知が可能なのはESPで、AHの場合は改ざん検知のみ可能になります。
IKE(Internet Key Exchange)
IKE(Internet Key Exchange)プロトコルには以下の機能があります。
・プロポーザル交換:
SAのパラメータ(暗号化アルゴリズムやハッシュアルゴリズム等)をネゴシエーションする機能
・秘密鍵の生成:
通信を暗号化するための秘密鍵を安全に生成する機能
・ピアの認証:
SAを確立する相手(ピア)が正規の相手であることを認証する機能
また、IKEには2つのフェーズがあります。
IKEフェーズ1では、IKEのネゴシエーションを暗号化するためのISAKMP SAを確立します。
IKEフェーズ2では、ISAKMP SAで暗号化された通信路を用いて、IPsec SAを確立するためのネゴシエーションを行い、秘密鍵を生成します。
このIKEフェーズ2で生成された秘密鍵ですが、いつまでも同じ鍵を使い続けていると外部に漏洩するリスクが高くなります。そのため、IPsec SAには寿命(ライフタイム)が設定されており、定期的に更新を行います。この動作をRe-Key(リキー)と言います。
パケットロスの発生原因
IPsecのパケットロスはこのRe-Keyのタイミングで発生することがあります。
Re-Keyの際、イニシエータとレスポンダの間ではIKEフェーズ2により再度、IPsec SAのパラメータのネゴシエーションと新しい秘密鍵の生成が行われます(図の①、②)。
そして、イニシエータは図の③でハッシュ値を送信後、新しいIPsec SAを使用した通信を開始します。
一方、レスポンダは③を受信して処理が完了するまでの間、新しいIPsec SAを使用した通信を廃棄してしまうため、③が何らかの理由によりレスポンダに届かない、またはパケットの追い越しが原因で③より先に新しいIPsec SAを使用した通信をレスポンダが受信した場合にパケットロスが発生します。
IKEはUDPを使用しており、TCPに比べて信頼性が低くなっています。そのため通信経路上で廃棄される等の理由でレスポンダに届かないことがあります(※2)。
また、パケットの追い越しは以下の理由で発生することがあります。
・ロードバランス(パケット単位)
・ネットワーク機器のパケット処理
・(優先制御としての)キューイング処理
ロードバランス(パケット単位)は、等コストルーティングやEther Channelなどが該当します。
ネットワーク機器のパケット処理は、フォワーディング処理がハードウェア化されている機器で、フラグメントやQoS等のソフトウェア処理が適用される場合に該当します。
(優先制御としての)キューイング処理はQoSの優先制御が該当します。
(※2)レスポンダは③を受信できなかった場合、再度②をイニシエータに送信し、イニシエータは③を再送信します。この間、パケットロスが発生します。
パケットロスの対策
パケットロスの対策として、IPsecのCommit bit(コミットビット)があります。
Commit bitを設定したレスポンダはIKEフェーズ2のネゴシエーション時にcommit-bitのフラグをONにしたパケットをピアに送信します。そして、イニシエータから③を受信後、イニシエータに受信したことを通知する“CONNECTED通知”メッセージを送信します。
通常、イニシエータは③の送信直後に新しいIPsec SAを使用した通信を開始します。しかしレスポンダがCommit bitを設定している場合、レスポンダから”CONNECTED通知”メッセージを受信するまで新しいIPsec SAを使用した通信は行わないで待機するため、Re-Keyのタイミングでパケットが廃棄されることを防ぐことができます。
さいごに
IPsecのCommit bitはRFCで定義されていますが、機器により設定できなかったり、動作が異なる場合がありますので機器仕様を確認したり、動作検証を行うことをオススメします。
また、Commit bitが設定できない場合はQoSによる優先制御を行い、IKEを他の通信より優先する対策も100%ではありませんが有効だと思います。
今回ご紹介した内容がIPsecを使ったネットワークを構築する際の参考になれば幸いです。
最後までお読みいただき、ありがとうございました。