JPH1127308A - インターネット対応リンクモニタ方法 - Google Patents

インターネット対応リンクモニタ方法

Info

Publication number
JPH1127308A
JPH1127308A JP17541497A JP17541497A JPH1127308A JP H1127308 A JPH1127308 A JP H1127308A JP 17541497 A JP17541497 A JP 17541497A JP 17541497 A JP17541497 A JP 17541497A JP H1127308 A JPH1127308 A JP H1127308A
Authority
JP
Japan
Prior art keywords
event
tcp
internal
transmission
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP17541497A
Other languages
English (en)
Other versions
JP3343054B2 (ja
Inventor
Tomohiko Ogishi
智彦 大岸
Akira Idogami
彰 井戸上
Satohiko Kato
聰彦 加藤
Kenji Suzuki
健二 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
Kokusai Denshin Denwa KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kokusai Denshin Denwa KK filed Critical Kokusai Denshin Denwa KK
Priority to JP17541497A priority Critical patent/JP3343054B2/ja
Priority to US09/108,197 priority patent/US6178450B1/en
Publication of JPH1127308A publication Critical patent/JPH1127308A/ja
Application granted granted Critical
Publication of JP3343054B2 publication Critical patent/JP3343054B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

(57)【要約】 【課題】 TCP/IPプロトコルに従った通信におけるスル
ープット低下の原因を検査するのに有用なインターネッ
ト対応リンクモニタ方法を提供する。 【解決手段】 通信システム間のPDU を PDU取得部31
で取得し、これを PDU解析部32で解析してエミュレー
ションログ34を作成し、エミュレーションログ34を
元に一対の通信システムのイベントシーケンスをイベン
トシーケンス推定部43で推定してイベントシーケンス
ログ45を作成し、独自に作成した TCP状態遷移仕様4
6と、 TCPプロトコルの内部変数47と、 TCPプロトコ
ルの複数の内部手順のどれが行われているかを示すステ
ータス及び各内部手順で使用される内部変数を含む内部
手順に対応する内部変数48とを用いて、状態遷移に基
づくTCPプロトコルの振舞い及び内部手順のエミュレー
ションを TCPエミュレーション部44で行うことによ
り、通信の詳細を解析する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はインターネットに対
応可能なリンクモニタ方法に関し、詳しくは、回線上に
流れるデータから、状態遷移に基づいた TCPプロトコル
の振舞いに加えて、フロー制御のための TCPプロトコル
の内部手順をエミュレートすることにより、通信の詳細
を解析するインターネット対応リンクモニタ方法であ
り、TCP/IPプロトコルに従った通信におけるスループッ
ト低下の原因の検査に有用である。
【0002】
【従来の技術】近年、ワールド・ワイドなインターネッ
ト(INTERNET)の普及に伴い、様々なコンピュータ通信に
おいてTCP/IPプロトコルが広く利用されてきている。し
かし、TCP/IPプロトコルの通信機能を使うユーザの多く
は、TCP/IPプロトコルの通信処理の詳細に関して十分な
知識を有していない。
【0003】ここで、 TCP(Transmission Control Pro
tocol :トランスミッション・コントロール・プロトコ
ル)及びIP(Internet Protocol :インターネット・プ
ロトコル)はインターネットで使用されている主要なプ
ロトコルであり、 TCPはトランスポート層のコネクショ
ン型伝送制御プロトコル、IPはネットワーク層のコネク
ションレス型パケット転送制御プロトコルである。
【0004】TCP/IPプロトコルに従った通信では、ネッ
トワークの輻輳や伝送誤りによるパケット紛失が発生す
る場合や、双方の通信システムのソケットバッファサイ
ズなどのパラメータ値が異なる場合に、スループット低
下などの問題が発生する。このような場合には、通信の
詳細を解析してスループット低下の原因を検査する必要
がある。
【0005】従来は、市販のプロトコルモニタを用いて
PDU(プロトコル・データ・ユニット:Protocol Data Uni
t)のフォーマット解析及び解析結果の表示を行わせ、エ
キスパートが PDUフォーマットの解析結果を見て通信シ
ーケンスを解析し、スループット低下の原因を調査して
いる。なお、エキスパートとはTCP/IPプロトコルの通信
処理の詳細に精通した者である。
【0006】このようにエキスパートが必要なのは、市
販のプロトコルモニタは PDUのフォーマット解析や表示
機能を持つのみであり、通信シーケンスを解析する機能
や、それに基づくスループット低下の原因を調査する機
能を持たないからである。
【0007】従って、TCP/IPプロトコルの通信機能を使
うユーザの多くにとって、スループット低下の原因を調
査することは困難であった。
【0008】
【発明が解決しようとする課題】以上のことから、本発
明の課題は、TCP/IPプロトコルに従った通信におけるス
ループット低下の原因を検査するのに有用なインターネ
ット対応リンクモニタ方法を提供することである。
【0009】
【課題を解決するための手段】請求項1に係る発明のイ
ンターネット対応リンクモニタ方法は、TCP/IPプロトコ
ルに従う通信を行う通信システムのイベントシーケンス
と、 TCPのプロトコル仕様に基づいて作成した TCP状態
遷移仕様と、 TCPプロトコルの状態及び内部変数と、 T
CPプロトコルの輻輳制御に関する複数の内部手順のうち
どれが行われているかを示すステータス及び各内部手順
で使用される内部変数を含む内部手順に対応する内部変
数とを用いて、状態遷移に基づく TCPプロトコルの振舞
い及び内部手順のエミュレーション処理を行うことによ
り、通信の詳細を解析することを特徴とする。
【0010】請求項2に係る発明のインターネット対応
リンクモニタ方法は、前記 TCP状態遷移仕様として、送
信イベント処理においては、各状態において送信可能な
PDUと、送信PDU のパラメータの条件を規定し、送信イ
ベント処理後の状態及び内部変数の少なくとも一方を定
義したこと、受信イベント処理においては、受信イベン
トのパラメータ、現在の状態及び内部変数のうち少なく
とも一つ毎に、受信イベント処理後の状態及び内部変数
の少なくとも一方を定義したこと、受信イベント処理に
おいて、受信イベントに対する応答として期待される送
信イベントが存在する場合は、その送信PDU のパラメー
タの条件を規定し、送信イベント処理後の状態及び内部
変数の少なくとも一方を定義したことを特徴とする。
【0011】請求項3に係る発明のインターネット対応
リンクモニタ方法は、前記エミュレーション処理におい
て、送信イベントを処理する場合は、そのイベントの送
信が可能か否かを TCP状態遷移仕様を探索することによ
り判断し、可能ならば送信イベント処理後の状態または
内部変数を推定すること、受信イベントを処理する場合
は、受信イベントに対する応答となる送信イベントを抽
出し、 TCP状態遷移仕様を探索することにより遷移可能
か否かを判断し、遷移可能であり送信イベントが処理さ
れたならば、送信イベント処理後の状態または内部変数
を TCP状態遷移仕様に従って推定し、遷移可能であり送
信イベントが処理されなかったならば受信イベント処理
後の状態または内部変数を TCP状態遷移仕様に従って推
定することを特徴とする。
【0012】請求項4に係る発明のインターネット対応
リンクモニタ方法は、前記エミュレーション処理におい
て、イベントシーケンスからイベントを逐次抽出し、抽
出したイベントが送信イベントであるか受信イベントで
あるかを識別すること、抽出したイベントが送信イベン
トである場合は、 TCP状態遷移仕様に従って実行可能な
遷移を探索し、実行可能な遷移の探索に成功すれば状態
及び内部変数を更新し、失敗すればプロトコルエラーで
あると判定すること、抽出したイベントが受信イベント
である場合は、イベントシーケンスから未処理で且つ当
該受信イベント以降最初の送信イベントを抽出し、この
送信イベントが前記受信イベントに対する応答であると
仮定して該当する遷移を TCP状態遷移仕様に従って探索
し、この探索に失敗すれば受信イベントが紛失したもの
と判定し、この探索に成功し且つ前記応答であると仮定
した送信イベントが処理された場合はイベントシーケン
スに同送信イベントが処理済みであることを記録した
後、状態及び内部変数を更新して該当する遷移を実行
し、この探索に成功したが前記応答であると仮定した送
信イベントが処理されていない場合は状態及び内部変数
を更新して該当する遷移を実行することを特徴とする。
【0013】請求項5に係る発明のインターネット対応
リンクモニタ方法は、前記エミュレーション処理におい
て、現在行われている輻輳制御に関する内部手順を示す
ステータスとして、スロー・スタート、コンジェスチョ
ン・アボイダンス、高速再転送と高速リカバリ、どの内
部手順も行われていない又は行われている内部手順が不
明であることを示すノーマルの4つを推定すること、送
信イベント及び受信イベントのうちいずれか一方の処理
を契機に、輻輳制御に関する内部手順の発生、輻輳制御
に関する内部手順の終了、輻輳制御に関する内部手順が
使用する内部変数の値を判断すること、輻輳制御に関す
る内部手順のうちスロー・スタートについては、タイム
アウト再送を契機に、スロー・スタート発生したことを
判断し、以降のDT送信毎及び ACK受信毎に、内部変数の
値を推定すること、輻輳制御に関する内部手順のうち高
速再転送と高速リカバリについては、3つの重複ACK の
受信を契機に、それぞれが発生したことを判断すること
を特徴とする。
【0014】請求項6に係る発明のインターネット対応
リンクモニタ方法は、一対の通信システム間のPDU を回
線上に流れるデータから取得し、取得したPDU を解析し
てエミュレーションログを作成し、エミュレーションロ
グを元にそのPDU を送受信した双方の通信システムのイ
ベントシーケンスを推定することを特徴とする。
【0015】
【発明の実施の形態】以下、図1〜図14を参照して本
発明に係るインターネット対応リンクモニタ方法の実施
の形態を説明する。
【0016】まず、図1〜図5により、TCP/IPプロトコ
ルの概要を説明する。
【0017】[ネットワークの構成例]図1にネットワ
ークの構成例を示す。このネットワークは、WAN (Wide
Area Network:ワイド・エリア・ネットワーク)1と、
この WAN1にルータ2、3で接続された2つのLAN (Loc
al Area Network :ローカル・エリア・ネットワーク)
4、5から構成されている。これらの LAN4、5には、
TCP/IPプロトコルに従った通信を相互に行う通信システ
ム(A)(B)(C) が、図示のように、接続されているものと
する。従って、この例では、 LAN4上に、通信システム
(A)(B)間のプロトコル・データ・ユニット( 以下、PDU
)と通信システム(A)(C)間のPDU がともに流れる。 WA
N1には例えばISDN (Integrated Services Digital Net
work :サービス総合ディジタル網)が使用され、 LAN
4、5には例えばイーサネット(Ethernet)が使用され
る。
【0018】このようなネットワークの LAN4にインタ
ーネット対応リンクモニタ(以下、リンクモニタと略称
する)20が接続され、そこに流れるPDU を観測する。
【0019】[ PDUのフォーマット]リンクモニタ20
が観測するPDU の例を図2に模式的に示す。データリン
ク層のPDU はフレームと呼ばれる。
【0020】通常は LAN4がイーサネットであるので、
フレーム10はイーサネット・ヘッダ11及びイーサネ
ット・トレーラ12をIPデータグラム13の前後に付加
したものであり、IPデータグラム13はIPヘッダ14を
TCPセグメント15の前に付加したものである。 TCPセ
グメント15は TCPヘッダ16をユーザ・データ17の
前に付加したものである。ここでいうユーザ・データ1
7には、アプリケーション・ヘッダを含めている。ユー
ザ・データ17の長さを、UD長と呼ぶ。
【0021】[IPヘッダ]図3にIPヘッダ14のフォー
マットを模式的に示す。IPヘッダ14には、発信元アド
レス、宛先アドレス等のフィールドがある。IPヘッダ1
4の長さは、オプションの指定が無いかぎり、20バイ
トである。
【0022】[ TCPヘッダとフラグ]図4に TCPヘッダ
16のフォーマットを模式的に示す。 TCPヘッダ16に
は、発信元ポート番号、宛先ポート番号、シーケンス番
号、確認応答番号、ヘッダ長、制御ビット、ウインドウ
・サイズ、 TCPチェックサム、緊急ポインタ等のフィー
ルドがある。 TCPヘッダ16の長さも、オプションの指
定が無いかぎり、20バイトである。
【0023】TCPヘッダ16の制御ビット・フィールド
18には、URG, ACK, PSH, RST, SYN, FINという6個の
フラグ・ビットがある。各フラグ・ビットの意味を下記
に示す。 URG :緊急ポインタが有効である。 ACK :確認応答番号が有効である。 PSH :受け手はこのデータを可能な限り早急にアプリケ
ーションに渡さなければならない。 RST :コネクションをリセットする。 SYN :コネクションを初期化するためにシーケンス番号
を同期させる。 FIN :送り手はデータの送信を終了した。
【0024】これらのフラグ・ビットは1つだけをオン
にしたり、あるいは、複数を同時にオンにすることがで
きる。フラグ・ビットがオンの TCPセグメントを下記の
ように呼ぶ。 SYN セグメント : SYNビットのみがオン( ACKビッ
トはオフ)、単に SYNとも呼ぶ。 SYN+ACK セグメント: SYNビットと ACKビットのみがオ
ン、単にSYN+ACK とも呼ぶ。 ACK セグメント :ユーザ・データは無く ACKビット
のみがオン、単にACK とも呼ぶ。 DTセグメント : URGビットと RSTビットのオンと
オフに関係なく、ユーザ・データが有り ACKビットのみ
がオン、単にDTとも呼ぶ。 FIN セグメント : FINビットがオン( ACKビットが
オンのことが多い)、単に FINとも呼ぶ。 RST セグメント : RSTビットがオン( ACKビットが
オンのことが多い)、単に RSTとも呼ぶ。
【0025】ACKセグメントのうち、確認応答番号が互
いに等しく、TCP ユーザ・データ長が0で、ウインドウ
の更新が無いものは、重複 ACK(duplicate ACK:デュー
プリケイトACK)と呼び、相手側の通信システムに対し、
受信すべきデータを受信していないこと示す。また、 A
CKセグメントのうち、確認応答番号が互いに等しく、TC
P ユーザ・データ長が0で、ウインドウの値が更新され
たものは、window update(ウインドウ・アップデイト:
ウインドウ更新)を示すACK と呼び、相手側の通信シス
テムに対し、新しいデータが受信可能になったことを示
す。
【0026】[イベント]TCPプロトコルに対するイベ
ントには、送信イベント(送信した TCPセグメント)や
受信イベント(受信した TCPセグメント)等があり、下
記に代表例とその意味を示す。 SYNsent :送信した SYNセグメント。 SYN+ACKsent :送信した SYN+ACKセグメント。 ACKsent :送信した ACKセグメント。 DT/ACKsent :送信した DTセグメント又は ACKセグメ
ント。 FINsent :送信した FINセグメント。 SYNrecv :受信した SYNセグメント。 SYN+ACKrecv :受信した SYN+ACKセグメント。 ACKrecv :受信した ACKセグメント。 DT/ACKrecv :受信した DTセグメント又は ACKセグメ
ント。 FINrecv :受信した FINセグメント。
【0027】[ TCPプロトコルにおける状態(ステー
ト:state )]TCPプロトコルでは、発着のポート番号
とIPヘッダ上のIPアドレスとにより識別されるコネクシ
ョンを確立する。このコネクション確立は SYN、SYN+AC
K 及びACK という3つの TCPセグメントで行われる。デ
ータ転送においては、32ビットのシーケンス番号と A
CK番号(確認応答番号)とを用いる。また、相手側通信
システムから通知される16ビットのウインドウ・サイ
ズを用いて、フロー制御を行う。データ転送が終わる
と、 FIN及びACK という2つの TCPセグメントの交換を
双方の通信システムで行うことにより、コネクションを
解放する。
【0028】TCP/IPプロトコルにおける状態は、図5に
示すように、CLOSED、 SYN_SENT、SYN_RCVD、ESTABLI
SHED 、 FIN_WAIT_1 、 FIN_WAIT_2 、CLOSING 、
CLOSE_WAIT、LAST_ACK 、TIME_WAITという値を取り
得る。各値の意味を下記に示す。 CLOSED :コネクション無しの状態。 SYN_SENT : SYNセグメントを送信してコネクショ
ン確立処理中の状態。 SYN_RCVD : SYNセグメントを受信してコネクショ
ン確立処理中の状態。 ESTABLISHED :双方向にデータ転送可能な状態。 FIN_WAIT_1 :データ送信終了要求の状態。 FIN_WAIT_2 :データ送信終了完了の状態。 CLOSING :データ送受信同時終了の状態。 TIME _WAIT :コネクション解放完了時のコネクショ
ン情報保持状態。 CLOSE_WAIT :コネクション解放の待機状態。 LAST _ACK :最終ACK の受信待ち状態。
【0029】[ TCPプロトコルの内部変数(パラメー
タ)]TCP/IPプロトコルには送信シーケンスに関する内
部変数と、受信シーケンスに関する内部変数と、輻輳回
避ためのフロー制御の内部手順に対応する内部変数があ
る。
【0030】[送信シーケンスに関する内部変数]送信
シーケンスに関する内部変数を、下記に示す。但し、 s
nd_max と finrecv_flagは実装上あるいはモニタとし
て処理する上で必要な内部変数である。 snd_nxt : 次に送信するシーケンス番号。 snd_una : 送信済みであるが確認応答されていない最
小のシーケンス番号。 snd_wnd : 送信側のウインドウサイズ。 iss : 初期送信シーケンス番号。 mss : 最大セグメントサイズ。 snd_max : 過去に送信した最大の送信シーケンス番
号。 finrecv_flag: FIN受信を既に行ったことを示すフラ
グ。
【0031】[受信シーケンスに関する内部変数]受信
シーケンスに関する内部変数を、下記に示す。但し、 r
cv_una と finrecv_flagは実装上あるいはモニタとし
て処理する上で必要な内部変数である。 rcv_nxt : 次に受信するシーケンス番号。 rcv_wnd : 受信側のウインドウサイズ。 irs : 初期受信シーケンス番号。 rcv_una : 受信済みであるが確認応答してない最小の
受信シーケンス番号。 finrecv_flag: FIN受信を既に行ったことを示すフラ
グ。
【0032】[輻輳回避のためのフロー制御の内部手
順]TCPプロトコルは、ネットワーク層プロトコルであ
るIPプロトコル上において高信頼なデータ転送を提供す
るものであり、ネットワークの輻輳回避のために TCPプ
ロトコル独自のフロー制御を行う。そのため、スロー・
スタート(slow startと表記される)、コンジェスチョ
ン・アボイダンス(congestion avoidanceと表記され
る)、高速再転送(fast retransmit (ファースト・リ
トランスミット)と表記される)、高速リカバリ(fast
recovery (ファースト・リカバリ)と表記される)と
いう4つの内部手順を実装している。
【0033】これら4つの内部手順の基本方針は、以下
(1)(2)の通りである。 (1)送受信の通信システム間において物理回線速度の低
いネットワークが介在する場合、ネットワークが輻輳し
TCPセグメントの紛失が起きることが考えられる。この
ため、送信側は、コンジェスチョン・ウインドウ(cong
estion window :cwndと略記される)と、スロー・スタ
ート・スレッシュホルド(slow start threshold : sst
hresh と略記される)という2つのパラメータを用い
て、送信速度を送信側内部で調節することにより輻輳を
回避する。 (2)特に、大きいウインドウを持つ通信システムにおい
てスループットを向上させるため、送信側では、複数の
重複ACK(duplicate ACK)を受け取ることにより TCPセグ
メントが紛失したものと判断し、紛失した TCPセグメン
トを再送する。
【0034】また、上記内部手順は、以下(i) 〜(iv)の
手続きに従う。 (i) 送信側は、現在のウインドウ(コンジェスチョン・
ウインドウcwndと、受信側より通知されたウインドウad
vertised window とのうち小さい方の値) より大きいデ
ータを送ることはできない。 (ii)輻輳は、タイムアウトまたは複数の重複ACK の受信
で検出される。タイムアウトにより輻輳が検出された場
合、送信側は、スロー・スタート・スレッシュホルドss
threshを現在のウインドウの半分に、コンジェスチョン
・ウインドウcwndを1セグメント( 最大セグメントサイ
ズ分) にそれぞれ設定して、 TCPセグメントの再送を行
う。 (iii) 3つの重複ACK を受け取った場合、送信済みの T
CPセグメントが紛失したものと判断し、ssthreshを現在
のウインドウの半分に設定し、 TCPセグメントを再送す
る。その後、新しいデータに対応するACK を受信した時
点で、cwndをssthreshに設定する。 (iv)新しいデータに対応するACK を受信した場合、以下
のようにcwndを増加させる。cwndがssthresh以下の場
合、スロース・タートslow startの手順を実行し、ACK
受信毎に1セグメントずつcwndを増加させる。この場
合、cwndは、往復遅延時間に対し指数的に増加する。ま
た、cwndがssthreshよりも大きい場合、コンジェスチョ
ン・アボイダンスcongestion avoidanceの手順を実行
し、cwndを線形に増加させる。
【0035】[輻輳回避のための内部手順に対応する内
部変数]従って、 TCPプロトコルには、上記内部手順に
対応する内部変数として、status(ステータス) 、cwn
d、ssthresh、dupacks と表記されるものがある。各内
部変数の意味を下記に示す。 status :現在行われている内部手順を表す内部
変数であり、SS,CA,FR,NORMAL(ノーマル)のいずれ
かの値をとる。 SS :内部手順slow start(スロース・ター
ト)を示す値。 CA :内部手順congestion avoidance(コン
ジェスチョン・アボイダンス)を示す値。 FR :内部手順fast retransmit (高速再転
送)と内部手順fast recovery (高速リカバリ)のいず
れかの値をとる。 NORMAL :どの内部手順も行われていないか、行
われている内部手順が不明であることを示す値。 cwnd :congestion window (コンジェスチョ
ンウインドウ)の値。 ssthresh :slow startにおけるスレッショルド(th
reshold) の値。 dupacks :連続して受信した重複ACK (dupulicat
e ACK)の値。
【0036】[リンクモニタの概要]次に、リンクモニ
タ20の概要を説明する。TCP/IPプロトコルに従った通
信の詳細を解析するには、市販のプロトコルモニタと同
様な PDUの監視機能に加えて、通信システムの動作を T
CPに従ってエミュレートする機能が必要である。
【0037】発明者らは既に、OSI(Open Systems Inter
connection: 開放形システム間接続)プロトコルの動作
を解析してプロトコル誤りを検出する OSI対応リンクモ
ニタを開発し、特願平6−223138号(発明の名
称:インテリジェント通信プロトコルモニタ装置)とし
て出願している。特開平8−88672号公報参照。
【0038】そこで、基本的には、上記 OSI対応リンク
モニタの実現技法をTCP/IPプロトコルに適用して TCPプ
ロトコルの振舞いを解析することにより、通信システム
の動作を TCPに従ってエミュレートすることができる。
【0039】しかし、 TCPプロトコルでは、 OSIプロト
コルにおいてローカル依存となっている内部手順、即
ち、前述したslow start(スロー・スタート)やconges
tion avoidance(コンジェスチョン・アボイダンス)
等、ネットワークの輻輳を回避するためにネットワーク
に送出するデータ量を送信側で制御する内部手順がプロ
トコル仕様に組み込まれている。
【0040】従って、インターネット対応リンクモニタ
では、 OSI対応リンクモニタに比べて、より複雑なプロ
トコルエミュレーション機能を実装する必要がある。
【0041】[要求条件]本実施の形態に係るリンクモ
ニタ20は、下記の要求条件(1) 〜(6) を満たすものと
している。 (1) TCP/IPプロトコルは LANなどの高速なネットワーク
上で使用されるため、ネットワーク上を流れるPDU の取
得はオンラインで行い、通信の詳細な解析はオフライン
で行う。 (2) TCP/IPプロトコルに従う通信を、「ネットワーク上
を流れる全てのPDU のフォーマット解析」及び「特定の
通信システム間での通信状況の解析」という2つの観点
において検査する。これは、TCP/IPプロトコルの中では
TCPプロトコルが最も複雑な手順を有するため、 TCPプ
ロトコルを対象としてこれらの解析を行う必要があるか
らである。 (3) 上記(2) の前者(ネットワーク上を流れる全てのPD
U のフォーマット解析)では、ネットワーク上を流れる
1つのPDU を、2つの通信システムへの入力(受信)及
び出力(送信)のイベントとして扱う。 (4) 上記(2) の後者(特定の通信システム間での通信状
況の解析)では、 TCPセグメントのシーケンスから、通
信システムにおける TCPプロトコルの振舞いをエミュレ
ートする。このエミュレーションは、個々の通信システ
ム毎に独立に行う。 (5) エミュレーション対象の TCPプロトコルは、基本的
には、slow startやcongestion avoidanceなどの内部手
順を実装しているものとする。ただし、これらの内部手
順の仕様は近年追加されたものであり、市販のソフトウ
ェアがこれらの内部手順を実装しているとは限らない。
従って、本実施の形態のリンクモニタ20では、内部手
順をエミュレートする機能とともに、内部手順を実装し
ていない可能性をも推定する機能を備える。以下の説明
では、内部手順を実装している TCPプロトコルをモダン
TCP (Modern-TCP)と呼び、実装していない TCPプロトコ
ルをオリジナルTCP (Original-TCP)と呼ぶ。 (6) ISDNなど WANを経由して接続される通信を監視する
場合も考えられる。このような場合、通信システムが P
DUを実際に処理する時刻と、リンクモニタ20がPDUを
検出する時刻との間に時間差があるので、この時間差を
考慮してエミュレーションを行う。
【0042】[リンクモニタの具体的な設計]本実施の
形態に係るリンクモニタ20は、図1に示したネットワ
ークにおいて、丸印6で囲んだように LAN4上の全ての
TCP/IPプロトコルに従った通信に関して PDUのフォーマ
ット解析を行う PDU監視機能と、丸印7、8で囲んだよ
うに任意の特定一対の通信システム間を対象として TCP
プロトコルの振る舞いを推定する TCPエミュレーション
機能を持つ。
【0043】PDU監視機能は市販の汎用プロトコルアナ
ライザが持つ機能とほぼ同様である。この PDU監視機能
は LAN4上を流れる PDUを取り込み、ARP, IP, UDP, TC
P 等の各種プロトコルに従って PDUフォーマットやその
パラメータの解析を行う。
【0044】TCPエミュレーション機能は、以下の手順
(1)(2)により実現する。 (1) リンクモニタ20が PDUを取得した時刻と、そのPD
U を通信システムが実際に処理する時刻との時間差を考
慮し、個々の通信システムにおけるイベントの処理順序
(イベントシーケンス)を推定する。即ち、この時間差
は、図1における通信システム(A)(B)のように双方の通
信システムがリンクモニタ20と同一の LAN4上にある
場合にはおおよそ無視できるが、通信システム(A)(C)の
ように WAN1を経由した別々の LAN4、5上にある場合
には無視できない。そのため、個々の通信システムにお
けるイベントシーケンスを推定する。 (2) 次に、推定したイベントシーケンスを元に、個々の
通信システムの TCPプロトコルの振舞いをエミュレート
する。
【0045】リンクモニタ20はUNIXワークステーショ
ン上のソフトウェアとして実装することにより、実現し
ている。具体的には図6に示すように、リンクモニタ2
0は、大きく分けてオンライン部30と、オフライン部
40から構成される。オンライン部30は LAN4上を流
れるフレームを取り込むフレーム取得部31と、TCP/IP
プロトコルに従い PDUフォーマットやそのパラメータの
解析を行う PDU解析部32から構成される。 PDU解析部
32では、解析結果をモニタログ33に蓄積するととも
に、オフライン部40の TCP振舞いエミュレーション部
42で使用する情報をエミュレーションログ34に記録
する。
【0046】オフライン部40は PDUモニタ結果検査部
41と、 TCP振舞いエミュレーション部42から構成さ
れる。 PDUモニタ結果検査部41はモニタログ33に蓄
積された情報の表示機能を提供する。 TCP振舞いエミュ
レーション部42はイベントシーケンス推定部43と、
TCPエミュレーション部44から構成される。詳細は後
述するが、イベントシーケンス推定部43は個々の通信
システムのイベントシーケンスを推定により作成し、 T
CPエミュレーション部44はイベントシーケンスに基づ
いて TCPプロトコルの振舞いをエミュレートする。イベ
ントシーケンスは、図9、図10に例示するように、送
信イベントや受信イベント等の TCPプロトコルに対する
イベントと、そのイベントを処理した時刻からなる。
【0047】TCPエミュレーション部44は、 TCP状態
遷移仕様46を保持している。 TCP状態遷移仕様46
は、 TCPのプロトコル仕様を元に、本発明において独自
に定義したものであり、基本的な定義を下記(1)
(2)に示す。 (1)送信イベント処理においては、各状態において送
信可能なPDU と、送信PDU のパラメータの条件を規定
し、送信イベント処理後の状態及び内部変数の少なくと
も一方を定義する。 (2)受信イベント処理においては、受信イベントのパ
ラメータや現在の状態及び内部変数毎に、受信イベント
処理後の状態及び内部変数の少なくとも一方を定義す
る。また、応答として期待される送信イベントが存在す
る場合は、その送信PDU のパラメータの条件を規定し、
送信イベント処理後の状態及び内部変数の少なくとも一
方を定義する。
【0048】TCPエミュレーション部44は TCP状態遷
移仕様46を用い、基本的には、送受信のイベントに応
じて以下の処理(1)(2)を行う。 (1) 受信イベントを処理する場合は、その受信イベント
の応答として送出されたと考えられる送信イベントを、
当該受信イベントの直後のイベントシーケンスから探し
出す。 TCPエミュレーション部44は、これら受信イベ
ントと送信イベントの組から、 TCPプロトコルの条件に
従った状態遷移を実行する。換言すれば、受信イベント
に対する応答となるべき送信イベントを抽出し、 TCP状
態遷移仕様を探索することにより遷移が本当に可能か否
かを判断し、可能であり送信イベントが処理されたなら
ば、送信イベント処理後の状態/内部変数を推定し、可
能であり送信イベントが処理されなかったならば受信イ
ベント処理後の状態/内部変数を推定する。 (2) 送信イベントを処理する場合は、現在の状態毎にイ
ベントを処理する。つまり、現在の状態において、当該
送信イベントを送出する遷移を TCP状態遷移表より探し
出し、その遷移を実行する。送信イベントの送出が可能
でない場合は、プロトコルエラーが発生したものとして
処理する。換言すれば、送信イベントの送信が本当に可
能か否かを TCP状態遷移仕様を探索することにより判断
し、可能ならば送信イベント処理後の状態/内部変数を
推定する。
【0049】次に、 TCPエミュレーション機能の詳細を
説明する。
【0050】[エミュレーションログの生成]まず、オ
ンライン部30内の PDU解析部32は、取得した全ての
TCPセグメントに対して PDUフォーマットの解析を行
い、この解析結果から下記(i) 〜(v) に示す各種の情報
をエミュレーションログ34として記録する。これらの
情報は、オンライン部40の TCP振舞いエミュレーショ
ン部42で用いられる。図8にエミュレーションログの
例を示す。 (i) TCPセグメントの先頭と末尾を検出した時刻。 (ii)発側IPアドレスと着側IPアドレス(図3に示したIP
ヘッダ14中の発信元アドレスと宛先アドレス)。 (iii) チェックサムを除く TCPヘッダのパラメータ(図
4に示した TCPヘッダ16中の発信元ポート番号、宛先
ポート番号、シーケンス番号、肯定応答番号、ウインド
ウ・サイズ等)。 (iv) TCP ユーザデータ長。 (v) TCPチェックサムの正否を示すフラグ。
【0051】ただし、上記(i) の TCPセグメントの先頭
と末尾を検出した時刻のうち、各フレームの末尾を検出
した時刻のみを計測する。 TCPセグメントの先頭時刻に
関しては、後述のように、フレーム末尾時刻からフレー
ム長に比例するフレーム転送時間を引いて計算する。
【0052】[イベントシーケンスの推定]TCP振舞い
エミュレーション部42のうち、イベントシーケンス推
定部43で、対象とする1対1の通信システムを示すIP
アドレスの組毎に、イベントシーケンスの推定を行う。
実際の TCPエミュレーションは、 TCPエミュレーション
部44で行う。
【0053】イベントシーケンス推定部43はエミュレ
ーションログ34を元にイベントシーケンスの推定を行
うことにより、個々の通信システムに対し、観測した T
CPセグメントを実際のイベント処理時刻順に並べ替え
て、イベントシーケンスログ45を作成する。即ち、送
信イベント及び受信イベントの取り扱いにおいて、リン
クモニタ20と個々の通信システムとの物理的な位置関
係や、 PDU長等を元に、リンクモニタ20が PDUを取得
した時刻から、通信システムが実際にイベントを送受信
した時刻を推定する。
【0054】イベントシーケンス推定の具体的な操作
を、2つの通信システム(A)(B)を対象とした場合につい
て、下記(1) 〜(3) に示す。 (1) イベントシーケンス推定部43は、通信システム
(A) と(B) がそれぞれ送受信した TCPセグメントに対応
する情報をエミュレーションログ34より逐次抽出す
る。 (2) 通信システム(A) から通信システム(B) への TCPセ
グメントを抽出した場合は、通信システム(A) に対して
は送信イベント、通信システム(B) に対しては受信イベ
ントが発生したものと判断する。逆に、通信システム
(B) から通信システム(A) への TCPセグメントを抽出し
た場合は、通信システム(B) に対して送信イベント、通
信システム(A) に対して受信イベントが発生したものと
判断する。 (3) 各通信システム(A) (B) のイベント処理時刻を推定
する。イベント処理時刻は、送信イベントの場合にはフ
レーム先頭時刻からリンクモニタ20と通信システムの
間のフレーム転送遅延を引いたものとなり、受信イベン
トの場合にはフレーム先頭時刻にリンクモニタ20と通
信システムの間のフレーム転送遅延を加えたものとな
る。フレーム転送遅延は、伝送遅延に、フレーム長に比
例するフレーム転送時間を加えたものとなる。
【0055】図7〜図10に、 WAN1を経由する LAN
4、5に接続された2つの通信システム(A)(C)における
イベントシーケンスの推定例を示す。図8は PDU解析部
32が記録したエミュレーションログ34の内容を示
し、図9はイベントシーケンス部43が作成したイベン
トシーケンスログ45のうち通信システム(A) に関する
内容を示し、図9はイベントシーケンス部43が作成し
たイベントシーケンスログ45のうち通信システム(C)
に関する内容を示す。
【0056】この例において、通信システム(A) のイベ
ントシーケンスは、同通信システム(A) がリンクモニタ
20と同じ LAN4上にあり伝送遅延が小さいため、リン
クモニタ20で監視した順序(図8参照)と同様とな
る。
【0057】しかし、通信システム(C) のイベントシー
ケンスについては、通信システム(C) がリンクモニタ2
0とは異なる LAN5上にあり伝送遅延が大きいため、デ
ータ受信イべントDATA1recv とデータ送信イべントDATA
2sent が、リンクモニタ20で監視した順序に対し逆転
している。従って、イベントシーケンスの推定と並べ替
えが必要である。
【0058】例えば、通信システム(C) におけるデータ
受信イベントDATA1recv のイベント処理時刻は、以下の
ように計算する。ただし、 WAN1は伝送遅延100ms、
伝送速度64KbpsのISDNであるとする。また、 LAN4、
5は伝送速度10Mbpsのイーサネットであるとする。
【0059】まず、 TCPセグメントDATA1 が LAN4から
WAN(ISDN)1を経由してルータ3に到達するには、約18
8ms(=(1460+40)*8/64000) 要する。次に、 TCPセグメン
トDATA1 がルータ4から通信システム(C) に到達するに
は、約1ms=((1460+40)*8/1000000) 要する。フレーム長
は、UD長(TCPユーザデータ長)に、IPヘッダ及び TCPヘ
ッダを加えたサイズで計算する。なお、1460は TCPセグ
メントDATA1 のUD長(バイト)、40はIPヘッダとTCP ヘ
ッダを加算したデータ長(バイト)である。
【0060】従って、通信システム(C) におけるデータ
受信イベントDATA1recv のイベント処理時刻は、00:01.
456(リンクモニタ20の監視時刻)+ 0.100(伝送遅
延)+0.188( WAN1でのフレーム転送時間)+ 0.001( L
AN3でのフレーム転送時間)=0:01.745と推定する。
【0061】[ TCPエミュレーションの詳細]次に、 T
CPエミュレーションの詳細を説明する。
【0062】[オリジナルTCP の振舞い]TCPプロトコ
ルは、前述したように、IPプロトコル上において高信頼
なデータ転送を提供するものである。オリジナルTCP で
は、発着のポート番号とIPヘッダ上のIPアドレスとによ
り識別されるコネクションの確立を、3つの TCPセグメ
ント SYN、SYN+ACK 及びACK で行う。コネクションの確
立後、シーケンス番号と ACK番号(確認応答番号)とを
用いてデータ転送を行う。このデータ転送においては、
相手側通信システムから通知されるウインドウ・サイズ
を用いて、フロー制御を行う。データ転送が終わると、
FIN及びACK という2つの TCPセグメントの交換を双方
の通信システムで行うことにより、コネクションを解放
する。
【0063】[モダンTCP の内部手順]モダンTCP は、
オリジナルTCP の機能に加え、輻輳制御のために、前述
したslow start, congestion avoidance, fast retrans
mit, fast recoveryという4つの内部手順を実装してお
り、TCP プロトコル独自のフロー制御を行う。
【0064】[ TCPエミュレーションの方針]TCPエミ
ュレーション部44は、 TCPコネクション毎に、オリジ
ナルTCP とモダンTCP の双方の振舞いをエミュレートす
る。この場合、イベント発生時刻順に送信イベント及び
受信イベントを処理し、イベント処理を契機に TCPの状
態や内部変数の推定を随時おこなう。
【0065】オリジナルTCP の振舞いに対応するため、
TCPエミュレーション部44は、RFC (Request for Com
ment:インターネットの公式書類)で定義された状態
(ステート:state)と内部変数を保持する。また、 RFC
では定義されていないが、実装上必要となる内部変数
や、リンクモニタとして必要な内部変数も保持する。
【0066】RFCで定義された状態は、前述したよう
に、以下に示す値を取りうる。 CLOSED 、 SYN_SENT、 SYN_RCVD、 ESTABLISHED、 FIN_WAIT_1 、 FIN_WAIT_2 、 CLOSING、 CLOSE_WAIT、 LAST_ACK 、 TIME_WAIT
【0067】RFCで定義されたオリジナルTCP に対応す
る内部変数としては、前述したように、以下に示す送信
シーケンスに関するものと受信シーケンスに関するもの
とがある。 snd_nxt : 次に送信するシーケンス番号。 snd_una : 送信済みであるが確認応答されていない最
小のシーケンス番号。 snd_wnd : 送信側のウインドウサイズ。 iss : 初期送信シーケンス番号。 mss : 最大セグメントサイズ。 rcv_nxt : 次に受信するシーケンス番号。 rcv_wnd : 受信側のウインドウサイズ。 irs : 初期受信シーケンス番号。
【0068】また、実装上あるいはモニタとして処理す
る上で必要な内部変数として、前述したように、以下に
示すものがある。 snd_max : 過去に送信した最大の送信シーケンス番
号。 rcv_una : 受信済みであるが確認応答してない最小の
受信シーケンス番号。 finrecv_flag : FIN受信を既に行ったことを示すフラ
グ。
【0069】モダンTCP の振舞いに対応するため、 TCP
エミュレーション部44は、 TCPが有する輻輳制御に関
する内部手順の推定を送受信イベント処理を契機に行
う。例えば、内部手順slow start発生の検出は、コネク
ション確立時( SYNまたはSYN+ACK 送信イベント処理
時)、及び、タイムアウトによるデータ再送発生時(DT
送信イベント処理時) に行う。
【0070】更に詳細にいえば、 TCPが有する輻輳制御
に関して、送信イベントまたは受信イベントの処理を契
機に、その制御の発生及び終了や、それらが使用する内
部変数の値を判断する。スロー・スタート(slow star
t)は、タイムアウト再送( シーケンス番号が次に送る
べきデータのシーケンス番号よりも小さいDT送信)を契
機に、それが発生したことを判断し、以降のDT送信や A
CK受信毎に、内部変数の値を推定する。高速再転送と高
速リカバリ(fast retransmit and fast recovery )
は、3つの重複ACK( ACK番号とウインドウ・サイズが等
しく、ユーザ・データのないACK)の受信を契機に、それ
ぞれが発生したことを判断する。また、現在行われてい
る輻輳制御の内部手順を示すステータス(slow start、
congestion avoidance、fast retransmit and fast rec
overy 、NORMAL(どの内部手順も行われていないか、行
われている内部手順が不明な場合)の4つが存在する)
を推定する。
【0071】モダンTCP の内部手順に対応するための内
部変数として、 TCPエミュレーション部44は、どの内
部手順が行われているかを示すステータス(status)と、
各内部手順で使用される内部変数を保持する。
【0072】内部手順に対応する上記内部変数として
は、前述したように、以下に示すものがある。 ステータス(status):SS(slow start), CA(congestion avoidance), FR(fast re transmit and fast recovery) , NORMALいずれかの値。 cwnd : congestion window の値。 ssthresh : slow start thresholdの値。 dupacks : 連続して受信した重複ACK(dupulicate) の値。
【0073】TCPエミュレーション部44は、オリジナ
ルTCP の振舞い及びモダンTCP の内部手順とを規定した
TCP状態遷移仕様46と、状態及び内部変数47( RFC
で定義されたオリジナルTCP に対応する内部変数、及
び、実装上あるいはモニタとして処理する上で必要な内
部変数)と、内部変数48(モダンTCP の内部手順に対
応するために、どの内部手順が行われているかを示すス
テータスと、各内部手順で使用される内部変数)を有し
ており、イベントシーケンスログ45に蓄積されたイベ
ント毎に、この TCP状態遷移仕様46に従って各通信シ
ステムにおける TCPプロトコルエンティティの振舞いを
エミュレートする。
【0074】図5にコネクション確立フェーズ及びデー
タ転送フェーズ等における TCPプロトコルの状態遷移を
示す。 TCPエミュレーション部44では、イベント毎
に、状態や内部変数の遷移をエミュレートする。例え
ば、現在の状態がCLOSEDであり、送信イベントSYNsent
を処理する場合には、遷移#1を処理することにより、状
態を SYN_SENTに遷移する。
【0075】次に、 TCPエミュレーションのアルゴリズ
ムを説明する。
【0076】[ TCPエミュレーションのメイン処理]TC
Pエミュレーション部44は、図11に示すフローに従
ってメイン処理を行う。即ち、 (1) 初めに、ステップS1にて、イベントシーケンスロ
グより逐次イベントを抽出する。 (2) 次に、ステップS2にて、抽出したイベントが送信
イベントか受信イベントかを識別する。 (3) ステップS1で抽出したイベントが送信イベントの
場合は、ステップS3にて、エミュレーションのための
TCP状態遷移仕様に基づいて、実行可能な遷移を探索す
る。 (4) 実行可能な遷移の探索がステップS3で成功(TRUE)
すれば、ステップS4にて、状態や内部変数の更新を含
め、その遷移を実行する。 (5) 実行可能な遷移の探索がステップS3で失敗(FALS
E) すれば、ステップS5にて、プロトコルエラーと仮
定する。 (6) ステップS1で抽出したイベントが受信イベントの
場合は、ステップS6にて、イベントシーケンスログよ
り未処理で且つ当該受信イベント以降最初の送信イベン
トを抽出する。 (7) ステップS6で抽出した送信イベントを受信イベン
トに対する応答と仮定して、ステップS7にて、該当す
る遷移を探索する。ここで、遷移の探索が失敗した場合
はFALSE とする。遷移の探索が成功した場合のうち、送
信イベントが処理された場合はTRUE_ONとし、送信イベ
ントが処理されていない場合はTRUE_OFFとする。 (8) ステップS7における遷移の探索が失敗(FALSE)す
れば、ステップS8にて、受信イベントが紛失したもの
と仮定する。 (9) ステップS7における遷移の探索が成功し、且つ、
送信イベントが処理された場合(TRUE_ON)は、ステッ
プS9にて、送信イベントが処理済みであることをイベ
ントシーケンスログの送信イベントに記録した後、ステ
ップS4にて、状態や内部変数の更新を含めてその遷移
を実行する。 (10)ステップS7における遷移の探索が成功し、且つ、
送信イベントが処理されていない場合(TRUE_OFF )
は、ステップS4にて、状態や内部変数の更新を含めて
その遷移を実行する。
【0077】[エミュレーション例:その1]次に、図
12に示す幾つかの遷移*1、*4、*6、*9を例に採り、送
信イベント毎、あるいは、受信イベント及び送信イベン
トの組毎に行う遷移探索処理の詳細を以下に示す。
【0078】まず、図11のステップS3の送信イベン
ト処理と、ステップS7の受信イベント処理の2つの遷
移探索処理について、それぞれC言語(コンピュータ・
プログラム言語の一つ)で書いた関数形式を以下に示
す。
【0079】[送信イベントの状態遷移探索処理の関数
形式]送信イベントに基づく遷移探索処理の関数を、下
記数1に示す。この関数は process_sent_event(sent
_evt)、戻り値(return)はTRUE(遷移探索成功)と FAL
SE(遷移探索失敗)である。
【0080】
【数1】 process_sent_event(sent_evt){ switch(state) { case CLOSED: switch (sent_evt){ case SYNsent: ---- 遷移*1 iss=SSEG.SEQ; snd_una=iss; snd_nxt=iss+1; rcv_wnd=SSEG.WND; snd_max= snd_nxt; cwnd=mss; ssthresh=655335; state=SYN_SENT; status=SS; return(TRUE); (注)SSEG.SEQは送信イベントのシーケンス番号を示し、 SSEG.WNDは送信イベントのウインドウを表す。 ・ ・ } ・ ・ case ESTABLISHED: switch (sent_evt){ case DATAsent: ---- 遷移*6 if(MSSより大きいデータ送信、ウインドウを超えたデ ータ送信など) { [プロトコルエラー処理(return(FALSE)となる)]; }else { /*正しいデータ*/ if (SSEG.SEQ== snd_nxt){ if (status!=NORMAL && snd_nxt+SSEG.LEN > snd_una +cwnd) [slow start違反と判断し、内部手順の推定を 中断(status=NORMAL とする) ]; snd_nxt+=SSEG.LEN; (注)SSEG.LENは送信イベントの TCPユーザデータ長を表す。 if (SSEG.SEQ== snd_max) snd_max= snd_nxt; }else { /* データ再送(SSEG.SEQ!=snd_nxt の場合*/ ssthresh=max(2*mss, min(cwnd, snd _wnd)/2); cwnd=mss; status=SS; } return(TRUE); } ・ ・ }
【0081】[受信イベントの状態遷移探索処理の関数
形式]受信イベントに基づく遷移探索処理の関数を、下
記数2に示す。この関数は process_recv_event(recv
_evt, sent_evt)、戻り値(return)はTRUE_ON(送信
イベントが処理された場合の遷移探索成功) 、TRUE_OF
F (送信イベントが処理されていない場合の遷移探索成
功) 、 FALSE(遷移探索失敗)である。
【0082】
【数2】 process_recv_event(tbl,recv_evt,sent_evt){ switch(state) { ・ ・ case SYN_SENT: if( 受信イベントが、期待しない ACK番号を持つ場合 や RSTビットがONまたは SYNビットが OFFの場合) } ・ ・ /* 省略*/ }else{ /*正しいSYN+ACK */ if (送信イベントがACK)&&(送信イベントのパラメータが SYN に対する確認である条件を満たす)) } ---- 遷移*4 irs=RSEG.SEQ; snd_una=RSEG.ACK; rcv_nxt=irs+1; rcv_wnd=SSEG.WND; rcv_una=SSEG.ACK; snd_wnd=RSEG.WND; state=ESTABLISHED; return(TRUE_ON); /*受信/送信イベントを正常に処理した*/ (注)SSEG.ACKは、送信イベントの ACK番号を示す。 }else{ return(FALSE);/*受信が紛失したと判断*/ } } ・ ・ case ESTABLISHED: if (RSEG.ACK== snd_una){ if (受信イベントが、ウインドウ更新など、 duplicate ACK でない条件) dupacks=0; (注)RSEG.ACKは、受信イベントの ACK番号を示す。 else{ /* duplicate ACK の場合 */ if (++dupacks>=3) { if (status!=FR) { if (送信イベントとしてfast retransmit による データの再送が正しく行われている) { /* fast retransmitをエミュレートする*/ ssthresh=max(2*mss, min(snd _wnd,cwnd)/2); cwnd=ssthresh+3*mss; status=FR; return( TRUE_ON); }else{return(FALSE);} }else cwnd+=mss; /* fast retransmit中はcwndを1mss増加*/ } } }else if (RSEG.ACK> snd_una && RSEG.ACK< snd_max) }/*新しい ACK番号*/ ---- 遷移*9 switch(status){ case SS: cwnd+=mss; if (cwnd>65535) { status=NORNAL; cwnd=65535; } else if (cwnd>ssthresh) status=CA; break; case CA: cnwd+=mss*mss/cwnd+mss/8; if (cwnd>65535) { status=NORNAL; cwnd=65535; } break; case FR: cwnd=ssthresh; status=CA; break; } } snd_wnd=RSEG.ACK-snd_una; snd_una=RSEG.ACK; ・ ・ return(TRUE_OFF); /* 受信イベントのみ正常に処理 ( 送信イベントは処理されなかった) */ }
【0083】上記 TCPエミュレーションの実装に基づく
エミュレーション例を、図12及び図13を参照して説
明する。図13(a)は2つの通信システム(A)(B)の通
信シーケンスを示し、同図(b)は通信システム(A) に
関するイベントシーケンスログ45の内容を示す。この
場合のエミュレーションは下記(1) 〜(5) により行われ
る。 (1)TCPエミュレーション部44は、イベントシーケンス
ログ45から送信イベントSYNsent を抽出し、遷移*1を
選択する。このとき、遷移探索結果はTRUEとなり、次の
状態(state) は SYN_SENTとなる。前の状態はCLOSEDで
あった。内部変数については、 iss=SSEG.SEQ snd_una=iss snd_nxt=iss+1 rcv_wnd=SSEG.WND snd_max= snd_nxt cwnd=mss ssthresh=655335; state= SYN_SENT status=SS と推定する。但し、SSEG.SEQは送信イベントのシーケン
ス番号を示し、SSEG.WNDは送信イベントのウインドウを
表す。 (2) 次に、受信イベントSYN+ACKrecv を抽出し、同受信
イベント以降で最初の送信イベントであるACKsent を抽
出する。このとき、遷移*4が探索され、遷移探索結果は
TRUE_ONとなり、この送信イベントACKsent を処理済み
とし、次の状態はESTABLISH となる。内部変数について
は、 irs=RSEG.SEQ snd_una=RSEG.ACK rcv_nxt=irs+1 rcv_wnd=SSEG.WND rcv_una=SSEG.ACK snd_wnd=RSEG.WND state=ESTABLISHED; return(TRUE _ON); と推定する。但し、SSEG.ACKは、送信イベントの ACK番
号を示す。 (3) 次に、送信イベントDATAsentを抽出し、遷移*6を探
索する。このとき、内部手順がslow startに従っている
か否かの確認を行い、内部変数を更新する。遷移探索結
果はTRUEとなる。内部変数については、 ssthresh=max(2*mss, min(cwnd, snd_wnd)/2) cwnd=mss status=SS; と推定する。 (4) 次に、受信イベントACKrecv を抽出し、同受信イベ
ント以降で最初の送信イベントであるDATAsentを抽出す
る。このとき、遷移*9を探索し、内部手順に対応する内
部変数status(ステータス)の値がSSなので、内部変数
CWNDを1460から2920に更新する。遷移探索結果はTRUE_
OFF であるため、送信イベントDATAsentは未処理のまま
とする。 (5) 上記(3) と同様に残る2つの送信イベントDATAsent
を順にエミュレーションし、内部変数の更新を行う。
【0084】[エミュレーション例:その2]次に、図
5に示した遷移#1〜#21 を例に採り、送信イベント毎、
あるいは、受信イベント及び送信イベントの組毎に行う
遷移探索処理の詳細を以下に示す。この例の場合も、状
態はCLOSED,SYN_SENT,SYN_RCVD,ESTABLISHED,FIN_WA
IT_1, FIN_WAIT_2,CLOSING, CLOSE_WAIT, LAST_AC
K,TIME_WAITの値を取り得る。また、内部変数としては
snd_nxt, snd_una, snd_wnd, mss, rcv_nxt, rcv
_wnd, rcv_una, status(NORMAL,SS,CA,FR のいずれか
の値をとる), cwnd, ssthresh, dupacks,finrecv_flag
を保持する。
【0085】送信イベントの状態遷移探索処理(process
_sent_event)を、下記[1] 〜[8]に示す。
【0086】[1] 状態CLOSEDにおける SYN送信イベント
の場合:この場合、状態をCLOSEDから SYN_SENTに遷移
し、また、内部手順slow startを開始したと推定してス
テータスをNORMALからSSに遷移する。更に、送信セグメ
ント (SYN)のパラメータを元に、他の内部変数を推定す
る。遷移探索結果としてTRUEを返す。図5中の遷移#1参
照。
【0087】[2] 状態ESTABLISHED におけるDTまたはAC
K 送信イベントの場合:DT送信時は下記(1) の ACK送信
処理と下記(2) のDT送信処理を実行し、 ACK送信時は
(1)の ACK送信処理のみを実行する。図5中の遷移#2-
1、#2-2参照。 (1)ACK送信処理: (i) 送信セグメントの ACK番号が rcv_una に等しく、
且つ、送信セグメントのTCPユーザデータ長が0である
場合は、送信セグメントのウインドウが rcv_wnd より
も大きければwindow update を示すACK であると判断し
て rcv_wnd の値を更新し、送信セグメントのウインド
ウが rcv_wnd に等しければ重複ACK(duplicate ACK)で
あると判断する。 (ii)送信セグメントの ACK番号が rcv_una と等しくな
い場合は、新しい受信データを確認したものと判断して
rcv_wnd 、及び、 rcv_una を更新する。ここで、 f
inrecv_flagがON(オン)であり、全てのデータを確認
している場合( 送信セグメントの ACK番号が rcv_nxt
に等しい場合) は、状態をESTABLISHED から CLOSE_WA
ITに遷移する。 (2) DT送信処理: (i) 送信セグメントのシーケンス番号が snd_nxt に等
しい場合は、以下(a)(b)の操作を行う。 (a) 輻輳制御のエミュレーション中であり、送信セグメ
ントのシーケンス番号の右端(snd_nxt + TCPユーザデ
ータ長)が現在のウインドウの右端(snd_una +cwnd)
よりも大きい場合は、輻輳制御の手順に従っていないも
のと判断し、輻輳制御のエミュレーションを終了する。
つまり、オリジナル-TCPである。 (b)snd_nxt を TCPユーザデータ長分、増加させる。 (ii)送信セグメントのシーケンス番号が snd_nxt に等
しくない場合は、データの再送が発生したものと判断
し、以下(a)(b)の操作を行う。 (a) 輻輳制御のエミュレーション中ならば、内部変数ss
threshをmax(2*mss, min(snd_wnd, cwnd)) に更新し、
内部変数cwndを mssに更新し、ステータスをSSに設定す
る。 (b)snd_nxt を TCPユーザデータ長分、増加させる。 (3) 終了処理:遷移探索結果としてTRUEを返す。
【0088】[3] 状態ESTABLISHED における FIN送信イ
ベントの場合:前記[2](状態ESTABLISHED におけるDTま
たはACK 送信) における(1)(2)と同様の処理を行い、更
に、状態を FIN_WAIT_1 に遷移し、輻輳制御のエミュ
レーションを終了する。送信セグメント(FIN) のパラメ
ータを元に、他の内部変数を設定する。遷移探索結果と
してTRUEを返す。図5中の遷移#3参照。
【0089】[4] 状態 FIN_WAIT_1 における ACK送信
イベントの場合:前記[2](状態ESTABLISHED におけるDT
またはACK 送信)における(1) と同様の処理を行い、更
に、 finrecv_flagがONであり、 FINを確認する ACK送
信の場合、状態を CLOSINGに遷移する。FIN を確認しな
い ACK送信の場合は、状態は FIN_WAIT_1 のままとす
る。遷移探索結果としてTRUEを返す。図5中の遷移#4-
1,#4-2 参照。
【0090】[5] 状態 FIN_WAIT_2 における ACK送信
イベントの場合:前記[2](状態ESTABLISHED におけるDT
またはACK 送信)における(1) と同様の処理を行い、更
に、 finrecv_flagがONであり、 FINを確認する ACK送
信の場合、状態をTIME_WAITに遷移する。 FINを確認し
ない ACK送信の場合は、状態は FIN_WAIT_2 のままと
する。遷移探索結果としてTRUEを返す。図5中の遷移#5
-1,#5-2 参照。
【0091】[6] 状態 CLOSE_WAITにおけるDTまたはAC
K 送信イベントの場合:前記[2](状態ESTABLISHED にお
けるDTまたはACK 送信) と同様の処理を行う。図5中の
遷移#6参照。
【0092】[7] 状態 CLOSE_WAITにおける FIN送信イ
ベントの場合:前記[3](状態ESTABLISHED における FIN
送信) と同様の処理を行う。図5中の遷移#7参照。
【0093】[8] 状態TIME_WAITにおける SYN送信イベ
ントの場合:状態が既にCLOSEDに遷移していたものと判
断し、上記[8](状態CLOSEDにおける SYN送信)と同様の
処理を行う。図5中の遷移#8参照。
【0094】次に、受信イベントの状態遷移探索処理(p
rocess_recv_event)を、下記[9]〜[21]に示す。
【0095】[9] 状態CLOSEDにおける SYN受信イベント
の場合: (1) 抽出した送信セグメントがSYN+ACK の場合には、状
態を SYN_RCVDに遷移し、ステータスをSSに遷移し(slo
w start を開始したと推定) 、受信セグメント(SYN) 及
び送信セグメント(SYN,ACK) のパラメータを元に、他の
内部変数を推定する。この場合、遷移探索結果としてTR
UE_ONを返す。図5中の遷移#9-1参照。 (2) 送信セグメントがRST+ACK の場合は、状態はCLOSED
のままとし、コネクション要求が拒否されたものと判断
し、遷移探索結果としてTRUE_ONを返す。図5中の遷移
#9-2参照。 (3) 送信セグメントが上記以外の場合は、状態はCLOSED
のままとし、遷移探索結果としてTRUE_OFF を返す。図
5中の遷移#9-2参照。
【0096】[10]状態 SYN_SENTにおける SYN受信イベ
ントの場合: (1) 抽出した送信セグメントがSYN+ACK の場合、状態を
SYN_RCVDに遷移する。この場合、双方からのコネクシ
ョン確立要求の衝突(simultaneous open) が発生したも
の判断される。この場合、遷移探索結果としてTRUE_ON
を返す。図5中の遷移#10-1 参照。なお、simultaneous
open は双方向から同時にコネクション要求が発生した
場合であり、図14に示すシーケンスにより、コネクシ
ョンが確立される。 (2) 送信セグメントが上記以外の場合は、状態は SYN_
SENTのままとし、遷移探索結果としてTRUE_OFF を返
す。図5中の遷移#10-2 参照。
【0097】[11]状態 SYN_SENTにおける SYN+ACK受信
イベントの場合: (1)抽出した送信セグメントが ACKの場合、状態をESTAB
LISHED に遷移する。この場合、遷移探索結果としてTRU
E_ONを返す。図5中の遷移#11-1 参照。 (2) 送信セグメントが RSTの場合、状態をCLOSEDに遷移
する。この場合、コネクション要求が拒否されたものと
判断し、遷移探索結果としてTRUE_ONを返す。図5中の
遷移#11-2 参照。 (3) 送信セグメントが上記以外の場合は、状態は SYN_
SENTのままとし、遷移探索結果としてTRUE_OFF を返
す。
【0098】[12]状態 SYN_RCVDにおける ACK受信イベ
ントの場合:状態をESTABLISHED に遷移し、遷移探索結
果としてTRUE_OFF を返す。図5中の遷移#12 参照。
【0099】[13]状態ESTABLISHED におけるDTまたはAC
K 受信イベントの場合:DT受信時は下記(1) の ACK受信
処理と下記(2) のDT受信処理を実行し、 ACK受信時は
(1) の ACK受信処理のみを実行する。図5中の遷移#13
参照。 (1)ACK受信処理: (i) 受信セグメントの ACK番号が snd_una に等しく、
且つ、受信セグメントのTCPユーザデータ長が0である
場合は、受信セグメントのウインドウが snd_wnd に等
しければ、 duplicate ACKの受信であると判断し、以下
の操作を行う。 (a) dupacks を1加算する。 (b) dupacks が既定値(3とする)以上であり、fast r
etransmit の手順を実行中でない(ステータスがFRでな
い)ならば、抽出した送信セグメントがデータの再送を
示すDTの場合、fast retransmit が行われたものと判断
し、ssthreshをmax(2*mss,min(snd_wnd,cwnd))に更新
し、、cwndをssthresh+3*mssに更新し、ステータスをFR
に設定する。この場合、遷移探索結果としてTRUE_ONを
返す。 (c) ただし、上記において抽出した送信セグメントがデ
ータの再送を示すDTでない場合には、輻輳制御のエミュ
レーションに従っていないもの、つまりオリジナルTCP
と判断し、輻輳制御のエミュレーションを終了する。こ
の場合、遷移探索結果としてTRUE_OFF を返す。 (d) fast retransmit の手順を実行中ならば、cwndを m
ssだけ増加する。この場合、遷移探索結果としてTRUE_
OFF を返す。 (ii)受信セグメントの ACK番号が snd_una に等しい
が、受信セグメントの TCPユーザデータ長が0でない場
合は、後述する(2) のDT受信処理を実行する。 (iii) 受信セグメントの ACK番号が snd_una に等しく
ない場合は、新しい送信セグメントが ACKされたものと
判断する。この場合、 (a) slow startのエミュレーション中(ステータスがS
S)ならば、cwndを mssだけ増加させる。ただし、cwnd
が最大ウインドウサイズ(65535) を超えた場合は、輻輳
制御のエミュレーションを終了する。また、cwndがssth
reshを超えた場合は、congestion avoidanceのエミュレ
ーション(ステータスがCA)を行う。 (b) congestion avoidanceのエミュレーション中なら
ば、cwndを(mss*mss)/cwnd+mss/8だけ増加させる。ただ
し、cwndが最大ウインドウサイズ(65535) を超えた場
合、輻輳制御のエミュレーションを終了する。 (c) fast retransmit のエミュレーション中ならば、co
ngestion avoidanceのエミュレーションを行う。 (2) DT受信処理:受信データの TCPユーザデータ長分、
rcv_nxt を増加させる。状態はESTABLISHED のままで
あり、ステータスも変化しない。 (3) 終了処理:遷移探索結果としてTRUE_OFF を返す。
【0100】[14]状態ESTABLISHED における FIN受信イ
ベントの場合:前記[13](状態ESTABLISHED におけるDT
またはACK 受信)と同様の処理を行い、更に、 finrecv
_flagをON(オン)に設定する。遷移探索結果としてTR
UE_OFFを返す。図5中の遷移#14 参照。
【0101】[15]状態 FIN_WAIT_1 におけるDTまたは
ACK 受信イベントの場合:FINを確認する ACK受信の場
合、状態を FIN_WAIT_2 に遷移する。図5中の遷移#1
5-1 参照。DT受信の場合は、 ACK受信の処理に加えて、
上記[14](状態ESTABLISHED におけるDTまたはACK 受
信)の(2) と同様のDT受信処理を行う。 FINを確認しな
い ACK受信の場合は、状態は FIN_WAIT_1 のままとな
る。遷移探索結果としてTRUE_OFF を返す。図5中の遷
移#15-2 参照。
【0102】[16]状態 FIN_WAIT_1 における FIN受信
イベントの場合:上記[13](状態ESTABLISHED における
DTまたはACK 受信)の(1)(2)と同様の処理を行い、更
に、 finrecv_flagをONに設定する。図5中の遷移#16
参照。
【0103】[17]状態 FIN_WAIT_2 におけるDTまたは
ACK 受信イベントの場合:上記[13](状態ESTABLISHED
におけるDTまたはACK 送信)と同様の処理を行う。図5
中の遷移#17 参照。
【0104】[18]状態 FIN_WAIT_2 における FIN受信
イベントの場合:上記[13](状態ESTABLISHED における
DTまたはACK 受信)の(1)(2)と同様の処理を行い、更
に、 finrecv_flagをONに設定する。図5中の遷移#18
参照。
【0105】[19]状態 CLOSINGにおける ACK受信イベン
トの場合:FINを確認するACK 受信の場合、状態をTIME
_WAITに遷移する。図5中の遷移#19-1 参照。 FINを確
認しない ACK受信の場合は、状態はCLOSING のままとな
る。遷移探索結果としてTRUE_OFF を返す。図5中の遷
移#19-2 参照。
【0106】[20]状態LAST_ACK における ACK受信イベ
ントの場合:FINを確認する ACK受信の場合、状態をCLO
SEDに遷移する。図5中の遷移#20-1参照。 FINを確認し
ない ACK受信の場合は、状態はLAST_ACK のままとな
る。遷移探索結果としてTRUE_OFF を返す。図5中の遷
移#20-2 参照。
【0107】[21]状態TIME_WAITにおける SYN受信イベ
ントの場合:状態が既にCLOSEDに遷移していたものと判
断し、上記[9](状態CLOSEDにおける SYN受信)と同様の
処理を行う。図5中の遷移#21 参照。
【0108】ところで、イベントシーケンスの順序を誤
って推定したり、誤ったエミュレーションを行う場合が
考えられる。例えば、イベントの送受信時刻の上述した
推定においては、ルータにおけるバッファリングの遅延
を考慮していないが、この遅延が大きい場合は、リンク
モニタ20で推定したイベントシーケンスの順序が実際
に処理した順序と異なる可能性がある。そのような場合
に対処するためには、ルールベースプログラミング等の
ヒューリスティックなアルゴリズムを適用して、イベン
トシーケンスを並び替える。
【0109】上述した説明では、通信の詳細な解析をオ
フライン部40で行っているが、UNIXワークステーショ
ン等の計算速度が十分高速であれば、 PDUの取得及びそ
のフォーマット解析と同時に、オンライン処理で行って
も良い。
【0110】リンクモニタ20及び同リンクモニタ20
が行うインターネット対応リンクモニタ方法は、コンピ
ュータプログラムを CPU(中央処理装置)が読み取って
実現している。つまり、TCP/IPに従った通信の詳細な解
析に必要な上述した機能をコンピュータプログラム化
し、 CPUが読み取り可能なデータの形式で記録媒体に記
録し、このコンピュータプログラムを CPUに読み取らせ
るようにしている。
【0111】
【発明の効果】本発明によれば、下記(1)〜(3)の
効果がある。 (1)本発明に係るインターネット対応リンクモニタ方
法は、TCP/IPに従った通信の詳細解析を行うことができ
るに。特に、フロー制御のための TCPの内部手順の解析
に有効である。例えば、slow startやデータの再送がど
の程度発生したかを推定することにより、スループット
低下の原因を調査するのに有用である。
【0112】(2)詳しくは、本発明に係るインターネ
ット対応リンクモニタ方法は、市販のプロトコルモニタ
が持つ PDU解析機能と、特定の一対の通信システムを対
象として TCPプロトコルエンティティの振舞いをエミュ
レートすることにより、行われている通信を詳細に解析
する機能を持ち、状態遷移に基づいた振舞いに加えて、
slow startなどフロー制御のための内部手順をエミュレ
ートすることができるので、slow startの発生回数、タ
イムアウトやfast retransmit によるデータの再送回数
などの推定を含め、TCP/IPの通信を詳細に解析すること
が可能となる。
【0113】(3)本発明に係るインターネット対応リ
ンクモニタ方法は、 OSI対応のインテリジェントモニタ
と比較すると、下記(i) 〜(iii) の利点がある。 (i) 単一のレイヤのエミュレーションを対象とするの
で、設計が容易である。 (ii) TCPのエミュレーション機能をオフラインで実行す
る場合は、更に設計が容易である。 (iii) TCPのエミュレーションはOSI のプロトコルに比
べて、フロー制御に関わる内部手順をサポートするとい
う点で複雑となるが、状態遷移に基づく状態(ステー
ト:state )の他に、ステータス(status)という内部
手順の実行の状態に相当する内部変数を保持することに
より、設計が容易である。
【図面の簡単な説明】
【図1】ネットワークの構成例とリンクモニタの接続例
を示す図。
【図2】PDUの例としてイーサネットにおけるフレーム
構成を示す図。
【図3】IPヘッダのフォーマットを示す図。
【図4】TCPヘッダのフォーマットを示す図。
【図5】TCPの状態遷移を示す図。
【図6】リンクモニタの構成例を示す図。
【図7】イベントシーケンスの例を示す図。
【図8】エミュレーションログの内容の例を示す図。
【図9】通信シムテム(A) に関するイベントシーケンス
ログの内容の例を示す図。
【図10】通信シムテム(C) に関するイベントシーケン
スログの内容の例を示す図。
【図11】TCPシミュレーション部の処理フローを示す
図。
【図12】TCPの一部抜粋した状態遷移を示す図。
【図13】TCPシミュレーションの例を示す図。
【図14】双方向同時コネクション要求が発生した場合
のシーケンスを示す図。
【符号の説明】 (A) 、(B) 、 (C) 通信システム 1 WAN 2、3 ルータ 4、5 LAN 6 フォーマット解析 7、8 エミュレーション 10 フレーム 11 イーサネットヘッダ 12 イーサネットトレーラ 13 IPデータグラム 14 IPヘッダ 15 TCPセグメント 16 TCPヘッダ 17 TCPユーザ・データ 18 制御ビット・フィールド 20 リンクモニタ 30 オンライン部 31 フレーム取得部 32 PDU解析部 33 モニタログ 34 エミュレーションログ 40 オフライン部 41 PDUモニタ結果検査部 42 TCP振舞いエミュレーション部 43 イベントシーケンス推定部 44 TCPエミュレーション部 45 イベントシーケンスログ 46 TCP状態遷移仕様 47、48 内部変数
───────────────────────────────────────────────────── フロントページの続き (72)発明者 鈴木 健二 東京都新宿区西新宿二丁目3番2号 国際 電信電話株式会社内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 TCP/IPプロトコルに従う通信を行う通信
    システムのイベントシーケンスと、 TCPのプロトコル仕
    様に基づいて作成した TCP状態遷移仕様と、TCPプロト
    コルの状態及び内部変数と、 TCPプロトコルの輻輳制御
    に関する複数の内部手順のうちどれが行われているかを
    示すステータス及び各内部手順で使用される内部変数を
    含む内部手順に対応する内部変数とを用いて、状態遷移
    に基づく TCPプロトコルの振舞い及び内部手順のエミュ
    レーション処理を行うことにより、通信の詳細を解析す
    ることを特徴とするインターネット対応リンクモニタ方
    法。
  2. 【請求項2】 前記 TCP状態遷移仕様として、送信イベ
    ント処理においては、各状態において送信可能なPDU
    と、送信PDU のパラメータの条件を規定し、送信イベン
    ト処理後の状態及び内部変数の少なくとも一方を定義し
    たこと、受信イベント処理においては、受信イベントの
    パラメータ、現在の状態及び内部変数のうち少なくとも
    一つ毎に、受信イベント処理後の状態及び内部変数の少
    なくとも一方を定義したこと、受信イベント処理におい
    て、受信イベントに対する応答として期待される送信イ
    ベントが存在する場合は、その送信PDU のパラメータの
    条件を規定し、送信イベント処理後の状態及び内部変数
    の少なくとも一方を定義したことを特徴とする請求項1
    に記載のインターネット対応リンクモニタ方法。
  3. 【請求項3】 前記エミュレーション処理において、送
    信イベントを処理する場合は、そのイベントの送信が可
    能か否かを TCP状態遷移仕様を探索することにより判断
    し、可能ならば送信イベント処理後の状態または内部変
    数を推定すること、受信イベントを処理する場合は、受
    信イベントに対する応答となる送信イベントを抽出し、
    TCP状態遷移仕様を探索することにより遷移可能か否か
    を判断し、遷移可能であり送信イベントが処理されたな
    らば、送信イベント処理後の状態または内部変数を TCP
    状態遷移仕様に従って推定し、遷移可能であり送信イベ
    ントが処理されなかったならば受信イベント処理後の状
    態または内部変数を TCP状態遷移仕様に従って推定する
    ことを特徴とする請求項1又は2に記載のインターネッ
    ト対応リンクモニタ方法。
  4. 【請求項4】 前記エミュレーション処理において、イ
    ベントシーケンスからイベントを逐次抽出し、抽出した
    イベントが送信イベントであるか受信イベントであるか
    を識別すること、抽出したイベントが送信イベントであ
    る場合は、 TCP状態遷移仕様に従って実行可能な遷移を
    探索し、実行可能な遷移の探索に成功すれば状態及び内
    部変数を更新し、失敗すればプロトコルエラーであると
    判定すること、抽出したイベントが受信イベントである
    場合は、イベントシーケンスから未処理で且つ当該受信
    イベント以降最初の送信イベントを抽出し、この送信イ
    ベントが前記受信イベントに対する応答であると仮定し
    て該当する遷移を TCP状態遷移仕様に従って探索し、こ
    の探索に失敗すれば受信イベントが紛失したものと判定
    し、この探索に成功し且つ前記応答であると仮定した送
    信イベントが処理された場合はイベントシーケンスに同
    送信イベントが処理済みであることを記録した後、状態
    及び内部変数を更新して該当する遷移を実行し、この探
    索に成功したが前記応答であると仮定した送信イベント
    が処理されていない場合は状態及び内部変数を更新して
    該当する遷移を実行することを特徴とする請求項1又は
    2に記載のインターネット対応リンクモニタ方法。
  5. 【請求項5】 前記エミュレーション処理において、現
    在行われている輻輳制御に関する内部手順を示すステー
    タスとして、スロー・スタート、コンジェスチョン・ア
    ボイダンス、高速再転送と高速リカバリ、どの内部手順
    も行われていない又は行われている内部手順が不明であ
    ることを示すノーマルの4つを推定すること、送信イベ
    ント及び受信イベントのうちいずれか一方の処理を契機
    に、輻輳制御に関する内部手順の発生、輻輳制御に関す
    る内部手順の終了、輻輳制御に関する内部手順が使用す
    る内部変数の値を判断すること、輻輳制御に関する内部
    手順のうちスロー・スタートについては、タイムアウト
    再送を契機に、スロー・スタート発生したことを判断
    し、以降のDT送信毎及び ACK受信毎に、内部変数の値を
    推定すること、輻輳制御に関する内部手順のうち高速再
    転送と高速リカバリについては、3つの重複ACK の受信
    を契機に、それぞれが発生したことを判断すること特徴
    とする請求項1から4いずれかに記載のインターネット
    対応リンクモニタ方法。
  6. 【請求項6】 一対の通信システム間のPDU を回線上に
    流れるデータから取得し、取得したPDU を解析してエミ
    ュレーションログを作成し、エミュレーションログを元
    にそのPDU を送受信した双方の通信システムのイベント
    シーケンスを推定することを特徴とする請求項1から5
    いずれかに記載のインターネット対応リンクモニタ方
    法。
JP17541497A 1997-07-01 1997-07-01 インターネット対応リンクモニタ方法 Expired - Fee Related JP3343054B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP17541497A JP3343054B2 (ja) 1997-07-01 1997-07-01 インターネット対応リンクモニタ方法
US09/108,197 US6178450B1 (en) 1997-07-01 1998-07-01 Method and apparatus for monitoring a communication link based on TCP/IP protocol by emulating behavior of the TCP protocol

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17541497A JP3343054B2 (ja) 1997-07-01 1997-07-01 インターネット対応リンクモニタ方法

Publications (2)

Publication Number Publication Date
JPH1127308A true JPH1127308A (ja) 1999-01-29
JP3343054B2 JP3343054B2 (ja) 2002-11-11

Family

ID=15995688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17541497A Expired - Fee Related JP3343054B2 (ja) 1997-07-01 1997-07-01 インターネット対応リンクモニタ方法

Country Status (2)

Country Link
US (1) US6178450B1 (ja)
JP (1) JP3343054B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002084920A2 (en) 2000-12-22 2002-10-24 Network Appliance, Inc. Auto-detection of limiting factors in a tcp connection
JP2003534721A (ja) * 2000-05-24 2003-11-18 イーシーテル・リミテツド インターネット通信を監視する方法
WO2007043373A1 (ja) * 2005-10-03 2007-04-19 Matsushita Electric Industrial Co., Ltd. 通信装置
JP2010157875A (ja) * 2008-12-26 2010-07-15 Fujitsu Ltd 通信端末、ネットワークインタフェースカード及びその方法
US8593947B2 (en) 2008-03-25 2013-11-26 Fujitsu Limited Congestion detection method, congestion detection apparatus, and recording medium storing congestion detection program recorded thereon
JP2014115871A (ja) * 2012-12-11 2014-06-26 Nippon Telegraph & Telephone East Corp ログ生成装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7113508B1 (en) * 1995-11-03 2006-09-26 Cisco Technology, Inc. Security system for network address translation systems
US6862622B2 (en) * 1998-07-10 2005-03-01 Van Drebbel Mariner Llc Transmission control protocol/internet protocol (TCP/IP) packet-centric wireless point to multi-point (PTMP) transmission system architecture
US6646987B1 (en) * 1998-10-05 2003-11-11 Nortel Networks Limited Method and system for transmission control protocol (TCP) packet loss recovery over a wireless link
US7376741B1 (en) * 1999-03-19 2008-05-20 Hewlett-Packard Development Corporation, L.P. System for aborting response to client request if detecting connection between client server is closed by examining local server information
US7082467B2 (en) * 2000-02-10 2006-07-25 Hughes Network Systems Method and device for selective transport level spoofing based on information in transport level packet
US6973497B1 (en) * 2000-02-10 2005-12-06 Hughes Electronics Corporation Selective spoofer and method of performing selective spoofing
JP2001285400A (ja) * 2000-03-29 2001-10-12 Kddi Corp トラヒック統計情報収集方法
US7013346B1 (en) * 2000-10-06 2006-03-14 Apple Computer, Inc. Connectionless protocol
US20020156886A1 (en) * 2001-04-23 2002-10-24 Krieski William George Protocol monitor
US7043560B2 (en) * 2001-06-19 2006-05-09 Nokia, Inc. Dynamic probing and reporting of bit rate information
US20030002497A1 (en) * 2001-06-29 2003-01-02 Anil Vasudevan Method and apparatus to reduce packet traffic across an I/O bus
US7143180B2 (en) * 2001-08-16 2006-11-28 International Business Machines Corporation System and method for protecting a TCP connection serving system from high-volume of TCP connection requests
JP4636775B2 (ja) * 2002-10-15 2011-02-23 株式会社山武 ネットワーク監視システム
JP3961415B2 (ja) * 2002-12-16 2007-08-22 株式会社エヌ・ティ・ティ・ドコモ プロトコル不具合自動検出方法、及び、プロトコル不具合自動検出装置
US20050022017A1 (en) * 2003-06-24 2005-01-27 Maufer Thomas A. Data structures and state tracking for network protocol processing
US7310682B2 (en) * 2004-01-08 2007-12-18 Lsi Corporation Systems and methods for improving network performance
US7778399B2 (en) * 2004-07-02 2010-08-17 Inter-Tel, Inc System and method for real-time call log status
US7467078B2 (en) * 2004-07-16 2008-12-16 Agilent Technologies Inc. Portable distributed application framework
US7672223B2 (en) * 2005-03-07 2010-03-02 Cisco Technology, Inc. Method and apparatus for replicating a transport layer protocol stream
DE102005049561A1 (de) * 2005-10-12 2007-04-19 Deutsche Telekom Ag Verfahren zur automatischen Erkennung von Anomalien in Weitverkehrsnetzen (WAN) und lokalen Netzen (LAN)
US7793032B2 (en) * 2007-07-11 2010-09-07 Commex Technologies, Ltd. Systems and methods for efficient handling of data traffic and processing within a processing device
US9282461B2 (en) * 2008-01-28 2016-03-08 Nokia Solutions And Networks Oy Apparatus, methods, and computer program products providing improved flexible resource usage
JP5157586B2 (ja) * 2008-03-28 2013-03-06 富士通株式会社 エミュレータ装置
FR2932935A1 (fr) * 2008-06-20 2009-12-25 France Telecom Detection d'erreur dans un systeme de communication.
US20100058082A1 (en) * 2008-08-27 2010-03-04 Lenovo (Singapore) Ple., Ltd. Maintaining network link during suspend state
DE102009000698A1 (de) * 2009-02-06 2010-08-12 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Prüfschaltung zur Prüfung einer Durchführung eines Handshake-Protokolls und Verfahren zur Prüfung einer Durchführung eines Handshake-Protokolls

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08331146A (ja) * 1995-06-02 1996-12-13 Hitachi Electron Service Co Ltd Lanアナライザ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247517A (en) * 1989-10-20 1993-09-21 Novell, Inc. Method and apparatus for analyzing networks
EP0474932A1 (en) * 1990-09-13 1992-03-18 Hewlett-Packard Company Network fault analyzer
US5434845A (en) * 1991-12-03 1995-07-18 General Signal Corporation Infrequent event trace
KR100293920B1 (ko) * 1993-06-12 2001-09-17 윤종용 비동기전송모드의사용자망접속인터페이스의트래픽제어장치및방법
JPH08314836A (ja) * 1995-05-19 1996-11-29 Hitachi Ltd 管理サービスオブジェクト提供方法
US5710885A (en) * 1995-11-28 1998-01-20 Ncr Corporation Network management system with improved node discovery and monitoring

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08331146A (ja) * 1995-06-02 1996-12-13 Hitachi Electron Service Co Ltd Lanアナライザ

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003534721A (ja) * 2000-05-24 2003-11-18 イーシーテル・リミテツド インターネット通信を監視する方法
JP4708662B2 (ja) * 2000-05-24 2011-06-22 ベリント・システムズ・リミテツド インターネット通信を監視する方法
WO2002084920A2 (en) 2000-12-22 2002-10-24 Network Appliance, Inc. Auto-detection of limiting factors in a tcp connection
EP1350352A2 (en) * 2000-12-22 2003-10-08 Network Appliance, Inc. Auto-detection of limiting factors in a tcp connection
EP1350352A4 (en) * 2000-12-22 2006-01-11 Network Appliance Inc AUTOMATIC DETECTION OF LIMIT FACTORS IN A TCP CONNECTION
WO2007043373A1 (ja) * 2005-10-03 2007-04-19 Matsushita Electric Industrial Co., Ltd. 通信装置
JP4777996B2 (ja) * 2005-10-03 2011-09-21 パナソニック株式会社 通信装置、通信方法、プログラムおよび集積回路
US8593947B2 (en) 2008-03-25 2013-11-26 Fujitsu Limited Congestion detection method, congestion detection apparatus, and recording medium storing congestion detection program recorded thereon
JP2010157875A (ja) * 2008-12-26 2010-07-15 Fujitsu Ltd 通信端末、ネットワークインタフェースカード及びその方法
JP2014115871A (ja) * 2012-12-11 2014-06-26 Nippon Telegraph & Telephone East Corp ログ生成装置

Also Published As

Publication number Publication date
JP3343054B2 (ja) 2002-11-11
US6178450B1 (en) 2001-01-23

Similar Documents

Publication Publication Date Title
JP3343054B2 (ja) インターネット対応リンクモニタ方法
Paxson et al. Known TCP implementation problems
US8605590B2 (en) Systems and methods of improving performance of transport protocols
US7593331B2 (en) Enhancing transmission reliability of monitored data
US6118765A (en) System method and computer program product for eliminating unnecessary retransmissions
EP1690391B1 (en) Transparent optimization for transmission control protocol initial session establishment
EP1344359B1 (en) Method of enhancing the efficiency of data flow in communication systems
US6401127B1 (en) Adaptive timer for LLC type 2 reliable transport in a computer network
CN109756475B (zh) 一种单向网络中数据传输方法及装置
US20150055482A1 (en) TCP Extended Fast Recovery and Segment Timing
Mattsson A DCCP module for ns-2
Caro et al. Retransmission policies with transport layer multihoming
US7623546B1 (en) Latency improvement for file transfers over network connections
CN116074401B (zh) 一种在可编程交换机上的传输层协议实现方法
JP2003060735A (ja) 通信プロトコル試験装置
Peng et al. An effective way to improve TCP performance in wireless/mobile networks
JP3961415B2 (ja) プロトコル不具合自動検出方法、及び、プロトコル不具合自動検出装置
Kato et al. Intelligent protocol analyzer with TCP behavior emulation for interoperability testing of TCP/IP protocols
Kato et al. Design of Protocol Monitor Emulating Behaviors of TCP/IP Protocols
Sugoog Protocol implementations for web based control systems
WO2020154872A1 (zh) 一种传输控制协议加速方法和装置
Kato Kenji Suzuki KDD R&D Laboratories 2-1-15, Ohara, Kamifukuoka-shi, Saitama 356, Japan E-mail:{kato, ogishi, idoue, suzuki}@ hsc. lab. kdd. co. jp
JP2003283594A (ja) 通信プロトコルの試験装置
Gecse et al. Automated test of TCP congestion control algorithms
GB2447469A (en) Handling TCP transmissions by determination of a sending or receiving nodes congestion avoidance capabilities

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110823

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees