TCP_OSからSTCPに移行した人がすぐに気づくことは、TCP_OSのnetstatコマンドで表示されるTCP統計情報のセットが、STCPで表示されるものよりもかなり豊富であるということです。STCPのnetstat統計は、標準的なRFC-1213 TCP統計を表示します。重複したACK、重複したデータ、順不同のパケット、ウィンドウプローブ数などの統計情報は表示されません。しかし、統計情報の多くは、 analyze_system stcp_meters リクエストで表示される出力の一部として利用できます。以下のコマンドを試してみてください。
analyze_system -request_line 'stcp_meters -all -long' -quit
stratadocstcp_meters の引数と出力については、OpenVOS System Analysis (R073) のマニュアルに記載されています。データセットは TCP_OS コマンドと同じではありません。"再送で落とされた接続" のようないくつかのカウンタが欠けていますが、"window set zero after receive" のような新しいカウンタもあります。また、カウンタのパーセンテージが自動的に計算されて表示されるのも良い点の一つです。
TCP_OSとSTCPの両方のnetstat TCP統計の大きな問題は、モジュール全体を対象としていることで、これまでに存在した(少なくとも現在のブートでは)各接続のカウンタが、表示された値を得るために一緒に加算されることです。許容できない再送などの問題は、1つまたはいくつかのコネクションに影響を与えているため、全体のカウントでは失われてしまうことがあります。デフォルトの stcp_meters の動作にも同じ問題があり、現在の起動時からのすべての接続のカウンタを集計しています。PCBのアドレスを見つけるには、PCB_addrを引数にとってnetstatを実行します。netstatが完了すると、関心のある接続を見つけ、PCBアドレスが最初の列に表示されます。
次のマクロは、netstat を実行し、関心のある接続を見つけ、PCB アドレスを抽出し、stcp_meters を実行します。このマクロは、PCB アドレスがわかっている場合は PCB アドレスを取得するか (その場合、上記のステップのほとんどをスキップします)、興味のある接続を識別するのに役立つ 2 つの文字列を取得します。使用法メッセージは、文字列がローカルIPアドレス、ローカルポート番号、リモートIPアドレス、リモートポート番号であることを示しています。これにより、接続を一意に識別することができますが、ローカルポート番号とリモートIPアドレスだけなど、もっと少ない文字列でもよいかもしれません。指定した文字列が複数の接続を識別する場合は、各接続のメーターが表示されます。メーターの上には netstat 行が表示され、メーターが何のための接続なのかを識別します。
すべての確立された接続のメーターを表示したい場合は、次のコマンドを試してみてください。
get_connection_meters -local ESTAB -remote .
この例では、引数はローカルとリモートのアドレスではなく、ESTABLISHED状態とコロンを含む行を表します。
& get_connection_metersここから始まる & & get_connection_meters.cm & バージョン 1.0 09-04-06 [email protected] & &begin_parameters LOCAL オプション (-local),文字列 REMOTE オプション (-remote),文字列 PCBオプション(-pcb),文字列 終了パラメータ & 余計なものが結果ファイルにエコーされないようにする if (process_type) = 'バッチ' &then &do set_ready -format off コマンドラインがありません。 終り & if (長さ &PCB&) > 0 そのあと if (長さ &LOCAL&) > 0 その後 &then &goto ERROR_ADDRESS if (length &REMOTE&) > 0 その後 &then &goto ERROR_ADDRESS analyze_system -request_line (string stcp_meters &PCB& -all -long) -quit 復帰 終り & set_string FILE_1 (process_dir)>connect_stcp_meters_1.temp set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp & if (長さ &LOCAL&) = 0 その後 &then &goto ERROR_ADDRESS if (length &REMOTE&) = 0 その後 &then &goto ERROR_ADDRESS attach_default_output &FILE_1& netstat -numeric -PCB_addr デフォールト出力 & display &FILE_1& -match &LOCAL& -output_path &FILE_2& -no_header display &FILE_2& -match &REMOTE& -output_path &FILE_1& -no_header & アタッチ入力 ぶんせきシステム &set LINE 1 ラベル AGAIN set_string CONNECTION (コンテンツ &FILE_1& &LINE& -hold) if (end_of_file &FILE_1&) = 1 &then &do if &LINE& = 1 その後 &then &goto ERROR_NOT_FOUND 誤差があった場合は 辞める 復帰 終り 終り & ..display_line ============================================================ ..display_line ============================================================ 表示行 .display_line &CONNECTION&の行を表示します。 表示行 set_string PCB (substr (string &CONNECTION&) 1 8) stcp_meters &PCB& -all -long &set LINE (calc &LINE& + 1) もう一度行く & & ラベル ERROR_NOT_FOUND 辞める 表示行 表示行 display_line netstat 出力で指定された接続が見つかりませんでした。 display_line &LOCAL& &REMOTE& 復帰 & ラベル ERROR_ADDRESS 表示行 display_line PCB またはローカルとリモートの両方の IP:ポートを入力する必要があります。 display_line 使用法。 display_line ' get_connection_meters -pcb PCB' 表示行 ' or' display_line ' get_connection_meters -local IP:PORT -remote IP:PORT' 復帰 & & get_connection_metersはここまで