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キャッシュが有効/無効の場合のフォワーディング処理を図示します。

../_images/36_ufs_01.svg

図 2.31.1 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-cache
show ipv6 ufs-cache

有効なキャッシュのみを簡易表示します。

show ip ufs-cache verbose
show ipv6 ufs-cache verbose

無効となったキャッシュを含め、詳細に表示します。

show ip ufs-cache entries
show 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などトンネルインタフェースが大量に存在する場合に、一律にハッシュテーブルサイズを拡張するとメモリ枯渇の原因となります。あくまでも該当インタフェースに上記を目安とした多くのフローが同時に入力される場合にのみ拡張してください。