(57)【特許請求の範囲】
【請求項１】
１０Ｇｂｉｔ毎秒以上の伝送帯域を持った長距離広帯域ネットワーク（ＬＦＮ）で伝送量が時間的に変動する高信頼パケット通信を行う際のデータ通信制御方法であり、該ＬＦＮはそのＬＦＮで送受信を行う使用者からみてパケット伝送損失が発生するものであって、
（１）肯定応答（ＡＣＫ）返信を所定の等時間間隔で行う事で上記ＬＦＮでの伝送遅延による影響を抑制し、かつ、
（２）上記パケット伝送損失について、その損失割合を求め、該損失割合から上記パケット伝送損失に対する再送要求として通常送られるパケットと再送するロスパケットの送信の割合を決定して上記ＬＦＮの負荷変動による影響を制御し、かつ、
（３）パケット送信においては、設定可能な最大伝送可能情報レートを探索し、探索された上記最大伝送可能情報レート以下の所定の伝送可能情報レートについて、上記パケット送信の送信レートを上記所定の伝送可能情報レートに収束させる送信レート制御を所定の時間間隔で行うことで輻輳制御を行い、
上記送信レート制御は、データ送信において所定の目標スループット性能を実現するようにパケットの送信間隔を制御する制御であり、
パケットの送信間隔を制御する上記制御は、所定の時点のスループット予測結果がその前回測定時のスループットより、（１）大きい場合は、目標値との差分値の小数（１未満の値）倍分を加算することで立ち上がりを急勾配にし、（２）小さい場合は、上記時点とその過去所定回分のスループット値を平均することで、目標スループットまでの到達時間を短くするものである、
ことを特徴とする、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【請求項２】
１０Ｇｂｉｔ毎秒以上の伝送帯域を持った長距離広帯域ネットワーク（ＬＦＮ）で伝送量が時間的に変動する高信頼パケット通信を行う際のデータ通信制御方法であり、該ＬＦＮはそのＬＦＮで送受信を行う使用者からみてパケット伝送損失が発生するものであって、
（１）肯定応答（ＡＣＫ）返信を所定の等時間間隔で行う事で上記ＬＦＮでの伝送遅延による影響を抑制し、かつ、
（２）上記パケット伝送損失について、その損失割合を求め、該損失割合から上記パケット伝送損失に対する再送要求を決定して上記ＬＦＮの負荷変動による影響を制御し、かつ、
（３）パケット送信においては、設定可能な最大伝送可能情報レートを探索し、探索された上記最大伝送可能情報レート以下の所定の伝送可能情報レートについて、上記パケット送信の送信レートを上記所定の伝送可能情報レートに収束させる送信レート制御を所定の時間間隔で行うことで輻輳制御を行い、
上記パケット通信の送信側では、その受信側で使用可能なバッファの使用率閾値と該バッファの飽和時間閾値を設定し、上記受信側から取得した受信バッファの使用率からバッファが飽和するまでの時間を予測する計算手段を有し、上記バッファの使用率閾値あるいは上記で予測された時間が上記バッファの飽和時間閾値を超えた場合、送信側で上記送信レート制御を用いて送信レートを抑制するものであることを特徴とする、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【請求項３】
上記送信レート制御は、データ送信において所定の目標スループット性能を実現するようにパケットの送信間隔を制御する制御である
ことを特徴とする請求項２に記載の、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【請求項４】
上記パケット通信の送信側では、
その受信側で使用可能なバッファの使用率閾値と該バッファの飽和時間閾値を設定し、上記受信側から取得した受信バッファの使用率からバッファが飽和するまでの時間を予測する計算手段を有し、
上記バッファの使用率閾値あるいは上記で予測された時間が上記バッファの飽和時間閾値を超えた場合、送信側で上記送信レート制御を行って送信レートを抑制するものであることを特徴とする請求項１に記載の、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【請求項５】
上記パケット通信の受信側は、パケット受信とは独立に周期的にＡＣＫ送信を行うものであり、一方、送信側では、送信側で受信した上記ＡＣＫとは独立にパケット送信を行うものであることを特徴とする請求項１から４のいずれか１つに記載の、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【請求項６】
上記最大伝送可能情報レートを探索する探索は、分割禁止フラグをセットしたパケットを様々なセグメントサイズで送信し、応答が確認できた最大セグメントサイズから最大パケットサイズを見出して最大伝送ユニット（ＭＴＵ）サイズとして用いるものであることを特徴とする請求項１から５のいずれか１つに記載の、負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時間的に変動する伝送量の高信頼パケット通信を行う際のデータ通信制御方法で、負荷変動およびパケット伝送損失があるＬＦＮ（長距離広帯域ネットワーク）伝送路で高信頼通信を行うためのデータ通信制御方法に関する。
【背景技術】
【０００２】
近年、ビッグデータの活用、災害対策経路の確保、災害に備えたデータ複製、高精細映像データの送受信、クラウド計算機リソース活用やＤＲ（Disaster Recovery）型の分散ストレージシステムなど、ビジネス分野や防災分野をはじめとするさまざまな分野で信頼性の高い大規模データ通信の高速化ニーズが高まりつつある。対災害分野やストレージ分野などは、データ伝送の高速性だけではなく、データの信頼性が求められる分野である。動画像伝送が属するのは信頼性が確保されないＵＤＰ通信等による高速データ伝送が有効に活用されている分野であったが、最近の４Ｋ／８Ｋ画像伝送では、ノイズ等による画質劣化が問題になっており、映像伝送分野でも信頼性の高い高速データ通信が希求されつつある。これに伴い、単線のＷＡＮ（Wide Area Network）の実態的な通信帯域は１０Ｇｂｐｓから、４０Ｇｂｐｓ、１００Ｇｂｐｓ、近い将来の４００Ｇｂｐｓまたは１Ｔｂｐｓへと急速に増速されてきている。一般に、１０Ｇｂｐｓ以上のＷＡＮである長距離伝送路をＬＦＮ（Long Fat Network）またはＬＦＰ（Long Fat Pipe）と呼ぶ。だが、ＬＦＮの実用化が進展しつつあるものの実態的な伝送路で高い信頼性を有するデータ通信プロトコルまたはアプリケーションはまだ少ない。
【０００３】
トランスポート層における高速データ通信制御方式（一般には通信プロトコルと呼ばれる）では、ＴＣＰ（Transmission Control Protocol）が最も標準的で汎用的なデータ通信制御方式である。ＴＣＰは、パーソナルＰＣのほとんどすべてのＯＳ（Operating System）に標準実装されており、利便性の点からは最も有利である。ＴＣＰは、ＨＴＴＰ（Hypertext Transfer Protocol）やＦＴＰ（File Transfer Protocol）、ＮＦＳなど汎用性の高いアプリケーション層のデータ伝送方式の多くで採用されており、ＬＡＮ（Local Area Network）等でパケットロスや遅延が少ない理想的な通信路においては、比較的高い通信性能を示すことが知られている。
【０００４】
しかし、実態的な通信路においては伝送遅延やパケットロスは不可避であり、これらは特にＬＦＮのような長距離伝送路においてはＴＣＰ通信に深刻な影響を与える。また、ＬＦＮを実用的に利用する場合には、その伝送路上には複数データ通信が共存するため、通信端末間での輻輳や公平性の問題を無視することができない。これらの問題を解決するため、ＴＣＰ  Ｗｅｓｔｗｏｏｄ、ＴＣＰ Ｒｅｎｏ、ＴＣＰ Ｎｅｗｒｅｎｏ、ＴＣＰ Ｖｅｇａｓ、ＨＳＴＣＰ（High Speed TCP）、ＦａｓｔＴＣＰ、ＳｃａｌａｂｌｅＴＣＰなど、標準的なＴＣＰの輻輳制御機能などを改良した発展的なＴＣＰ制御手順（Advanced TCP）がさまざまに提案されてきた。しかし、ＲＦＣ１３２３のＷｉｎｄｏｗ  ＳｃａｌｅやＲＦＣ２０１８のＳＡＣＫ（Selective Acknowledgement）などのＴＣＰ拡張ではＬＦＮにおける現実的なパケットロスや遅延環境では通信性能を十分に達成することはできない。
【０００５】
そこで近年、ＬＦＮで十分な高速通信を実現するためにＴＣＰをベースとした様々な工夫がなされている。たとえばクレアリンクテクノロジー社のｘＴＣＰは送受信サーバ間において独自パケット制御を行うことで高速化を試みるインターセプト型（通信介入型）のＰＥＰ（Performance Enhancement Proxy）のように動作する大規模ストレージ間の高速データ伝送（インターネットＶＰＮなどベストエフォート型共有網を利用することを含む）や国際インターネットＶＰＮの高速化、および、通信品質の安定化などの実利用分野で実績があるが、通信性能としては１０Ｇｂｐｓを超える性能を達成していない。他の手法による取り組みとして、送受信間でＴＣＰコネクションを複数（大量）に張ることで高速化を目指す手法が提案されている。クレアリンクテクノロジー社のｍＴＣＰはその一つであり、ｘＴＣＰ同様のＰＥＰ構成を取りながら、複数のＴＣＰコネクションを自由に複数経路に張る機構を備えるなど多機能化により用途や環境を特定したＴＣＰ完全互換、および、公平性を維持した通信高速化を目指している。ＬＦＮにおける性能としては数Ｇｂｐｓ程度である。また、国立情報学研究所のＭＭＣＦＴＰ（非特許文献１）はデータを小さな（２５６ＫＢ）サイズに分割し、約１Ｇｂｐｓの狭帯域コネクションを数１００本から数１０００本以上張ることで、ＬＦＮで１０Ｇｂｐｓを超える実効通信性能を達成している。ただし、大量のコネクションを制御することは容易ではなくシステム規模、および、負荷も大きく、通信回線やシステム動作等の輻輳状態での公平性やインターネット上のファイアウォール（Firewall）やルータにおける負荷等の実用性の問題は今後の課題である。ＧｒｉｄＦＴＰはグリッドコンピューティングを背景に高速ファイル転送用に開発されたアプリケーションであるが、ＴＣＰをベースとした標準的なファイル伝送制御方式であるＦＴＰをもとにしており、ＴＣＰが本質的に不利であるパケットロスや遅延への対応についてはＦＴＰセッションを複数張ることで解決を試みており、ＬＦＮでの成果については報告されていない。また、東京大学では１０Ｇｂｐｓや１００Ｇｂｐｓのネットワークカードにオフロードエンジンを搭載するハードウェア依存型の高速伝送ＴＣＰを開発しており、１０Ｇｂｐｓを超える長距離データ伝送実験に成功しているが、ＦＰＧＡによる１００Ｇｂｐｓデータ伝送に取り組んでいる段階である。なお、この手法はハードウェアに依存しているため、特定の環境でしか動作できないという制約がある。
【０００６】
一方、ＬＦＮにおける高速伝送への異なる取り組みとして、ＵＤＰ（User Datagram Protocol）等による独自の高速データ通信制御方式の開発が挙げられる。ＵＤＰ自身は信頼性が確保されないパケット通信制御方式であるため、これをもとにした高信頼データ通信制御方式が開発されてきた。ＵＤＰ  Ｌｉｔｅを改良したＵＤＰ Ｌｉｔｅｒは信頼性の点で本議論の対象外である。ＴＢＳテレビ社のＳＴＯＲＭ（登録商標）（特許文献１）はＵＤＰに再送制御・レート制御・バケツリレー配送などを搭載した大容量ファイルの多拠点効率配信アプリケーションである。その主な特徴は以下の点にある。まず、全二重で帯域が上下対称となっている通信回線を利用し、転送・制御ともにＵＤＰによる単一ポートで行うことで、通信回線の容量を最大限に使用する。最適な転送速度は、受信側が一定時間にどれだけのパケットを受信できたかにより算出する。転送したファイルが正しくサーバに届いたか、ファイルの整合性チェックを、ハッシュ値計算によるファイル検査で行なう。このファイル検査は、ＣＲＣやＳＨＡ検査で行い、検査なしの設定も可能である。また、通信回線の容量より速い速度でパケットを送信する。また、最大転送速度の設定や、帯域使用率の設定機能を有する。ＵＤＰの上位層に独自のフローコントロールを導入したという特徴もある。また、Ｓｋｅｅｄ社のＳＳＢＰ（SkeedSilverBullet Protocol）（特許文献２）は、ＵＤＰに再送制御・レート制御・セキュリティ機能などを搭載した高信頼データ通信制御方式である。このＳＳＢＰは、クライアント・サーバー型で動作するファイル転送ソフトで、遅延時間が大きい遠距離での通信を高速化するために開発されたものである。遅延時間の影響を受けずに通信できるようにするため、パケットの送出方法を工夫している。具体的には、受信側からのＡＣＫを待たずに、送信側が独自に判断したペースでパケットを送信する。さらに、輻輳を起こさない程度に転送レートを自動調整する。この輻輳は、パケットロス率ではなくＲＴＴ（Round-Trip Time）の変動によって判断する。
【０００７】
ＳＴＯＲＭやＳＳＢＰは高遅延環境でのＴＣＰとの性能比較においての優位性が公開されているが、1Gを超えるようなＬＦＮでの高速伝送やパケットロス環境に関する報告はない。
Ａｓｐｅｒａ社のＦＡＳＰ（特許文献３）は、ＬＦＮでの１０Ｇ超での高速伝送を目指すファイル伝送用の高信頼データ通信制御方式である。このＦＡＳＰは、通信や回線の空き容量を予測し、データを通信回線の空き容量と回線速度に見合う量に自動調整してからデータ送出を行なうことで、回線遅延やパケットロスなどの影響を避けて利用可能な帯域幅を最大限に活用するものである。また、ファイル伝送用のバルク通信技術であり、リアルタイム通信用ではない。
【０００８】
ＵＤＴ（UDP-based Data Transfer）（非特許文献２）プロトコルは、米国イリノイ大学が開発したＵＤＰベースのトランスポート層の高信頼データ通信制御方式である。このＵＤＴは、定期的に受信側が利用できる帯域幅を検出し、この結果によるウインドウ・サイズを送信側に伝える。送信側では、そのウインドウ・サイズの分だけパケットを送信するという特徴がある。後述の通り、ＵＤＴのソースコードの解析・分析等調査を行ったところ、２．５Ｇｂｐｓを超える帯域ではＬＦＮ通信に適さない設計および実装が含まれていることが分かっている。
【０００９】
上に挙げた高信頼データ通信制御方式の多くはＴＣＰ／ＩＰのアプリケーション層のツールとして提供されており、そのほとんどがデータファイルを対象とした伝送ツールである。これは、ＬＦＮの利活用においてはクラウドストレージに代表されるファイル伝送が最も求められているアプリケーションであることに起因している。言い換えると、改良型ＴＣＰおよびＵＤＰを除くと、ＴＣＰのように使用できるソケットライブラリとして提供されるトランスポート層における高信頼性の高速データ通信制御方式は存在しない。また、上記で紹介したデータ通信制御方式にはハードウェアに依存したものやＰＥＰ（Performance Enhancing Proxy）のような中継機器を前提としたものも含まれている。したがって、これまでにはＬＦＮでの高速伝送に適したユーザランドで動作する高信頼データ通信制御方式はまだ提供されていない。
【００１０】
現在、ビッグデータ時代を背景として、ＬＦＮにおける様々な高信頼・高速通信アプリケーションやシステムがファイル伝送以外の用途でも期待されている。例えば、信頼性の高い映像伝送システムやストリーム型のデータ伝送システムなどである。このような自由な用途のデータ通信アプリケーションを実装するには、ＬＦＮに適したトランスポート層の高信頼データ通信制御方式が必要である。
【００１１】
近年、高信頼性・高速通信を目的として、ＴＣＰおよびＵＤＰをベースとした多数のトランスポート層におけるデータ通信制御方式が実装提供されている。これらのデータ通信制御方式の位置関係の概略を図７に示す。
ソフトウェアレベルのＴＣＰベースの実装例としては、標準化ＨＳＴＣＰ（RFC3649）、標準化ＳＣＴＰ（RFC4960）、米メンタット社ＸＴＰ（SkyX）、クレアリンクテクノロジー社ｘＴＣＰなどがあるが、これらは１０Ｇｂｐｓを超える実装例とはなっていない。ＴＣＰをベースとした１０Ｇｂｐｓを超える高速伝送アプリケーション例としては情報学研究所のＭＭＣＦＴＰがあるが、ＯＳのユーザランド（ユーザ空間と同じ）で利用できるソケットタイプのライブラリではなく、また帯域保証を高精度に行うことはできない。
【００１２】
ＵＤＰベースのデータ通信制御方式としては、米アスペラ社のＦＡＳＰ、米イリノイ大学のＵＤＴ、ＴＢＳテレビ社のＳＴＯＲＭ（登録商標）、Ｓｋｅｅｄ社のＳＳＢＰ(SkeedSilverBullet Protocol)などが著名である。
これらはいずれも国際的に用いられているが、高速伝送の視点で考えるとＦＡＳＰが１０Ｇｂｐｓでの単純なリンク上でのファイル伝送に成功しているのみである。なお、ソケットタイプのライブラリとして提供されているのはＵＤＴのみである。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１２−１００１６５号公報
【特許文献２】特開２０１３−３８６６４号公報
【特許文献３】米国特許出願公開第２０１２／０３２０７３２号明細書
【非特許文献】
【００１４】
【非特許文献１】大学共同利用機関法人・システム研究機構  国立情報学研究所、  NEWS RELEASE 「世界最速クラスの長距離データ転送に成功」、平成２７年（２０１５年）５月１３日
【非特許文献２】Gu, Yunhong, and Robert L. Grossman, “UDT: UDP-based data transfer for high-speed wide area networks”, Computer Networks Vol. 51, No. 7. pp.1777-1799, May 2007.
【発明の概要】
【発明が解決しようとする課題】
【００１５】
今後の１０Ｇｂｐｓ超（さらには１００Ｇｂｐｓ超）という高速伝送路であるＬＦＮを最大限活用する自由なアプリケーション開発を考えると、高速伝送可能な高信頼データ通信制御方式がトランスポート層のソケットライブラリで提供されることが望ましい。また、期待されるデータ通信制御方式は、特定の環境に依存しない一般的なＯＳのユーザランドで利用できる非カーネル依存型の通信制御方式であると思われる。ＴＣＰの特性を考えると、これらを実現することは容易ではなく、したがって、ＵＤＰベースでの方式設計が必要となる。
【００１６】
一般には、遅延やパケットロスがない理想環境において単一のＴＣＰコネクションが達成できるデータ伝送速度は、汎用的なＬｉｎｕｘ（登録商標）ＯＳが動作するサーバ計算機と４０Ｇｂｐｓ対応のネットワークカードを用いた場合で、１０Ｇｂｐｓ〜２０Ｇｂｐｓ程度である。ただし、遅延やパケットロスの環境下でも、単一コネクションでこの程度のスループットを達成するＴＣＰソケットライブラリは存在しない。これらを鑑みて、本発明が目指すのは高遅延、高パケットロス環境でも単一コネクションで１０Ｇｂｐｓ以上を達成する。高信頼なデータ通信制御方式である。これが実現できると、サーバ・クライアント間でのマルチコネクションやマルチリンクにより、１００Ｇ超のデータ通信が期待できる。
【００１７】
これらの視点から、我々は上記の背景技術で挙げたＵＤＰベースのデータ通信制御方式のうち米イリノイ大学のＵＤＴを用いて４０Ｇｂｐｓの性能を有するＬＦＮ環境でデータ伝送実験を行った。ＵＤＴは、上記の背景技術で唯一のＵＤＰベースで開発されたトランスポート層のソケットライブラリで提供される高信頼データ通信制御方式である。
【００１８】
その結果、パラメータをいかに変更しても１０Ｇｂｐｓ以上の性能を達成することができなかった。例えば１０ＧｂＥ環境におけるＵＤＴの単純送受信性能は単一インタフェースにおいて２Ｇｂｐｓ程度にとどまった。さらに、１０Ｇｂｐｓを６本束ねた（Link Aggregation）環境下でサーバ、クライアントの各６プロセスの並列実行によっても７Ｇｂｐｓ強が限界であった。
【００１９】
ＵＤＴのソースコードの解析・分析等調査を行ったところ、２．５Ｇｂｐｓを超える帯域では、送信バッファにおける送信データの追加と、ＡＣＫ応答確認による同データの削除に関わる処理、および受信ウィンドウ処理において、従来のものでは広帯域に適さない設計および実装が含まれていることがわかった。
【００２０】
１０Ｇｂｐｓ超の広帯域データ通信制御方式を、現実のＬＦＮにおいて利用する際には、ネットワーク環境の品質や揺らぎが無視できない。つまり例えば、パケットロス率や輻輳があり、またそれらによるネットワーク帯域は常に変動する可能性がある。長距離伝送では伝送遅延の影響が無視できない。従って、実用的な広帯域データ伝送方式では、回線品質に影響を与える遅延、パケットロス、輻輳に強いだけではなく、それらの時間的変動に対してもすばやく応答する機能の実現が必須である。
【課題を解決するための手段】
【００２１】
本発明の負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法は、１０Ｇｂｉｔ毎秒以上の伝送帯域を持った長距離広帯域ネットワーク（ＬＦＮ）で伝送量が時間的に変動する高信頼パケット通信を行う際のデータ通信制御方法であり、該ＬＦＮはそのＬＦＮで送受信を行う使用者からみてパケット伝送損失が発生するものであって、
（１）肯定応答（ＡＣＫ）返信を所定の等時間間隔で行う事で上記ＬＦＮネットワークでの伝送遅延による影響を抑制し、かつ、
（２）上記パケット伝送損失について、その損失割合を求め、該損失割合から上記パケット伝送損失に対する再送要求として通常送られるパケットと再送するロスパケットの送信の割合を決定して上記ＬＦＮネットワークの負荷変動による影響を制御し、かつ、
（３）パケット送信においては、設定可能な最大伝送可能情報レートを探索し、探索された上記最大伝送可能情報レート以下の所定の伝送可能情報レートについて、上記パケット送信の送信レートを上記所定の伝送可能情報レートに収束させる送信レート制御を所定の時間間隔で行うことで輻輳制御を行い、
上記送信レート制御は、データ送信において所定の目標スループット性能を実現するようにパケットの送信間隔を制御する制御であり、
パケットの送信間隔を制御する上記制御は、所定の時点のスループット予測結果がその前回測定時のスループットより、（１）大きい場合は、目標値との差分値の小数（１未満の値）倍分を加算することで立ち上がりを急勾配にし、（２）小さい場合は、上記時点とその過去所定回分のスループット値を平均することで、目標スループットまでの到達時間を短くするものである、
ことを特徴とする。
なお、ＬＦＮネットワークでの上記高信頼通信は、リアルタイム性のあるデータ通信であってもよい。
【００２２】
また、１０Ｇｂｉｔ毎秒以上の伝送帯域を持った長距離広帯域ネットワーク（ＬＦＮ）で伝送量が時間的に変動する高信頼パケット通信を行う際のデータ通信制御方法であり、該ＬＦＮはそのＬＦＮで送受信を行う使用者からみてパケット伝送損失が発生するものであって、
（１）肯定応答（ＡＣＫ）返信を所定の等時間間隔で行う事で上記ＬＦＮでの伝送遅延による影響を抑制し、かつ、
（２）上記パケット伝送損失について、その損失割合を求め、該損失割合から上記パケット伝送損失に対する再送要求を決定して上記ＬＦＮの負荷変動による影響を制御し、かつ、
（３）パケット送信においては、設定可能な最大伝送可能情報レートを探索し、探索された上記最大伝送可能情報レート以下の所定の伝送可能情報レートについて、上記パケット送信の送信レートを上記所定の伝送可能情報レートに収束させる送信レート制御を所定の時間間隔で行うことで輻輳制御を行い、
上記パケット通信の送信側では、その受信側で使用可能なバッファの使用率閾値と該バッファの飽和時間閾値を設定し、上記受信側から取得した受信バッファの使用率からバッファが飽和するまでの時間を予測する計算手段を有し、上記バッファの使用率閾値あるいは上記で予測された時間が上記バッファの飽和時間閾値を超えた場合、送信側で上記送信レート制御を用いて送信レートを抑制するものである。
【００２３】
また、上記送信レート制御は、データ送信において所定の目標スループット性能を実現するようにパケットの送信間隔を制御する制御である。
【００２４】
また、上記パケット通信の送信側では、
その受信側で使用可能なバッファの使用率閾値と該バッファの飽和時間閾値を設定し、上記受信側から取得した受信バッファの使用率からバッファが飽和するまでの時間を予測する計算手段を有し、
上記バッファの使用率閾値あるいは上記で予測された時間が上記バッファの飽和時間閾値を超えた場合、送信側で上記送信レート制御を行って送信レートを抑制するものである。
【００２５】
また、上記パケット通信の受信側は、パケット受信とは独立に周期的にＡＣＫ送信を行うものであり、一方、送信側では、送信側で受信した上記ＡＣＫとは独立にパケット送信を行うものである。
【００２６】
また、上記最大伝送可能情報レートを探索する探索は、分割禁止フラグをセットしたパケットを様々なセグメントサイズで送信し、応答が確認できた最大セグメントサイズから最大パケットサイズを見出して最大伝送ユニット（ＭＴＵ、Maximum Transmission Unit）サイズとして用いるものである。
【発明の効果】
【００２７】
本発明の負荷変動およびパケット伝送損失があるＬＦＮネットワークで高信頼通信を行うためのデータ通信制御方法によって、負荷変動およびパケット伝送損失がある場合でも１コネクションで１０Ｇｂｐｓを超える高信頼性通信が実現できる。本発明のデータ通信制御方式により、単一コネクションで１０Ｇｐｓ通信が可能であるため、既存の１０Ｇｂｉｔイーサーネットネットワークインターフェイス（ＮＩＣ）を有する対向アプリケーションでは、ほぼワイヤーレートでの通信が容易に実現できる。
従来のデータ通信制御方式（ＴＣＰ系、ＵＤＰ系）では、単一コネクションのスループットが数１００Ｍｂｐｓ〜数Ｇｂｐｓ程度であり、さらにマルチリンク手法が確立されていなかった。そのためにＬＦＮ環境で高スループットのデータ通信（特にストリーム系データ通信）はほとんど実現していない。
【００２８】
また、本発明ではスループットの拡大、および、マルチ経路による経路冗長性の確保を行うことによりマルチリンク環境での動作が可能となる。その結果、単一サーバ間で数１０Ｇｂｐｓから１００Ｇｂｐｓ環境でのデータ通信が実現できる。たとえばＬＦＮを使った８Ｋ画像通信などの広帯域データ伝送では、複数台の伝送系サーバで並列伝送し、データ同期するシステム（マルチポイント−マルチポイント）を用いることが多い。この場合、通信データの揺らぎやデータ通信パフォーマンスダウンが危惧される。本発明により、単一サーバ間（シングルポイント‐シングルポイント）で１００Ｇｂｐｓを達成できるため、高品質・広帯域での映像伝送ができる。
【００２９】
また、様々なインターネット環境において、本発明を帯域制御型伝送方式として利用することができる。既存のＴＣＰに比べて立ち上がりが早く、また目標スループットを動的かつ自律的に調整することができる。これにより、クライアントに与えられたサーバからのネットワーク経路の帯域を十分に活用したアプリケーション製品の実現が可能となる。特に、パケットロスや遅延、輻輳が変動するネットワーク環境でも目的に応じたデータ通信が期待できる。
【図面の簡単な説明】
【００３０】
【図１】本発明の通信デバイスの送信側と受信側とにそれぞれのスレッドと適用するスレッド構成を示す図である。
【図２】図１の構成を拡張してマルチスレッド構成として用いる例を示す図である。
【図３】パケット送受信とそれとは独立に行われるＡＣＫ受送信の時系列を示す図である。ＡＣＫ受送信の間もパケット送受信は継続される。
【図４】（ａ）はシミュレータによる帯域変化（６⇒８⇒９Ｇｂｐｓ）に対するデータ送出応答とスループット（遅延２００ｍｓ）を示す図、（ｂ）は受信バッファの使用状況を示す図である。
【図５】４０Ｇｂｐｓ環境で１コネクションの実測結果を示す図である。
【図６】パケット再送制御のシーケンス図である。
【図７】近年実装提供されている高信頼性と高速通信を目的としたＴＣＰおよびＵＤＰをベースとした多数のトランスポート層におけるデータ通信制御方式の位置関係の概略を示す図である。
【発明を実施するための形態】
【００３１】
本発明の特徴の１つは、シングルコネクションで１０Ｇｂｐｓ以上を達成し、同時に遅延、パケットロス、輻輳の環境においても帯域を使い切ることができる（つまりワイヤーレートを達成できる）データ通信制御方式をＵＤＰベースで実現するものである。詳しくは、以下に示す。
【００３２】
本発明の、データ通信制御方式は、ＯＳのカーネルには手を加えずに、ＯＳのユーザランドにおけるアプリケーションから利用できる汎用的なライブラリ化によって、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、ＯＳ  Ｘ（ＭａｃＯＳ）（登録商標）やＡｎｄｒｏｉｄ（登録商標）など様々な計算機環境で利用でき、さらにプログラミング負荷の抑制と通信レートの最適化を両立させる。
【００３３】
以下の記載で、上記のためのいくつかの基本的な考え方（アイデア）とアイデアを実現するための処理方法、および各処理のための制御技術に分けて説明する。まず、基本的な考え方について説明し、次に、そこで用いる処理方法について説明し、さらに、各処理の要素技術となる各制御技術について説明する。
【００３４】
＜基本的な考え方＞
コンピュータのＯＳ上のユーザランドの実行権限で動作するアプリケーション（ソケットライブラリ）によって１０Ｇｂｐｓ超の性能を実現するために、本発明は、ネットワークＩ／ＯとコンピュータのＣＰＵ（コア）の効率化（オーバヘッドをなくす）と高精度アルゴリズムによる通信制御を行うデータ通信制御方式を、ＵＤＰベースで提案している。
【００３５】
ＵＤＰの場合、ＩＰスタック（ＵＤＰセグメントヘッダ）には通信に必要な最小限の符号領域しか定義されていないので、ＵＤＰデータフィールドに独自のデータフィールドを定義する。さらにＩ／Ｏ効率化のため、ジャンボフレームのサポートを行い、ＩＰスタックのフラグメンテーションを効率的に利用することでプロセッサ負荷をバランスさせる。具体的には、ＩＰスタックをパケットのシーケンス管理を行う共通パケットヘッダと、同期（ＳＹＮ）、確認応答（ＡＣＫ）、Ｐａｔｈ ＭＴＵ探索（以下の制御技術の説明Ｅ）、ＲＴＴ（以下の制御技術の説明Ｆ）などの目的に合わせた追加パケットヘッダに分け、その都度最適なヘッダを送信する。送出制御（以下の制御技術の説明Ａ）で決まるパケットサイズからこのパケットヘッダ分を引いたサイズを伝送データに割り当てる。
【００３６】
さらにＣＰＵのマルチコアを効率よく使用することで、精度の高いユーザランドレベルでのペースコントロールによるＵＤＰ送出を実現する。具体的には、パケットの送信、受信に専用のスレッドを用意し、別々のコアを割り当てる（図１）。それ以外の処理（送信制御のパラメータ計算処理など）は、更に別のスレッド（管理スレッド）および別のコアで行い、必要に応じ送受信スレッド動作と送信制御のパラメータ計算処理用のデータの流れを同期する。送受信と制御の処理コアを分けることで送受信速度性能を確保しつつ高精度での制御計算を行う。
【００３７】
図１は、シングルコネクションでのデータ通信システムの構成例を示すブロック図である。上記の様に、パケットの送信、受信に専用のスレッドを用意し、別々のコアを割り当てる。この仕組みは、将来の１００Ｇｂｐｓ超通信でも有効である。また、図２は、図１をマルチコネクション化することにより実現した構成例である。これを拡張することにより、１０本程度のマルチコネクション（すなわち１０程度のマルチプロセス）で１００Ｇｂｐｓ超通信が実現できる。近年のチップ当たり１０コアを超えるＣＰＵにおいては、この数字は現実的な数字である。
【００３８】
送信間隔の制御精度とプロセッサ負荷などを考慮すると、１０Ｇｂｐｓ以上では高精度の送信速度の制御が必要である。最適なスループット確保のために、イーサネット（登録商標）フレーム送出の時間間隔を送信制御（ペーシング）する（以下の制御技術の説明Ａ）。
【００３９】
通信の際には通信路上において性能劣化、信頼性の低下につながる様々な現象が発生する。例えばパケット遅延、パケット損失、ＲＴＴの揺らぎ、パケットの到着順序逆転や利用可能帯域の変動などであり、程度によってはデータ受信側の受信バッファが飽和する場合もある。本発明ではこれらの影響を最小化し、１０Ｇｂｐｓ以上の環境において安定したスループットを確保するために、輻輳制御（制御技術の説明Ｂ）・再送制御制御技術の説明（制御技術の説明Ｃ）・フロー制御（制御技術の説明Ｄ）の各制御手順を提案する。
【００４０】
通信開始時の測定および制御としては、ＲＴＴ（制御技術の説明Ｆ）やＰａｔｈ  ＭＴＵ（制御技術の説明Ｅ）を測定し、回線状況をいち早く確認する。また、通信経路情報の記憶と再利用により、以前に別の通信が使用した経路・宛先と同じものを通信に使用するとき、パラメータ値（フロー制御値、ＲＴＴ等）を引き継いで利用する。
【００４１】
通信中の測定および制御としては、定期的なＲＴＴの測定（制御技術の説明Ｆ）、受信側から継続して送られるデータのロス率（制御技術の説明Ｇ）、受信バッファ使用率からのバッファ飽和時間予測（制御技術の説明Ｄ）、再送パケット情報（制御技術の説明Ｃ）をフィードバックとし、再送・輻輳・フロー制御を行いつつデータを送信する。
通信開始時の制御としては、ＲＴＴ（制御技術の説明Ｆ）やＰａｔｈ ＭＴＵ（制御技術の説明Ｅ）を測定し、回線状況をいち早く確認する。通信中の制御としては、受信側から継続して送られるデータのロス率（制御技術の説明Ｇ）、受信バッファの使用率（制御技術の説明Ｄ）、再送パケット情報（制御技術の説明Ｃ）をフィードバック情報とし、再送・輻輳・フロー制御を行いつつデータ送信を継続する。
【００４２】
また、データ通信においては、通信資源の分配に関する通信の公平性（fairness）がしばしば問題になる。しかし、本発明では目標スループットを設定でき、かつ目標値を高精度で高速に達成できる（制御技術の説明Ａ）ため、この問題から解放される。さらに本発明では、他のトラフィックから影響を受けたスループットを観測値としてフィードバックする機構（制御技術の説明Ｂ）により、利用帯域獲得への積極性を決定するパラメータの調整によって、同時に流れる同プロトコルや他のＴＣＰ等のプロトコルパケットに対する公平性を担保できる。たとえば他のＴＣＰと同程度、ＴＣＰよりも強く（つまり広帯域に）、ＴＣＰよりも弱く（つまり低帯域に）と自由な設定とその状態の維持が可能である。
【実施例１】
【００４３】
＜処理方法＞
一般にＴＣＰ等で行われるデータ通信では、受信側で、送信側からのパケットに応じたＡＣＫ送信を行うが、ＲＴＴが大きくなるに従い、通信性能が劣化することがよく知られている。本発明では、図３に示すように、受信側において送信側からのパケット受信とは独立に定期的にＡＣＫ送信を行うことによって通信性能を高める。具体的には人の感応速度やＴＣＰ通信などで一般的にＡＣＫ  Ｄｅｌａｙ値として利用される値（たとえば２００ｍｓ）を固定送信間隔としてＡＣＫ応答する。一方、送信側もＡＣＫ確認とは独立にデータ送信を行うことで、通信性能の劣化を回避する。
本発明を用いた実験では、以下に述べる輻輳制御（制御技術の説明Ｂ）とフロー制御（制御技術の説明Ｄ）で説明するアルゴリズムの働きにより、４秒程度の遅延環境でもほぼワイヤーレートを達成することができた。
【００４４】
輻輳等が激しいなどのネットワークの状態によっては、パケット遅延時間が大きくなったり、パケット送出量が伝送路の一部でネットワークキャパシティを超えるために、パケットが破壊したり廃棄されたりすることがある。本発明では、これらの問題を回避するために、輻輳制御（制御技術の説明Ｂ）について、ネットワークの使用状態に応じて送信側のパケット送出量を自動制御する方式とする。このパケット送出自動制御方式では、システムの立ち上がり時や外乱に反応する輻輳制御（制御技術の説明Ｂ）の制御アルゴリズムにおける目標値追従機能と外乱抑制機能とが有効に機能することで、目標スループット値を即応制御することができる。
【００４５】
実験では、図４（ａ）に示す様に、通信帯域が６Ｇｂｐｓから８Ｇｂｐｓ、さらに９Ｇｂｐｓと環境変化した場合に、数秒程度で目標スループットが達成されている。なお、パケットの破壊検知には、送受信パケットデータの整合性を検証するための伝送路ノイズ誤り検出手法のひとつであるＣＲＣ（Cyclic Redundancy Check）を使用する。ＣＲＣは、送信前に検査用の値を算出してパケットデータに付加し、受信後に同じ個所の値を算出しなおし、事前に付加された値に一致すれば誤りが無く、一致しなければ通信時にデータの一部が変化して誤りがあったことがわかることを用いたものである。
【００４６】
従来の確認応答手法では、送信側はＡＣＫを受信確認するまで受信側の状態が分からず、このため例えば、データ受信側の受信バッファが飽和した場合等に再送信を行う手間が発生する。このため、送信効率が悪い。この問題を改善するためのフロー制御（制御技術の説明Ｄ）として、本発明では、送信側が受信バッファの使用状況に応じて送信する情報量を制御するアルゴリズムを用いる。これにより受信バッファの飽和を防止してパケットロスを減らすことができるので、送信効率が向上する。
実測による図４（ｂ）においては、受信バッファの使用状況に応じて送信側から送出される情報量を調整することにより、受信バッファの飽和が回避されていることが分かる。
【００４７】
従来の手法でのデータ送信時の問題の一つは、パケットロスやエラーによって損失したパケットの扱いである。特に送信側にＡＣＫが届かない場合はパケット損失（送信パケットが受信側に届かない）か、ＡＣＫエラー（受信側からのＡＣＫパケットが送信側に届かない）か、が判別できない。また、一般に、再送制御ではロストパケットの再送を常に優先的に行うとリアルタイム性が損なわれるという問題がある。
このため、本発明では通常パケットとパケットロスの送信割合を制御する。特にＡＣＫが送信側に届かない場合には大きな輻輳が発生したと判断して、一定時間だけタイムアウトによるパケットの再送信を行う再送制御（制御技術の説明Ｃ）を行う。
【００４８】
本発明では、以上の各制御を組み合わせることにより、従来のＵＤＰで実現出来ない信頼性を確保し、さらにＣＲＣによる信頼性確保の代償として生じる再送信が発生した場合の通信効率の低下を抑制し、高信頼・高速データ通信が可能となる。
【００４９】
＜制御技術の説明＞
（Ａ）送出制御（ペーシング）
本発明では、データ送信において目標スループット性能を実現するようにパケットの送信間隔を制御する。輻輳制御のアルゴリズムに基づいて決定された目標スループット値とＰａｔｈ ＭＴＵ探索により得られるセグメントサイズに従い、送出ペースをコントロールする。この値を用いて送信時間をスケジューリングし、使用する計算機の高精度な時刻取得関数で取得した時刻と比較して、送信すべき時刻になっていればパケットの送信を行い、そうでなければ待機する。目標とするスループットには、次項で説明する輻輳制御によって決定されるスループットを使用する。
例えば、目標１０Ｇｂｐｓ、セグメントサイズが８９００Ｂｙｔｅの際、ペーシング間隔は７１２０ｎｓとなり現在の計算機では十分に達成可能なタイミングである。図５に示すように、本発明を試験的に実装し４０Ｇｂｐｓ環境において実測したところ、１コネクションで約１４．５Ｇｂｐｓを達成した。
【００５０】
より具体的には、輻輳制御のアルゴリズムに基づいて決定された目標スループット値を元に輻輳制御で計算される送信スループットに従い、送出ペースをコントロールする。制御変更間隔はフロー制御の実行間隔に従う。輻輳制御で得られる送信スループット（目標送信スループットを元にして求められる）と、セグメントサイズ（Ｐａｔｈ ＭＴＵ探索が完了している場合はその値）から、送信すべき間隔（数ｕｓ〜数百ｕｓ）を次の式で算出する。
【００５１】
【数１】
0006613742.tif 000002
【００５２】
なお、ＯＳによっては高精度時間計測を有していないため高精度のカウンタＡＰＩを使用し、指定した間隔毎に送信する。送信後は、次の送信時刻までスリープする。
【００５３】
（Ｂ）輻輳制御
一般にフィードバックモデル等による自動制御方式では、最適なパラメータを設定しなければ制御対象や通信系全体によい応答を与えない場合がある。本発明では、送出する情報量に関しては、例えば、よく知られたＰＩＤ（Proportional-Integral-Derivative）制御を行う。また、ＰＩＤ制御の伝達関数の係数は、ジーグラ・ニコルスのステップ応答法などにより決定する。ステップ応答法は制御対象にステップ信号を入力して応答特性を観測する方法で、一般に自動制御に使用される。この決定法による伝達関数の特性として、送信スループットの立ち上がりが緩やかで目標スループットに到達するのに時間がかかり、外乱などによって急激にスループットが下がった時にも回復に時間がかかる。
【００５４】
これに対して、本発明では、送信スループットの変化に俊敏に対応するための即応制御アルゴリズムの適用を提案する。具体的には、例えば、現在の送信スループット予測結果が前回測定時の送信スループットより大きい場合は目標値との差分値の小数（１未満の値）倍分を加算することで立ち上がりを急勾配にする。一方、現在の送信スループット予測結果が前回の送信スループット測定値より小さい場合は今回と過去数回分の送信スループット値を平均する。これによって目標送信スループットまで到達するに要する時間を短くする。
具体的には次の技術から構成される。
（イ）送信スループットを抑制してもパケットロス率に変化がない場合、ネットワーク状況が粗悪で送信スループットに依存しない一定のパケットロス域が存在していると判断し、送信スループットの抑制を休止する技術。具体的には１秒間パケットロス率に変化がない時、その時点での送信スループットを目標スループットとする。
（ロ）目標送信スループットに到達するためのネットワーク帯域が十分に用意されているにも関わらず、目標送信スループットに到達するまでに送信スループットの変化がなくなった場合、ネットワーク状況が粗悪であると判断して目標送信スループットを抑制する。具体的には、1秒間受信スループットに変化がない時、その受信スループット値を目標スループットとする。
（ハ）スループット評価（目標スループット値の設定）にプロセス制御技術（例えば上記ＰＩＤ制御技術）を用い、即応性、継続性、予見性を含めた予測を行う技術。具体的にはプロセス制御として上記ＰＩＤ制御を用い、その時刻までのスループット値の偏差（Ｐ）、偏差の累計（Ｉ）、前回の偏差との差（Ｄ）の総和により目標スループット値を求める。
【００５５】
（Ｃ）再送制御
図３に示すように、パケット受信側はパケット受信とは独立に定常的にＡＣＫ送信を行う。また、パケット送信側もＡＣＫ確認とは独立にデータ送信を行うことで、通信速度の劣化を回避する。図３はパケットロスがない場合を示すが、パケットロスがある場合には、図６に示す様に、パケット受信側が固定送信間隔で送信したＡＣＫをパケット送信側で受信した際に、パケット受信側でパケットロスが判明したパケットのシーケンス番号を、パケット受信側からのフィードバック情報のひとつとして、パケット送信側がデータロス率とともに取得する。パケット送信側は、このパケットのシーケンス番号に基づいて再送信を行う。その際、本発明では、通常送られるパケット（通常パケット）とパケットロスの送信の割合をデータロス率で決めて送信する。これにより、リアルタイム性を損なわない送信が実現できる。また、ＡＣＫパケットロスによりパケット受信側が送出したＡＣＫパケットがパケット送信側に届かない時は、過大な輻輳が発生したと判断して、一定時間タイムアウトによるパケットの再送信を行う。ＡＣＫパケットロス時の再送制御は、リアルタイム性よりもデータ修復を優先し、ロストパケットのみの再送を行う。
【００５６】
具体的には次の技術から構成される。
（イ）再送要求リストとデータロス率をＡＣＫパケットでサーバ側（受信側）からクライアント側（送信側）に送信する。
【００５７】
（ロ）サーバ側（受信側）において、到着パケットのシーケンス番号から再送要求リストを作成しパケットロス状態およびその再送要求を管理する技術。次の４つの技術から構成される。
（ａ）受信側が受信したパケットのシーケンス番号が連番でなく、かつ過去受信したパケットの最大シーケンス番号より大きい時、抜けたシーケンス番号のパケットがデータロスしたパケットであると判断する。
（ｂ）ロスしたパケットのシーケンス番号が連番の場合、再送要求リストの開始番号と終了番号にロスしたパケットの連番開始番号と終了番号を格納する。
（ｃ）ロスしたパケットのシーケンス番号が連番でない場合、再送要求リストの開始番号と終了番号にロスしたパケットのシーケンス番号を格納する。
（ｄ）受信側が受信したパケットのシーケンス番号が過去受信したパケットの最大シーケンス番号より小さく、再送リストに載せられているシーケンス番号である時、受信したパケットのシーケンス番号を再送要求リストから削除する。
【００５８】
（ハ）クライアント側（送信側）からデータ送信する時、通常送られるパケットと再送するロスパケットの送信の割合を、ＡＣＫに記述されているデータロス率を元に決定する。具体的には、以下のそれぞれの状態に合わせて受信バッファが埋まる速度に応じた再送パケットの転送配分制御を行う（受信バッファの満杯までの時間に対して転送配分する）。
（ａ）通常状態には、ＡＣＫパケットで受け取ったパケットロス率からパケットロス率の３倍を全送信パケットの再送信転送配分にする。ただし、再送率は最低３０％とする。
（ｂ）受信バッファ飽和状態には、再送パケットを再優先で送信する。
（ｃ）パケット送信時には、上記再送率を、例えば、「パケット１００回送信ごとの再送パケット送信回数」に変換して送信する。
（ニ）ＡＣＫが送信側に届かない場合には、大きな輻輳が発生してデータパケットがサーバ側（受信側）に届かなかったと判断して一定時間タイムアウトによる再送信を行う。タイムアウトする一定時間は、ＲＴＯ（Retransmission Time Out）として算出する。ＲＴＯは転送パケットのＲＴＴからＲＴＯを計算するが、ネットワークの状態によってＲＴＴ時間は大きく変動するのでＲＴＴ時間を平滑して用いる。例えば、以下の３００ｍｓはＡＣＫ送信間隔の１．５倍として経験的に定義した。
【００５９】
【数２】
0006613742.tif 000003
【００６０】
ここで、A(n)はＲＴＴの平均値（Smoothed RTT）、また、ｇの推奨値は、例えばg=0.1である。
【００６１】
（ホ）送受信するパケットデータに対して伝送路ノイズの誤り検出によく使用されている例えばＣＲＣ技術を使用して整合性をとる。具体的には送信側（クライアント側）が送信前に検査用の値を算出してパケットデータに付加し、受信側（サーバ側）が受信後に同じ個所の値を算出し直す。算出値が事前に付加された値に一致しなければ整合性が取れないとして再度送信を行う。
【００６２】
（Ｄ）フロー制御
パケット送信側は、（１）パケット受信側で使用可能なバッファの使用率閾値と、そのバッファの使用率閾値に達するまでのバッファ飽和時間の閾値と、を設定し、（２）パケット受信側から取得した受信バッファの使用率からそのバッファが飽和するまでの予測時間を計算する。（３）受信バッファの使用率が上記使用率閾値を、あるいは、上記予測時間が上記バッファ飽和時間の閾値を、超えた場合、バッファが溢れると判断して送信側の送出する情報量を抑制する。
【００６３】
具体的には次の技術から構成される。
（イ）送信側が受信側から取得した受信バッファの使用率と現在の送信スループットから受信バッファが飽和するまでの時間を予測計算する。
【００６４】
【数３】
0006613742.tif 000004
【００６５】
（ロ）送信側が、受信バッファの使用状況（通常状態と受信バッファ飽和状態）を判断し、状況に応じて送信スループットを制御する。通常状態（例えば、受信バッファ使用率が７０％未満かつ満杯までの時間がＲＴＴの定数倍値以上のとき）では、輻輳制御で得た送信スループットでパケットを送信する。一方、受信バッファ飽和状態（受信バッファ使用率が７０％以上か満杯までの時間がＲＴＴの定数倍値未満のとき）には輻輳制御で得た送信スループットの小数倍のスループットでパケットを送信する（推奨小数値は０．９）。
（ハ）送信側が、受信側から取得した受信バッファの使用率が受信バッファの使用率閾値を超えた場合、現状の送信スループットを維持すると受信バッファがあふれると判断して送信側の送信スループットを抑制する。上記（ｂ）に対応する。
（ニ）送信側が受信側から取得した受信バッファの使用率がバッファ飽和時間の閾値を超えた場合、現状スループットを維持するとバッファがあふれると判断して、送信側のスループットを抑制する。上記（ｂ）に対応する。
（ホ）受信バッファ飽和時間を予測する。ＡＣＫパケット中のバッファ使用率データから、そのバッファ使用率が由来する受信バッファが飽和する時刻を予測する。例えば、直前１秒間のデータから飽和予想時間を算出する。
【００６６】
（Ｅ）ＵＤＰ−ｂａｓｅｄ  ＭＴＵ探索
経路の許容する値で確認できる最大のＭＴＵサイズを知り活用する（Path MTU Discovery）。ＵＤＰベースで実装するためＤＦ（分割禁止）フラグ（ＩＰヘッダに含まれる）によりＩＣＭＰ（Internet Control Message Protocol）実装におけるPath MTU Discovery 相当のＭＴＵ探索機構を実現できる。ＤＦフラグをセットしたパケットを様々なセグメントサイズで送信することで、応答が確認できたサイズにより宛先に届く最大パケットサイズを確認する。この仕組みによってＭＴＵサイズにほぼ近い単位でパケット送出を制御し、ヘッダオーバーヘッドによる帯域およびパケットカウントを無駄に消費せずに、パケット数の最小化とスループットの最大化を達成できる。近年のインターネット環境ではＩＣＭＰを遮断したルータ設定（つまりファイアウォール）が多く、経路上のPath MTU Discovery 相当の探索が難しいが、本発明ではＵＤＰを用いることでこの問題を解決する。
【００６７】
具体的には次の技術から構成される。
（イ）探索するＭＴＵの区間を例えば１０段階に分割し、ＤＦフラグをセットして送信し、パケットの到達が確認できる最も大きなサイズを求める処理を再帰的に繰り返す。探索コストを抑えるため、正確なＰａｔｈ ＭＴＵを求めるのではなく誤差を最大で例えば１０バイト許容する。
【００６８】
（Ｆ）ＲＴＴ計測
経路上のＲＴＴを定期的に測定し、これに応じてフロー制御を行うことで変動する様々な環境下での応答性能を確保する。具体的には、送信側は送信パケットにＲＴＴフラグをセットし、ＲＴＴ応答パケットが到着する時刻でＲＴＴを求める。この手法そのものに新しさはないが、これを本発明に適用することにより即応性の高い輻輳制御を実現できる。
【００６９】
具体的には次の技術から構成される。
（イ）ＴＣＰでのコネクションの確立に使用されるスリーウェイハンドシェイク（3way-handshake）の期間中にＲＴＴを測定する。具体的には、データ送受信開始前にＲＴＴを測定しておく。
（ロ）また、通信中に定期的にＲＴＴを測定する。具体的には、１秒毎にＲＴＴを測定するパケットを送信する。
【００７０】
（Ｇ）パケットロスカウント
受信側（サーバ側）において、受信パケットを計測しパケットロス率を評価する。具体的には、ある時点で次に受信期待するシーケンス番号と受信したパケットのシーケンス番号とを比較し、番号の差をロスサイズ（バイト）として累積カウントする。ただし、期待するより一定区間前のシーケンス番号は到着順序の入れ替わりとみなし、既に累積カウントされたロスサイズからデータ長を差し引いてパケットロスとしては累積カウントしないようにする。シーケンス番号が進んだ分に対するロスサイズをパケットロス率とする。このパケットロス率から回線状態を測定し、パケットロス率が変化しない場合のフロー制御等に使用する。この様な算出自体は公知であるが、これにより本発明の再送制御において全送信量に対する再送量が決定され、効率のよい再送処理を実現できる。
【産業上の利用可能性】
【００７１】
本発明の負荷変動およびパケット伝送損失があるＬＦＮ伝送路で高信頼通信を行うためのデータ通信制御方法は、現在普及しているほぼすべてのプラットフォーム（Ｗｉｎｄｏｗｓ（登録商標）／Ｌｉｎｕｘ（登録商標）／Ａｐｐｌｅ ｉＯＳ（登録商標）／Ａｎｄｒｏｉｄ（登録商標）など）で提供されているＵＤＰ ＡＰＩ（Application Programming Interface）により実装できる。したがって本データ通信制御方式は移植性が高く、プラットフォームの相互互換性・運用性が確保できる。すなわち、本データ通信制御方式はエッジレベルのＳＤＮ（Software Defined Networking）化やＰ２Ｐ（Peer to Peer）による最短ネットワークパスでのデータ伝送などに利点があり、インターネットベースのコンテンツ配信やスマートデバイスＩｏＴ(登録商標)  ＢＯＸ(Internet of Things BOX)、ＩｏＴデバイス、および、高精細カメラの遠隔伝送などを含むビッグデータの安定した集配信での利用が可能である。
【００７２】
また、本データ通信制御方式では１０Ｇｂｐｓを超えるＬＦＮでの利用ができるため、大規模データ通信を必要とするさまざまなアプリケーションでの利用が可能である。たとえば、遠隔地間での４Ｋ／８Ｋ動画像通信では１０Ｇｂｐｓを超えるデータ通信となるが、これを実ネットワーク（パケットロスや遅延などが発生している）において高信頼に伝送することになる。このようなデータ通信をシングルコネクションで実現できるため、これまでよりもはるかにシンプルで安定したデータ通信システムを構築できる。
上記データ通信制御方式を組み込むことで、各種のアプライアンス製品開発も可能である。例えばピーク帯域を継続的に必要とするシンプルなスイッチに組み込む実アプリケーションには、中間ネットワーク機器の特性を利用して、端末間帯域を確保するための手法として有効に用いることが出来る。
【符号の説明】
【００７３】
１  AUSListen
２  AUSAccept
３  AUSSend
４  AUSRecv
５  AUSSend
６  AUSRecv
７  送信スレッド
８  送信バッファ
９  受信バッファ
１０  送信スレッド
１１  送信バッファ
１２  受信バッファ
１３  管理スレッド
１４  受信スレッド
１５  SOCKET API
１６  NIC
１００  ユーザスレッド
２００  AUSOCK ライブラリ
【図１】
0006613742.tif 000005
【図２】
0006613742.tif 000006
【図３】
0006613742.tif 000007
【図４】
0006613742.tif 000008
【図５】
0006613742.tif 000009
【図６】
0006613742.tif 000010
【図７】
0006613742.tif 000011