OSPF Link-State Database Overload Protection

はじめに

今回もOSPFのNew Featureの紹介です。12.3(7)Tで追加された

『OSPF Link-State Database Overload Protection』

という機能です。

名前からも想像できるように、LSAのデータベースが過剰なLSA Foodingでオー
バーロードしないようにするためのセキュリティ的な機能です。

Benefits of Using OSPF Link-State Database Overload Protection

この機能を使用すると、自分が生成していないLSA(他のルータから受け取っ
たLSA)に対してOSPFのプロセスが受け取れるLSAの上限値を設定することがで
きます。

例えば、misconfigurationや何らかのDoS Attackで大量のLSAが生成された場
合、OSPFのプロセスはそのLSAのトポロジ情報などを構成しようとCPUとmemory
のリソースを大量に消費してしまいます。

このようにLSAが大量に生成されてしまうとネットワーク全体がダウンする可
能性もあるため、そのような状況に陥らないためにLSAの上限値を設定できま
す。

How OSPF Link-State Database Overload Protection Works

この機能を有効にしている間、ルータは他のOSPFルータから受け取ったLSAを
カウントして、設定されている上限値と比べます。自分自身で生成したLSAは
カウントされません。

他のOSPFルータから受け取ったLSAの数が、設定された閾値に達すると、
warnning messageを出力します。

LSAの数が設定された上限値を超えると、ルータは他のOSPFルータからのLSAを
無視します。この状態をignore stateといいます。

ignore stateの場合、すべてのインタフェースで受信するLSAを無視します。
ignore stateになっている時間を指定するにはmax-lsaコマンドのignore-time
オプションで指定できます。

max-lsaコマンドにwarning-onlyオプションを指定すると、上限値を超えるLSA
を受信しても、warnning messageを出力するだけで、それ以外にOSPFのプロセ
スに影響を与えるような動作はしません。

この機能を有効にしている間、デフォルトではignore stateになった回数をカ
ウントしていて、一定の時間内にignore stateに連続してなった場合は、通常
の状態に戻らずに永続的にignore stateのままになります。この状態になると、
clear ip ospfコマンドでOSPFのプロセスを一度クリアする必要があります。

Configuring OSPF Link-State Database Overload Protection

では、以下に設定のステップを示します。

Step1
Router# conf t

まず、Global Configuration Modeに移ります。

Step2
Router(config)# router ospf 1

Router Configuration Modeに移ります。

Step3
Router(config-router)# router-id ip-address

OSPFのルータIDを指定します。
マニュアルでは特にオプショナルとは書かれていなかったので設定したほうが
いいのかも知れません。多分必要ないとは思いますけど。

Step4
Router(config-router)# log-adjacency-changes [detail]

OSPF Neighborの状態が変化したときにSyslogメッセージを出力します。デフ
ォルトは有効です。これもルータIDと同様、LSAを制限する上では必要な設定
ではないと思いますが、マニュアルではオプショナルと書かれていませんでし
た。

Step5
Router(config-router)# max-lsa maximum-number
[threshold-percentage] [warning-only] [ignore-time minutes]
[ignore-count count-number] [reset-time minutes]

Link-State Overload Protectionを有効にします。このコマンドの引数は以下
のとおりです。

maximum-number・・・LSAの上限値を指定する

threshold-percentage・・・warnning messageを出力するまでの閾値。Defaultは75%。
warning-only・・・上限値を超えた場合でもwarning messageの出力のみとなります。
ignore-time・・・上限値を超えるLSAを受け取ると、すべてのOSPF Neighbor
からのLSAを無視します。ここで指定する値は分単位で、Defaultは5分です。
ignore-count・・・永続的にignore stateにとどまるまでの回数を指定します。
Defaultでは5回です。
rest-time・・・ignore countを0にリセットするまでの時間です。Defaultで
は10分です。

Step6
Router(config-router)# network ip-address wildcard-mask area area-id

OSPFを有効にするインタフェースの設定です。

Step7
Router(config-router)# end

以上で設定は終了です。

Configuration Example

以下に設定例を示します。

Router# conf t
Router(config)# router ospf 1
Router(config-router)# router-id 192.168.1.1
Router(config-router)# log-adjacency-changes detail
Router(config-router)# max-lsa 1000 warnning-only
Router(config-router)# network 192.168.10.1 0.0.0.0 area 0

OSPFの設定についての説明は省略しますが、ここではLSAの上限値を1400にし
ています。またwarning-onlyオプションで、1400以上のLSAを受信しても、
warning messageを出力するだけの設定となっています。

Basic Configuring Exercise

それでは練習問題をやってみましょう。

問)以下の条件に合うように設定をしてみてください。
-OSPF プロセスIDは100
-LSA上限値は2000
-1600のLSAを受け取ったらwarning messageを出力
-上限を超えたら120秒間はLSAを無視する。
-5分以内に3回ignore stateになると、4回目は永続的にignore stateのまま
でいるようにする。

それでは回答です。

Router(config)# router ospf 100
Router(config)# max-lsa 2000 80 2 3 5

問題はやたら複雑そうに見えますが、設定は単純です。

まず、LSAの上限値は2000で指定しています。次の80という値はwarning message
を出力する際の閾値を%単位で指定します。

そのあとの2,3,5という数ですが、それぞれ、ignore-time、ignore-count、
ingore-resetという値を指定します。
ignore-timeというのはignore-stateになっている時間を指定します。問題で
は120秒とありましたが、ここの値の単位は分ですので、2です。

ignore-countというのは、ignore-stateになった回数をカウントしていて、こ
の値を超えたあとにignore-stateになると、永続的にignore-stateのままとな
ります。こうなると、clear ip ospfコマンドでOSPFのプロセスをクリアする
必要があります。

ignore-resetとは、ignore-countを0に戻すまでの時間です。5分間ignore-state
にならなければignore-countの値を0にリセットします。

Further Reading

DocumentへのLinkです。

Cisco IOS 12.4 Configuration Guide
http://www.cisco.com/univercd/cc/td/doc/product/software/ios124/124cg/hirp_c/ch15/hospfopr.htm

By 『Overseas and Beyond』 Koichi
http://overseasandbeyond.blogspot.com/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA