http://www.rtpro.yamaha.co.jp/RT/docs/relnote/Rev.07.00/relnote_07_00_29.html
Revision : 07.00.29
Release : Dec 2003, ヤマハ株式会社

RTX1000/RTX2000 Rev.7.00.29 リリースノート


Rev.7.00.26からの変更点


■仕様変更

  1. ipsec ike xauth mynameコマンドで、ユーザ名やパスワードの最大文字数を31から32に変更した。

  2. IKEで0から255の範囲のSPIを割り当てないようにした。RFC2406 2.1によれば、これらの値は予約されていて使用することができない。

  3. OSPFの設定で、ospf areaコマンドで認証が必要という設定をしているにも関わらず、ip INTERFACE ospf areaコマンドで認証データの設定を行わなかった場合には、そのインタフェースからはOSPFパケットの送受信がまったく行われないようにした。従来はこの設定では認証をまったく行わずにパケットの送受信を行っていた。

  4. OSPFのMD5認証で、シーケンス番号の生成方式を、パケットの送信時刻の秒数か、単調増加方式かを選べるようにした。ip INTERFACE ospf areaコマンド、およびospf virtual-linkコマンドにオプション'md5-sequence-mode=MODE'を追加する。MODEとして指定できるのは以下の2つになる。

    Rev.7.00.26だけは、'increment'の動作となっている。それ以外のリビジョンでは'second'の動作となっている。

  5. RTX2000で、マイクロエンジンによるファストパスをまったく使わないようにできるようにした。ip routing processコマンドを'normal'と設定する。デフォルトは'fast'。

  6. RTX2000で、IPsecトンネル向きのパケットをフラグメントする必要がある時に、スローパスにパケットを回すのではなく、ファストパスの中でフラグメントするようにした。スループット向上と、パケット順序の入れ替わり防止になる。

  7. RTX1000でも、show environmentコマンド、SNMPプライベートMIBでCPU使用率を計測できるようにした。


■バグ修正

  1. 以下のバグを修正した。

    また、以下の修正を行なった。

  2. DHCPクライアント機能を動作させていない状態で、show status dhcpcコマンドを実行すると、実際に表示されるのは1行だけなのに、「---つづく---」と表示されmore機能が動作してしまうことがあるバグを修正した。more機能が動作するかどうかは、直前に実行した他のshow系コマンドの表示行数に依存する。また、DHCPクライアント機能が動作している場合にはこの問題は発生しない。

  3. show status ppコマンドでanonymousインタフェースの状態を表示するとき、接続先の回線番号が確定しているにもかかわらず、相手番号の欄に「???」という表示が出ることがあるのを修正した。

  4. TFTPにより設定ファイルを送り込む時に、console lines、console columnsおよびconsole characterの3つのコマンドが、設定ファイル内に記述したsaveコマンドではルータの不揮発性メモリに保存できないバグを修正した。

    これら3コマンドの設定変更は動作上は反映されており、設定ファイルを送り込んだ後に、ログインしたコンソールからsaveコマンドを実行すれば保存することができる。ただし、これら3コマンドはコンソール毎にそれぞれ状態が保存されているので、設定ファイルを送り込む前からログインしていた場合には、saveコマンドによって保存されるのはそのコンソールが持つ状態となり、TFTPにより送り込まれた設定は保存できない。

  5. TFTPでルータの設定を取得するとき、設定ファイルのサイズが512バイトの倍数になっていると「Rejected access from ... 」というメッセージをsyslogに出力して転送を停止するバグを修正した。このとき、ルータは端末に対して「Undefined error code」というエラーメッセージを送信する。

  6. telnetd host、telnetd listen、telnetd serviceの各コマンドを実行すると、デバッグログに以下のログが記録されるバグを修正した。このログが記録されていても動作上の問題はない。

    	[TELNETD] Invalid Message Code = 0x00002204
    

  7. シリアルコンソールなどの低速な操作系でping6コマンドを実行するとき、多数のEcho-Replyを受信し続けると、やがてEcho-Requestを送信しなくなるバグを修正した。^Cでping6の実行を止めると正常な状態に戻る。

  8. グローバルアドレスに対してping6コマンドを実行するときに、回数を指定するパラメータが機能せず、^Cを押すまで動作が終了しないバグを修正した。

  9. rdateコマンドが、相手先IPアドレスが間違っているなどで失敗した場合に、TCP関連のリソースを消費してしまうバグを修正した。失敗が重なると、TELNETサーバなど他のTCPアプリケーションがすべて使えなくなるバグを修正した。

  10. ip routeコマンドでnameオプションとhideオプションの両方を付けた経路を複数設定すると、それらの経路のhideの状態が同期するバグを修正した。

  11. lan backupコマンドでキープアライブとしてicmp-echoを選び、downwait、upwaitパラメータを指定する設定を保存して再起動すると、正しくキープアライブはできているのにバックアップ状態に移行してしまうバグを修正した。

  12. hideオプションを指定した経路が一度でも有効になると、その後はhideの状態に関係なく、常にルーティングで使用するようになるバグを修正した。

  13. pp auth request chap arrive-onlyと設定したときに、発信側であってもCHAPの認証を接続相手に要求するバグを修正した。

  14. ルータ自身を終端とするTCP通信で、MSSのネゴシエーションが正しくできていないバグを修正した。

  15. IPv6のIPsecトンネルインタフェースから受信したパケットの終点アドレスが、そのインタフェースに設定されているリンクローカルアドレスと一致するときに、そのパケットをLAN1インタフェースから受信したものとして扱うバグを修正した。このバグの影響により、トンネルインタフェース経由で接続先のリンクローカルアドレスに対してpingやTELNETを実行しても応答がないという問題があった。

  16. IKEのICMPキープアライブでメモリリークが発生するバグを修正した。この問題が発生する条件は、下記のように、ICMPキープアライブを設定している拠点数に依存する。

    拠点数が2〜64のときには、ICMPキープアライブで設定したIPアドレスのハッシュ値に依存する。IPアドレスのハッシュ値は次のように計算できる。

    	ハッシュ値 = A[2..8] XOR A[10..16] XOR A[18..24] XOR A[26..32]
    
    	※ ここで、A[i..j]はIPアドレスの2進数表現におけるi〜jビット
    	   を切り出した2進数を表し、XORは排他的論理和を表す。
    

    ICMPキープアライブで設定したIPアドレスのハッシュ値が同じ拠点があれば発生し、そうでなければ発生しない。

    例えば、次の設定では、ハッシュ値はともに2進数で1101001となり、この問題の起きる条件に合致する。

    	ipsec ike keepalive use 1 on icmp-echo 192.168.0.1
    	ipsec ike keepalive use 2 on icmp-echo 192.168.128.1
    

  17. IKEで鍵交換の要求が集中したときに、IKEキープアライブのパケットが破棄されて、トンネルインタフェースが切断されやすくなる現象を改善した。

  18. IPsecでキープアライブを使う設定で、ipsec ike local addressコマンドで自分側のIPアドレスをPPインタフェースに付与されたアドレスに指定している時に、pp disable コマンドでPPインタフェースを使用不可に設定すると、キープアライブパケットを送信するタイミングでリブートするバグを修正した。

  19. IKEでPFSを使用する設定の場合、鍵交換が終了して新しい鍵を使い始めるまでに500ms程度の時間が必要だったのを、数ms程度まで短縮した。接続相手が高速な機器で、新しい鍵を使い始めるのが早い場合には、最大500ms程度の通信断が発生していたのがこれで解消される。

  20. IPsec関係の設定の変更と同時にトンネルインタフェースがダウンするにもかかわらず、「IP Tunnel Down」というsyslogを出力しないバグを修正した。

  21. IPsecトンネルで、プロトコルとしてAHで通信している時に、ipsec sa policyコマンドでプロトコルの設定をESPに変更するとリブートしてしまうバグを修正した。

    設定をESPからAHに変更したり、あるいは、ESP/AHのレベルは変更せず、アルゴリズムだけを変更するといった場合には問題は発生しない。また、トランスポートモードでも問題はない。

  22. OSPF/BGP4でのルータIDは、ospf router idコマンドなどで明示していない限り、ルータのインタフェースに付与されたIPv4アドレスの中から選ぶ仕様になっているが、その際、起動時あるいはospf/bgp configure refreshコマンド投入時にインタフェースがアップしていないインタフェースは選択から除外されていた。そのため、LANケーブルがすべて外れているなど、アップしているインタフェースが一つもない場合には、インタフェースに付与されたアドレスとは関係の無い、不定なIPv4アドレスがルータIDとして選ばれてしまい、その後のOSPF/BGP4の動作が正しく行なえないバグがあった。

    そこで、アップしているインタフェースが一つもない状態の時には、LANインタフェースに付与されたIPv4アドレスをインタフェースがアップしていなくても利用するようにした。LANインタフェースは若番からサーチする。

  23. OSPFで、ospf import from staticコマンドにより静的経路を外部経路として広告する設定で動作している時に、clear ip dynamic routingコマンドを投入したり、あるいはすでに存在する静的経路に対してまったく同じ内容のip routeコマンドを投入した後に、ospf configure refreshコマンドでOSPFを再起動すると、リブートすることがあるバグを修正した。

  24. OSPFで、ip INTERFACE ospf areaコマンドでエリアに参加しているLANインタフェースの経路については、リンクがアップしている時には他のOSPFルータに広告され、リンクがダウンしている時には広告されないのが正しい動作である。しかし、起動時もしくはospf configure refreshコマンド実行時にリンクがアップしていないLANインタフェースの経路が広告されてしまうバグを修正した。

    間違って経路が広告されているインタフェースも、いったんリンクがアップし、その後リンクダウンとなると経路が広告されなくなる。

  25. OSPFで、インタフェースで指定したOSPFエリアがospf areaコマンドで設定されていないなど、設定が正しくない状態で起動、あるいはospf configure refreshコマンドが実行された時には、OSPFがまったく動作しないように変更した。

    従来は不完全な設定のままOSPFを動作させようとしていたため、設定の内容によってはルータがリブートしてしまうことがあるなどの不具合があった。

    この変更により、従来は動作していた設定でもOSPFが動作しなくなることがある。その場合は、設定に何らかの間違いがあるので設定内容の見直しが必要となる。

  26. RT自身がTELNETやBGP-4などのためにTCPの端点となって通信を行っている時に、何らかの理由でTCPパケットを送信するためのメモリがRT内部で確保できなくなるとリブートしてしまうバグを修正した。システム負荷が高い時にBGP-4で経路交換を行おうとした時などが該当する。修正後は、そのような状況が発生しても、その時にTCPパケットを送信できないだけで、負荷が下がればまたTCP通信を再開できるようになっている。

  27. BGP-4で、LANインタフェースのリンクがダウンしたまま起動したときに、そのインタフェースに対応する経路を通知するバグを修正した。本来は、リンクがダウンしているLANインタフェースの経路を通知してはいけない。一度でもLANインタフェースのリンクがアップすると、その後は正しく動作し、インタフェースの状態に対応する経路情報を通知するようになる。

  28. BGP-4で、静的経路をBGP-4に広告する設定をしている時に、bgp neighborコマンドで指定している隣接ルータのIPアドレスをゲートウェイとする静的経路が存在すると、その経路以外の静的経路がBGP-4に広告されなくなるバグを修正した。

    例えば、以下のような設定の場合に、デフォルト経路以外の、100.1.1.0/24宛や100.2.2.0/24宛の経路が広告されなくなってしまう。

    	ip route default gateway 10.1.1.2
    	ip route 100.1.1.0/24 gateway 192.168.0.3
    	ip route 100.2.2.0/24 gateway 192.168.0.4
    	ip lan1 address 192.168.0.1/24
    	ip lan2 address 10.1.1.1/24
    	bgp use on
    	bgp autonomous-system 1001
    	bgp neighbor 1 1000 10.1.1.2
    	bgp import 1000 static filter 1
    	bgp export filter 1 include all
    	bgp export 1000 filter 1
    

  29. unnumberedなPPPoEインタフェースでICMP EchoによるPPキープアライブを使用するとき、ICMP Echoに対応するICMP Echo Replyを受信できず、障害の発生を検知すると、その後に送信するICMP Echoの始点IPアドレスが0.0.0.0になるバグを修正した。PPPoEインタフェースを再接続すると正常な状態に戻る。

  30. PPPoEの接続完了の直後にPPPパケットを受信すると、それを処理できずに無視してしまうために、PPPの再送をまつ必要があり最終的に接続できるまで余計な時間がかかることがあるバグを修正した。

  31. PPPoEセッションの切断中に相手からPPPoEのデータパケットを受信すると、切断処理が完了できずに、その後の再接続もできなくなるバグを修正した。なんらかの理由により、送信パケットが相手に届かない状態が続いたときに、LCP EchoReqパケットが届かないためにキープアライブによる切断が起動され、PPPのLCP TermReqもPPPoEのPADTも相手に届かずに、こちらは「切断中」、相手は「通信中」、という状態の矛盾が発生したときに問題の現象が発生していた。

  32. IPマスカレードで、内側ホストが異なるエントリのTTLが同期してしまうバグを修正した。

  33. NATで、ICMPのエラーパケットを処理するときに、先頭のIPヘッダを変換する必要がなければ、ICMPのデータ部に格納されたIPヘッダも変換しないバグを修正した。実際には、先頭のIPヘッダを変換する必要がなくても、データ部のIPヘッダを変換しなければならない場合が存在する。

    このような具体的な例として、次のケースがある。

        PC -------- Router(1) ------------- Router(2) ----------- Server
           A1      :         : A2        A3           MTU=1280  A4(VA)
                   :         :
                 NAT(1)    NAT(2)
                 A4<->V4   A1<->A2
    

    ここでPCがServerに対して送信したIPパケットにDFビットがセットされており、長さが1280バイトを超えるとすると、Router(2)はA2に対してICMP Destination Unreachableを送信する。このICMPパケットは、先頭から順に次のような内容になる。

    IPヘッダ始点アドレス: A3、終点アドレス: A2
    ICMPヘッダDestination Unreachable
    IPヘッダ(ICMPのデータ部)始点アドレス: A2、終点アドレス: A4

    このICMPパケットがRouter(1)に到着したとき、まずNAT(2)のルールにしたがって、次のように変換する必要がある。

    IPヘッダ始点アドレス: A3、終点アドレス: A1 (A2をA1に変換)
    ICMPヘッダDestination Unreachable
    IPヘッダ(ICMPのデータ部)始点アドレス: A1、終点アドレス: A4 (A2をA1に変換)

    次に、NAT(1)のルールにしたがって、次のように変換する必要がある。

    IPヘッダ始点アドレス: A3、終点アドレス: A1
    ICMPヘッダDestination Unreachable
    IPヘッダ(ICMPのデータ部)始点アドレス: A1、終点アドレス: VA (A4をVAに変換)

    このとき、変換する必要があるのはICMPのデータ部のIPヘッダだけであり、先頭のIPヘッダは変換する必要がない。

  34. IPマスカレードの外側IPアドレスに対してICMP ECHOを受信した時に返送するICMP ECHO REPLYパケットのTTLの値が、受信したICMP ECHOパケットのTTLの値と同じ値になっていたのを、IPマスカレードの設定がない場合などと同じ64になるように変更した。

  35. NAT/IPマスカレードで内側から外側にICMPエラーを転送する時に、始点IPアドレスがNAT/IPマスカレードの外側アドレスになるようにした。

  36. VRRPで、1つのLANインタフェースに2つ以上のグループを設定している場合、一方のグループでシャットダウントリガが成立してバックアップ状態に移行すると、他方のグループもシャットダウンしてバックアップ状態になってしまうことがあるバグを修正した。

  37. IPv4 over IPv4トンネルで処理したパケットが再び同じトンネルインタフェースにルーティングされるとリブートするバグを修正した。設定間違いなどの理由で経路がループすると発生する。

  38. RT自身がDNSのクライアントとなる場合、および、DNSリカーシブサーバとして動作している場合に、上位のDNSサーバに対しての問い合わせがタイムアウトして失敗するような状況になっていると、ルータ全体の動作が不安定になってしまうバグを修正した。

    DNS問い合わせがタイムアウトする状況とは、以下のような原因が考えられる。

    また、ルータ全体の動作が不安定になっている時には以下のような現象が現れる。

  39. PCが複数のDNS問い合わせパケットを同じ始点IPアドレス、始点ポート番号で連続して送信すると、先頭のパケットだけがトリガとして扱われ後続のパケットがトリガにならないため、後続のパケットに対するレスポンスパケットを動的フィルタで通せないことがあるバグを修正した。

    Windows XPおよびWindows 2000がDNSクライアントである場合に顕著に現象が発生する。この現象が発生すると、DNSレスポンスパケットがフィルタで落されたログが記録される。

  40. IPv6でRIPngを使う設定をしている時に、LANインタフェースのリンクがアップすると、DADによるリンクローカルアドレスの確認が終了する前にRIPng が動き出してしまい、DADが終了するまでの間、別のインタフェースに付与されたリンクローカルアドレスを始点IPv6アドレスとする正しくないRIPngのパケットを送出してしまうバグを修正し、DADが終了するまではRIPngパケットを送出しないようにした。

    LAN以外のインタフェースではDAD手順はなく、インタフェースがアップしたらすぐにリンクローカルアドレスが使用できるようになるのでこの問題は発生しない。

  41. RTX1000で、IPsecとPPTPを同時に使用するとリブートすることがあるバグを修正した。

  42. RTX1000で、PPTPで大量のトラフィックを扱う時に、動作が不安定になることがあるのを修正した。

  43. RTX1000で、ISDNリモートセットアップで接続をしている状態でPP[01]を接続すると、誤ったタイミングで切断タイマによりPP[01]が切断されるバグを修正した。

  44. RTX1000のPPTP接続で、MS-CHAPv1、MS-CHAPv2で認証の要求が来るとpp auth acceptコマンドの設定に関わらず、無条件に要求された認証方式で認証を行うバグを修正した。

  45. RTX1000で、時計が過去に戻ってしまうことがあるバグを修正した。

  46. RTX1000で、ほぼ同時に複数の対地とPPTPの接続処理を開始すると、そのうちのいくつかの対地に対してはCCPのネゴシエーションに失敗して接続できないことがあるバグを修正した。

  47. RTX1000の動的フィルタで、TCPヘッダのシーケンス番号のチェック、netmeeting対応、SMTPの不正アクセス検知が動作しなくなっていたのを修正した。

  48. RTX1000で、RADIUSによるフィルタの指定機能が働かなくなっているバグを修正した。Rev.7.00.13でエンバグ。

  49. RTX1000で、BRI専用線をpp bindコマンドでバインドし、ppp mp use onコマンドを設定したPPインタフェースに対しinterface reset ppコマンドを実行するとエラーになるバグを修正した。

  50. RTX2000で、101以上のトンネル番号のトンネルで、tunnel backupコマンドによりバックアップを指定していると、バックアップ状態になる処理の中で不正なメモリアクセスが発生しその後の動作が不安定になることがあるバグを修正した。

  51. RTX2000のIPsecで、まれにパケットロスが発生するバグを修正した。

  52. RTX2000で、IPsecの受信側で処理しきれない程のトラフィックを受信していると、そのトラフィックが収まった後でも通信できなくなることがあるバグを修正した。

  53. RTX2000で、IPsec通信と鍵交換処理、トンネルキープアライブ処理が重なると暗号通信がハングアップしてしまうことがあるバグを修正した。

  54. RTX2000で、LAN1.1以外のポートの受信パケット数と受信データサイズのカウンタが正しくカウントされないバグ、およびエラーカウンタが間違ってカウントされることがあるバグを修正した。

  55. RTX2000で、OSPFなどにより大量の経路の追加、削除が発生した時にリブートしてしまうことがあるバグを修正した。

  56. RTX2000で、lan backupコマンドでバックアップ先をPPに指定している時に、バックアップされる経路のゲートウェイのARPが新たに追加されたり、更新されたりするとリブートしてしまうバグを修正した。

  57. RTX2000で、PP 1以外のPPでNATの設定を行っても、再起動するまでNAT変換動作を行わないバグを修正した。

  58. RTX2000で、以下の場合にパケットを正しく転送できず、デフォルト経路が設定されているゲートウェイに転送してしまうバグを修正した。

    例えば、以下のような場合に、10.0.0.1宛のパケットを転送するゲートウェイを、正しくは192.168.100.2であるところを192.168.100.1宛に間違えてしまっていた。

    	ip route default gateway 192.168.100.1
    	ip 10.0.0.0/8 gateway 192.168.100.2
    	ip 10.10.0.0/16 gateway 192.168.100.3
    

  59. RTX2000で、UDPでチェックサムフィールドが0であるパケットに対して、ファストパスでNATやIPマスカレードの変換処理をする時に、間違ったチェックサムを設定してしまうバグを修正した。間違ったチェックサムが設定されたパケットは受信側で破棄されるので、結果として通信できなくなる。

    この修正後は、UDPでチェックサムフィールドが0であるパケットをファストパスでNATやIPマスカレードの変換処理をする場合は、チェックサムを0のままにする。スローパスでの処理では、正しいチェックサムを再計算して付ける場合もある。

    UDPでチェックサムフィールドが0であるパケットは、通常のPCのアプリケーションから送信されることはもうほとんどなくなっているが、一部のネットワーク機器でまだ利用されていることがある。

  60. RTX2000で、パケットの受信がまったくできなくなることがあるバグを修正した。その場合でもRTX2000からのパケット送信は可能である。この現象が発生する前には、以下のようなログが記録されることがある。ログの括弧内には16進数が出力されるが、その値に意味はない。

    	LAN1.1: invalid descriptor (xxxx)
    

    この現象は、以下の条件の時にまれに発生する。

  61. RTX2000で、PPPoE接続をしている場合に、PPPoEの向こう側にいるホストとIPv4 over IPv4トンネルで接続しようとしても通信できないバグを修正した。

  62. RTX2000で、ip INTERFACE tcp mss limitコマンドやpppoe tcp mss limitコマンドによるMSS書き換え機能で、本来であれば書き換えるべきMSS値よりも小さなMSS値を受信した時には書き換えずにそのまま転送すべきところを、強制的に書き換えてしまうバグを修正した。

    例えば、トンネルインタフェースで受信したパケットをPPPoEインタフェースに転送する場合に、それぞれのMSS値がトンネルでは1240、PPPoEでは1414という値になっていたとすると、トンネルを通ったために1240になったMSSはPPPoEを通っても1240のままでなくてはいけないが、1414に書き換えられてしまうというバグである。

  63. RTX2000で、PPPoEで送信するPADIなどに含まれるService-Nameタグの長さフィールドのバイトオーダが逆になるバグを修正した。