RTX1500でIEEE802.1Qタグ付きパケットを扱うことができる機能を実装した。詳細な仕様は下記URLを参照のこと。
インタフェースの説明を設定しておく、descriptionコマンドを新設した。
INTERFACE ... | LANインタフェース名、'pp'、'tunnel' |
DESCRIPTION ... | 説明の文字列 |
dhcp scopeコマンドにおいて"except IPアドレス-IPアドレス"と指定する事で除外IPアドレスを範囲指定出来るように機能拡張した。"except IPアドレス"の場合は、従来通りそのIPアドレスだけを除外する。
スコープ番号 = 1-65535 |
範囲 = IPアドレス範囲 |
時間 = 1-21474836 or 'infinity' |
除外IPアドレスはスペースで区切って複数指定できる。除外IPアドレスは範囲指定できるが、スコープの範囲を超えたり、重複して指定する事はできない。
ARPが解決されるまでの間に送信を保留しておくパケットの数を制御するコマンドを新設した。
INTERFACE ... | LANインタフェース名 |
LEN ... | キュー長、0〜10000 |
LANインタフェースを利用できなくすることができるコマンドを新設した。
LAN-IF ... | LANインタフェース名 |
PORT ... | ポート番号、スイッチングハブを搭載するLANインタフェースでのみ有効 |
IPv6のDAD(Duplicate Address Detection)の送信回数を設定できる機能を追加し、以下のコマンドを新設した。
IKEで、同時に始動できるフェーズ1の最大数を設定できるようにした。この機能を実現するために、ipsec ike retryコマンドの仕様を次のように変更する。
COUNT ... | 再送回数(1..50) |
INTERVAL ... | 再送間隔の秒数(1..100) |
MAX_SESSION ... | 同時に動作するフェーズ1の最大数(1-5) |
TCPのコネクションレベルのsyslogを出力する機能を追加した。
SWITCH ... | on TCPコネクションのsyslogを出力する
off TCPコネクションのsyslogを出力しない |
||||||||||||||||||||||||||||||||||||||||
SRC_ADDR ... | 始点IPアドレス
|
||||||||||||||||||||||||||||||||||||||||
DST_ADDR ... | 終点IPアドレス(SRC_ADDRと同じ形式)、省略時は1個の*と同じ | ||||||||||||||||||||||||||||||||||||||||
MASK ... | IPアドレスのビットマスク、省略時は0xffffffffと同じ
SRC_ADDR及びDST_ADDRがネットワークアドレスの場合にのみ指定可能 |
||||||||||||||||||||||||||||||||||||||||
TCPFLAG ... | フィルタリングするTCPパケットの種類
|
||||||||||||||||||||||||||||||||||||||||
SRC_PORT_LIST ... | TCPのソースポート番号
|
||||||||||||||||||||||||||||||||||||||||
DST_PORT_LIST ... |
TCPのデスティネーションポート番号
SRC_PORT_LISTと同じ形式 |
tcp log on * * tcpsyn * 1723 (PPTPのポートにSYNが来ているか) tcp log on * * tcpflag!=0x0000/0x0007 (FIN,RST,SYNの立ったTCPパケット) tcp log on (全てのTCPパケット。tcp log on * * * * *と同じ)
[TCP] RECV (SYN) in LISTEN 133.176.178.241:63541 > 133.176.178.240:1723 [TCP] SEND (SYN,ACK) in LISTEN 133.176.178.240:60001 > 133.176.178.241:1723 [TCP?] RECV (SYN) 192.168.100.50:1062 > 192.168.100.1:21 [TCP?] SEND (RST,ACK) 192.168.100.1:21 > 192.168.100.50:1062
ip routeコマンドでIPアドレスをゲートウェイとする静的経路の設定を行なう時に、経路の出力インタフェースはコマンド投入時点での経路テーブルから検索する仕様になっており、一度インタフェースが確定すると、その後変更しないようになっていた。しかし、この動作では、ip routeコマンドが、ゲートウェイが接続されているインタフェースに対するアドレスの設定よりも先に行なわれた場合に、本来のインタフェースとは別のインタフェースに向いてしまうことがある。そのため、インタフェースのIPアドレスが設定され、implicit経路が追加された時には、インタフェースが確定している経路についても再度経路の検索をやり直し、正しいインタフェースに向かうように修正した。
修正以前でも、設定を保存し、再起動すれば経路は正しいインタフェースに向くようになっている。
問題となる動作の例:
以下のような順序で設定を行なった時に、192.168.100.0/24の経路は本来はLAN2インタフェースに向いて欲しいが、LAN1インタフェースへ向いてしまう。
ip lan1 address 192.168.0.1/24 ip route default gateway 192.168.0.2 ip route 192.168.100.0/24 192.168.1.2 ip lan2 address 192.168.1.1/24
SYN/FIN/RSTのいずれかがセットされているTCPパケットが通過した時、該当するフローをノーマルパスに回してフローテーブルのTTLを30秒に変更するようにした。
ノーマルパスにおけるIPsecの暗号化処理で、付加するパディングのサイズとしてDES/3DESの場合に8、AESの場合に16バイトを付加していたケースを、それぞれ0バイトになるように変更した。変更前でもRFC上問題にはならないが、暗号化後のパケットのサイズが大きくなるため、通信速度やフラグメントされやすくなるといった点で不利ではあった。ファストパス処理では、従来から0バイトになるように処理されている。
MMI関連で以下のバグを修正した。
configのput/get時に利用される管理パスワードが、現在動作している設定内容ではなく、FlashROMに保存されている内容になっているバグを修正した。動作中に管理パスワードを変更した場合に、それをsaveコマンドで保存するまでは古いパスワードでないとconfigのput/getができなかった。
ip fragment remove df-bitコマンドの機能が、フローの先頭のパケットにはDFが立っておらず、その後のパケットにはDFが立っているという場合にファストパスでDFビットを削除できないバグを修正した。
pp always-onコマンドによりISDN経由で発呼した時に、ケーブル抜けを検出した場合は次回の発呼を10秒待ってから行うように変更した。従来はただちに行っていたため、短時間に多数の発呼を繰り返していた。これによりCPU使用率が100%となることがあった。
RTX1500では副次的に、リブートやcold start時にconfigが消えない症状が発生することがあった。
ファストパスを利用する設定になっている時に、LAN分割したインタフェースのうちlan1.2〜1.4のいずれかでPPPoEを利用する設定で、lan1.1のリンクがダウンしている時には、PPPoEセッションを張ることはできるが、実際の通信ができないというバグを修正した。
新しいセッションが次々と発生する環境において、処理能力以下の負荷であるにも関わらずファストパスでの通信がパケットロスすることがあるバグを修正した。
通信中にQoSの帯域の設定を変更すると遅延が発生するようになるバグを修正した。
LANインタフェースの帯域制御で、クラス毎のキュー長を257以上に設定した場合にそのクラスの保証帯域をわずかに保てないことがあるバグを修正した。
IPマスカレードを使用しかつ同じインタフェースにqueue type shapingの設定がある場合に発生する以下のバグを修正した。
nat descriptor masquerade incoming N discard
ARP解決ができない宛先に対するパケットに対して ICMP UNRECHABLEエラーを送信しようとするときにリブートするバグを修正した。
TELNETでルータにログインし、show logコマンドで大量のログを表示しようとするなどの、大量の出力を発生させるとリブートすることがあるバグを修正した。
LANインタフェースで、受信処理性能より高い負荷を受信した場合に、show status LANインタフェースコマンドで、実際には発生していないCRCエラーがカウントされることがあるバグを修正した。
ospf export fromコマンドで経路をフィルタして受け入れない設定の場合に、受け入れるべき経路までフィルタされてしまうことがあるバグを修正した。
具体的には、別のOSPFルータを間に挟む形になっていて隣接関係にはなっていない2台のOSPFルータで、一方のOSPFルータのフィルタの設定が、他方のOSPFルータへ到達するための経路Aは受け入れないが、そのルータが広告している経路Bは受け入れるという設定の場合に、本来なら経路Bは受け入れなくてはいけないのに受け入れることができていなかった。
MIB変数でLANインタフェースのifInOctets/ifOutOctetsが正しく与えられないバグを修正した。
プライベートMIBのMIB変数、yrhCpuTypeで適切な値が返せないバグを修正した。
IPv6のIKEで、aggressive modeやbase modeで送信するIDの型がID_IPV6_ADDR(5)ではなく、ID_IPV4_ADDR(1)になるバグを修正した。このとき、IDの内容は不正なIPv4アドレスとなる。ヤマハルータだけを使う場合には問題にならないが、他社製品と接続するときには、接続できない可能性がある。
ipsec ike local/remote idコマンドでIPv6ネットワークを設定したときに、送信するIDの型がID_IPV6_ADDR_SUBNET(6)ではなくID_IPV6_ADDR(5)になるバグを修正した。結果として、quick modeが確立しなくなる。
IPv6 over IPv6のIPsec ESPトンネルで、プロトコル識別子として4(IP)を利用していたのを、41(IPv6)に修正した。
この修正が反映される前後のファームウェアでは、IPv6 over IPv6 ESPトンネルでは相互に通信できなくなるので注意が必要である。
IPv6のRSを受信し、その返答としてのRAを送信するまでの間に、新たなRSを受信してしまうと、送信するはずのRAの送信時刻が遅れてしまうバグを修正した。数多くの端末が接続され一度に大量のRSを受信する環境では、この不具合により端末がRAを受信できず、プレフィックス取得に失敗する場合があった。
ipv6 dad retry countコマンドで0を設定しているとき、インタフェースにIPv6アドレスを設定しても、そのIPv6アドレスに対応するimplicit経路を設定しないバグを修正した。
終点IPアドレスがマルチキャストあるいはブロードキャストアドレスになっているUDPパケットを受信したがそれを処理できない時には、従来はアドレスの種類に関わらずデバッグログに
"can't receive UDP multicast packet"
と表示していたが、これをブロードキャストアドレスの場合には
"can't receive UDP broadcast packet"
と表示するよう変更した。
PPPoEの同時接続がセッション制限数を超えて可能であるバグを修正した。
WWWブラウザ設定支援機能の設定検証機能で、PPインタフェースに対してフィルタの設定が必要と判定したときに、間違ったコマンドを提案するバグを修正した。
状態メール通知機能の警告メールでModel名が誤って表示されるバグを修正した。
内蔵時計LSIのバックアップ電池の電圧が低下した場合に、起動時に行う内蔵時計LSIの初期化が行われていないバグを修正した。
初期化が行われていない場合内蔵時計LSIの動作は保証されないが、dateかtimeコマンドの実行で初期化の代用となる。つまり、一度でも日付か時刻の設定を行っていれば問題ない。