JP2017184044A - プログラム、情報処理装置及び情報処理方法 - Google Patents

プログラム、情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP2017184044A
JP2017184044A JP2016069209A JP2016069209A JP2017184044A JP 2017184044 A JP2017184044 A JP 2017184044A JP 2016069209 A JP2016069209 A JP 2016069209A JP 2016069209 A JP2016069209 A JP 2016069209A JP 2017184044 A JP2017184044 A JP 2017184044A
Authority
JP
Japan
Prior art keywords
cpu
congestion control
data
window size
time
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.)
Pending
Application number
JP2016069209A
Other languages
English (en)
Inventor
尚義 大川
Naoyoshi Okawa
尚義 大川
祐士 野村
Yuji Nomura
祐士 野村
飯塚 史之
Fumiyuki Iizuka
史之 飯塚
岡田 純代
Sumiyo Okada
純代 岡田
岩倉 廣和
Hirokazu Iwakura
廣和 岩倉
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016069209A priority Critical patent/JP2017184044A/ja
Priority to US15/455,267 priority patent/US20170289054A1/en
Publication of JP2017184044A publication Critical patent/JP2017184044A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • H04L43/0841Round trip packet loss
    • 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/0852Delays

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】受信側の輻輳制御を特定することが可能となるプログラム等を提供する。【解決手段】コンピュータ3に、コンピュータ1及びサーバコンピュータ2間で送受信されるパケットの時系列情報を取得し、取得した時系列情報に基づき、ウィンドウサイズを推定する処理を実行させる。また、コンピュータ3に、推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記コンピュータ1で実行される輻輳制御を判断する処理を実行させる。【選択図】図1

Description

本発明は、プログラム、情報処理装置及び情報処理方法に関する。
従来、大きなスループットを得られる独自TCP(Transimission Control Protocol)による通信が、通常のTCPによる通信と競合しても、回線帯域が占有されることを防止する技術が開示されている(例えば特許文献1参照)。
特開2007−11702号公報
しかしながら、従来の技術では受信側でどのような輻輳制御をしているのかが把握できないという問題がある。
一つの側面では、受信側の輻輳制御を特定することが可能となるプログラム等を提供することを目的とする。
一つの案では、コンピュータに、第1装置及び第2装置間で送受信されるパケットの時系列情報を取得し、取得した時系列情報に基づき、ウィンドウサイズを推定し、推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する処理を実行させる。
一つの側面では、受信側での輻輳制御を特定することが可能となる。
情報処理システムの概要を示す説明図である。 コンピュータのハードウェア群を示すブロック図である。 サーバコンピュータのハードウェア群を示すブロック図である。 監視コンピュータのハードウェア群を示す説明図である。 受信時刻テーブルのレコードレイアウトを示す説明図である。 3ウェイハンドシェイク処理の流れを示す説明図である。 データ情報テーブルのレコードレイアウトを示す説明図である。 ACK情報テーブルのレコードレイアウトを示す説明図である。 パケットの送受信状況を示す説明図である。 解析情報テーブルのレコードレイアウトを示す説明図である。 3ウェイハンドシェイクの処理手順を示すフローチャートである。 計測処理の手順を示すフローチャートである。 計測処理の手順を示すフローチャートである。 ACK受信時の処理手順を示すフローチャートである。 ACK受信時の処理手順を示すフローチャートである。 パケットロスが発生した際の処理手順を示すフローチャートである。 輻輳制御の判断処理手順を示すフローチャートである。 輻輳制御の判断処理手順を示すフローチャートである。 原因の出力処理手順を示すフローチャートである。 原因の出力処理手順を示すフローチャートである。 データの送受信状況を示す説明図である。 データの送受信状況を示す説明図である。 データの送受信状況を示す説明図である。 データの送受信状況を示す説明図である。 データの送受信状況を示す説明図である。 上述した形態の監視コンピュータの動作を示す機能ブロック図である。 実施の形態4に係る監視コンピュータのハードウェア群を示すブロック図である。
実施の形態1
以下実施の形態を、図面を参照して説明する。図1は情報処理システムの概要を示す説明図である。情報処理システムは第1情報処理装置(第1装置)1、第2情報処理装置(第2装置)2及び第3情報処理装置3等を含む。第1情報処理装置1〜第3情報処理装置3は、パーソナルコンピュータ、サーバコンピュータ、スマートフォン、携帯電話、またはPDA(Personal Digital Assistant)等である。以下、第1情報処理装置1をコンピュータ1、第2情報処理装置をサーバコンピュータ2、第3情報処理装置を監視コンピュータ3と読み替えて説明する。コンピュータ1、サーバコンピュータ2及び監視コンピュータ3は、インターネット、LAN(Local Area Network)または公衆回線網等の通信網Nを介して相互に接続されている。
監視コンピュータ3は、コンピュータ1及びサーバコンピュータ2間で送受信されるパケットを取得する。監視コンピュータ3は取得したパケットを後述した処理により分析する。監視コンピュータ3は、分析後、表示部にコンピュータ1で実行されている輻輳制御を判断し、また遅延発生の原因を表示する。以下詳細を説明する。
図2はコンピュータ1のハードウェア群を示すブロック図である。コンピュータ1は制御部としてのCPU(Central Processing Unit)11、RAM(Random Access Memory)12、入力部13、表示部14、記憶部15、時計部18及び通信部16等を含む。CPU11は、バス17を介してハードウェア各部と接続されている。CPU11は記憶部15に記憶された制御プログラム15Pに従いハードウェア各部を制御する。RAM12は例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM12は、記憶部としても機能し、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部13はタッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報をCPU11へ出力する。表示部14は液晶ディスプレイまたは有機EL(electroluminescence)ディスプレイ等であり、CPU11の指示に従い各種情報を表示する。通信部16は通信モジュールであり、サーバコンピュータ2等と間で情報の送受信を行う。時計部18は日時情報をCPU11へ出力する。記憶部15は大容量メモリであり、制御プログラム15P等を記憶している。
図3はサーバコンピュータ2のハードウェア群を示すブロック図である。サーバコンピュータ2は制御部としてのCPU21、RAM22、入力部23、表示部24、記憶部25、時計部28及び通信部26等を含む。CPU21は、バス27を介してハードウェア各部と接続されている。CPU21は記憶部25に記憶された制御プログラム25Pに従いハードウェア各部を制御する。RAM22は例えばSRAM、DRAM、フラッシュメモリ等である。RAM22は、記憶部としても機能し、CPU21による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部23はキーボード、マウス等の入力デバイスであり、受け付けた操作情報をCPU21へ出力する。表示部24は液晶ディスプレイまたは有機ELディスプレイ等であり、CPU21の指示に従い各種情報を表示する。通信部26は通信モジュールであり、コンピュータ1等と間で情報の送受信を行う。時計部28は日時情報をCPU21へ出力する。記憶部25はハードディスクまたは大容量メモリであり、制御プログラム25P等を記憶している。
図4は監視コンピュータ3のハードウェア群を示す説明図である。監視コンピュータ3は制御部としてのCPU31、RAM32、入力部33、表示部34、記憶部35、時計部38及び通信部36等を含む。CPU31は、バス37を介してハードウェア各部と接続されている。CPU31は記憶部35に記憶された制御プログラム35Pに従いハードウェア各部を制御する。RAM32は例えばSRAM、DRAM、フラッシュメモリ等である。RAM32は、記憶部としても機能し、CPU31による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部33はキーボード、マウス等の入力デバイスであり、受け付けた操作情報をCPU31へ出力する。表示部34は液晶ディスプレイまたは有機ELディスプレイ等であり、CPU31の指示に従い各種情報を表示する。通信部36は通信モジュールであり、コンピュータ2及びサーバコンピュータ1等と間で情報の送受信を行う。時計部38は日時情報をCPU31へ出力する。
記憶部35はハードディスクまたは大容量メモリであり、制御プログラム35P、受信時刻テーブル351、データ情報テーブル352、ACK情報テーブル353及び解析情報テーブル354等を含む。なお、本実施形態においては、受信時刻テーブル351等を記憶部35に記憶する例を挙げて説明するがこれに限るものではない。例えば、他の図示しないDBサーバ内に記憶しても良い。
図5は受信時刻テーブル351のレコードレイアウトを示す説明図である。受信時刻テーブル351はコネクションIDフィールド、データ種別フィールド及び時刻フィールド等を含む。コネクションIDフィールドにはサーバコンピュータ2とコンピュータ1との間の通信のコネクションを特定するための識別情報(以下、コネクションIDという)が記憶されている。データ種別フィールドには、コネクションIDに対応付けて3ウェイハンドシェイク時に送受信されるパケットのデータ種別が記憶されている。具体的にはSYN(Synchronize)、ACK(Acknowledge)及びSYN/ACKの3つが記憶されている。時刻フィールドには、コネクションID及びデータ種別に対応付けて、監視コンピュータ3がパケットを受信した時刻が記憶されている。
図6は3ウェイハンドシェイク処理の流れを示す説明図である。監視コンピュータ3のCPU31は、最初にコンピュータ1からSYNを受信する。CPU31は、データ種別としてSYNを受信時刻テーブル351に記憶する。またCPU31は、SYNの受信時刻として200を受信時刻テーブル351に記憶する。SYNを受信した場合、CPU31は、最大伝送単位(Maximum Transmission Unit。以下、MTUという)を記憶部35に記憶する。本実施形態では1500であるものとして説明する。次いで、CPU31は、サーバコンピュータ2から送信されたSYN/ACKを受信する。CPU31は、データ種別としてSYN/ACKを受信時刻テーブル351に記憶し、SYN/ACKの受信時刻として1400を受信時刻テーブル351に記憶する。
最後に、CPU31は、サーバコンピュータ2から送信されたACKを受信する。CPU31は、データ種別としてACKを受信時刻テーブル351に記憶し、ACKの受信時刻として1800を受信時刻テーブル351に記憶する。CPU31は、推定されるサーバコンピュータ2側のラウンドトリップタイム(以下、RTTsrvという)を算出する。具体的には、CPU31は、SYN/ACKの時刻1400からSYNの時刻200を減算し、RTTsrvとして1200を算出する。さらにCPU31は、推定されるコンピュータ1側のラウンドトリップタイム(以下、RTTcliという)を算出する。具体的には、CPU31は、ACKの受信時刻1800からSYN/ACKの受信時刻1400を減じ、RTTcliとして400を算出する。
図7はデータ情報テーブル352のレコードレイアウトを示す説明図である。データ情報テーブル352はコネクションIDフィールド、データIDフィールド、時刻フィールド、シーケンス番号フィールド及びサイズフィールド等を含む。データIDフィールドには、サーバコンピュータ2から送信されるパケットデータを特定するための識別情報(以下、データIDという)が、コネクションIDに対応付けて記憶されている。時刻フィールドには、データIDに対応付けてパケットを受信した時刻が記憶されている。シーケンス番号フィールドには、受信したパケットのシーケンス番号(以下、場合によりSeqという)の先頭値がデータIDに対応付けて記憶されている。サイズフィールドには、受信したパケットのサイズが、データIDに対応付けて記憶されている。
図8はACK情報テーブル353のレコードレイアウトを示す説明図である。ACK情報テーブル353には、コネクションIDフィールド、ACKIDフィールド、時刻フィールド、ACKサイズフィールド及びデータIDフィールド等が用意されている。ACKIDフィールドには、コンピュータ1から送信されたACK情報を特定するための識別情報(以下、ACKIDという)が、コネクションIDに対応付けて記憶されている。時刻フィールドには、ACKIDに対応付けて、ACK情報を受信した時刻が記憶されている。データIDフィールドには、ACKIDに対応付けてACK情報を受信する前のデータに係るデータIDが記憶されている。
図9はパケットの送受信状況を示す説明図である。CPU31は、サーバコンピュータ2からデータ1〜5を受信する。例えばCPU31は、データ3を受信した場合、コネクションID1に対応付けてデータID3をデータ情報テーブル352に記憶する。またCPU31は、データ3を受信した時刻として1400を記憶する。CPU31は、データIDに対応付けてシーケンス番号として3000を、またデータのサイズとして1500をデータ情報テーブル352に記憶する。
CPU31は、ACKを受信した場合、コネクションIDに対応付けてACKIDをACK情報テーブル353に記憶する。例えば、ACKID1を受信した場合、コネクションID1に対応付けてACKIDとして1を記憶する。またCPU31は、ACKを受信した時刻をACK情報テーブル353に記憶する。CPU31は、シーケンス番号1500にデータサイズ1500を加算してACKサイズとして3000をACK情報テーブル353に記憶する。CPU31は、ACKサイズが3000であることから、データ情報テーブル352を参照し、ACK送信に対応するデータIDは2と判断する。データID2をACKID1に対応付けて、ACK情報テーブル353に記憶する。なお、2度目のACKはACKIDが2であり、受信時刻は2200、ACKサイズは6000(シーケンス番号4500+サイズ1500)、データIDは4となる。
図10は解析情報テーブル354のレコードレイアウトを示す説明図である。解析情報テーブル354は、コネクションIDフィールド、計測ステータスフィールド、ロスステータスフィールド、終了時刻フィールド、開始シーケンス番号フィールド、終了シーケンス番号フィールド、MTUフィールド及びRTTsrvフィールドを含む。また解析情報テーブル354は、RTTcliフィールド、前回ウィンドウサイズフィールド、前回RTTフィールド、最大ウィンドウサイズフィールド、最大増加量フィールド、第1回数フィールド及び第2回数フィールド等を含む。計測ステータスフィールドには、サーバコンピュータ2とコンピュータ1との間で送受信されるパケットを計測する際のステータスがコネクションIDに対応付けて記憶されている。本実施形態では、データの待機ステータスにあることを示すWAIT_DATAと、ACKの待機ステータスにあることを示すWAIT_ACKの2つが記憶されている。なお、本実施形態では説明を容易にするために解析情報テーブル354の記憶内容を1レコードのみ示しているが、これらのデータは時系列で変化し、データの履歴は解析情報テーブル354に逐次記憶されているものとする。
ロスステータスフィールドにはコネクションIDに対応付けてパケットロスのステータスが記憶されている。本実施形態ではパケットロスが発生していないことを示すNO_LOSS、パケットロスが発生したことを示すNOW_LOSS、及び前回ロスが発生したと判断したことを示すPRE_LOSSの3つが記憶される。終了時刻フィールドには、計測グループ測終了時刻が記憶されている。図10の例では2600と記憶されている。計測グループはグループ内で最初に受信したパケットから、後述する終了時刻までに受信したパケットまでのグループである。開始シーケンス番号フィールドには、計測グループの開始シーケンス番号が記憶されている。また終了シーケンス番号フィールドには、計測グループの終了シーケンス番号が記憶されている。図10の例では、計測グループの開始シーケンス番号は0であり、終了シーケンス番号は5999である。
MTUフィールドには、上述したMTUが記憶されている。RTTsrvフィールドには、サーバコンピュータ2側のRTTとして、上述したRTTsrv1200が記憶されている。RTTcliフィールドには、コンピュータ1側のRTTとして、RTTcliが記憶されている。前回ウィンドウサイズフィールドには、推定したウィンドウサイズが記憶されている。なお、ウィンドウサイズの算出処理については後述する。前回RTTフィールドには、RTTsrvとRTTcliを加算したRTTが記憶されている。図10の例では1600(RTTsrv1200+RTTcli400)が記憶されている。最大ウィンドウサイズフィールドには、同一コネクションID内にて、最大の値を有する最大ウィンドウサイズが記憶されている。
最大増加量フィールドには前回ウィンドウサイズに対する今回のウィンドウサイズの増加量の内、最大の値を有する最大増加量が記憶されている。例えば前回のウィンドウサイズが3500であり、今回のウィンドウサイズが6000であった場合、増加量は2500となる。CPU31は、算出した増加量の内、最大の値を有する増加量を解析情報テーブル354に記憶する。第1回数フィールドには、同一コネクションID内でパケットロスが発生した場合のRTTが、ロス発生前のRTT(前回RTT)よりも大きいと判断された回数が記憶されている。また第2回数フィールドには、同一コネクションID内で、パケットロスが発生した回数が記憶されている。
図9を参照しながら各種情報がデータ情報テーブル352、ACK情報テーブル353、及び、解析情報テーブル354に記憶される手順を説明する。図9において監視コンピュータ3がサーバコンピュータ2からデータ1を受信した場合、CPU31は、データ情報テーブル352に、コネクションID1、データID1、時刻600、シーケンス番号0、サイズ1500を記憶する。続いてCPU31は、データ2を受信した場合、データID2、時刻1000、シーケンス番号1500、サイズ1500を記憶する。なお、計測ステータスの初期値はWAIT_ACKとしている。その他、CPU31は、3ウェイハンドシェイクにより取得したMTU1500及びRTTsrv1200を解析情報テーブル354に記憶する。
次に、監視コンピュータ3は、コンピュータ1からサーバコンピュータ2宛のACK1を受信する。CPU31は、はACK1を受信した場合、ACK情報テーブル353に、ACKID1、時刻1400を記憶する。またCPU31は、シーケンス番号1500にサイズ1500を加算してACKサイズ3000をACK情報テーブル353に記憶する。またCPU31は、データ情報テーブル352を参照しACKサイズ3000よりも小さいシーケンス番号を有するデータID2を抽出する。CPU31は、抽出したデータID2をACK情報テーブル353に記憶する。
CPU31は、ACK1を受信後、RTTcliを算出する。CPU31は、ACKID1の時刻1400からコンピュータ1宛のデータID2の時刻1000を減じてRTTcli400を算出する。CPU31は、算出したRTTcliを解析情報テーブル354に記憶する。CPU31は、計測グループの初期設定を行う。具体的には、CPU31は、ACKID1の時刻1400にRTTsrv1200を加算して終了時刻2600を算出する。CPU31は、算出した終了時刻2600を解析情報テーブル354に記憶する。
CPU31は、前回の計測グループの終了シーケンス番号以降の最初のデータの開始シーケンス番号(本実施形態では0)を解析情報テーブル354に記憶する。その後、CPU31は、計測ステータスをWAIT_DATAに変更する。CPU31は、RTTsrv1200にRTTcli400を加算して前回RTT1600を算出する。CPU31は、算出した前回RTTを解析情報テーブル354に記憶する。
続いて、CPU31は、データ3を受信した場合、データID3、時刻1400、シーケンス番号3000、サイズ1500を記憶する。CPU31は、データ4を受信した場合、データID4、時刻1800、シーケンス番号4500、サイズ1500を記憶する。CPU31は、計測ステータスがWAIT_DATAであるため、データ3またはデータ4が同一計測グループか否かを判断する。CPU31は、終了時刻が2600であり、データ3の時刻は1400、データ4の終了時刻は1800であるので、同一計測グループであると判断する。
CPU31は、次にACK2を受信する。CPU31は、ACK情報テーブル353に、ACKID2、時刻2200を記憶する。またCPU31は、シーケンス番号4500にサイズ1500を加算してACKサイズ6000をACK情報テーブル353に記憶する。またCPU31は、データ情報テーブル352を参照しACKサイズ6000よりも小さいシーケンス番号を有するデータID4を抽出する。CPU31は、抽出したデータID4をACK情報テーブル353に記憶する。
CPU31は、ACK2を受信後、RTTcliを算出する。CPU31は、ACKID2の時刻2200からデータID4の時刻1800を減じてRTTcli400を算出する。CPU31は、算出したRTTcliを解析情報テーブル354に記憶する。CPU31は、RTTsrv1200にRTTcli400を加算して前回RTT1600を算出する。CPU31は、更新すべく、算出された前回RTTを解析情報テーブル354に記憶する。CPU31は、算出したRTTが計測グループ内で最大であれば、最大RTTとしてRAM32にその値を記憶する。
図9においてCPU31は、最後にデータ5を受信する。CPU31は、データ5を受信した場合、データID5、時刻2700、シーケンス番号6000、サイズ1500を、データ情報テーブル352に記憶する。CPU31は、計測ステータスがWAIT_DATAであるため、データ5が同一計測グループ内か否かを判断する。CPU31は、データ5の時刻2700は、既に終了時刻2600を超えているため、異なる計測グループであると判断する。CPU31は、ウィンドウサイズの計測を行う。CPU31は、データ情報テーブル352を参照し、同一計測グループのシーケンス番号0〜5999に基づき、ウィンドウサイズを6000と算出する。CPU31は、終了シーケンス番号5999を解析情報テーブル354に記憶する。
CPU31は、前回ウィンドウサイズ6000を、解析情報テーブル354に記憶する。またCPU31は、ウィンドウサイズが同一コネクションID内で最大である場合、最大ウィンドウサイズとして、解析情報テーブル354に記憶する。CPU31は、今回算出したウィンドウサイズから前回算出したウィンドウサイズを減じた増加量をRAM32に記憶する。CPU31は、RAM32に記憶した増加量の内、最大の増加量を最大増加量として解析情報テーブル354に記憶する。図10の例では2500が記憶されている。その後CPU31は、計測ステータスをWAIT_ACKに変更する。
パケットロスが発生する前は、CPU31は、ロスステータスとして、NO_LOSSを解析情報テーブル354に記憶する。パケットロスが発生した場合、CPU31は、ロス直前のRTT(RTTLoss)をRAM32に記憶する。またCPU31は、ロス直前のウィンドウサイズ(前回ウィンドウサイズ)をRAM32に記憶する。CPU31は、ロスステータスをNOW_LOSSに変更する。CPU31は、その後、ロスステータスがPRE_LOSSに移行した後に、パケットロスが発生した回数を第2回数として計数し、計数した第2回数を解析情報テーブル354に記憶する。
CPU31は、ロスステータスがPRE_LOSSに移行した後に、RAM32に記憶したロス直前のウィンドウサイズから、ロス直後のウィンドウサイズを減じ、第2減少量を算出する。CPU31は、RAM32に第2減少量を記憶する。CPU31は、パケットロスが発生するたびに、第2減少量を算出する。CPU31は、TCPで接続を終了する際に送信されるFINデータを受信した場合、第2減少量の合計値を第2回数で除すことで、平均第2減少量を算出し、RAM32に記憶する。またCPU31は、ロスが発生した場合、ロス発生直前のウィンドウサイズの合計値(以下、直前合計値という)をRAM32に記憶する。
CPU31は、遅延による輻輳が発生しているか否かを判断する。具体的にはCPU31は、RAM32に記憶した最大RTTが、ロス直前のRTTよりも大きい場合に遅延による輻輳が発生していると判断する。CPU31は、大きいと判断した回数、すなわち輻輳が発生した回数を第1回数として解析情報テーブル354に記憶する。続いてCPU31は、RAM32に記憶したロス直前のウィンドウサイズから、ロス直後のウィンドウサイズを減じ、第1減少量を算出する。CPU31は、RAM32に第1減少量を記憶する。CPU31は、遅延による輻輳が発生したと判断するたびに、第1減少量を算出する。CPU31は、TCPで接続を終了する際に送信されるFINデータを受信した場合、第1減少量の合計値を第1回数で除すことで、平均第1減少量を算出し、RAM32に記憶する。
CPU31は、コネクション終了に伴いFINを受信した場合、コンピュータ1において実行されている可能性のある輻輳制御を判断する。候補となる輻輳制御としては、例えば、Tahoe、Reno等のパケットロスから輻輳状態を検知する低速なロスベース制御、及び、Vegas等のRTTから輻輳状態を検知する低速な遅延ベース制御を含む低速な輻輳制御(以下、第1輻輳制御という)がある。また、輻輳制御候補として、BIC、CUBIC等のパケットロスから輻輳状態を検知し、広帯域のネットワークでも帯域を使い切ることが可能な高速なロスベースの輻輳制御(以下、第2輻輳制御という)がある。
さらに輻輳制御候補として、Compand TCP(CTCP)、Westwood等のRTTから輻輳状態を検知し、広帯域のネットワークでも帯域を使い切ることが可能な高速遅延ベースの輻輳制御(以下、第3輻輳制御という)がある。なお、以下では第1輻輳制御から第3輻輳制御のいずれにも該当しない他の輻輳制御を第4輻輳制御という。
コンピュータ1で実行されている輻輳制御が、第1輻輳制御〜第4輻輳制御のいずれに該当するかについては以下の手順により判断する。CPU31は、記憶部35から閾値を読み出す。本実施形態では記憶部35に記憶したMTUに係数を乗じた値を閾値とする。CPU31は、解析情報テーブル354に記憶した最大増加量が読み出した閾値より大きいか否かを判断する。CPU31は、閾値より大きくないと判断した場合、推定したウィンドウサイズは線形的に増加しており、コンピュータ1は第1輻輳制御を採用していると判断する。
CPU31は、閾値より大きいと判断した場合、推定したウィンドウサイズは非線形増加しており、コンピュータ1は高速な輻輳制御である第2輻輳制御、第3輻輳制御または第4輻輳制御であると判断する。CPU31は、RAM32に記憶した平均第1減少量を読み出す。CPU31は、読み出した平均第1減少量が閾値よりも大きいか否かを判断する。CPU31は、平均第1減少量が閾値よりも大きくないと判断した場合、コンピュータ1は第2輻輳制御を採用していると判断する。
CPU31は、平均第1減少量が閾値よりも大きいと判断した場合、遅延増大時でもウィンドウサイズの増加量が大きく、遅延より影響が少ないと推定し、コンピュータ1は第3輻輳制御または第4輻輳制御を採用していると判断する。CPU31は、平均第2減少量が第2閾値よりも大きいか否かを判断する。なお、第2閾値はMTUに第1係数を乗じた値(閾値)、または、直前合計値を第2係数及び第2回数で除した値のいずれか大きい方とすればよい。CPU31は、第2閾値をRAM32に記憶しておく。
CPU31は、平均第2減少量が第2閾値よりも大きいと判断した場合、パケットロス発生時にウィンドウサイズが大幅に減少していることから、ロスの影響が大きいと判断し、コンピュータ1は第3輻輳制御を採用していると判断する。CPU31は、平均第2減少量が第2閾値よりも大きくないと判断した場合、コンピュータ1は第4輻輳制御を採用していると判断する。
以上のハードウェア群において各種ソフトウェア処理を、フローチャートを用いて説明する。図11は3ウェイハンドシェイクの処理手順を示すフローチャートである。CPU31は、受信パケットがSYNか否かを判断する(ステップS111)。CPU31は、SYNであると判断した場合(ステップS111でYES)、処理をステップS112へ移行させる。CPU31は、SYNのMTUを記憶部35に記憶する(ステップS112)。CPU31は、パケットの受信時刻及びSYNを受信時刻テーブル351に記憶する(ステップS116)。
CPU31は、受信パケットはSYNでないと判断した場合(ステップS111でNO)、処理をステップS113へ移行させる。CPU31は、受信パケットはACKか否かを判断する(ステップS113)。CPU31は、ACKでないと判断した場合(ステップS113でNO)、処理をステップS114へ移行させる。CPU31は、現在時刻からSYNの受信時刻を減じてRTTsrvを算出する(ステップS114)。CPU31は、算出したRTTsrvを記憶部35に記憶する。CPU31は、コネクションのMTUまたはSYNのMTUの内、値が小さいMTUを解析情報テーブル354に記憶する(ステップS115)。
CPU31は、パケットの受信時刻及びSYN/ACKを受信時刻テーブル351に記憶する(ステップS116)。CPU31は、処理をステップS111へ戻す。CPU31は、受信パケットがACKであると判断した場合(ステップS113でYES)、処理をステップS117へ移行させる。CPU31は、現在時刻から前回のパケット受信時刻を減じてRTTcliを算出する(ステップS117)。CPU31は、算出したRTTcliを記憶部35に記憶する。CPU31は、パケットの受信時刻及びACKを受信時刻テーブル351に記憶する(ステップS118)。
図12及び図13は計測処理の手順を示すフローチャートである。CPU31は、データを受信した場合、コネクションID、データID、受信時刻、シーケンス番号、及びサイズをデータ情報テーブル352に記憶する(ステップS121)。CPU31は、解析情報テーブル354から、計測ステータスを読み出す(ステップS122)。なお、計測ステータスの初期値はWAIT_ACKである。CPU31は、計測ステータスがWAIT_ACKか否かを判断する(ステップS123)。CPU31は、計測ステータスがWAIT_ACKであると判断した場合(ステップS123でYES)、処理を終了する。
CPU31は、計測ステータスがWAIT_ACKでないと判断した場合(ステップS123でNO)、すなわちWAIT_DATAと判断した場合、処理をステップS124へ移行させる。CPU31は、ACKを受信した場合、以下に述べるサブルーチンへ移行する。
図14及び図15はACK受信時の処理手順を示すフローチャートである。CPU31は、ACKを受信した場合、コネクションID、ACKID、受信時刻、ACKサイズ、データIDをACK情報テーブル353に記憶する(ステップS141)。具体的にはCPU31は、シーケンス番号にデータ情報テーブル352に記憶されたデータサイズを加算してACKサイズを算出する。またCPU31は、データ情報テーブル352を参照し、ACKサイズよりも次に小さいシーケンス番号を有するデータIDを抽出する。CPU31は、ACKの受信時刻から抽出したデータIDに対応する受信時刻を減じてRTTcli(第2ラウンドトリップタイム)を算出する(ステップS142)。
CPU31は、算出したRTTcliを解析情報テーブル354に記憶する(ステップS143)。CPU31は、解析情報テーブル354から、ステップS114で算出したRTTsrv(第1ラウンドトリップタイム)を読み出す(ステップS144)。CPU31は、RTTcliにRTTsrvを加算して推定されるRTTを算出する(ステップS145)。CPU31は、算出したRTTを解析情報テーブル354に前回RTTとして記憶する(ステップS146)。
CPU31は、解析情報テーブル354を参照し、計測ステータスがWAIT_ACKであるか否かを判断する(ステップS147)。CPU31は、計測ステータスがWAIT_ACKでないと判断した場合(ステップS147でNO)、処理をステップS154へ移行させる。CPU31は、計測ステータスがWAIT_ACKであると判断した場合(ステップS147でYES)、処理をステップS148へ移行させる。CPU31は、受信したACKが前回計測グループのデータに対応したACKか否かを判断する(ステップS148)。
CPU31は、前回計測したグループのデータに対応したACKであると判断した場合(ステップS148でYES)、処理をステップS154へ移行させる。CPU31は、前回計測したグループのデータに対応したACKでないと判断した場合(ステップS148でNO)、処理をステップS149へ移行させる。CPU31は、ACKの受信時刻及びステップS144で読み出したRTTsrvに基づき終了時刻を算出する(ステップS149)。具体的には、CPU31は、ACKの受信時刻にRTTsrvを加算して終了時刻を算出する。CPU31は、算出した終了時刻を解析情報テーブル354に記憶する(ステップS151)。
CPU31は、前回の計測したグループのシーケンス番号以降の最初のデータの開始シーケンス番号を解析情報テーブル354に記憶する(ステップS152)。CPU31は、計測ステータスをWAIT_DATAに変更する(ステップS153)。CPU31は、ステップS145で算出したRTTがRAM32に記憶した最大RTTよりも大きいか否かを判断する(ステップS154)。CPU31は、RTTが最大RTTよりも大きいと判断した場合(ステップS154でYES)、現在の計測グループの最大RTTを更新する(ステップS155)。CPU31は、最大RTTよりも大きくないと判断した場合(ステップS154でNO)、ステップS155の処理をスキップする。
図16はパケットロスが発生した際の処理手順を示すフローチャートである。CPU31は、パケットロスが発生したか否かを判断する(ステップS161)。具体的には、CPU31は、一定時間継続してパケットを受信してない場合、または、同一のパケットを受信した場合にパケットロスが発生したと判断すればよい。CPU31は、パケットロスが発生していないと判断した場合(ステップS161でNO)、パケットロスが発生するまで待機する。CPU31は、パケットロスが発生したと判断した場合(ステップS161でYES)、処理をステップS162へ移行させる。
CPU31は、ロス直前のRTTをRAM32に記憶する(ステップS162)。CPU31は、ロス直前のウィンドウサイズをRAM32に記憶する(ステップS163)。CPU31は、ロスステータスをNOW_LOSSに変更する(ステップS164)。
再び図12に戻りステップS124以降の処理について説明する。CPU31は、受信したパケットは同一計測グループ内のものであるか否かを判断する(ステップS124)。具体的にはCPU31は、受信時刻がステップS149で算出した終了時刻よりも前か否かにより判断する。CPU31は、同一計測グループ内であると判断した場合(ステップS124でYES)、処理を終了する。一方、CPU31は、同一計測グループ内でないと判断した場合(ステップS124でNO)、処理をステップS125へ移行させる。
CPU31は、終了シーケンス番号を解析情報テーブル354に記憶する(ステップS125)。CPU31は、解析情報テーブル354に記憶した開始シーケンス番号及び終了シーケンス番号に基づきウィンドウサイズを算出する(ステップS126)。具体的には終了シーケンス番号から開始シーケンス番号を減じて1を加算した値を推定されるウィンドウサイズとして算出する。CPU31は、算出したウィンドウサイズを解析情報テーブル354に記憶する。CPU31は、前回の計測グループのウィンドウサイズに対するウィンドウサイズの増加量を算出し、算出した増加量をRAM32に記憶する(ステップS127)。
CPU31は、解析情報テーブル354を参照し、ロスステータスがNO_LOSSか否かを判断する(ステップS128)。CPU31は、ロスステータスがNO_LOSSであると判断した場合(ステップS128でYES)、処理をステップS136へ移行させる。ロスステータスがNO_LOSSでないと判断した場合(ステップS128でNO)、処理をステップS129へ移行させる。CPU31は、ロスステータスがNOW_LOSSか否かを判断する(ステップS129)。CPU31は、ロスステータスがNOW_LOSSであると判断した場合(ステップS129でYES)、処理をステップS131へ移行させる。CPU31は、ロスステータスをPRE_LOSSに変更する(ステップS131)。CPU31は、その後処理をステップS136に移行させる。
CPU31は、ロスステータスがNOW_LOSSでないと判断した場合(ステップS129でNO)、ロスステータスはPRE_LOSSであると判断し、処理をステップS132へ移行させる。CPU31は、CPU31は、ロス直前のウィンドウサイズ及びロス直後のウィンドウサイズに基づき第2減少量を算出し、RAM32に記憶する(ステップS132)。具体的にはCPU31は、ロス直前のウィンドウサイズとロス直後のウィンドウサイズとの差分により第2減少量を算出する。
CPU31は、RAM32に記憶した第2減少量の合計値をRAM32に記憶する(ステップS133)。CPU31は、ロスが発生した第2回数を解析情報テーブル354に記憶する(ステップS134)。CPU31は、ロスステータスをNO_LOSSに変更する(ステップS135)。CPU31は、その後処理をステップS138へ移行させる。
CPU31は、ステップS127で算出した増加量は最大増加量より大きいか否かを判断する(ステップS136)。CPU31は、大きいと判断した場合(ステップS136でYES)、処理をステップS137へ移行させる。CPU31は、最大増加量を、ステップS127で算出した増加量に更新する(ステップS137)。CPU31は、増加量は最大増加量よりも大きくないと判断した場合(ステップS136でNO)、ステップS137の処理をスキップし、処理をステップS138へ移行させる。
CPU31は、遅延による輻輳が発生しているか否かを判断する。具体的には、CPU31は、最大RTTがロス直前のRTTより大きいか否かを判断する(ステップS138)。CPU31は、最大RTTがロス直前のRTTより大きいと判断した場合(ステップS138でYES)、処理をステップS139へ移行させる。CPU31は、ロス直前のウィンドウサイズ及びロス直後のウィンドウサイズに基づき第1減少量を算出し、RAM32に記憶する(ステップS139)。具体的にはCPU31は、ロス直後のウィンドウサイズとロス直後のウィンドウサイズとの差分を第1減少量として算出する。
CPU31は、第1減少量の合計値をRAM32に記憶する(ステップS1310)。CPU31は、ステップS138でYESと判断した第1回数をインクリメントし、解析情報テーブル354に記憶する(ステップS1311)。CPU31は、その後処理をステップS1312へ移行させる。CPU31は、最大RTTはロス直前のRTTより大きいと判断しない場合(ステップS138でNO)、処理をステップS1312へ移行させる。
CPU31は、ステップS126にて算出したウィンドウサイズを参照し、前回の計測グループのウィンドウサイズを更新する(ステップS1312)。CPU31は、解析情報テーブル354の計測ステータスをWAIT_ACKに変更する(ステップS1313)。
図17及び図18は輻輳制御の判断処理手順を示すフローチャートである。CPU31は、RAM32に記憶した閾値を読み出す(ステップS171)。CPU31は、解析情報テーブル354から最大増加量を読み出す(ステップS172)。CPU31は、最大増加量が閾値より大きいか否かを判断する(ステップS173)。CPU31は、最大増加量が閾値より大きくないと判断した場合(ステップS173でNO)、処理をステップS174へ移行させる。CPU31は、表示部34に、コンピュータ1の輻輳制御が複数の輻輳制御候補の内、第1輻輳制御に該当することを示す情報(以下、輻輳制御情報という)を出力する(ステップS174)。なお、本実施形態では輻輳制御情報の出力を表示部34に行うこととしたがこれに限るものではない。
例えば、図示しない他のコンピュータへ輻輳制御情報を送信するようにしても良い。CPU31は、最大増加量が閾値より大きいと判断した場合(ステップS173でYES)、処理をステップS175へ移行させる。CPU31は、RAM32に記憶した第1減少量の合計値を算出する(ステップS175)。CPU31は、解析情報テーブル354に記憶した第1回数を読み出す(ステップS176)。CPU31は、第1減少量の合計値を第1回数で除すことで平均第1減少量を算出する(ステップS177)。
CPU31は、平均第1減少量が閾値より大きいか否かを判断する(ステップS178)。CPU31は、平均第1減少量が閾値より大きいと判断した場合(ステップS178でYES)、処理をステップS179へ移行させる。CPU31は、表示部34に第2輻輳制御であることを示す第2輻輳制御情報を出力する(ステップS179)。CPU31は、平均第1減少量が閾値より大きいと判断しない場合(ステップS178でNO)、処理をステップS181へ移行させる。
CPU31は、第2閾値をRAM32から読み出す(ステップS181)。CPU31は、第2減少量の合計値を算出する(ステップS182)。CPU31は、解析情報テーブル354から第2回数を読み出す(ステップS183)。CPU31は、第2減少量の合計値を第2回数で除すことで平均第2減少量を算出する(ステップS184)。CPU31は、平均第2減少量は第2閾値より大きいか否かを判断する(ステップS185)。
CPU31は、平均第2減少量が第2閾値より大きいと判断した場合(ステップS185でYES)、処理をステップS186へ移行させる。CPU31は、コンピュータ1の輻輳制御が第3輻輳制御であることを示す第3輻輳制御情報を表示部34に出力する(ステップS186)。CPU31は、平均第2減少量が第2閾値より大きくないと判断した場合(ステップS185でNO)、処理をステップS187へ移行させる。CPU31は、コンピュータ1の輻輳制御が第4輻輳制御であることを示す第4輻輳制御情報を表示部34に出力する(ステップS187)。これにより、コンピュータ1の輻輳制御の種類を特定することが可能となる。またウィンドウサイズを推定することで数多くの輻輳制御候補の中からコンピュータ1で実行している可能性の高い輻輳制御を精度よく判断することが可能となる。
実施の形態2
実施の形態2は第1輻輳制御から第4輻輳制御についての遅延の原因を出力する形態に関する。図19及び図20は原因の出力処理手順を示すフローチャートである。CPU31は、各コネクションのスループットを計測する(ステップS191)。なお、スループットの計測処理については後述する。CPU31は、各コネクションの計測したスループット、スループットの計測時間(計測開始時間及び計測終了時間)、及び実施の形態1で述べたコンピュータ1の輻輳制御情報を、記憶部35に記憶する(ステップS192)。
CPU31は、記憶部35にあらかじめ記憶した第3閾値を読み出す(ステップS193)。CPU31は、対象となるコンピュータ1のスループットは第3閾値以下か否かを判断する(ステップS194)。CPU31は、スループットが第3閾値以下である場合(ステップS194でYES)、処理を終了する。CPU31は、スループットが第3閾値以下でないと判断した場合(ステップS194でNO)、処理をステップS195へ移行させる。CPU31は、実施の形態1で述べた処理により、コンピュータ1の輻輳制御が第1輻輳制御であるか否かを判断する(ステップS195)。
CPU31は、第1輻輳制御であると判断した場合(ステップS195でYES)、処理をステップS196へ移行させる。CPU31は、記憶部35を参照し、同一サブネット内で同時間帯に高スループットのコネクションが存在するか否かを判断する(ステップS196)。具体的には、CPU31は、第1輻輳制御と判断したコネクションの計測時間帯(開始時刻及び終了時刻)を読み出す。CPU31は、ステップS192で記憶した各コネクションのスループットのうち、読み出した時間帯に、あらかじめ定めた閾値より高いスループットが存在するか否かを判断する。
CPU31は、同時間帯に高スループットのコネクションが存在すると判断した場合(ステップS196でYES)、処理をステップS197へ移行させる。CPU31は、記憶部35から第1原因を読み出す。具体的には、コンピュータ1の輻輳制御が遅延原因である可能性が高いことを示す情報(第1原因)を記憶部35から読み出す。CPU31は、読み出した第1原因を表示部34へ出力する(ステップS197)。なお、本実施形態では各原因を表示部34へ出力する例を示すがこれに限るものではない。図示しない他のコンピュータへ第1原因を送信するようにしても良い。
CPU31は、同時間帯に高スループットのコネクションが存在しないと判断した場合(ステップS196でNO)、ネットワーク帯域が原因の可能性が高いことを示す情報(第4原因)を記憶部35から読み出す。CPU31は、読み出した第4原因を表示部34へ出力する(ステップS198)。ステップS197及びステップS198の処理後、CPU31は、処理を終了する。
CPU31は、輻輳制御は第1輻輳制御でないと判断した場合(ステップS195でNO)、処理をステップS199へ移行させる。CPU31は、輻輳制御が第2輻輳制御であるか否かを判断する(ステップS199)。CPU31は、輻輳制御が第2輻輳制御であると判断した場合(ステップS199でYES)、処理をステップS201へ移行させる。CPU31は、同一サブネット内で、同時間帯に高スループットのコネクションが存在し、かつ、他のコネクションに第2輻輳制御または第3輻輳制御が存在するか否かを判断する(ステップS201)。
具体的には、CPU31は、第2輻輳制御と判断したコネクションの計測時間帯(開始時刻及び終了時刻)を読み出す。CPU31は、ステップS192で記憶した各コネクションのスループットのうち、読み出した時間帯内に、あらかじめ定めた閾値より高いスループットが存在するか否かを判断する。さらにCPU31は、ステップS192で記憶した他のコネクションの輻輳制御情報を参照し、実施の形態1で述べた輻輳制御が第2輻輳制御または第3輻輳制御であるかを判断する。
CPU31は、高スループットのコネクションが存在し、かつ、他のコネクションに第2輻輳制御または第3輻輳制御が存在すると判断した場合(ステップS201でYES)、処理をステップS202へ移行させる。CPU31は、輻輳が第2輻輳制御と第3輻輳制御とが混在し、ネットワーク帯域が圧迫されていることが原因であることを示す情報(第2原因)を記憶部35から読み出す。CPU31は、第2原因を表示部34へ出力する(ステップS202)。CPU31は、高スループットのコネクションが存在し、他のコネクションに第2輻輳制御または第3輻輳制御が存在すると判断できない場合(ステップS201でNO)、処理をステップS203へ移行させる。
CPU31は、ネットワーク帯域が原因の可能性が高いことを示す情報(第4原因)を記憶部35から読み出す。CPU31は、読み出した第4原因を表示部34へ出力する(ステップS203)。ステップS202及びステップS203の処理後、CPU31は、処理を終了する。
輻輳制御が第2輻輳制御でないと判断した場合(ステップS199でNO)、処理をステップS204へ移行させる。CPU31は、ロス率を算出する(ステップS204)。具体的には、CPU31は、各コネクションのロス発生回数を全データ数で除した値をロス率として算出すればよい。CPU31は、コンピュータ1の輻輳制御が第3輻輳制御であるか否かを判断する(ステップS205)。CPU31は、第3輻輳制御であると判断した場合(ステップS205でYES)、処理をステップS206へ移行させる。CPU31は、記憶部35から閾値を読み出す(ステップS206)。
CPU31は、ロス率が記憶部35から読み出した閾値以上か否かを判断する(ステップS207)。CPU31は、ロス率が閾値以上であると判断した場合(ステップS207でYES)、処理をステップS208へ移行させる。CPU31は、記憶部35から輻輳制御とロス率が遅延原因であることを示す情報(第3原因)を読み出す。CPU31は、読み出した第3原因を表示部34へ出力する(ステップS208)。
CPU31は、輻輳制御は第3輻輳制御でないと判断した場合(ステップS205でNO)、及び、ロス率は閾値以上でないと判断した場合(ステップS207でNO)、処理をステップS209へ移行させる。CPU31は、ネットワーク帯域が原因の可能性が高いことを示す情報(第4原因)を記憶部35から読み出す。CPU31は、読み出した第4原因を表示部34へ出力する(ステップS209)。ステップS208及びS209の処理後、CPU31は、処理を終了する。これにより、コンピュータ1の輻輳制御に加えて、遅延原因を把握することが可能となる。また他のコネクションの輻輳制御、ロス率等に応じてより的確に遅延原因を特定することが可能となる。
本実施の形態2は以上の如きであり、その他は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態3
実施の形態3はスループットを計測する形態に関する。CPU31は、上述したスループットの計測に際し、下記式(1)に示すとおり、輻輳ウィンドウ(cwnd)をRTTで除すことで、スループットを推定すればよい。ここで、RTTとは、データのパケットを送信してからACKのパケットが戻ってくるまでの時間のことをいい、すなわち、往復遅延時間を示す。輻輳ウィンドウとは、RTT内に流れるデータのパケットのデータ量のことをいう。
スループット[bps]=cwnd[bit]/RTT[sec]・・・式(1)
なお、受信側に低速区間がある場合、RTTが短い場合、またはcwndが大きい場合等は、以下に示す方法によりスループットを推定しても良い。図21はデータの送受信状況を示す説明図である。図21に示すように、計測地点で、CPU31は、送信端末であるサーバコンピュータ2から受信端末であるコンピュータ1に1以上のDATA(データ)をまとめた計測グループ(以下、グループと略す。)を送信する。CPU31は、グループに対応する最初のDATAに対応するRTTとグループのDATAのデータ量とにより、TCPスループットの推定値を計測する。ここでは、RTTがtp0である。グループのDATAのデータ量がcwindであり、1500×3[byte]である。
CPU31は、最初のACKの取得から計測グループに対応する最後のACKの取得にかかった時間とグループから最初のDATAを除いたDATAのデータ量とによりネットワーク帯域の近似値を算出する。ここでは、最初のACKの取得から最後のACKの取得にかかった時間、すなわちACK間隔がtp1である。
CPU31は、TCPスループットの推定値とネットワーク帯域の近似値とを比較して、TCPスループットの推定値が実効スループットとして良いかどうかの妥当性を判定する。すなわち、CPU31は、グループ内のACK間隔から計測されるスループットを利用してTCPスループットの推定値の妥当性を判定する。CPU31は、TCPスループットの推定値がネットワーク帯域の近似値より大きくなければ、TCPスループットの推定値が妥当であると判断し、TCPスループットの推定値を実効スループットとして特定する。
CPU31は、TCPスループットの推定値がネットワーク帯域の近似値より大きければ、TCPスループットの推定値が妥当でないと判断し、さらに、ネットワーク帯域の近似値を実効スループットとして良いかどうかの妥当性を判定する。例えば、CPU31は、計測グループ外の次の計測グループのACKを含めた第2のACK間隔と該当するデータ量とから計測されるスループット値を推定する。ここでは、第2のACK間隔がtp2である。CPU31は、この推定値とTCPスループットの推定値とを比較して、ネットワーク帯域の近似値の妥当性を判定する。
CPU31は、TCPスループットの推定値が第2のACK間隔から計測されるスループット値より大きければ、ネットワーク帯域の近似値が妥当であると判断し、ネットワーク帯域の近似値を実効スループットとして特定する。CPU31は、TCPスループットの推定値が第2のACK間隔から計測されるスループット値より大きくなければ、ネットワーク帯域の近似値が妥当ないと判断し、TCPスループットの推定値を実効スループットとして特定する。
図22から図25はデータの送受信状況を示す説明図である。図22に示すように、DATAをまとめたグループg1には、3個のDATAが含まれるとする。DATAの1個のデータ量は、1500byteであるとする。RTTが2msecであり、ACK間隔が0.6msecである場合であるとする。
CPU31は、RTT及びcwindを式(1)に代入し、TCPスループットの推定値TPtcpを算出する。ここでは、cwindは、d1〜d3のDATAのデータ量であり、8×(3×1500[byte])ビットである。RTTが2msecである。TCPスループットの推定値TPtcpは、以下のように算出される。
TPtcp=8×(3×1500[byte])/2[msec]=18[Mbps]・・・式(2)
CPU31は、ACK間隔とグループから最初のDATAを除いたDATAのデータ量とによりネットワーク帯域の近似値TPrcv1を算出する。ここでは、ACK間隔は、最初のACKa1の取得からグループに対応する最後のACKa2の取得にかかった時間である。DATAのデータ量は、グループg1から最初のDATAd1を除いたDATAd2、d3のデータ量(第2パケット量)であり、8×(2×1500[byte])ビットである。ACK間隔は0.6msecである。ネットワーク帯域の近似値TPrcv1は、以下のように算出される。
TPrcv1=8×(2×1500[byte])/0.6[msec]=40[Mbps]・・・式(3)
CPU31は、TCPスループットの推定値TPtcpとネットワーク帯域の近似値TPrcv1とを比較して、TCPスループットの推定値の妥当性を判定する。CPU31は、TCPスループットの推定値TPtcpがネットワーク帯域の近似値TPrcv1より大きくないので、TCPスループットの推定値TPtcpを実効スループットとして特定する。すなわち、TCPスループットの推定値TPtcpが妥当である場合である。
かかる場合に、TCPスループットの推定値TPtcpを実効スループットとする理由は、以下のとおりである。すなわち、受信側の低速区間が40Mbpsである際に、DATAd1〜d3を転送した場合の実際の転送時間は、以下のように算出される。
実際の転送時間=8×(3×1500[byte])/40[Mbps]=0.9[msec]・・・式(4)
これによると、実際の転送時間(0.9msec)は、RTT(2msec)よりも短く、ネットワークに無駄な時間が存在している。したがって、TCPスループットの推定値TPtcpは、実効スループットとして特定される。
図23に示すように、DATAをまとめたグループg1のDATAの個数、DATAの1個のデータ量、RTTは、図22と同様である。図23が図22と異なるのは、ACK間隔0.6msecから2.4msecに変更した点である。
CPU31は、RTT及びcwindを式(1)に代入し、TCPスループットの推定値TPtcpを算出する。ここでは、TCPスループットの推定値TPtcpは、18[Mbps]である。
CPU31は、ACK間隔とグループg1から最初のDATAを除いたDATAのデータ量(第2パケット量)とによりネットワーク帯域の近似値TPrcv1を算出する。ここでは、ACK間隔が2.4msecである。ネットワーク帯域の近似値TPrcv1は、以下のように算出される。
TPrcv1=8×(2×1500[byte])/2.4[msec]=10[Mbps]・・・式(5)
CPU31は、TCPスループットの推定値TPtcpとネットワーク帯域の近似値TPrcv1とを比較して、TCPスループットの推定値の妥当性を判定する。CPU31は、TCPスループットの推定値TPtcpがネットワーク帯域の近似値TPrcv1より大きいので、TCPスループットの推定値TPtcpが妥当でないと判断し、さらに、ネットワーク帯域の近似値TPrcv1の妥当性を判定する。
かかる場合に、TCPスループットの推定値TPtcpを実効スループットとしない理由は、以下のとおりである。すなわち、受信側の低速区間が10Mbpsである際に、DATAd1〜d3を転送した場合の実際の転送時間は、以下のように算出される。
実際の転送時間=8×(3×1500[byte])/10[Mbps]=3.6[msec]・・・式(6)
これによると、実際の転送時間(3.6msec)は、RTT(2msec)よりも長く、ネットワークに無駄な時間が存在しない。したがって、TCPスループットの推定値TPtcpは、実効スループットとして特定されない。そして、CPU31は、引き続き、ネットワーク帯域の近似値TPrcv1の妥当性を判定する。
図24に示すように、DATAをまとめたグループg1のDATAの個数、DATAの1個のデータ量、RTT、ACK間隔は、図23と同様である。図24が図23と異なるのは、次のグループg2には、2個のDATAが含まれる点である。図24が図23と異なるのは、第2のACK間隔が2.6msecである点である。
CPU31は、RTT及びcwindを式(1)に代入し、TCPスループットの推定値TPtcpを算出する。ここでは、TCPスループットの推定値TPtcpは、18[Mbps]である。
CPU31は、ACK間隔とグループから最初のDATAを除いたDATAのデータ量とによりネットワーク帯域の近似値TPrcv1を算出する。ここでは、ネットワーク帯域の近似値TPrcv1は、図23の場合と同様に、10[Mbps]である。
CPU31は、TCPスループットの推定値TPtcpがネットワーク帯域の近似値TPrcv1より大きいので、TCPスループットの推定値TPtcpが妥当でないと判断し、以下のように、ネットワーク帯域の近似値TPrcv1の妥当性を判定する。CPU31は、第2のACK間隔と第2パケット量及び次のグループg2のDATAd4、d5のデータ量とから計測されるスループット値TPrcv2を算出する。ここでは、第2のACK間隔が2.6msecである。第2パケット量は、8×(2×1500[byte])ビットである。次のグループg2のDATAd4、d5のデータ量も、8×(2×1500[byte])ビットである。スループット値TPrcv2は、以下のように算出される。
TPrcv2=8×(4×1500[byte])/2.6[msec]=19.2[Mbps]・・・式(7)
CPU31は、TCPスループットの推定値TPtcpが第2のACK間隔から計測されるスループット値TPrcv2より大きくないので、TCPスループットの推定値TPtcpを実効スループットとして特定する。すなわち、ネットワーク帯域の近似値TPrcv1がTCPスループットの推定値TPtcpより小さいが、ネットワーク帯域の近似値TPrcv1が妥当でない場合である。
かかる場合に、ネットワーク帯域の近似値TPrcv1を実効スループットとしないでTCPスループットの推定値TPtcpを実効スループットとする理由は、以下のとおりである。すなわち、ACK間隔は、Cross traffic(外乱)によって広がったにすぎず、低速区間でも、式(4)で算出された実際の転送時間(0.9msec)はRTT(2msec)もよりも短く、ネットワークに無駄な時間が存在している。したがって、ネットワーク帯域の近似値TPrcv1は低速区間の実効スループットとして適切ではなく、TCPスループットの推定値TPtcpが実効スループットとして特定される。
図25に示すように、DATAをまとめたグループg1のDATAの個数、DATAの1個のデータ量、RTT、ACK間隔、次のグループg2のDATAの個数は、図24と同様である。図25が図24と異なるのは、第2のACK間隔が4.8msecである点である。
CPU31は、RTT及びcwindを式(1)に代入し、TCPスループットの推定値TPtcpを算出する。ここでは、TCPスループットの推定値TPtcpは、18[Mbps]である。
CPU31は、ACK間隔とグループから最初のDATAを除いたDATAのデータ量とによりネットワーク帯域の近似値TPrcv1を算出する。ここでは、ネットワーク帯域の近似値TPrcv1は、図24の場合と同様に、10[Mbps]である。
CPU31は、TCPスループットの推定値TPtcpがネットワーク帯域の近似値TPrcv1より大きいので、TCPスループットの推定値TPtcpが妥当でないと判断し、以下のように、ネットワーク帯域の近似値TPrcv1の妥当性を判定する。CPU31は、第2のACK間隔と第2パケット量及び次のグループg2のDATAd4、d5のデータ量とから計測されるスループット値TPrcv2を算出する。ここでは、第2のACK間隔が4.8msecである。第2パケット量は、8×(2×1500[byte])ビットである。次のグループg2のDATAd4,d5のデータ量も、8×(2×1500[byte])ビットである。スループット値TPrcv2は、以下のように算出される。
TPrcv2=8×(4×1500[byte])/4.8[msec]=10[Mbps]・・・式(8)
CPU31は、TCPスループットの推定値TPtcpが第2のACK間隔から計測されるスループット値TPrcv2より大きいので、ネットワーク帯域の近似値TPrcv1を実効スループットとして特定する。すなわち、ネットワーク帯域の近似値TPrcv1が妥当である場合である。
かかる場合に、ネットワーク帯域の近似値TPrcv1を実効スループットとする理由は、以下のとおりである。すなわち、後続のパケットのACK間隔である第2のACK間隔も広がっており、低速区間でのスループットが低いと推測される。これに加えて、DATAd1〜d3を転送した場合の実際の転送時間は、以下の式(9)で表わされるように3.6msecであり、RTT(2msec)よりも長く、ネットワークに無駄な時間が存在しない。
実際の転送時間=8×(3×1500[byte])/10[Mbps]=3.6[msec]・・・式(9)
したがって、ネットワーク帯域の近似値TPrcv1が、低速区間のスループットとして適切である可能性が高く、実効スループットとして特定される。
本実施の形態3は以上の如きであり、その他は実施の形態1及び2と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態4
図26は上述した形態の監視コンピュータ3の動作を示す機能ブロック図である。CPU31が制御プログラム35Pを実行することにより、監視コンピュータ3は以下のように動作する。取得部261は、第1装置及び第2装置間で送受信されるパケットの時系列情報を取得する。推定部262は、取得した時系列情報に基づき、ウィンドウサイズを推定する。判断部263は推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する。
図27は実施の形態4に係る監視コンピュータ3のハードウェア群を示すブロック図である。監視コンピュータ3を動作させるためのプログラムは、ディスクドライブ、メモリーカードスロット等の読み取り部30AにCD-ROM、DVD(Digital Versatile Disc)ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体3Aを読み取らせて記憶部35に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ3Bを監視コンピュータ3内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Nを介して接続される他のサーバコンピュータ(図示せず)からダウンロードすることも可能である。以下に、その内容を説明する。
図27に示す監視コンピュータ3は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体3Aまたは半導体メモリ3Bから読み取り、或いは、通信網Nを介して他のサーバコンピュータ(図示せず)からダウンロードする。当該プログラムは、制御プログラム35Pとしてインストールされ、RAM32にロードして実行される。
本実施の形態4は以上の如きであり、その他は実施の形態1から3と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
以上の実施の形態1から4を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータに、
第1装置及び第2装置間で送受信されるパケットの時系列情報を取得し、
取得した時系列情報に基づき、ウィンドウサイズを推定し、
推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する
処理を実行させるプログラム。
(付記2)
推定したウィンドウサイズの時間的変化量を算出し、
算出した変化量の最大値を抽出し、
最大値が閾値より小さい場合、第1輻輳制御と判断する
処理を実行させる付記1に記載のプログラム。
(付記3)
取得した時系列情報に基づきラウンドトリップタイムを推定し、
パケットロスが発生した場合に、推定したラウンドトリップタイムの最大値が、ロス発生前に推定したラウンドトリップタイムより大きいか否か判断し、
大きいと判断した場合に、ロス発生前後に推定されたウィンドウサイズの第1差分及び大きいと判断した第1回数を記憶し、
第1差分の合計値を第1回数で除した値が、閾値より大きいか否か判断し、
大きいと判断した場合に、第2輻輳制御と判断する
処理を実行させる付記2に記載のプログラム。
(付記4)
パケットロスが発生した場合に、ロス発生前後に推定されたウィンドウサイズの第2差分及びロスが発生した第2回数を記憶し、
第2差分の合計値を第2回数で除した値が、閾値より大きいか否か判断し、
大きいと判断した場合に、第3輻輳制御と判断する
処理を実行させる付記2または3に記載のプログラム。
(付記5)
第2差分の合計値を第2回数で除した値が、閾値より大きいか否か判断し、
大きくないと判断した場合に、第4輻輳制御と判断する
付記4に記載のプログラム。
(付記6)
第1輻輳制御から第4輻輳制御それぞれに対応した遅延原因を出力する
処理を実行させる付記5に記載のプログラム。
(付記7)
複数のコネクションについてスループットを計測し、
前記第1輻輳制御と判断した場合に、同時間帯に所定閾値より高いスループットのコネクションが存在するか否かを判断し、
存在すると判断した場合に、記憶部に記憶した第1原因を出力する
処理を実行させる付記2から6のいずれか一つに記載のプログラム。
(付記8)
複数のコネクションについてスループットを計測し、
一のコネクションにて前記第2輻輳制御と判断した場合に、同時間帯に計測したスループット内に所定閾値より高いスループットが存在し、かつ、他のコネクションにて第2輻輳制御または第3輻輳制御と判断したか否かを判断し、
高いスループットが存在しかつ第2輻輳制御または第3輻輳制御と判断した場合に、記憶部に記憶した第2原因を出力する
処理を実行させる付記4から7のいずれか一つに記載のプログラム。
(付記9)
パケットのロス率を算出し、
前記第3輻輳制御と判断し、かつ、ロス率が所定閾値以上の場合に、記憶部に記憶した第3原因を出力する
処理を実行させる付記4から8のいずれか一つに記載のプログラム。
(付記10)
第1装置宛のパケットの時間情報から前記第2装置宛のパケットの時間情報を減じた第1ラウンドトリップタイムを算出し、
第2装置宛のパケットの時間情報から前記第1装置宛のパケットの時間情報を減じた第2ラウンドトリップタイムを算出し、
第1ラウンドトリップタイム及び第2ラウンドトリップタイムの合計値により推定されるラウンドトリップタイムを算出する
付記3から9のいずれか一つに記載のプログラム。
(付記11)
第1装置から受信したパケットの時間情報及び前記第1ラウンドトリップタイムに基づき、終了時刻を算出し、
取得した時間情報、算出した終了時刻及び取得したパケットのシーケンス番号に基づきウィンドウサイズを推定する
処理を実行させる付記10に記載のプログラム。
(付記12)
第1装置及び第2装置間で送受信されるパケットの時系列情報を取得する取得部と、
取得した時系列情報に基づき、ウィンドウサイズを推定する推定部と、
推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する判断部と
を備える情報処理装置。
(付記13)
第1装置及び第2装置間で送受信されるパケットの時系列情報を取得し、
取得した時系列情報に基づき、ウィンドウサイズを推定し、
推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する
処理をコンピュータに実行させる情報処理方法。
1 コンピュータ
2 サーバコンピュータ
3 監視コンピュータ
3A 可搬型記録媒体
3B 半導体メモリ
30A 読み取り部
11 CPU
12 RAM
13 入力部
14 表示部
15 記憶部
15P 制御プログラム
16 通信部
18 時計部
21 CPU
22 RAM
23 入力部
24 表示部
25 記憶部
25P 制御プログラム
26 通信部
28 時計部
31 CPU
32 RAM
33 入力部
34 表示部
35 記憶部
35P 制御プログラム
36 通信部
38 時計部
351 受信時刻テーブル
352 データ情報テーブル
353 ACK情報テーブル
354 解析情報テーブル
261 取得部
262 推定部
263 判断部
N 通信網

Claims (6)

  1. コンピュータに、
    第1装置及び第2装置間で送受信されるパケットの時系列情報を取得し、
    取得した時系列情報に基づき、ウィンドウサイズを推定し、
    推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する
    処理を実行させるプログラム。
  2. 推定したウィンドウサイズの時間的変化量を算出し、
    算出した変化量の最大値を抽出し、
    最大値が閾値より小さい場合、第1輻輳制御と判断する
    処理を実行させる請求項1に記載のプログラム。
  3. 取得した時系列情報に基づきラウンドトリップタイムを推定し、
    パケットロスが発生した場合に、推定したラウンドトリップタイムの最大値が、ロス発生前に推定したラウンドトリップタイムより大きいか否か判断し、
    大きいと判断した場合に、ロス発生前後に推定されたウィンドウサイズの第1差分及び大きいと判断した第1回数を記憶し、
    第1差分の合計値を第1回数で除した値が、閾値より大きいか否か判断し、
    大きいと判断した場合に、第2輻輳制御と判断する
    処理を実行させる請求項2に記載のプログラム。
  4. パケットロスが発生した場合に、ロス発生前後に推定されたウィンドウサイズの第2差分及びロスが発生した第2回数を記憶し、
    第2差分の合計値を第2回数で除した値が、閾値より大きいか否か判断し、
    大きいと判断した場合に、第3輻輳制御と判断する
    処理を実行させる請求項2または3に記載のプログラム。
  5. 第1装置及び第2装置間で送受信されるパケットの時系列情報を取得する取得部と、
    取得した時系列情報に基づき、ウィンドウサイズを推定する推定部と、
    推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する判断部と
    を備える情報処理装置。
  6. 第1装置及び第2装置間で送受信されるパケットの時系列情報を取得し、
    取得した時系列情報に基づき、ウィンドウサイズを推定し、
    推定したウィンドウサイズの時間的変化に基づき、複数の輻輳制御候補から前記第1装置で実行される輻輳制御を判断する
    処理をコンピュータに実行させる情報処理方法。
JP2016069209A 2016-03-30 2016-03-30 プログラム、情報処理装置及び情報処理方法 Pending JP2017184044A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016069209A JP2017184044A (ja) 2016-03-30 2016-03-30 プログラム、情報処理装置及び情報処理方法
US15/455,267 US20170289054A1 (en) 2016-03-30 2017-03-10 Apparatus and method to determine a type of congestion control based on temporal change in a window size

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016069209A JP2017184044A (ja) 2016-03-30 2016-03-30 プログラム、情報処理装置及び情報処理方法

Publications (1)

Publication Number Publication Date
JP2017184044A true JP2017184044A (ja) 2017-10-05

Family

ID=59959930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016069209A Pending JP2017184044A (ja) 2016-03-30 2016-03-30 プログラム、情報処理装置及び情報処理方法

Country Status (2)

Country Link
US (1) US20170289054A1 (ja)
JP (1) JP2017184044A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019059170A1 (ja) 2017-09-25 2019-03-28 川澄化学工業株式会社 医療用保存容器を製造するための樹脂組成物、シートおよび医療用保存容器
JP2022533737A (ja) * 2019-05-20 2022-07-25 グーグル エルエルシー トランスポート制御プロトコルのトリップタイムの推定

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3854135A4 (en) * 2018-09-18 2022-04-06 Telefonaktiebolaget LM Ericsson (publ) DATA CONTENT DISTRIBUTION PROCESSES AND NODES
KR102139378B1 (ko) * 2018-11-20 2020-07-29 울산과학기술원 혼잡 제어 방법 및 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019059170A1 (ja) 2017-09-25 2019-03-28 川澄化学工業株式会社 医療用保存容器を製造するための樹脂組成物、シートおよび医療用保存容器
JP2022533737A (ja) * 2019-05-20 2022-07-25 グーグル エルエルシー トランスポート制御プロトコルのトリップタイムの推定
JP7326478B2 (ja) 2019-05-20 2023-08-15 グーグル エルエルシー トランスポート制御プロトコルのトリップタイムの推定

Also Published As

Publication number Publication date
US20170289054A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
CN105827537B (zh) 一种基于quic协议的拥塞改进方法
JP2017184044A (ja) プログラム、情報処理装置及び情報処理方法
US20210328895A1 (en) Determining an end user experience score based on client device, network, server device, and application metrics
EP2562972B1 (en) Usable bandwidth measurement system, transmission device, usable bandwidth measurement method and recording medium
CN102667510B (zh) 增大针对远程装置的传输速率
CN111541626B (zh) 网络带宽更新方法、装置、电子设备及存储介质
US11133980B2 (en) Detecting sources of computer network failures
WO2014140673A1 (en) Congestion avoidance and control for udp-based protocols
CN106656642B (zh) 一种往返时延的测量方法、装置及系统
WO2019214230A1 (zh) 一种空调除霜的方法及设备
JP2018148350A (ja) 閾値決定装置、閾値決定方法及びプログラム
CN110177027B (zh) 网络时延抖动度量方法、装置、计算机设备及存储介质
US10432492B2 (en) Method and apparatus for analyzing communication quality, and non-transitory computer-readable storage medium
CN113992548B (zh) 一种带宽测速方法及装置
JP7003467B2 (ja) パケット分類プログラム、パケット分類方法およびパケット分類装置
CN114866489A (zh) 拥塞控制方法和装置及拥塞控制模型的训练方法和装置
JP6432377B2 (ja) メッセージログ除去装置、メッセージログ除去方法、及びメッセージログ除去プログラム
JP2011142473A (ja) ユーザ待ち時間推定装置、ユーザ待ち時間推定方法、及びプログラム
US20190349390A1 (en) Packet format inference apparatus and computer readable medium
JP6589223B2 (ja) サービス推定装置、サービス推定方法、及びプログラム
JP5907225B2 (ja) イベント推定装置、イベント推定方法、及び、イベント推定プログラム
JP5786733B2 (ja) 監視装置、プログラム及び監視方法
JP2011142474A (ja) ユーザ待ち時間推定装置、ユーザ待ち時間推定方法、及びプログラム
JP2020150359A (ja) 解析プログラム、解析装置、及び解析方法
JP6618971B2 (ja) 推定装置、推定方法及びプログラム