生存通知2

概要

生存通知機能とは、ネットワークに接続しているルーターから他拠点のルーターへ、自分の名前とIPアドレスを含めたパケットを送り、通信できる状態であることを通知する機能です。通知パケットを受信したルーターは、通知された名前とIPアドレスをログに出力し、保存します。WANのIPアドレスが不定となる拠点のルーターから他拠点のルーターへ通信可能であることを知らせる手段として本機能を利用することができます。

リリースについて

本文書では、従来から実装されている生存通知機能をリリース1、今回新たに実装する生存通知機能をリリース2と区別します。両者の機能概念は同じですが、コマンド体系、動作には互換性がありませんので注意してください。

(参考)生存通知 リリース1の説明へのリンク

以後、特に断りのない限り、本文書の記述は生存通知機能 リリース2を対象とします。

リリース2の特徴

以下にリリース2の主な特徴を挙げます。

  • 生存通知パケットとしてUDP/8512番ポートを使用します(始点/終点ともに)。
  • 生存通知を受信したルーターでは、通知された名前によって送信元のルーターを識別します。そのため、生存通知を送信するルーター毎に固有の名前を設定する必要があります。
  • 送信側ルーター、受信側ルーターで共通の暗号鍵、および認証鍵を持つことにより、通知情報の暗号化や改竄の検出が可能となります。
  • 多対地通信における運用管理を容易にするため、送信/受信設定はそれぞれ識別子を指定することで複数設定できるようになっています。ここで、ペアとなる送信側の送信設定と受信側の受信設定は、それぞれ同じ識別子を指定する必要があります。この設定識別子を通知パケットに含めることにより、受信側は任意の通知パケットに対して使用する受信設定を一意に決定します。
  • 従来、scheduleコマンドと組み合わせることで実現していた通知の定期送信は、送信設定コマンドのみで実施できるようになります。
  • 通知するIPアドレスは原則として生存通知パケットの送出インタフェースに設定されているIPアドレスとなります。ここで、当該インタフェースにNATやIPマスカレードが設定されていれば、送出する通知パケットにNAT/IPマスカレード設定を適用した場合のIPアドレスが使用されます。
    ただし、unnumbered接続の回線を使用して生存通知パケットを送信する場合は、IPアドレスが設定されているLANインタフェースの中で、若番のインタフェースから優先的にIPアドレスを選択して通知します(通知パケットのIPヘッダの始点アドレスと同期)。
  • 受信した生存通知の情報を show status heartbeat2コマンドで表示することができます。

注意事項

  • 本機能を利用するためには、送信側と受信側の双方のルーターが本機能に対応している必要があります。リリース1との相互運用はできません。対象となる機種、ファームウェアリビジョンについては「対応機種とリビジョン」を参照してください。
  • 本機能では、回線の接続状態にかかわらず、指定されたIPアドレスへパケットを送信しようと試みます。そのため、ISDN回線を使用している場合、意図しない発呼が行われ課金される可能性があります。これを防ぐために、静的フィルタを利用して、切断時には生存通知パケットを送信しない設定をする必要があります。
    具体的な設定方法については、「設定例」→「unnumbered接続の例」をご覧ください。
  • 本機から送信する生存通知パケットを各種フィルタ処理の対象とする場合、機能によっては通知パケットのIPヘッダの始点アドレスを0.0.0.0と見なす場合があります。このような機能においては、マッチさせる始点アドレスとして0.0.0.0を指定してください。なお、上記動作に該当し、運用上留意すべき機能としては以下が挙げられます。
    • フィルタ型ルーティング
    • パケット転送フィルタ
  • 生存通知パケットを1回送信すると、show status lanN/pp/tunnel コマンド等で表示されるパケットカウンタには2パケット分の送信がカウントされますが、実際に送出される通知パケットは1つです。これは、通知情報に含める自身のIPアドレスを調べるために、事前に調査用パケットを内部で流しているためです。調査用パケットは送出される前に破棄されます。
  • 受信した生存情報は、clear heartbeat2コマンド以外にも以下のコマンドを変更した場合に削除されます。
    • heartbeat2 receiveコマンド:変更対象の受信設定識別子で受信した生存情報のみ削除。
    • heartbeat2 receive enableコマンド:全ての生存情報を削除。
    • heartbeat2 receive record limitコマンド:全ての生存情報を削除。

対応機種とリビジョン

ヤマハRTシリーズでは以下の機種およびファームウェアで、生存通知機能 リリース2をサポートしています。

機種 ファームウェア
RTX5000 Rev.14.00.15以降
RTX820 Rev.11.03.16以降
RTX1200 Rev.10.01.20以降
RTX800 Rev.10.01.20以降

詳細

生存通知の設定および動作の基本的な流れ

受信側ルーター(以下、ルーターB:IPアドレス 10.0.0.1)の設定

  1. まずは生存通知受信側の設定を行います。ここで指定する暗号鍵や認証鍵、および設定識別子は送信側と一致させる必要があります。

    router-B# heartbeat2 receive 101 crypto yamaha_crypto auth yamaha_auth
    
  2. この時点ではまだ実際に受信動作を行いません。ここから更に受信設定を有効にすることで、生存通知が受信できる状態となります。

    router-B# heartbeat2 receive enable 101
    

送信側ルーター(以下、ルーターA:IPアドレス 172.16.1.254)の設定

  1. 次に送信側の設定を行います。送信設定には、受信側の設定と同じ暗号鍵、認証鍵、および設定識別子を指定します。また、送信時は通知情報に含める自身の名称も設定します。

    router-A# heartbeat2 transmit 101 crypto yamaha_crypto auth yamaha_auth 10.0.0.1
    router-A# heartbeat2 myname 拠点-1
    
  2. 続いて、送信設定を有効にします。

    router-A# heartbeat2 transmit enable 101
    

その後、ルーターAから定期的に生存通知が送信されます。このとき、通知内容は暗号化され、更に認証情報が付加されます。
なお、今回の例では送信間隔はデフォルト設定のままなので30秒です。これを変更するにはheartbeat2 transmit intervalコマンドを使用します。

また、ここで送信される通知パケットには以下のデータが含まれます。

  • 認証鍵(yamaha_auth)を用いて算出したダイジェスト情報
  • 名称(拠点-1)
  • 送出インタフェースのIPアドレス(172.16.1.254)
  • 通知設定の識別子
  • シーケンス番号/セッション番号(リプレイ攻撃を検出するため)
  • アプリケーションヘッダ

ここで、名称とIPアドレスが暗号化の対象となり、更にシーケンス番号やアプリケーションヘッダを含めた情報が認証の対象となります。

受信した通知内容の確認

  • 受信側はshow status heartbeat2コマンドでこれまでに受け取った通知情報を参照することができます。

    # show status heartbeat2
     エントリ数: 1/1
     '?': 監視時間内に通知がない
     受信ID                  名称           IPアドレス        最終受信時刻        間隔(秒)
    ---------------------------------------------------------------------------------------
        101                拠点-1         172.16.1.254      2006/07/20 21:37:48        -
    
    #
    

冒頭のエントリ数は「表示対象のエントリ数/現在の受信エントリ総数」を表します。また、(受信)間隔は同じ相手から生存通知を2回以上受信すると表示されます。

なお、受信側ルーターでheartbea2t receive monitorコマンドにより監視設定を有効にしておくと、監視時間内に通知がない場合にsyslogを出力し、SNMPトラップを上げます。また監視時間を経過した後、同じ相手から再び通知が行われた場合には、生存通知が再開されたことを示すsyslogを別途出力します。

MIB変数

以下のMIB変数で生存通知の受信情報を取得することができます。

  • yamahaRTIp
    • yrIpHeartbeat2Table
      受信した生存通知の情報
      • yrIpHeartbeat2Entry
        • yrIpHeartbeat2Index
          テーブルインデックス
        • yrIpHeartbeat2Name
          通知された名前
        • yrIpHeartbeat2From
          通知されたIPアドレス
        • yrIpHeartbeat2RecvTime
          最後に通知を受信した時刻
        • yrIpHeartbeat2Interval
          通知を受信した間隔
    • トラップ
      • yrIpHeartbeat2Trap
        指定した期間に通知がない場合に送信する

コマンド

通知名称の設定

[書式]

heartbeat2 myname NAME
no heartbeat2 myname

[設定値]

  • NAME ... 生存通知で使用する名称(1~64文字/ASCII、1~32文字/シフトJIS)

[説明]

生存通知で通知する本機の名称を設定する。

NAMEにはASCII文字だけではなく、シフトJISで表現できる範囲の日本語文字(半角カタカナを除く)も使用できる。ただし、console characterコマンドの設定がsjisの場合にのみ正しく設定、表示でき、他の設定では意図した通りに処理されない場合がある。

[初期値]

設定されていない

通知設定の定義

[書式]

heartbeat2 transmit TRANS_ID [crypto CRYPTO_KEY] auth AUTH_KEY DEST_ADDR ...
no heartbeat2 transmit TRANS_ID

[設定値]

  • TRANS_ID ... 通知設定の識別子(1..65535)
  • CRYPTO_KEY ... ASCII文字列で表した暗号鍵(1~32文字)
  • AUTH_KEY ... ASCII文字列で表した認証鍵(1~32文字)
  • DEST_ADDR ... 送信先ルーターのIPv4アドレス、またはFQDN(空白で区切って4つまで指定可能)

[説明]

生存通知の定期的な送信設定を定義する。本コマンドで設定したAUTH_KEYを元に、通知パケットには認証情報が付与される。また、CRYPTO_KEYを指定した場合は更に通知内容が暗号化される。

対応する受信側の設定としてheartbeat2 receiveコマンドを設定する際には、RECV_IDが本コマンドのTRANS_IDと一致していなければならない。また同様に、CRYPTO_KEY、AUTH_KEYも一致させる必要がある。

本コマンドは送信に最低限必要なパラメータをTRANS_IDに紐付けて定義するためのものである。実際に送信処理を有効にするにはhertbeat2 transmit enableコマンドを設定する必要がある。

なお、複数の通知設定による送信負荷を分散させるため、通知設定が有効になってから最初に通知パケットを送信するまでの時間は、通知設定/宛先毎にランダムとなる(ただし30秒以内)。

[初期値]

設定されていない

※現在、本コマンドの動作に関して一部不具合があることが確認されています。詳しくは既知の不具合-1を参照してください。

通知設定の有効化

[書式]

heartbeat2 transmit enable [one-shot] TRANS_ID_LIST
no heartbeat2 transmit enable

[設定値]

  • TRANS_ID_LIST ... 有効にしたい通知設定の識別子のリスト
    • 1個の数字、または間に - をはさんだ数字(範囲指定)、およびこれらを任意に並べたもの(128個以内)

[説明]

定義した通知設定から実際に有効にしたいものを指定する。識別子のリストは空白で区切って128個まで指定することができる。

'one-shot'キーワードを指定した場合は、TRANS_ID_LISTで指定された各設定の通知処理を1回だけ実行する。なお、この形式で入力したコマンドは保存できない。

[初期値]

設定されていない

通知間隔の設定

[書式]

heartbeat2 transmit interval TIME
heartbeat2 transmit interval TRANS_ID TIME
no heartbeat2 transmit interval [TIME]
no heartbeat2 transmit interval TRANS_ID TIME

[設定値]

  • TRANS_ID ... 通知設定の識別子
  • TIME ... 通知間隔秒数(30..65535)

[説明]

TRANS_IDに対応する通知設定の送信間隔を指定する。

TRANS_IDを省略した場合は全ての通知設定が適用対象となる。ただし、TRANS_IDを個別に指定した設定の方が優先して適用される。

[初期値]

30

通知を送信した際にログを記録するか否かの設定

[書式]

heartbeat2 transmit log [TRANS_ID] SW
no heartbeat2 transmit log [TRANS_ID]

[設定値]

  • TRANS_ID ... 通知設定の識別子
  • SW
    • on ... 送信した内容をsyslogに出力する
    • off ... 送信した内容をsyslogに出力しない

[説明]

TRANS_IDに対応する通知設定のログ出力に関する設定を行う。SWを'on'にした場合、生存通知を送信する際にINFOレベルのsyslogを出力する。

TRANS_IDを省略した場合は全ての通知設定が適用対象となる。ただし、TRANS_IDを個別に指定した設定の方が優先して適用される。

[初期値]

off

受信設定の定義

[書式]

heartbeat2 receive RECV_ID [crypto CRYPTO_KEY] auth AUTH_KEY
no heartbeat2 receive RECV_ID

[設定値]

  • RECV_ID ... 受信設定の識別子
  • CRYPTO_KEY ... ASCII文字列で表した暗号鍵(1~32文字)
  • AUTH_KEY ... ASCII文字列で表した認証鍵(1~32文字)

[説明]

生存通知の受信設定を定義する。受信処理を行う際は、通知パケットに含まれる送信側の設定識別子(TRANS_ID)を元に、同じRECV_IDを持つ本コマンドの設定を使用して復号化、認証チェックが行われる。

対応する送信側の設定としてheartbeat2 transmitコマンドを設定する際には、TRANS_IDが本コマンドのRECV_IDと一致していなければならない。また同様に、CRYPTO_KEY、AUTH_KEYも一致させる必要がある。

本コマンドは受信に最低限必要なパラメータをRECV_IDに紐付けて定義するためのものである。実際に受信処理を有効にするにはhertbeat2 receive enableコマンドを設定する必要がある。

[初期値]

設定されていない

受信設定の有効化

[書式]

heartbeat2 receive enable RECV_ID_LIST
no heartbeat2 receive enable

[設定値]

  • RECV_ID_LIST ... 有効にしたい受信設定の識別子のリスト
    • 1個の数字、または間に - をはさんだ数字(範囲指定)、およびこれらを任意に並べたもの(128個以内)

[説明]

定義した受信設定から実際に有効にしたいものを指定する。識別子のリストは空白で区切って128個まで指定することができる。

[初期値]

設定されていない

受信間隔の監視設定

[書式]

heartbeat2 receive monitor TIME
heartbeat2 receive monitor RECV_ID TIME
no heartbeat2 receive monitor [TIME]
no heartbeat2 receive monitor RECV_ID TIME

[設定値]

  • RECV_ID ... 受信設定の識別子
  • TIME ... 監視時間
    • 秒数(30..21474836)
    • off ... 受信間隔を監視しない

[説明]

RECV_IDに対応する受信設定における受信間隔の監視設定を行う。監視が有効な場合は、指定した時間内に生存通知が届かないときINFOレベルのsyslogを出力してSNMPトラップを送出する。

RECV_IDを省略した場合は全ての受信設定が適用対象となる。ただし、RECV_IDを個別に指定した設定の方が優先して適用される。

[初期値]

off

通知を受信した際にログを記録するか否かの設定

[書式]

heartbeat2 receive log [RECV_ID] SW
no heartbeat2 receive log [RECV_ID]

[設定値]

  • RECV_ID ... 受信設定の識別子
  • SW
    • on ... 受信した内容をsyslogに出力する
    • off ... 受信した内容をsyslogに出力しない

[説明]

RECV_IDに対応する受信設定のログ出力に関する設定を行う。SWを'on'にした場合、生存通知を受信する際にINFOレベルのsyslogを出力する。

RECV_IDを省略した場合は全ての受信設定が適用対象となる。ただし、RECV_IDを個別に指定した設定の方が優先して適用される。

[初期値]

off

同時に保持できる生存情報の最大数の設定

[書式]

heartbeat2 receive record limit NUM
no heartbeat2 receive record limit

[設定値]

  • NUM ... 生存情報の最大保持数(RTX5000:64..10000、それ以外の機種:64..1000)

[説明]

受信した生存情報を同時に保持できる最大数を設定する。生存情報数が最大に達した状態では新規の情報を取り込むことができない。そのような場合はclear heartbeat2コマンドで不要な情報を削除する必要がある。

[初期値]

64

生存通知の状態の表示

[書式]

show status heartbeat2
show status heartbeat2 id RECV_ID
show status heartbeat2 name STRING

[設定値]

  • RECV_ID ... 受信設定の識別子
  • STRING ... 文字列(1~64文字/ASCII、1~32文字/シフトJIS)

[説明]

受信した生存通知の情報を表示する。

第1書式では保持している全ての情報を表示する。
第2書式では指定の受信設定により受信した情報のみ表示する。
第3書式では指定の文字列が通知名称に含まれる情報のみ表示する。

STRINGにはASCII文字だけではなく、シフトJISで表現できる範囲の日本語文字(半角カタカナを除く)も使用できる。ただし、console characterコマンドの設定がsjisの場合にのみ正しく動作し、他の設定では誤動作する場合がある。

生存通知の状態のクリア

[書式]

clear heartbeat2
clear heartbeat2 id RECV_ID
clear heartbeat2 name STRING

[設定値]

  • RECV_ID ... 受信設定の識別子
  • STRING ... 文字列(1~64文字/ASCII、1~32文字/シフトJIS)

[説明]

受信した生存通知の情報をクリアする。

第1書式では保持している全ての情報をクリアする。
第2書式では指定の受信設定により受信した情報のみクリアする。
第3書式では指定の文字列が通知名称に含まれる情報のみクリアする。

STRINGにはASCII文字だけではなく、シフトJISで表現できる範囲の日本語文字(半角カタカナを除く)も使用できる。ただし、console characterコマンドの設定がsjisの場合にのみ正しく動作し、他の設定では誤動作する場合がある。

設定例

アドレス不定のルーターの生存を確認する

ネットワーク構成

         ┌─────┐
         |ルーターA |
         └─────┘
 センター側   | lan2
----------------------------
              | 10.0.0.1/28(固定)
    ―――――――――――
  /                      \
 |    インターネット      |
  \                      /
    ―――――――――――
              | PPPoE/IPCP/NAT(NATの外側アドレス:10.0.11.121)
----------------------------
 拠点-A       | lan2
         ┌─────┐
         |ルーターB |
         └─────┘

設定

  • ルーターA
    heartbeat2 receive 101 crypto crypto-A auth auth-A
    heartbeat2 receive monitor 1 300
    heartbeat2 receive enable 101
    heartbeat2 receive record limit 128
    
  • ルーターB
    heartbeat2 myname 拠点-A
    heartbeat2 transmit 101 crypto crypto-A auth auth-A 10.0.0.1
    heartbeat2 transmit interval 101 60
    heartbeat2 transmit log 101 on
    heartbeat2 transmit enable 101
    

ルーターAのshow status heartbeat2

# show status heartbeat2
 エントリ数: 1/1
 '?': 監視時間内に通知がない
 受信ID                  名称           IPアドレス          最終受信時刻        間隔(秒)
----------------------------------------------------------------------------------------
    101                拠点-A          10.0.11.121      2006/07/20 21:37:48       60

#

unnumbered接続の例

ネットワーク構成

              |lan1 192.168.100.1/24
         ┌─────┐
         |ルーターA |
         └─────┘
 センター側   | bri1
----------------------------
              | unnumbered
        ―――――――
      /              \
     |     ISDN       |
      \              /
        ―――――――
              | unnumbered
---------------------------
 拠点-B       | bri1
        ┌─────┐
        |ルーターC |
        └─────┘
              | lan1 192.168.101.1/24

設定

  • ルーターA
    heartbeat2 receive 201 crypto crypto-B auth auth-B
    heartbeat2 receive monitor 201 600
    heartbeat2 receive enable 201
    
  • ルーターB
    heartbeat2 myname 拠点-B
    heartbeat2 transmit 201 crypto crypto-B auth auth-B 192.168.100.1
    heartbeat2 transmit interval 201 45
    heartbeat2 transmit enable 201
    ip filter 1 restrict * 192.168.100.1 udp * 8512  # 切断時は生存通知をブロック
    ip filter 100 pass * * * * *                     # その他の通信は通す
    pp select 1
     ip pp secure filter out 1 100                   # フィルタの適用
    

ルーターAのshow status heartbeat2

# show status heartbeat2
 エントリ数: 1/1
 '?': 監視時間内に通知がない)
 受信ID                  名称           IPアドレス          最終受信時刻        間隔(秒)
----------------------------------------------------------------------------------------
    201                拠点-B        192.168.101.1      2006/07/20 21:37:48       45

#

SYSLOGメッセージ一覧

本機能において出力されるSYSLOGメッセージの一覧を以下に示します。なお、実際に出力される各メッセージの先頭には"[HEARTBEAT2] "というプレフィックスが付与されます。

レベル 出力メッセージ 内容
INFO Send to DEST_ADDR: NAME IP_ADDRR 自身の情報(NAMEとIP_ADDR)を含めた生存通知をDEST_ADDR宛てに送信した。
Cannot resolve the host name: FQDN 送信先に指定されたホスト名(FQDN)の名前解決ができない。
Cannot transmit: DEST_ADDR (FQDN) DEST_ADDR(FQDN)宛ての生存通知パケットが送信できない。
Received from NAME IP_ADDR NAME、IP_ADDRの情報を持つホストから生存通知を受信した。
Not received for a given period: NAME IP_ADDR NAME、IP_ADDRのルーターから監視時間内に生存通知を受信していない。
Received IP address is changed from PREV_ADDR to NEW_ADDR : NAME NAMEのルーターから通知されたIPアドレスがPREV_ADDRからNEW_ADDRへ変更された。
Resumed the receiving from NAME IP_ADDR 監視時間を超えて生存通知がない相手からの生存通知が再開され通知パケットを受信した。
DEBUG Digest is wrong : SRC_ADDR SRC_ADDRから受信した生存通知のダイジェストが不正。
Format is wrong : SRC_ADDR SRC_ADDRから受信した生存通知の内容が解析不能。
Detected duplicate session, ignored: NAME 前回の通知の複製と見られるため破棄した。

既知の不具合

  1. 生存通知の送信先ホストがFQDN指定の場合、通知できない場合がある
    • heartbeat2 transmitコマンドにより送信先ホストをFQDNで指定した場合、そのホストに対して全く通知できない場合があります。
      より確実に通知するためには、送信先ホストをIPアドレスで指定するようにしてください。

ページトップへ戻る