2.31. UFSキャッシュの設定
UFSキャッシュ(Unified Forwarding Service Cache)は、フィルタ、NAT/NAPT、IPsecなどのサービスを使用している場合に有効な高速フォワーディングキャッシュメカニズムであり、UNIVERGE IX-R/IX-V シリーズの独自機能です。 UFSキャッシュにより、フィルタの多段設定、IPsecの複数設定等におけるスケーラビリティを向上させます。
2.31.1. 概要
フィルタやIPsecでは、パケットに応じてどの設定を有効にするかを決定するために、それぞれにパケット検索処理やその結果を保持するキャッシュを持っています。 通常これらは機能毎にそれぞれ独立に動作し、その検索結果に基づいて処理が行われています。
ここで、パケットの受信から送信までの間に各サービスで行われていた検索処理を1回で済ませることができれば、検索時間を大幅に短縮することができると考えられます。 UFSキャッシュは、複数のサービスで行っていた検索を一元化し、複数サービスの検索結果を統合します。フォワーディング処理における複数サービスの統合したキャッシュを用いることから、UFSキャッシュ(Unified Forwarding Service Cache)と呼んでいます。
以下の機能がUFSキャッシュに対応しています。
スタティックフィルタの検索結果(通過or廃棄)
NAT/NAPTキャッシュ(変換アドレスなど)
IPsecの各種検索結果(SAなど)
ルーティングキャッシュ情報(出力インタフェースなど)
ポリシールーティング情報(出力インタフェースなど)
QoS情報(クラス、キュー、カラーリング情報など)
ダイナミックフィルタ情報(通過キャッシュ情報など)
2.31.2. 動作原理
UFSキャッシュでは、プロトコルごとに下記の条件に基づきパケットを分別します。
注釈
以下で、IPv6の場合にはTOSではなくTraffic classです。
TCP
プロトコル
送信元アドレス/ポート
送信先アドレス/ポート
TOS
TCP-flag
UDP
プロトコル
送信元アドレス/ポート
送信先アドレス/ポート
TOS
AH/ESP(IPSEC)
プロトコル
送信元アドレス
送信先アドレス
TOS
SPI
GRE
プロトコル
送信元アドレス
送信先アドレス
TOS
GRE-flag
GRE-Key
TCP/UDP/AH/ESP/GRE/ICMP以外
プロトコル
送信元アドレス
送信先アドレス
TOS
ICMP
使われません(判定処理の増加に対する効果が小さいため)
COS
qos-group(QoSの項を参照してください)
フローごとに上記のサービスの情報を1つのUFSキャッシュに登録するため、パケット受信時に最初に1度だけ検索処理を行えば、その時点でパケットがどのように処理されるかが決定されます。 UFSキャッシュを使用しない場合には、それぞれのサービスで繰り返しキャッシュを検索する必要が生じます。
以下にUFSキャッシュが有効/無効の場合のフォワーディング処理を図示します。
注釈
UFSキャッシュは、自装置が送信元となるパケットには適用されません。IPsecはトランスポートの場合には適用されませんので、ご注意ください。
2.31.3. UFSキャッシュの設定
UFSキャッシュの設定は次のコンフィグを使用します。 IPv4/IPv6は個別に設定します。
IPv4コンフィグ
項目
説明
ip ufs-cache hash
IPv4 UFSキャッシュのハッシュサイズ変更(インタフェースコンフィグモード)ip ufs-cache max-entries
IPv4 UFSキャッシュの最大エントリ数設定(グローバルコンフィグモード)ip ufs-cache timeout
IPv4 UFSキャッシュのタイムアウト設定(インタフェースコンフィグモード)show ip ufs-cache
IPv4 UFSキャッシュの表示
clear ip ufs-cache
IPv4 UFSキャッシュの消去
IPv6コンフィグ
項目
説明
ipv6 ufs-cache hash
IPv6 UFSキャッシュのハッシュサイズ変更(インタフェースコンフィグモード)ipv6 ufs-cache max-entries
IPv6 UFSキャッシュの最大エントリ数設定(グローバルコンフィグモード)ipv6 ufs-cache timeout
IPv6 UFSキャッシュのタイムアウト設定(インタフェースコンフィグモード)show ipv6 ufs-cache
IPv6 UFSキャッシュの表示
clear ipv6 ufs-cache
IPv6 UFSキャッシュの消去
2.31.4. UFSキャッシュの表示
UFS キャッシュの表示方法は以下のとおりです。
項目
説明
show ip ufs-cacheshow ipv6 ufs-cache有効なキャッシュのみを簡易表示します。
show ip ufs-cache verboseshow ipv6 ufs-cache verbose無効となったキャッシュを含め、詳細に表示します。
show ip ufs-cache entriesshow ipv6 ufs-cache entries インタフェース毎のキャッシュ表示数を制限します。※ 0を指定時はヘッダ情報のみ表示します。
注釈
表示内容については、統計情報一覧を参照してください
2.31.4.1. 無効キャッシュ
タイムアウトもしくは、UFSキャッシュを利用している機能から無効と宣言されたキャッシュは即時に削除せず、無効キャッシュとなります。 無効キャッシュは約2分を周期としたUFSキャッシュクリア機構によって順次削除されます。無効キャッシュ時のキャッシュには、以下の特徴があります。
show ip/ipv6 ufs-cache verbose でUFSキャッシュを表示させたとき、「Codes: D - Scheduled to delete」で表示されます。
無効キャッシュに対し、パケットが検索マッチした場合、そのキャッシュに含まれるすべての情報をクリアした上で、有効なキャッシュになります。ただし、ヒットカウントやアップタイムはクリアしません。(show ip ufs-cache では、無効キャッシュ時は表示されないため、有効キャッシュに戻ることによって、アップタイムの大きなキャッシュが突然表示されるように見えますが、問題ではありません。)
2.31.4.2. ハッシュテーブルサイズの拡張について
項目 |
説明 |
---|---|
ip ufs-cache hash |
IPv4 UFSキャッシュのハッシュサイズ変更
(インタフェースコンフィグモード)
|
ipv6 ufs-cache hash |
IPv6 UFSキャッシュのハッシュサイズ変更
(インタフェースコンフィグモード)
|
UFSキャッシュの最大エントリ数をデフォルト値以上に拡張する場合において、特定のインタフェースで生成されるキャッシュが下記に記載のキャッシュ数を超えている場合、該当インタフェースのハッシュサイズを拡張すると性能向上することがあります。 (特定のインタフェースに入力するフローが倍の10万エントリになる場合は、ハッシュテーブルサイズも倍の4096などにすることで効果が得られる場合があります。)
ハッシュテーブルサイズ
インタフェースあたりのメモリサイズ
インタフェースあたりのキャッシュ拡張目安
1024
8,192 bytes/interface
32,768 caches/interface
2048
16,384 bytes/interface
65,536 caches/interface
4096
32,768 bytes/interface
100,000 caches/interface
8192
65,536 bytes/interface
200,000 caches/interface
注釈
本設定は、ハッシュサイズを変更しないと特に問題が発生するものではなく、最大キャッシュサイズ付近で運用時のパフォーマンス改善の参考となります。
最大キャッシュ数を仕様制限内で利用するかぎりは設定変更の必要はありません。(最大キャッシュ数を最大値の40,000に設定していてもインタフェースあたりのキャッシュ数が25,000を超えることはほぼないため)
IPsecなどトンネルインタフェースが大量に存在する場合に、一律にハッシュテーブルサイズを拡張するとメモリ枯渇の原因となります。あくまでも該当インタフェースに上記を目安とした多くのフローが同時に入力される場合にのみ拡張してください。