JP2006166426A - パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法、単一のhttpポートを介してポートトラフィックを通信するための方法、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体、単一のhttpポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能な媒体、および複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステム - Google Patents

パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法、単一のhttpポートを介してポートトラフィックを通信するための方法、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体、単一のhttpポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能な媒体、および複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステム Download PDF

Info

Publication number
JP2006166426A
JP2006166426A JP2005331436A JP2005331436A JP2006166426A JP 2006166426 A JP2006166426 A JP 2006166426A JP 2005331436 A JP2005331436 A JP 2005331436A JP 2005331436 A JP2005331436 A JP 2005331436A JP 2006166426 A JP2006166426 A JP 2006166426A
Authority
JP
Japan
Prior art keywords
tcp
header
port
tunneling
packet
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
JP2005331436A
Other languages
English (en)
Inventor
Wai Yim
イム ウエイ
Chia-Hsin Li
リー チャシン
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JP2006166426A publication Critical patent/JP2006166426A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】単一擬似ステートフルTCP接続を用いてデータをトンネリングする方法及び機器。
【解決手段】パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法及びシステムを提供する。この方法は、修正されたTCP/IPスタック内のマルチメディア通信標準規格と関連付けられたライブラリ呼び出しを傍受し、ライブラリ呼び出しと関連付けられた識別データを登録することを含む。識別データに関係したデータパケットの予め存在しているヘッダの上に修正されたTCP/IPヘッダがアペンドされる。この方法はまた、TCP/IPヘッダを有するデータパケットをファイアウォールを介して通信できる。TCP/IPヘッダはステートフル接続を提供するためにTCP SEQ番号及びTCP ACK番号を含む。
【選択図】図3

Description

本発明は、一般的にはインターネットでの情報の送信に関し、より具体的にはインターネットでの及びネットワーク及びネットワーク型システム内での情報の高速なリアルタイム送信のための方法、システム、及び機器に関する発明である。
多くのインターネットベースのアプリケーションは、有効なインプリメンテーションを得るためにリアルタイムのデータの送信及び交換を必要とする。例として、H.323インターネットビデオ会議は、ローカル及び遠隔設定で参加者に映像及び音声データを提示するために高速なリアルタイムのデータ交換を提供する。典型的には、必要なリアルタイムのデータ交換のメリットを実現するために、データは信頼性のないUser Datagram Protocol/Internet Protocol(UDP/IP、または単にUDP)で送信される。信頼性のあるTransmission Control Protocol(TCP、またはTCP/IP)に優先して信頼性のないUDPを使用するメリットは主としてスピードである。UDPは、パケットの受信確認、パケットの検証、パケットの再送信要求などを送信しないから、オーバーヘッドが少ない。リアルタイムのメディア送信及びプレイバックでは、そうした送信及び検証のプロセスはシステムの性能に好ましくない影響を与える。
TCPは、基本的に、ほとんどのインターネットでのデータ通信の標準規格となっている。TCPは、全てのデータが受信され、正しい順序で受信され、受信したデータは正確で送信したデータと一致していることを確認することで最高度の信頼性を保つ。多くのアプリケーションにおいて、そうした信頼性は有効なデータ送信に一番重要なことである。しかし、スピードが一番重要となるH.323インターネットビデオ会議などのアプリケーションには、最高度の信頼性は必要ではない。ほとんどのビデオ会議アプリケーションは、普通は気付かない、時折届かなかった音声データを簡単に補償することができるし、同様に、ビデオデータが時折届かなかったり化けた部分があっても普通は耐えられるし、ビデオ会議に妨害になることはほとんどない。
図1は、ファイアウォールを使わずに情報を交換するコンピュータの簡易概略図である。コンピュータ100及び102は、ハンドシェイク信号104をやりとりした後、TCP接続を確立する。例えば、H.323などビデオ会議の標準規格に関して言えば、音声及び映像データの通信のために複数のUDPポート番号が確立される。コンピュータ100及び102の各々には、音声及び映像の制御/データ信号用に少なくとも4つのUDPポート、018‐1から108‐4及び110‐1から110‐4が開かれる。ポート108nと110nで示したように、コンピュータ100及び102の各々について普通は4つ以上のポートが開かれる。
しかし、オフィスや家庭のネットワークはファイアウォール環境の内側に保護されている場合が多い。概して知られているように、ファイアウォールは、ブロックされていないポートの数を限定することでネットワークから望まないInternet Protocol(IP)トラフィックを中に入れないように設計されている。これは、ビデオ会議の標準規格は多数のTCP及びUDPポートがブロックされていないことが必要なので、ビデオ会議の標準規格には問題となる。図2は、ファイアウォールを介して通信している2つのコンピュータの簡易概略図である。図2に示すように、コンピュータ100はファイアウォール112の背後にあり、コンピュータ102はネットワーク114でファイアウォールと通信する。上に述べたように、ファイアウォール112はUDP接続には欠かせない複数のポートが開いている状態を許可しない。さらに、ファイアウォール112はブロックされていないポートを限定するので、ファイアウォールは、その全てがビデオ会議アプリケーションに使用される可能性のあるUDPポート番号1024〜65,538といったUDPポートをどれも認識しない。
高速なリアルタイム送信が望ましい時に、ファイアウォールは望ましいビデオ会議の機能を限定又は妨げることがあり、またそうすることが多い。ある特定のファイアウォールがTCP/IP以外の入ってくる全てのインターネットトラフィックをブロック又は拒否する場合には、ビデオ会議又はその他のデータ交換を信頼性は高いけれども速度がはるかに遅いTCP/IPを用いて行なうか、何らかの形で問題点を克服してUDPデータ送信及び交換を行なければならない。この問題点を解決する一つのやり方は、データ用のTCP/IP接続を使用することである。しかし、TCP接続は、肯定応答、検証、及び届かなかったパケットの再送信要求の送信が原因で、つまり、TCP接続の信頼性特性に起因して、質の悪いビデオになる。
米国特許第2001/0032270号明細書
上記に鑑み、必要なのは、音声及び映像データの送信、又はシステムアドミニストレータの管理負担に及ぼす影響を最小に抑えて、既存のファイアウォールを介してビデオ会議データを通信できる方法及びシステムである。
おおまかに言えば、本発明は、ブロックされていないデータ送信用ポートの数を限定するように構成されたファイアウォールを通れるように、データを単一HTTPポートを介してトンネリングするための方法、システム、及び通信プロトコルを提供することでこうしたニーズに応えるものである。本発明の実施例は、特定のファイアウォールがトンネリングされたTCPパケットを誤解して放棄する可能性が少ない明らかにステートフルなTCP接続を提供する。本発明は、システムとして、方法として、或いはコンピュータ判読可能な媒体としてなど、いろいろなやり方で実施可能である。本発明のいくつかの実施例を以下に説明する。
一つの実施例において、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法を提供する。この方法は、マルチメディア通信標準規格と関連付けられたライブラリ呼び出しを傍受し、ライブラリ呼び出しと関連付けられた識別データを登録することを含む。この方法はさらに、識別データに関係したデータパケットの予め存在しているヘッダの上にTCP/IPヘッダを追加することにも対応している。この方法は次に、TCP/IPヘッダを有するデータパケットをファイアウォールを介して送信することを含む。TCP/IPヘッダは、TCP SEQ番号及びTCP ACK番号を含む。
別の実施例において、単一のHTTPポートを介してポートトラフィックを通信するための方法を提供する。この方法は、第1及び第2コンピューティングデバイス間の接続を確立し、ポートトラフィックと関連付けられた割当てデータをトンネリングドライバに送信し、データグラムの一つずつに第1ヘッダをアペンドし、その第1ヘッダの上にTCP/IPをアペンドすることを含む、一連の操作を提供する。TCP/IPヘッダは、TCP SEQ番号とTCP ACK番号を含み、データグラムの一つずつを単一のHTTPポートに向かわせるように構成されている。
更に別の実施例において、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体を提供する。このコンピュータ判読可能な媒体は、マルチメディア通信標準規格と関連付けられたライブラリ呼び出しを傍受するためのプログラム命令と、そのライブラリ呼び出しと関連付けられた識別データを登録するためのプログラム命令を含む。識別データに関係したデータパケットの予め存在しているヘッダの上にTCP/IPヘッダを追加するためのプログラム命令と、TCP/IPヘッダを有するデータパケットをファイアウォールを介して送信するためのプログラム命令も提供している。TCP/IPヘッダは擬似(simulated)ステートフルTCP/IPヘッダで、TCP SEQ番号及びTCP ACK番号を含む。
また別の実施例において、単一のHTTPポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能なメディアを提供する。このコンピュータ判読可能なメディアは、第1及び第2コンピューティングデバイス間の接続を確立するためのプログラム命令を含む。コンピュータ判読可能なメディアはさらに、ポートトラフィックと関連付けられた割当てデータをトンネリングドライバに送信するためのプログラム命令と、ポートトラフィックをデータグラムにセグメント化するためのプログラム命令を含む。さらに、コンピュータ判読可能なメディアは、データグラムの一つずつに第1ヘッダをアペンドするためのプログラム命令と、その第1ヘッダの上にTCP/IPヘッダをアペンドするためのプログラム命令を含む。TCP/IPヘッダは、TCP SEQ番号及びTCP ACK番号を含む擬似ステートフルTCP/IPヘッダで、データグラムの一つずつを単一のHTTPポートに向かわせるように構成される。
さらにまた別の実施例において、複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステムを提供する。このシステムは、パケットヘッダとは別にさらにトンネリングヘッダをそれぞれ有するデータパケットを送信するように構成されたサーバと、ブロックされていないTCPポートの数を限定するファイアウォールを含む。このファイアウォールはトンネリングヘッダを分析する機能を有する。トンネリングヘッダはファイアウォールがデータパケットを通過させるように単一ポートと関連付けられている。さらに、システムは単一ポートを介してファイアウォールからデータパケットを受け取るように構成されたクライアントを含む。クライアントはさらに、パケットヘッダにアクセスできるようにトンネリングヘッダを取り除くために、トンネリングヘッダと関連付けられたフラグ及びチェックサムを識別するように構成される。トンネリングヘッダはステートフルで、TCP SEQ番号及びTCP ACK番号を有する。
発明の効果は、発明の原理を例を挙げて説明している図面と共に、以下に述べる詳細な説明から明白になる。
以下、本発明の実施形態を図面に基づいて説明する。
ファイアウォールを通れるように単一「ステートフル」TCPポートを介して複数のTCP/UDPポートへのデータをトンネリングするための方法及びシステムに関する発明を提供する。以下の説明において、本発明を完全に理解できるように、多くの具体的な詳細を述べる。しかし、当業者ならば、これらの具体的な詳細を部分的に或いは全く知らなくても本発明を実施できるだろうことを理解するだろう。他の場合には、本発明を不要に曖昧にしないために、よく知られたプロセスの操作については詳細に説明していない。図1及び2については、「背景技術」の項に説明がある。
関連出願である米国特許出願番号10/681,523の中で、ファイアウォール環境で送信できるように、単一トンネリングTCP接続を確立し、複数のTCP及びUDP接続をその単一トンネリングTCP接続に方向付ける発明を説明している。本発明の実施例は、前の「ステートレス」TCP接続に基づいて構築し、ある特定のファイアウォールがトンネリングされたTCPパケットを”out of state”と誤解して放棄する可能性が少ない擬似「ステートフル」TCP接続を提供する。ここで使用しているように、「ステートフル」TCP接続という表現は正しいTCP接続状態に従うトンネリングパケットを意味する。「ステートフル」は、2つのホスト間の初期ハンドシェイク(SYN、SYN+ACK、及びACK)と、PSH+ACKまたはACKフラグセットを有する正しいSeq #及びACK #値を有するデータパケットの転送と、正しいSeq #及びACK #を有する接続解除メッセージの交換とからなる。関連出願番号10/681,732で説明した無接続TCPデータ交換では、データ交換を開始するホストからのパケットは全てSYNフラグセットを有し、遠隔ホストからのパケットは全てSYN+ACKフラグセットを有する。Seq #及びACK #値は、存在する場合には、セッション中ずっと同じままである。
セキュリティの心配があるので、ファイアウォールはインターネットアクセスを有するほとんどのシステム及びネットワークの不可欠な構成要素であり、データを保護しシステム保全を維持するための価値あるツールである。しかし、セキュリティを高めるとデータ交換のスピードに影響を及ぼす。ファイアウォールはどれでも好ましいレベルのセキュリティを確立して維持するための独特の方法を有しているが、ファイアウォールはTCP/IP送信以外の全ての送信へのアクセスを拒絶またはブロックするか、UDPデータ交換に特定のポートまたは一連のポートだけを指定するのが普通である。それでも他のファイアウォールはステートフルTCP接続を必要とし、さもなければ”out of state”であるとして、もっとひどい場合にはウィルスの襲撃と誤解されて、パケットが放棄されてしまう。
ここで説明する実施例は、単一のHTTPポートを介して、例えば、H.323、SIPといったマルチメディア電話会議の標準規格、または適切なパケットベースの標準規格と関連付けられたデータをトンネリングするためのスキームを提供する。別のH.323クライアント、つまりオフィスまたはホームネットワークからH.323会議サーバに接続しているH.323アプリケーションの最も一般的な問題の一つは、ほとんどのサイトがファイアウォールで保護されていることである。ファイアウォールは、あるネットワークから不要なIPトラフィックを締め出すように設計されている。しかし、H.323プロトコルは、正しく機能するには多数のTCP及びUDPポートがブロックされていないことが必要である(例えば、1024〜65538の全てのUDPポートがブロックされていない状態でなければならない)。それほど多くのポートを開くと、ローカルネットワークのセキュリティを危険にさらす。
一つの解決法は、H.323プロトコルを使える特別なファイアウォールをインストールすることである。残念ながら、この種のファイアウォールを有するサイトは多くないし、そうした専用ファイアウォールは実用的な解決法とはならない。これに対して、(全部ではないとしても)ほとんどのファイアウォールは汎用ウェブブラウジング用のHTTPポートを開かない。HTTPポートは、事実上、ポート80でのTCP接続である。全てのTCP及びUDP接続をポート80での単一TCP接続にトンネリングするようにH.323アプリケーションを構成できる場合には、そのアプリケーションは、パケットをもともとファイアウォールの外で送信されたデータに変換するように同じように構成された別のH.323アプリケーションと通信可能である。
プロキシソケットライブラリ呼び出しとオペレーティングシステム(OS)のTCP/IPスタックに挿入されるカーネルモードデバイスドライバとを組合せることによって、既存のマルチメディア電話会議アプリケーションは最小のコード修正で済む。以下に説明するように、トンネリングドライバはTCP/IPドライバとネットワークインタフェースカード(NIC)ドライバとの間に挟まれている。したがって、以下に説明するIPデータグラム変換は両ドライバから見えない。そのために、TCP/IPドライバとNICドライバはあたかも両者の間に別のドライバがないかのように機能する。
図3は、発明の一つの実施例による、信頼性のない接続能力及び信頼性のある接続能力の両方を提供するために、無接続送信制御プロトコルスキームとの統合が可能な修正アプリケーションモジュールスタックを含むシステムの簡易概略図である。クライアント120はファイアウォール124の裏側にある。サーバ128はネットワーク126及びファイアウォール124を介してクライアント120と通信する。例えば、H.323アプリケーションなど、マルチメディア電話会議アプリケーションでは、少なくとも2つのタイプの接続がなければならない。すなわち、呼び出しセットアップと呼び出し制御データには信頼性のある接続が必要なのに対し、データのスループットが極めて重要な音声及び映像のようなマルチメディアデータを送信するには信頼性のない接続が必要である。しかし、無接続TCP接続で信頼性のある接続を提供するために、パケットの再送信、パケットの並べ替え、パケットの受信通知のメカニズムの大部分はTCP/IPスタックで実施される。TCP/IPスタックは現代のオペレーティングシステム、つまり、MICROSOFT WINDOWS(登録商標), LINUXなどのほとんどで標準として含まれている。したがって、修正したプロトコルスタック122は、電話会議アプリケーションにとって信頼性のある接続と信頼性のない接続とが可能な通信を提供することができる。図4A及び4Bに関してより詳細に説明するように、修正アプリケーションスタックは、アプリケーション122aと、ダイアミックリンクライブラリ(dll)122b、その他のライブラリ及びドライバ122c、及びトンネリングドライバ122dを含む。言うまでもなく、モジュールスタック122は、ネットワークカードなどハードウェアの上にある。
ビデオ会議アプリケーションがTCPまたはUDP接続を行なうとき、ポートで実際にデータを送信する前にプロトコル及びポート番号がトンネリングドライバに送られる。本発明の実施例によれば、以下により詳細に説明するように、マスタトンネリングTCP接続が確立される。
図4Aは、標準規格H.323アプリケーションモジュールのモジュールスタックを図示している簡易概略図である。モジュールスタック130はH.323アプリケーション130aを含み。H.323アプリケーション130aはWinsock32.dll(130b)より上にある。概して知られているように、Winsock32.dllはダイナミックリンクライブラリで、小型プログラムの集まりであって、そのどれでもコンピュータでランしている大型プログラムが必要とする際に呼び出すことができる。H.323アプリケーション130a及びWinsock32.dll(130b)はアプリケーションレベルまたはユーザモード132にある。ドライバレベルとも呼ばれるカーネルモード134では、TCP/IPドライバモジュール130cがネットワークインタフェースカード(NIC)ドライバモジュール130dの上にある。ハードウェアレベル136にあるのはネットワークカード130eである。
図4Bは、発明の一つの実施例による、ポートトンネリングアプリケーションモジュールスタックを図示している簡易概略図である。このポートトンネリングアプリケーションモジュールスタックは、以下に説明するように、アプリケーションレベルの余分のモジュールとドライバレベルの余分のドライバを含む。図4Bに示すように、アプリケーションモジュール122aは、任意の適したマルチメディア電話会議アプリケーションで構わないが、Winsockproxy.dll(122b)の上にある。アプリケーションモジュール122aはWinsockproxy.dll(122b)とリンクしている。アプリケーションモジュール122aが、例えば、bind()、connect()、closesocket()など標準的なソケットライブラリ呼び出しを行なうと、アプリケーションモジュールが割り当てるポート番号及びプロトコルタイプを登録/登録解除するために、Winsockproxy.dll(122b)は呼び出しを傍受し、IPパケットトンネリングドライバ122dと通信する。したがって、アプリケーションレベルからWinsock32.dllモジュール130bを介してドライバレベルに通信データを送るよりも前に、Winsockproxy.dllモジュール122bはトンネリングドライバ122dと通信する。その通信データはWinsockproxy.dll(122b)からWinsock32.dll(130b)に渡され、最終的にドライバレベル、つまりカーネルモード134に渡され、そこでTCP/IPドライバ130cが最初にそのデータを受け取る。TCP/IPドライバは次にデータを、図6A及び6Bに示すように、データグラムとも呼ばれるしかるべきサイズのパケット、またはセグメントに分ける。さらに、TCP/IPドライバはソケットタイプいかんによりしかるべきメディアアクセスコントロール(MAC)、IP、TCP(又はUDP)のヘッダをデータグラムにアペンドする。TCP/IPドライバ130cはパケットをIPパケットトンネリングドライバ122dに渡す。パケットトンネリングドライバ122dはTCP/IPポートをチェックし、ポートが登録済みポート番号及びプロトコルタイプのリストに載っているか判定する。
Winsockproxy.dllモジュール122bからトンネリングドライバ122dへのその時点より前の通信がポート番号及びプロトコルタイプを登録すると理解するべきである。ポート番号及びプロトコルタイプがリストに載っていれば、図6Bにおいて図示されているように、トンネリングドライバ122dがデータグラムに40バイトのトンネリングIP+TCPヘッダを挿入する。さらに、トンネリングドライバ122dはデータグラムの宛先IPをチェックする。宛先IPがファイアウォールIPマッピングテーブルに載っている場合には、トンネリングドライバ122dがトンネリングIP+TCPヘッダの中の宛先IP及びポート番号をファイアウォールIP及びファイアウォールポートで置き換える。その後、NICドライバ130dに送る前に、データグラムのチェックサムを算定しなおす。その後、データはNICドライバ130dからハードウェアレベル136のネットワークカード130eに送られる。
H.323アプリケーション122aは、セッションを終えると、アプリケーション122aがセッション中に開いた各TCP又はUDPソケットのclosesocket()関数を呼び出す。Winsockproxy.dllライブラリ122bがこのclosesocket()関数呼び出しを傍受し、その情報をトンネリングドライバ122dに渡す。トンネリングドライバ122dは削除するポートに印を付ける。次に、トンネリングドライバ122dはそのポート宛てのFIN+ACK及びACKパケットをモニタする。タイムアウト時間(一つの実施例では20秒)が過ぎると、トンネリングドライバ122dは対応するポート及びプロトコル情報をテーブルから除去し、必要ならばファイアウォールIP及びファイアウォールポートマッピングもクリーンアップする。
図5は、典型的なH.323 TCP/IP接続シーケンスを図示している簡易概略図である。この例で、H.323アプリケーションはTCPポート720で接続待ちしている[listening]別のH.323アプリケーションにTCP/IP接続を行なう。例えば、クライアントA(140)が送信144を介してクライアントB(142)にポート1720へのTCP接続を要求する。呼び出しセットアップ及び呼び出し制御の送信144及び146が信頼性のある接続で進行する。次に、モジュール150によって示したように、後続のデータ交換で、制御データ及びメディアデータの送信のために両方のアプリケーションがさらに多くのTCP及びUDPポートを開くことがある。したがって、図4Aについて言えば、H.323アプリケーションがオープンソケット(TCPかUDPかどちらか)にデータを書き込み、Winsock32.dllモジュールがこのデータをTCP/IPドライバに渡す。
図6Aは、入ってくるデータのブロック152の標準アプリケーションモジュールスタックを介してのセグメンテーションを図示したものである。この例で、入ってくるデータのブロック152はブロック152aから152cによって表わしたデータのセグメントに分割される。分かるように、標準アプリケーションモジュールスタックは入ってくるデータのブロック152をWinsock32.dllを介してTCP/IPドライバ130cに渡し、TCP/IPドライバ130cがデータをセグメント化する。さらに、データの各セグメント152a、152b、152cにヘッダを追加する。したがって、図示しているように、データのセグメント152bはTCP(又はUDP)ヘッド154、IPヘッダ156、及びMACヘッダ158を含む。
図6Bは、発明の一つの実施例による、修正アプリケーションモジュールスタックがファイアウォールを介してデータをトンネリングできるようにするためのセグメンテーション及びヘッダの追加を図示している。入ってくるデータのブロック152はデータセグメント152aから152cにセグメント化される。図6Aに関して上に説明したように、データセグメント152a、152b、152cの各々にはヘッダが追加されている。その後、IPパケットトンネリングドライバ122は、ヘッダが有する各データセグメント152a、152b、152cにトンネリングヘッダを追加する。図示しているように、データセグメント152bは、TCP(又はUDP)ヘッダ152、IPヘッダ156、及びトンネリングIP+TCPヘッダ160を含み、トンネリングIP+TCPヘッダ160はMACヘッダ158とIPヘッダ156との間に挿入されている。一つの実施例において、トンネリングヘッダ160は、例えば、ポート番号80といった特定のハイパーテキストトランスファプロトコル(HTTP)ポート番号、又はテルネット用の23などその他の公知のポートを示す40バイトのヘッダである。
複数のTCP及びUDP接続ストリームを一つのストリームに方向付けるためのステートフルTCP接続を生成するには、図7に関して以下により詳細に説明するように、TCP接続はSYN, SYN+ACK, ACKのハンドシェイクシーケンスによってスタートさせる必要がある。トンネリングTCP接続を用いる後続のデータ送信は、正しいIP ID、TCP SEQ番号、ACK番号、及び初期設定ハンドシェイクで使用したTCPフラグフィールドを有するTCP/IPヘッダ内にデータがカプセル化されることを必要とする。フィールドを図8に関して図示し、以下により詳細に説明する。さらに、H.323セッションを終え、トンネリングTCP接続を閉じるとき、接続を正しく閉じるにはFIN+ACK及びACKパケットを他の関係者に送信する必要がある。
正規のTCP接続を模擬するには、2つのホスト間に接続を確立しなければならない。必要な接続を確立する一つの方法は、特定のユニークなパケットハンドシェイクメカニズムを生成することである。しかし、本発明の実施例はホスト間に正規のTCP接続を生成することが可能である。図7は、ホストA(166)及びホストB(168)間の典型的なTCP接続で使用したハンドシェイクシーケンス及び接続状態の概略図165である。本発明の実施例によれば、SEQ及びACKフィールド(図8参照)はTCP/IPドライバ130cによってランダムに初期値が割り当てられ、それからステートフル接続をシミュレートするためにインクリメント及びトラッキングされる。以下により詳細に説明するように、TCP接続を確立するために、図示しているように通常のTCPプロトコルがホストA(166)及びホストB(168)間のSYN(170)、SYN+ACK(172)、及びACK(174)のハンドシェイクを呼び出す。初期SEQ値をX及びYで示しており、初期ACK値は0である。TCPプロトコルに従って、表示しているようにSYN及びACK値が増分する。
一つの実施例において、安定し且つ途切れることのない映像及び音声データのストリームを維持するために、ビデオ会議の音声及び映像データを含んでいるような、UDPデータグラムが可能な限り高速で送信及び処理される。したがって、本発明の一つの実施例において、UDPデータグラムは、図7の176及び178によって示すように、PSH+ACKパケットとしてパッケージ化及び処理される。ステートフルなTCP接続を維持するために、PSH+ACKパケットはしかるべく増分されたSEQ及びACK値を含む。
発明の一つの実施例において、ステートフルTCP接続は標準TCPプロトコルに従って閉じられる。図7に示すように、最後のハンドシェイクシーケンスはFIN+ACK(180)、ACK(182)、FIN+ACK(184)、ACK(186)を含む。図7に示すように、SEQ値は変数M及びNに設定されており、セッションの進行中に到着した値を表わしている。変数M及びNはセッションを閉じるためにTCPプロトコルに従ってしかるべく増分される。
ステートフルなトンネリングTCP接続の目的は、単一の正規のTCP接続と同じ状態遷移を模擬することである。本発明の実施例で実施したアプローチは、H.323TCP及びUDPデータがネットワークで送られる前にクライアント及びサーバ間のマスタトンネリングTCP接続を生成することを含む。一つの実施例において、状態情報(例えば、フラグ、ID、SEQ番号、ACK番号など)が、マスタトンネリングTCP接続のセットアップ中に記録される。H.323アプリケーションがデータをTCP又はUDPポートを介して送り始めると、トンネリングドライバが、「正規の」TCP接続の動作を正確に模擬するように設定されたフィールドを有するトンネリングTCPヘッダをアペンドする。アプリケーションがH.323セッションを終えると、このセッションに関係した他のTCP又はUDP接続を全て閉じた後、WinSockProxy.dllがマスタトンネリングTCP接続を閉じる。トンネリングドライバがマスタトンネリングTCP接続からFIN+ACKパケットを受け取ると、ドライバは、パケットがファイアウォールを通って接続の向こう側にいるホストに到着するように、SEQ番号及びACK番号のフィールドを修正する。接続の向こう側にいるホストはFIN+ACKパケットを受け取ると、TCP/IPスタックドライバに渡す前にSEQ番号及びACK番号をもともとの値に修正しなおす。
発明の一つの実施例において、WinSockProxy.dll(122b)(図4B、6B参照)はH.323アプリケーションが接続されているピアIPアドレスを記録しておく。H.323アプリケーションが遠隔ホストにTCP接続しようとすると、WinSockProxy.dllはこの遠隔ホストにすでに確立されたマスタ接続があるか判定する。そうならば、この遠隔ホストの接続カウントがインクリメントされる。そうでなければ、意図するTCP接続が確立される前に遠隔ホストへのマスタトンネリングTCP接続が生成され、接続カウントが1に設定される。本明細書で使用しているように、接続カウントとは同じ遠隔ホストIPアドレス宛先を有するTCP接続数である。一つの実施例において、以下に詳細に説明するように、接続カウントは、例えば、接続カウントがゼロになるときなど、いつマスタトンネリングTCP接続を閉じるかを判定するためにWinSockProxy.dllによって使用される。本発明の実施例はTCPポート4824を特別なマスタトンネリングポートとして使用しているが、しかるべきどんなポートでもそのように使用できることを理解するべきである。
図8は、本発明の一つの実施例による無接続TCPヘッダ188の簡易概略図である。無接続TCPヘッダ188は正規のTCPヘッダに類似しているが、ウィンドウサイズフィールドが修正されている。ウィンドウサイズフィールドは上位バイトセクション190と下位バイトセクション192に細分されている。発明の一つの実施例において、事前に定義された値がウィンドウサイズフィールドの上位バイト190に書き込まれ、チェックサムが下位バイト192に書き込まれる。事前に定義された値及びチェックサムはデータグラムを無接続TCP/IPデータグラムとして識別している。すなわち、ウィンドウサイズフィールドの上位バイト190に書き込まれた事前定義の値はデータグラムを無接続TCP/IP送信として識別して、データグラムと標準TCP/IP送信を区別している。ウィンドウサイズフィールドの上位バイト190の中の事前定義の値とは別にさらに、ウィンドウサイズフィールドの下位バイト192は、データグラムが無接続TCP/IPデータグラムであることを検証及び確認する特殊なチェックサムを含んでいる。一つの実施例において、ウィンドウサイズフィールドの上位バイト190の事前定義の値が受信パケットを無接続TCP/IPデータグラムとして識別し、無接続TCP/IPヘッダのウィンドウサイズフィールドの下位バイト192のチェックサムがその識別をバリデートしている場合には、そのデータグラムは無接続TCP/IP送信として取り扱われ、処理される。
本発明の実施例はさらに、図7に関して上に説明したTCPプロトコルに従ってステートフルTCP接続を生成するために状態フィールド194を用いる。無接続TCPヘッダの一般的な構成については、引用により組み込まれている米国特許出願番号10/681,732にさらに詳細な説明がある。
一つの実施例では、トンネリングTCP接続の状態を記録しておくために、トンネリングドライバがトンネリング接続ごとに接続状態エントリを生成する。例として、トンネリングドライバは宛先ポート番号4824のTCP/IPスタックからTCPパケットを受け取る。発明の一つの実施例において、ポート4824はマスタトンネリングポート番号である。TCPパケットがSYNに設定されたTCPフラグを有し、TCPパケットがその接続状態テーブルに未だ存在していないIPアドレスを含んでいる場合には、トンネリングドライバはアプリケーションがトンネリング接続を行なうつもりであると仮定する。トンネリングドライバはその接続テーブルに接続状態エントリを生成し、遠隔IPアドレスと、遠隔ポート番号、ローカルポート番号、初期SEQ番号、及びTCP状態フラグを記録する。それから、トンネリングドライバは(アペンドする代わりに)宛先ポート番号を80(HTTPポート)に変更し、チェックサム法を用いてTCP Windowサイズの下位バイト192を更新し、パケットチェックサムを算定しなおす。Windowサイズの上位バイト190は、上に述べたように、パケットをトンネリングパケットとして識別している事前定義の値を含んでいることに注目するべきである。ステートフル接続を維持するために、本発明の実施例はファイアウォールの両側で実行/スライディングウィンドウサイズをトラッキングする。したがって、ウィンドウサイズフィールドの上位バイト190の中の事前定義の値はウィンドウサイズの制約条件に対応できるだけの大きさでなければならない。言い換えれば、スライディングウィンドウサイズが接続間で隔たりがありすぎる状態になっていることをファイアウォールが検出した場合には、ファイアウォールはウィンドウサイズに最後のACK番号を足したものを超えるシーケンス番号を有するTCPパケットをストップ/拒絶する。十分に大きな上位バイト190ウィンドウサイズフィールドにある事前定義の識別値が十分に大きければ、ファイアウォール上に十分大きなスライディングウィンドウを確保できる。
典型的なTCP接続の初期化の際に、TCP/IPドライバ130c(図4A参照)はあるポート番号(例えば、4824)をもつTCPパケットを生成し、それをネットワークで宛先ホストに送る。宛先ホストにあるTCP/IPドライバ130cはこのTCPパケットを受け取る。TCPヘッダの中のポート番号(例えば、4824)から、TCP/IPドライバ130cはどのソケット/アプリケーションがパケットをディスパッチするか、或いはどのローカルソケットが接続できるように初期化を開始するかを知る。しかし、ポート80宛て以外のTCPパケットトラフィックを全てブロックするファイアウォールを用いると、パケットがファイアウォールを通れるように、トンネリングドライバ122d(図4B参照)はもともとのTCPパケットのポート番号を(例えば、4824から)ポート番号80に変更しなければならない。宛先ホストがトンネリングTCP SYKパケット(例えば、図7の170)を受け取ると、宛先ホストにあるトンネリングドライバ122dはポート番号をポート番号80からもともとのポート番号に(例えば、ポート番号4824に)戻さなければならない。トンネリングドライバ122dがポート番号をもともとのポート番号に戻そうとしないで、その代わりに単純にTCP/IPドライバ130cに変換後のポート番号(ポート80)をもつTCPパケットを渡そうとした場合には、TCP/IPドライバ130cはパケットを間違ったアプリケーション/ソケットにディスパッチするか、パケットをディスパッチする先のアプリケーション/ソケットを見出さないか、どちらかである。いずれの場合も、もともとのTCPポート番号(例えば、4824)を接続待ちしているアプリケーション/ソケットはパケットを決して受け取らないので、正しく初期化しない。
本発明の一つの実施例では、トンネリングドライバ122d(図4B参照)がTCP FlagがSYNに設定されたトンネリングTCPパケットをネットワークから受け取り、しかもこの遠隔IPには状態エントリがないときには、ドライバは接続テーブルに接続状態エントリを生成する。ドライバはSYNパケットからのSEQ番号を遠隔ホストからの初期ACK番号として記録する。ドライバはまた、この遠隔IPの今のトンネリング接続状態をSYN状態に設定し、エントリに遠隔ポート番号を記録し、宛先ポート番号をポート80(HTTPポート)からポート4824、つまりマスタトンネリングポート番号にリセットする。ドライバはそれから、上位レイヤーにあるTCP/IPスタックにパケットを渡す前に、パケットチェックサムを算定しなおす。
発明の一つの実施例では、トンネリングドライバがTCP FlagがSYN+ACKに設定されたTCPパケットを受け取り、しかもその遠隔IPアドレスにはすでに接続状態エントリがあり、さらに状態がSYNになっているときには、トンネリングドライバは記録されている初期SEQ番号を受信パケットからのSEQ番号に更新し、状態をSYN+ACKに設定する。次に、宛先ポート番号がポート80に設定され、TCP Windowサイズフィールドの下位バイト192(図8参照)がしかるべきチェックサムによって修正され、パケットチェックサムが算定しなおされる。
発明の一つの実施例では、トンネリングドライバがTCP FlagがSYN+ACKに設定されたTunneling TCPパケットを受け取り、しかもその遠隔IPアドレスにはすでに接続状態エントリがあり、さらに接続がSYN状態になっているときには、ドライバは初期ACK番号の接続状態をパケットのSEQ番号に更新する。ドライバはまた、遠隔IPの今のトンネリング接続状態をSYN+ACK状態に更新し、ソースポート番号をポート80(HTTPポート)からポート4824、つまりマスタトンネリングポート番号にリセットする。ドライバはそれから、上位レイヤーのTCP/IPスタックにパケットを渡す前に、パケットチェックサムを算定しなおす。
一つの実施例では、トンネリングドライバがACK FlagをもつTCPパケット又はトンネリングTCPパケットをTCP/IPスタック又はネットワークから受け取ると、ドライバはその遠隔IPの接続状態エントリの状態及びデータに従ってTCPヘッダを修正する。
TCP/IPスタックドライバ又はネットワークから正規のTCP及びUDPデータがトンネリングドライバに到着すると、ドライバはTCP FlagがPSH+ACKに設定されているトンネリングTCPヘッダをアペンド(除去)し、その遠隔IPの接続状態エントリの値に従ってSEQ番号及びACK番号を更新する。パケットの送信及び受信ごとに、トンネリングドライバは新たなトンネリングパケットに使用するために一番新しいSEQ番号及びACK番号を更新する。
マスタトンネリングTCP接続を閉じるプロセス時に、トンネリングドライバはTCP/IPスタックドライバからマスタトンネリングTCP接続用(ポート4824用)のFIN+ACK TCPパケットを受け取る。接続確立してからSEQ番号及びACK番号は実施されているから、ドライバはその遠隔IPアドレスの接続状態エントリの一番新しいSEQ番号及びACK番号を用いてSEQ番号及びACK番号を入れ替える。今では、そのパケットはファイアウォールを通り抜ける。しかし、これらのパケットをTCP/IPスタックドライバに渡す前に、SEQ番号及びACK番号をそのもともとの値に変換しなす必要がある。そうするのに、トンネリングドライバは、FIN+ACKパケットのFIN+ACKパケット及び後続のACKパケットのSEQ番号及びACK番号を正しいインプリメントによって初期SEQ番号及びACK番号に修正する。
多数の信頼性のないUDP接続を単一のTCP接続に方向付ける際、TCPは依然としてそのデータスループットを規制する。信頼性のないUDP接続環境で、アプリケーションはアプリケーション又はネットワークがハンドルできる限りの高速でデータを送る。しかし、信頼性のあるTCP接続環境では、TCP/IPスタックドライバがスライディングウィンドウを保持し、スライディングウィンドウがACKパケットをピア側で受け取らなければならなくなる前にデータをどれだけ受け取り、どれだけこのホストに送信できるかをそのピアに教える。今のSEQ番号と受け取ったACK番号との差が所定数を超えると、TCP/IPスタックドライバは新たなデータの今回のパケット送信動作を中止し、遠隔ピア側からのACK番号が遅れを取り戻すまで前に送ったデータを再送信する。一旦ACK番号が追いついたら、新たなデータの送信を再開する。
UDP接続の性能を達成するために、本発明の実施例によるトンネリングTCP接続はピアがACK番号カウントに遅れてもパケットの送信を一時停止することはできない。しかし、一方の側からのSEQ番号とACK番号との差がWindowサイズを超えると、ファイアウォールは最後のACK番号+Windowサイズを超えるSEQ番号をもつトンネリングTCPパケットを全て放棄するのが普通である。パケットが放棄されるとその結果、有意義な映像及び音声の品質の低下になる。Windowサイズを基本的に任意の望ましい値に設定できるにしても、Windowサイズは上限が64キロバイトである。アプリケーションが音声及び映像データを送信しているとき、64K値を超えるのは簡単である。
本発明の一つの実施例では、信頼性のないUDP接続の性能を維持しながらWindowサイズの問題を克服するために、トンネリングドライバは、遠隔ピアからのACK番号が遅れている場合には、送信者側でSEQ番号をインクリメントするのを一時停止する。ドライバは遠隔ピアから受け取ったACK番号をモニタする。接続状態エントリのACK番号と今のSEQ番号との差が事前定義の値(64キロバイト以下の値)に達すると、送信者は新たなデータパケットのパケットサイズに応じたSEQ番号のインクリメントを行なわない。したがって、ファイアウォールはパケットは紛失パケットの再送信パケットであると考えてブロックしない。最終的に、遠隔ピアからのACK番号が遅れを取り戻したら(ギャップが事前定義の値以下になったら)、送信者は新たなトンネリングパケット上のSEQ番号のインクリメントを再開する。
なお、本発明では、H.323セッションが完了すると判定するためには少なくとも2つのアプローチが可能である。一つの実施例では、H.323アプリケーションが特別なAPI関数を呼び出してH.323セッションが終了したことをWinSockProxy.dllに知らせるので、ライブラリはクリーンアップを開始できる。別の実施例では、WinSockProxy.dllがH.323セッションの存続期間中に確立されたTCP接続数の数を覚えている(TCP接続カウント作業)。カウント数が0からXになり、それからまた0に戻った場合には、WinSockProxy.dllがアプリケーションはセッションを終えてマスタトンネリングTCP接続を閉じると判定する。本発明の好適な実施例は、アプリケーションがH.323セッションを終えると判定するためにTCP接続数カウント法を実施する。
H.323セッションの存続期間中、多くのTCP及びUDPセッションが開かれ閉じられる。典型的なUDP接続はステートレスで、ある特定の遠隔IPに結びついているわけではないので、トラッキングするのは難しい。その一方で、接続後のTCP接続はある特定の遠隔IPに結びついている。したがって、TCP接続が結びついている遠隔セッションを識別するのはより簡単である。H.323アプリケーションは先ず最初に遠隔ホストに接続を行なう時点で、その特定のIPアドレスには接続エントリがない。それがこの遠隔ホストへの最初の接続であることをWinSockProxy.dllが識別する。マスタトンネリングTCP接続が生成され、続いて正規のTCP接続が生成される。H.323セッション中、この遠隔ホストへのTCP接続がもっと多く生成される。マスタトンネリングTCP接続がすでに存在しているから、新たなTCP接続はマスタトンネリングTCP接続に方向付けられる。この遠隔ホスト用のTCP接続が全て閉じられると、アプリケーションは今のH.323セッションが終わったのでそれ以上マスタトンネリングTCP接続は必要ないと考える。この時点で、WinSockProxy.dllはマスタトンネリング接続のクリーンアップを開始する。
発明の一つの実施例においては、WinSockProxy.dllがマスタトンネリングTCP接続を閉じると、トンネリングドライバが直ちに接続状態エントリをクリアすることはできない。FIN+ACK又はACKパケットが失われ、再送信しなければならない可能性があることが可能である。しかし、一旦接続状態エントリが接続状態テーブルから削除されてしまうと、トンネリングドライバはそれ以上これらのパケットを認識しない。その結果、これらのパケットはファイアウォールを通るように修正されずに放棄される。したがって、発明の一つの実施例では、WinSockProxy.dllがマスタトンネリングTCP接続を閉じると、対応する接続状態エントリには削除するように印を付けられる。エントリの実際の削除は事前に定義されたタイムアウト後に起きる。
典型的なH.323のシナリオは、状況によっては、両クライアントが互いにデータを送信し合う、つまり、データパケットを交換することを含むけれども、一方のピアは送るデータの量が他方よりも大きい。例えば、あるホストがセッション用の音声及び映像の選択を解除するか、オフにしているかの場合には、音声及び映像をオンにしている関係者から送信されるトンネリングデータが有意に多い。こうした状況では、他のホストがAcknowledgement番号を送るチャンスが十分にないことがある。発明の一つの実施例では、トンネリングドライバがこうした状況を検出して特別なトンネリング肯定応答パケットを生成する。この特別なトンネリング肯定応答パケットには、ウィンドウサイズの事前に定義された定数フィールド(図8の190参照)を除いて、データは入っておらず、有しているのはトンネリングTCPパケットのあらゆる属性である。一つの実施例において、パケットをトンネリングTCPパケットとして識別していると説明した事前定義の値とは違う別個の、もしくは異なる事前定義の値をウィンドウサイズフィールドの上位バイト190に提供する。別の実施例では、特別なトンネリング肯定応答パケットがトンネリングTCPパケットとして識別されると共に特別な肯定応答パケットとしても識別される。このようにして、受信しているトンネリングドライバが特別なパケットを簡単に識別して、そうしたパケットを放棄する。
本発明のまた別の実施例において、Multiple Conferencing Unit Server(MCU Server)として知られる特別なタイプのH.323アプリケーションを実施する。MCU Serverは入ってくる複数のH.323接続に対応できる。次に、入ってくるデータの全てが処理されミックスされて、各クライアントに返信するために結合データストリームが生成される。MCU Serverのインプリメンテーションにおいて、トンネリングシステムは、処理するためのトンネリングTCPストリームと、通常の処理のための「正規の」又は「その他の」H.323接続ストリームとを認識し区別する必要がある。
MCU Serverインプリメンテーションの一つの実施例において、H.323接続セットアップポート(1720)はWinSockProxy.dll及びトンネリングドライバにおいて特別なポートとして識別される。TCPパケットがトンネリングドライバに入り、1720と設定された宛先ポートを有していると、トンネリングドライバはそのクライアントの遠隔IPを特別なテーブルに追加する。この遠隔IP宛ての後続のTCP及びUDPパケットはトンネリングドライバによって処理されない。これらのパケットはネットワークドライバ又は修正されていないTCP/IPスタックドライバに渡される。
図9〜12は、本発明の実施例に従って、擬似ステートフルトンネリングTCP接続を確立するときの、擬似ステートフルトンネリングTCP接続を用いてパケット交換を行なうときの、そして擬似ステートフルトンネリングを終了するときの、データの流れを示す論理フロー図である。
図9は、本発明の実施例によるマスタトンネリング接続の確立を示すデータフロー論理図250である。上に説明したように、2つのホスト間で接続が確立され(例えば、図3及び5参照)、図9に、H.323 ApplicationからNICカード260までの一方のホストのデータの流れを図示している。擬似ステートフルトンネリングTCP接続を提供する接続を確立する際、どちらにしても、図示したデータフローに従うのは基本的に接続を開始する側のホストであることを理解するべきである。図9に示すデータフローはマスタトンネリング接続の確立を表わしており、一方のホストの側でのH.323アプリケーション252と、Winsockproxy.dll(254)と、TCP/IPスタック256と、トンネリングドライバ258と、NICカード260との間のデータフローを含む。上述の図3、4A、4Bは識別されたデータポイントを図で説明したものである。図9は、マスタトンネリングTCP接続が確立されている間に生じるイベントを強調したものである。TCPポート1720の接続がWinsockproxy.dll(254)をトリッガしてTCPポート4824のマスタトンネリング接続を生成する。次に、TCPポート4824接続の結果生じたTCPパケットがトンネリングドライバ258によって処理される(つまり、トンネリングされる)。
図10は、本発明の実施例によるマスタトンネリング接続の確立をさらに説明するデータフロー論理図265である。図10に、一方のホストのTCP/IPスタック266と他方のホストのTCP/IPスタック274との間のデータフローを示している。すなわち、本発明の実施例による、第1のホストのTCP/IPスタック266から、第1のホストのトンネリングドライバ/ネットワーク268、ファイアウォール270、第2のホストのトンネリングドライバ/ネットワーク272、そして第2のホストのTCP/IPスタック274に至るまでのマスタトンネリング接続を確立する際のデータフロー、及び後続のパケット交換を示している。さらに、図10は、マスタトンネル接続プロセス中276、マスタトンネル接続の成立278、H.323アプリケーション接続プロセス中280、H.323アプリケーション接続の成立282、H.323データの送受信284を含む時間点又はイベント点でのデータフローを表示している。図12は、複数のTCP及びUDPポートからの「正規の」(つまり、トンネリングでない)H.323データがマスタトンネリングTCP接続を通る/トンネリングされるときに、どのようにSEQ番号及びACK番号が変わるか又は更新されるかを強調した図である。
図11は、本発明の実施例によるマスタトンネリング接続の終了を図示しているデータフロー論理図285である。図9に関して上に説明したように、一方のホストのH.323アプリケーション286からNICカード294までのデータフローを説明している。確立している接続を終了する際、どちらにしても基本的に接続の終了を開始する側のホストが図示しているデータフローに従うことを理解するべきである。図11に示したデータフローはマスタトンネリング接続の終了を表わし、一方のホストの側のH.323アプリケーション286と、Winsockproxy.dll(288)と、TCP/IPスタック290と、トンネリングドライバ292と、NICカード294との間のデータフローを含む。図9に関して上に説明したように、上述の図3、4A、4Bは識別されたデータポイントを図で説明したものである。
最後に、図12は、本発明の実施例によるマスタトンネリング接続の終了をさらに示すデータフロー論理図295である。図12に、一方のホストのTCP/IPスタック296と他方のホストのTCP/IPスタック304との間のデータフローを示している。すなわち、本発明の実施例による、第1のホストのTCP/IPスタック296から、第1のホストのトンネリングドライバ/ネットワーク298、ファイアウォール300、第2のホストのトンネリングドライバ/ネットワーク302、そして第2のホストのTCP/IPスタック304までのマスタトンネリング接続を終了する際のデータフロー、及び最終のパケット交換を示している。図12は、一つの実施例による、第2又は最終ホストの終了時のマスタトンネリング接続の終了を図示している。上の図10と同様に、さらに、最終H.323接続解除プロセス中306、最終H.323接続解除の成立308、マスタトンネリング接続解除プロセス中310、マスタトンネリング接続解除の成立でそれ以上のパケット交換なし312を含む時間点又はイベント点でのデータフローを表示している。なお、図12は、アプリケーションスタックのいろいろなレイヤーを通るとき、FIN+ACK及びACKパケットのSEQ番号及びACK番号が修正されることを示している。FIN+ACK及びACKパケットはもともとTCPポート4824用のパケットであり、接続が確立してからインプリメントされていないことを思い出すべきである。しかし、H.323データ送信によってTCPポート4824接続のSEQ番号及びACK番号がファイアウォール上では異なる値になっている。これらのFIN+ACK及びACKパケットをファイアウォールを通すには、トンネリングドライバはネットワークに送る前にこれらのパケットのSEQ番号及びACK番号を修正する必要がある。しかし、受信側では、実際にTCPポート4824接続を通ったデータはないから、もともとのTCP接続は異なる値を有するFIN+ACK及びACKパケットを待っている。そのために、トンネリングドライバは、受け取った後でTCP/IPドライバに渡す前に、これらのFIN+ACK及びACKパケットのSEQ番号及びACK番号をそのもともとのSEQ番号及びACK番号に戻す必要がある。
要約すれば、本発明の実施例は、TCP及びUDP接続を、例えば、HTTPポート80といったHTTPポートでの単一のステートフルTCP接続にトンネリングすることを可能にする。単一ステートフルTCP接続は複数のUDP及びTCP接続からの全てのデータを方向付ける。したがって、パケットベースのマルチメディア会議アプリケーションは、マルチメディアデータのクライアント又は受信者を保護するファイアウォールをうまく通り抜けることができる。接続がステートフルだから、ファイアウォールがトンネリングされたTCPデータパケットを”out of state”或いはウィルスの襲撃と誤解して放棄する可能性が少なくなる。
2つのモジュール、つまり、上述のWinsockProxy.dllとトンネリングドライバをアプリケーションモジュールスタックに追加したことにより、ここで説明している機能性を達成する。上述のごとく、Winsock32.dllではなく、WinsockProxy.dllにリンクする電話会議アプリケーションを修正することで、Winsock32.dllを呼び出す前にあらゆる関数呼び出しのシミュレーションが可能になる。TCP/IPドライバを介して信頼性のある接続メカニズムが全て維持されることを理解するべきである。一つの実施例において、ここで説明したトンネリングの実施例によってステートフルな無接続TCPスキームを達成することができる。この例で、UDPデータグラムはステートフルな無接続TCP/IPヘッダにパッケージ化されるが、基本的に正規のTCP/IPヘッダ及びデータグラムのように見える。受信時に、データグラムは無接続TCP/IPデータグラムとして識別され、無接続TCP/IPヘッダがデータグラムから取り除かれ、データは無接続TCP/IPヘッダが取り除かれた後に残っているもともとの又は基礎をなすプロトコルに従って処理される。無接続TCP/IPヘッダはSYN番号及びACK番号が正しくインクリメントされてステートフルに見えるので、肯定応答、検証、再送信要求などといった応答を自動的に開始しない。
一つの実施例において、無接続TCP/IPヘッダはTCP/IPプロトコルを優先又は必要とすることのあるインターネットやその他のネットワークでの送信を可能にする。しかし、データグラムが無接続TCP/IPデータグラムとして識別される結果、基礎をなすデータグラムからヘッダが取り除かれことになり、伝統的な肯定応答やその他の信頼性データの交換を不可能にする。実施例はクライアント・サーバの関係を説明しているが、関係を任意の適切なデータの受信者及び送信者に広げることができるので、この関係は限定を意味するものではない。
上記の実施例を考えれば、発明はコンピュータシステムに格納されたデータを必要とする様々なコンピュータで実現される操作を用いることができることを理解するべきである。これらの操作は物理的な数量の物理的な操作を要するものである。必ずしもそうとは限らないが、普通は、こうした数量は、格納、転送、結合、比較、及びそれ以外の操作が可能な電気又は磁気信号の形をとる。さらに、実行される操作は、生成、識別、判定、又は比較といった表現で呼ばれることが多い。
発明は、コンピュータ判読可能な媒体上にコンピュータ判読可能なコードとして実施することもできる。コンピュータ判読可能な媒体は後からコンピュータシステムで読み取り実行できるデータを記憶できるどんなデータストレージデバイスでも構わない。コンピュータ判読可能な媒体はコンピュータコードを含んだ電磁搬送波も含む。コンピュータ判読可能な媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープや、その他の光学的及び非光学的データストレージデバイスなどがある。コンピュータ判読可能な媒体は、コンピュータ判読可能なコードを分散して記憶及び実行できるように、ネットワーク接続コンピュータシステムで分散することもできる。
明確に理解できるように前記の発明をいくらか詳細に説明してきたが、添付の特許請求の範囲内で一定の変更及び修正を実施できることは明白であろう。したがって、本実施例は例証のためであって限定のためではないと考えるべきであり、発明はここで述べた詳細に限定されるものではなく、添付の特許請求の範囲及び均等物の範囲内で修正が可能である。特許請求の範囲において、明記されていない限り、要素及び/又はステップは操作の何ら特定の順序を暗に示すものではない。
ファイアウォールを使用せずに情報をやりとりするコンピュータの簡易概略図。 2つのコンピュータがファイアウォールを介して通信している簡易概略図。 発明の一つの実施例による、信頼性のない接続能力及び信頼性のある接続能力を共に提供するために、無接続送信制御プロトコルスキームとの統合が可能な修正されたアプリケーションモジュールスタックを含むシステムの簡易概略図。 Aは標準規格H.323アプリケーションモジュールのモジュールスタックを示す簡易概略図、Bは発明の一つの実施例によるポートトンネリングアプリケーションモジュールスタックを示す簡易概略図。 典型的なH.323 TCP/UDP接続シーケンスを示す簡易概略図。 Aは入ってくるデータのブロックを標準のアプリケーションモジュールスタックを介してセグメント化することを説明する図、Bは発明の一つの実施例による、修正アプリケーションモジュールスタックがファイアウォールを介してデータをトンネリングできるようにするためのセグメンテーション及びヘッダの追加を説明する図。 模式的なホストA及びホストB間の典型的なTCP接続で使用したハンドシェイクシーケンス及び接続状態の概略図。 発明の一つの実施例による、無接続TCPヘッダの簡易概略図。 発明の一つの実施例による、マスタトンネリング接続の確立を説明するデータフロー論理図。 発明の一つの実施例による、マスタトンネリング接続の確立をさらに説明するデータフロー論理図。 発明の一つの実施例による、マスタトンネリング接続の終了を説明するデータフロー論理図。 発明の一つの実施例による、マスタトンネリング接続の終了をさらに説明するデータフロー論理図。
符号の説明
100 コンピュータ1
102 コンピュータ2
112 ファイアウォール/NAT
132 ユーザモード
134 カーネルモード
136 ハードウェア
140 クライアントA
142 クライアントB
144 ポート172へのTCP接続
146 H.425のTCP接続
148 UDP接続:呼び出しパラメータ
152 データのブロック
154 TCP(又はUDP)ヘッダ
156 IPヘッダ
158 MACヘッダ
160 ポート80のトンネリングIP + TCPヘッダ
166 ホストA
168 ホストB
190 8ビット(上位バイト)ウィンドウサイズ
192 8ビット(下位バイト)ウィンドウサイズ
252 H.323アプリケーション
254 WinsockProxy.dll
256 TCP/IPスタック
258 トンネリングドライバ
260 NICカード
266 TCP/IPスタック
268 トンネリングドライバ/ネットワーク
270 ファイアウォール
272 トンネリングドライバ/ネットワーク
274 TCP/IPスタック
276 マスタトンネリング接続プロセス中
278 マスタトンネリング接続の確立
280 H.323接続プロセス中
282 H.323接続の確立
284 H.323データの送受信
286 H.323アプリケーション
288 WinsockProxy.dll
290 TCP/IPスタック
292 トンネリングドライバ
294 NICカード
296 TCP/IPスタック
298 トンネリングドライバ/ネットワーク
300 ファイアウォール
302 トンネリングドライバ/ネットワーク
304 TCP/IPスタック
306 後半、H.323接続解除プロセス中。前半にFIN+ACKのやりとりがすでに行なわれたと想定
308 H.323接続解除成立
310 マスタトンネリング接続解除プロセス中
312 マスタトンネリング接続解除成立
122a アプリケーション
122b ライブラリ
122d トンネリングドライバ
130a H.323アプリケーション
130b Winsock32.dll
130c TCP/IPドライバ
130d NICドライバ
130e ネットワークカード
152a データのセグメント
152b データのセグメント
152c データのセグメント

Claims (26)

  1. パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法であって、
    マルチメディア通信標準規格と関連付けられたライブラリ呼び出しを傍受し、
    ライブラリ呼び出しと関連付けられた識別データを登録し、
    識別データに関係したデータパケットの予め存在しているヘッドの上にTCP/IPヘッダを付け加え、
    TCP/IPヘッダを有するデータパケットをファイアウォールを介して送信する操作を含み、
    TCP/IPヘッダはTCP SEQ番号及びTCP ACK番号を含む、方法。
  2. ライブラリ呼び出しと関連付けられた識別データを登録する方法操作は、
    ポート番号及びプロトコルタイプがテーブルに定義されているかチェックし、
    ポート番号及びプロトコルタイプがテーブルに定義されていなければ、
    ポート番号及びプロトコルタイプをテーブルに追加する操作を含む、
    請求項1に記載の方法。
  3. 識別データはデータパケットと関連付けられたポート番号及びプロトコルタイプを含む、請求項1に記載の方法。
  4. 識別データに関係したデータパケットの予め存在しているヘッドの上にTCP/IPヘッダを付け加える方法操作は、
    識別している事前定義の値をTCP/IPヘッダのウィンドウサイズフィールドの上位バイトに挿入し、
    チェックサムをTCP/IPヘッダのウィンドウサイズフィールドの下位バイトに挿入し、
    TCP SEQ番号を挿入し、
    TCP ACK番号を挿入する操作を含み、
    TCP SEQ番号の初期割当ての後に、送信されたデータの量に従ってTCP SEQ番号及びTCP ACK番号が決定される、
    請求項1に記載の方法。
  5. ポート番号はポート80で、プロトコルタイプはTCPである、請求項2に記載の方法。
  6. ライブラリ呼び出しと関連付けられた識別データを登録する方法操作は、ライブラリ呼び出しと関連付けられたデータをパケットベースのマルチメディア通信標準規格のプロトコルスタックのアプリケーションレベルからドライバレベルに進める前に行なわる、請求項1に記載の方法。
  7. 単一のHTTPポートを介してポートトラフィックを通信するための方法であって、
    a)第1及び第2コンピューティングデバイス間の接続を確立し、
    b)ポートトラフィックと関連付けられた割当てデータをトンネリングドライバに送信し、
    c)ポートトラフィックをデータグラムにセグメント化し、
    d)データグラムの一つずつに第1ヘッダをアペンドし、
    e)第1ヘッダの上にTCP/IPヘッダをアペンドする方法操作を含み、
    TCP/IPヘッダはTCP SEQ番号及びTCP ACK番号を含み、データグラムの一つずつを単一HTTPポートに方向付けるように構成されている、方法。
  8. 接続はステートフルTCP接続で、単一HTTPポートはポート80である、請求項7に記載の方法。
  9. 割当てデータを送信する方法操作は、
    ポートトラフィックと関連付けられたポート番号及びプロトコルタイプを定義することを含む、請求項7に記載の方法。
  10. 第1及び第2コンピューティングデバイス間の接続の確立は、TCPプロトコルに従ってSYNハンドシェイクシーケンス及びSYN+ACKハンドシェイクシーケンスによって開始される、請求項7に記載の方法。
  11. 第1ヘッダの上にTCP/IPヘッダをアペンドする方法操作は、
    TCP/IPヘッダのウィンドウサイズフィールドの上位バイトにフラグを挿入し、
    TCP/IPヘッダのウィンドウサイズフィールドの下位バイトにチェックサムを挿入し、
    TCP SEQ番号を挿入し、
    TCP ACK番号を挿入することを含み、
    初期TCP SEQ番号に続いて、TCP SEQ番号及びTCP ACK番号がTCPプロトコルに従って決定される、請求項7に記載の方法。
  12. パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体であって、
    マルチメディア通信標準規格と関連付けられたライブラリ呼び出しを傍受するためのプログラム命令と、
    ライブラリ呼び出しと関連付けられた識別データを登録するためのプログラム命令と、
    識別データに関係したデータパケットの予め存在しているヘッダの上にTCP/IPヘッダを付け加えるためのプログラム命令と、
    TCP/IPヘッダを有するデータパケットをファイアウォールを介して通信するためのプログラム命令とを含み、
    TCP/IPヘッダは擬似ステートフルTCP/IPヘッダで、TCP SEQ番号及びTCP ACK番号を含む、コンピュータ判読可能な媒体。
  13. ライブラリ呼び出しと関連付けられた識別データを登録するプログラム命令は、
    ポート番号及びプロトコルタイプがテーブルに定義されているかチェックするためのプログラム命令と、
    ポート番号及びプロトコルタイプをテーブルに追加するためのプログラム命令とを含む。
  14. 識別データはデータパケットと関連付けられたポート番号及びプロトコルタイプを含む、請求項12に記載のコンピュータ判読可能な媒体。
  15. 識別データに関係したデータパケットの予め存在しているヘッダの上にTTCP/IPヘッダを付け加えるプログラム命令は、
    TCP/IPヘッダのウィンドウサイズフィールドの上位バイトに識別値フラグを挿入するためのプログラム命令と、
    TCP/IPヘッダのウィンドウサイズフィールドの下位バイトにチェックサムを挿入するためのプログラム命令と、
    TCP/IPヘッダにTCP SEQ番号を挿入するためのプログラム命令と、
    TCP/IPヘッダにTCP ACK番号を挿入するためのプログラム命令とを含み、
    初期TCP SEQ番号割当て後に、TCP/IPプロトコルに従ってTCP SEQ番号及びTCP ACK番号が決められる、請求項12に記載のコンピュータ判読可能な媒体。
  16. ポート番号はポート80で、プロトコルタイプはTCPである、請求項13に記載のコンピュータ判読可能な媒体。
  17. ライブラリ呼び出しと関連付けられた識別データを登録するための命令プログラムは、ライブラリ呼び出しと関連付けられたデータをパケットベースのマルチメディア通信標準規格のプロトコルスタックのアプリケーションレベルからドライバレベルに進める前に完了する、請求項12に記載のコンピュータ判読可能な媒体。
  18. 単一のHTTPポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能な媒体であって、
    a)第1及び第2コンピューティングデバイス間の接続を確立するためのプログラム命令と、
    b)ポートトラフィックと関連付けられた割当てデータをトンネリングドライバに送信するためのプログラム命令と、
    c)ポートトラフィックをデータグラムにセグメント化するためのプログラム命令と、
    d)データグラムの一つずつに第1ヘッダをアペンドするためのプログラム命令と、
    e)第1ヘッダの上にTCP/IPヘッダをアペンドするためのプログラム命令とを含み、TCP/IPヘッダはTCP SEQ番号及びTCP ACK番号を有する擬似ステートフルTCP/IPヘッダで、データグラムの一つずつを単一のHTTPポートに方向付けるように構成されている、コンピュータ判読可能な媒体。
  19. 接続はTCP接続で、ポート番号はポート80である、請求項18に記載のコンピュータ判読可能な媒体。
  20. 割当てデータを送信するためのプログラム命令は、
    ポートトラフィックと関連付けられたポート番号及びプロトコルタイプを定義するためのプログラム命令を含む、請求項18に記載のコンピュータ判読可能な媒体。
  21. 第1ヘッダはTCPヘッダ及びUDPヘッダのうちの一つである、請求項18に記載のコンピュータ判読可能な媒体。
  22. 第1ヘッダの上にTCP/IPヘッダをアペンドするためのプログラム命令は、
    TCP/IPヘッダのウィンドウサイズフィールドの上位バイトに事前定義の識別値を挿入するためのプログラム命令と、
    TCP/IPヘッダのウィンドウサイズフィールドの下位バイトにチェックサムを挿入するためのプログラム命令と、
    TCP SEQ番号及びTCP ACK番号を決めるためのプログラム命令とを含み、初期TCP SEQ番号はランダムに割り当てられ、後続のTCP SEQ番号とTCP ACK番号とはTCPプロトコルに従って決められる、請求項18に記載のコンピュータ判読可能な媒体。
  23. 複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステムであって、
    パケットヘッダとは別にさらに各々トンネリングヘッダを有するデータパケットを送信するように構成されたサーバと、
    ブロックされていないTCPポートの数を限定するファイアウォールとを含み、ファイアウォールはトンネリングヘッダを分析する機能を有し、トンネリングヘッダはファイアウォールがデータパケットを通すように単一のポートと関連付けられており、さらに、
    単一ポートを介してファイアウォールからデータパケットを受け取るように構成されたクライアントを含み、クライアントはさらにパケットヘッダにアクセスできるようにトンネリングヘッダを取り除くためにトンネリングヘッダと関連付けられたフラグ及びチェックサムを識別するように構成され、
    トンネリングヘッダはTCP SEQ番号及びTCP ACK番号を有してステートフルである、システム。
  24. フラグ及びチェックサムはトンネリングヘッダのウィンドウサイズフィールドに組み込れる、請求項23に記載のシステム。
  25. パケットヘッダはUDPヘッダである、請求項23に記載のシステム。
  26. 単一ポートはHTTPポート80である、請求項23に記載のシステム。
JP2005331436A 2004-11-16 2005-11-16 パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法、単一のhttpポートを介してポートトラフィックを通信するための方法、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体、単一のhttpポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能な媒体、および複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステム Pending JP2006166426A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/990,274 US7392323B2 (en) 2004-11-16 2004-11-16 Method and apparatus for tunneling data using a single simulated stateful TCP connection

Publications (1)

Publication Number Publication Date
JP2006166426A true JP2006166426A (ja) 2006-06-22

Family

ID=36386190

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005331436A Pending JP2006166426A (ja) 2004-11-16 2005-11-16 パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするための方法、単一のhttpポートを介してポートトラフィックを通信するための方法、パケットベースのマルチメディア通信標準規格と関連付けられたデータをトンネリングするためのプログラム命令を有するコンピュータ判読可能な媒体、単一のhttpポートを介してポートトラフィックを通信するためのプログラム命令を有するコンピュータ判読可能な媒体、および複数のポートに宛てられたポートトラフィックを単一ポートを介してトンネリングするためのシステム

Country Status (2)

Country Link
US (1) US7392323B2 (ja)
JP (1) JP2006166426A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009545274A (ja) * 2006-07-31 2009-12-17 ハリス コーポレイション ネットワークのエッジでの動的にカスタマイズ可能なサービス品質システム及び方法
US7990860B2 (en) 2006-06-16 2011-08-02 Harris Corporation Method and system for rule-based sequencing for QoS
US8064464B2 (en) 2006-06-16 2011-11-22 Harris Corporation Method and system for inbound content-based QoS
US8300653B2 (en) 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
JP2013118493A (ja) * 2011-12-02 2013-06-13 Oki Electric Ind Co Ltd 中継装置、通信端末及び通信ネットワーク
US8516153B2 (en) 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US8730981B2 (en) 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US9621473B2 (en) 2004-08-18 2017-04-11 Open Text Sa Ulc Method and system for sending data
GB2417391B (en) 2004-08-18 2007-04-18 Wecomm Ltd Transmitting data over a network
US8639828B1 (en) * 2004-10-13 2014-01-28 Symantec Corporation Accelerated TCP network communications
US8826014B2 (en) * 2005-01-21 2014-09-02 International Business Machines Corporation Authentication of remote host via closed ports
US7751311B2 (en) * 2005-05-19 2010-07-06 Cisco Technology, Inc. High availability transport protocol method and apparatus
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
JP2006343807A (ja) * 2005-06-07 2006-12-21 Nec Corp 通信方法、通信システム、プログラム及び記録媒体
CA2510647A1 (en) * 2005-06-23 2006-12-23 Cognos Incorporated Signing of web request
US8478894B2 (en) * 2005-07-21 2013-07-02 International Business Machines Corporation Web application response cloaking
US9021134B1 (en) * 2006-03-03 2015-04-28 Juniper Networks, Inc. Media stream transport conversion within an intermediate network device
US8560828B2 (en) * 2006-04-13 2013-10-15 Directpacket Research, Inc. System and method for a communication system
US7773588B2 (en) * 2006-04-13 2010-08-10 Directpacket Research, Inc. System and method for cross protocol communication
US8555371B1 (en) 2009-07-17 2013-10-08 Directpacket Research, Inc. Systems and methods for management of nodes across disparate networks
US8605730B2 (en) * 2006-04-13 2013-12-10 Directpacket Research, Inc. System and method for multimedia communication across disparate networks
US7710978B2 (en) * 2006-04-13 2010-05-04 Directpacket Research, Inc. System and method for traversing a firewall with multimedia communication
US20070291768A1 (en) * 2006-06-16 2007-12-20 Harris Corporation Method and system for content-based differentiation and sequencing as a mechanism of prioritization for QOS
US20070291765A1 (en) * 2006-06-20 2007-12-20 Harris Corporation Systems and methods for dynamic mode-driven link management
US20080013559A1 (en) * 2006-07-14 2008-01-17 Smith Donald L Systems and methods for applying back-pressure for sequencing in quality of service
US20100241759A1 (en) * 2006-07-31 2010-09-23 Smith Donald L Systems and methods for sar-capable quality of service
US20100238801A1 (en) * 2006-07-31 2010-09-23 Smith Donald L Method and system for stale data detection based quality of service
DE102006039783A1 (de) * 2006-08-24 2008-03-20 Siemens Ag Verfahren zum Übertragen von aus Audio- und Videosignalen gebildeten Videodaten
US7974286B2 (en) * 2006-12-04 2011-07-05 International Business Machines Corporation Reduced redundant security screening
US8139581B1 (en) 2007-04-19 2012-03-20 Owl Computing Technologies, Inc. Concurrent data transfer involving two or more transport layer protocols over a single one-way data link
US20080307109A1 (en) * 2007-06-08 2008-12-11 Galloway Curtis C File protocol for transaction based communication
US7978731B2 (en) * 2007-09-19 2011-07-12 International Business Machines Corporation Method and system for consolidating TCP ports
JP2009152953A (ja) * 2007-12-21 2009-07-09 Nec Corp ゲートウェイ装置およびパケット転送方法
US9076342B2 (en) 2008-02-19 2015-07-07 Architecture Technology Corporation Automated execution and evaluation of network-based training exercises
KR101671804B1 (ko) * 2008-04-25 2016-11-16 인텔렉추얼디스커버리 주식회사 Tcp ack 패킷 전송 및 수신 방법과, 이를 지원하는 장치
US8750112B2 (en) * 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
US8325601B2 (en) * 2009-05-08 2012-12-04 Canon Kabushiki Kaisha Reliable network streaming of a single data stream over multiple physical interfaces
WO2012106411A1 (en) * 2011-02-01 2012-08-09 Google Inc. Methods and systems for enabling multiple accounts support
US20120331032A1 (en) 2011-06-22 2012-12-27 Microsoft Corporation Remote Presentation Session Connectionless Oriented Channel Broker
US9386127B2 (en) * 2011-09-28 2016-07-05 Open Text S.A. System and method for data transfer, including protocols for use in data transfer
US8817815B2 (en) * 2011-12-22 2014-08-26 Cisco Technology, Inc. Traffic optimization over network link
CN102946387B (zh) * 2012-11-01 2016-12-21 惠州Tcl移动通信有限公司 一种防御拒接服务攻击的方法
US9391800B2 (en) 2014-03-12 2016-07-12 Microsoft Technology Licensing, Llc Dynamic and interoperable generation of stateful VPN connection profiles for computing devices
US10129114B1 (en) * 2015-03-30 2018-11-13 Amazon Technologies, Inc. Protocol exposure as network health detection
US10083624B2 (en) 2015-07-28 2018-09-25 Architecture Technology Corporation Real-time monitoring of network-based training exercises
US10803766B1 (en) 2015-07-28 2020-10-13 Architecture Technology Corporation Modular training of network-based training exercises
WO2018222000A1 (ko) * 2017-06-02 2018-12-06 주식회사 애니랙티브 Mptcp 프록시 시스템, 이의 제작 방법 및 운용방법
US10841277B2 (en) * 2017-08-14 2020-11-17 Ut-Battelle, Llc One step removed shadow network
US10958625B1 (en) * 2018-03-06 2021-03-23 F5 Networks, Inc. Methods for secure access to services behind a firewall and devices thereof
US11063903B2 (en) * 2018-04-11 2021-07-13 Vmware, Inc. Port and loopback IP addresses allocation scheme for full-mesh communications with transparent TLS tunnels
US10749890B1 (en) 2018-06-19 2020-08-18 Architecture Technology Corporation Systems and methods for improving the ranking and prioritization of attack-related events
US10817604B1 (en) 2018-06-19 2020-10-27 Architecture Technology Corporation Systems and methods for processing source codes to detect non-malicious faults
US10742712B2 (en) 2018-10-30 2020-08-11 Citrix Systems, Inc. Web adaptation and hooking for virtual private integration systems and methods
CN109587163B (zh) * 2018-12-27 2022-08-16 网宿科技股份有限公司 一种dr模式下的防护方法和装置
US11429713B1 (en) 2019-01-24 2022-08-30 Architecture Technology Corporation Artificial intelligence modeling for cyber-attack simulation protocols
US11128654B1 (en) 2019-02-04 2021-09-21 Architecture Technology Corporation Systems and methods for unified hierarchical cybersecurity
US11245668B1 (en) * 2019-03-06 2022-02-08 Juniper Networks, Inc. Critical firewall functionality management
US11887505B1 (en) 2019-04-24 2024-01-30 Architecture Technology Corporation System for deploying and monitoring network-based training exercises
US11403405B1 (en) 2019-06-27 2022-08-02 Architecture Technology Corporation Portable vulnerability identification tool for embedded non-IP devices
US11444974B1 (en) 2019-10-23 2022-09-13 Architecture Technology Corporation Systems and methods for cyber-physical threat modeling
US11503075B1 (en) 2020-01-14 2022-11-15 Architecture Technology Corporation Systems and methods for continuous compliance of nodes
US11936717B2 (en) * 2021-11-16 2024-03-19 Netflix, Inc. Scalable media file transfer

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US663985A (en) * 1899-12-16 1900-12-18 Samuel E Stimson Coin-controlled passage-closing device.
JPH09510596A (ja) 1994-06-08 1997-10-21 エイチイー・ホールディングス・インコーポレーテッド・ディー ビーエー・ヒューズ・エレクトロニクス ハイブリッドネットワークアクセスのための装置および方法
WO1996017462A2 (en) 1994-11-21 1996-06-06 Oracle Corporation A reliable connectionless network protocol
US5958053A (en) 1997-01-30 1999-09-28 At&T Corp. Communications protocol with improved security
US6018530A (en) 1997-06-19 2000-01-25 Sham Chakravorty Method for transmitting using a modified transport control protocol
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
JPH11234270A (ja) 1998-02-16 1999-08-27 Nippon Telegr & Teleph Corp <Ntt> ネットワーク間のデータベースの複製・更新方法
US6360265B1 (en) 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
JP2000099428A (ja) 1998-09-25 2000-04-07 Nippon Telegr & Teleph Corp <Ntt> ネットワーク間における情報の収集方法及びこれに用いるネットワーク管理装置
US6470020B1 (en) 1998-11-03 2002-10-22 Nortel Networks Limited Integration of stimulus signalling protocol communication systems and message protocol communication systems
JP2000172597A (ja) 1998-12-08 2000-06-23 Yamatake Corp 通信方法及び通信インタフェース装置
US6438105B1 (en) * 1999-02-08 2002-08-20 3Com Corporation Reliable internet facsimile protocol
JP3667594B2 (ja) 1999-06-29 2005-07-06 日本電気株式会社 ゲートウェイシステム
JP4454072B2 (ja) * 1999-08-03 2010-04-21 富士通株式会社 IP通信ネットワークシステム及びQoS保証装置
US6424626B1 (en) 1999-10-29 2002-07-23 Hubbell Incorporated Method and system for discarding and regenerating acknowledgment packets in ADSL communications
US7213063B2 (en) * 2000-01-18 2007-05-01 Lucent Technologies Inc. Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
KR100689540B1 (ko) 2000-03-20 2007-03-08 삼성전자주식회사 사설 아이피 네트워크를 통한 다중 통화 장치 및 방법
WO2002071717A2 (en) 2000-12-14 2002-09-12 Vocaltec Communications Ltd. Traversing firewalls and nats
US7260826B2 (en) 2000-05-31 2007-08-21 Microsoft Corporation Resource allocation in multi-stream IP network for optimized quality of service
US20020042832A1 (en) 2000-08-14 2002-04-11 Fallentine Mark D. System and method for interoperability of H.323 video conferences with network address translation
JP2002132597A (ja) 2000-10-30 2002-05-10 Credist Inc 通信装置および通信インターフェース装置
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
KR100360274B1 (ko) 2000-12-30 2002-11-09 엘지전자 주식회사 Nat 기반 로컬망에서 범용 ip 전화통신 시스템을지원하는 방법
NO20010069L (no) 2001-01-05 2002-07-08 Ericsson Telefon Ab L M Flerbrukerapplikasjoner i multimedianett
US20020124095A1 (en) 2001-03-02 2002-09-05 Sultan Israel Daniel Apparatus and method for sending point-to-point protocol over ethernet
US7293108B2 (en) 2001-03-15 2007-11-06 Intel Corporation Generic external proxy
US7272650B2 (en) 2001-04-17 2007-09-18 Intel Corporation Communication protocols operable through network address translation (NAT) type devices
JP2002359652A (ja) 2001-05-31 2002-12-13 Nakayo Telecommun Inc マルチポイント着信可能なゲートキーパ
US7117267B2 (en) * 2001-06-28 2006-10-03 Sun Microsystems, Inc. System and method for providing tunnel connections between entities in a messaging system
JP4266545B2 (ja) 2001-09-10 2009-05-20 株式会社リコー ゲートキーパー装置
US20030048780A1 (en) 2001-09-10 2003-03-13 Phomsopha Bounthavivone K. Supporting real-time multimedia applications via a network address translator
US6976205B1 (en) * 2001-09-21 2005-12-13 Syrus Ziai Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources
US7469299B2 (en) 2001-10-25 2008-12-23 Verizon Business Global Llc Bridging user agent and a proxy server for supporting network services
AU2003211053A1 (en) 2002-02-11 2003-09-04 Polycom, Inc. System and method for videoconferencing across a firewall
US7327721B2 (en) 2002-02-11 2008-02-05 Avaya Technology Corp. Determination of endpoint virtual address assignment in an internet telephony system
US7979528B2 (en) 2002-03-27 2011-07-12 Radvision Ltd. System and method for traversing firewalls, NATs, and proxies with rich media communications and other application protocols
JP2004064490A (ja) 2002-07-30 2004-02-26 Fujitsu Ltd データ通信システム
TWI232051B (en) * 2002-08-09 2005-05-01 Quanta Comp Inc System and method for supporting mobile internet protocol using multiple separate tunnels

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7990860B2 (en) 2006-06-16 2011-08-02 Harris Corporation Method and system for rule-based sequencing for QoS
US8064464B2 (en) 2006-06-16 2011-11-22 Harris Corporation Method and system for inbound content-based QoS
US8516153B2 (en) 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US8730981B2 (en) 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service
JP2009545274A (ja) * 2006-07-31 2009-12-17 ハリス コーポレイション ネットワークのエッジでの動的にカスタマイズ可能なサービス品質システム及び方法
US8300653B2 (en) 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
JP2013118493A (ja) * 2011-12-02 2013-06-13 Oki Electric Ind Co Ltd 中継装置、通信端末及び通信ネットワーク

Also Published As

Publication number Publication date
US7392323B2 (en) 2008-06-24
US20060104288A1 (en) 2006-05-18

Similar Documents

Publication Publication Date Title
US7392323B2 (en) Method and apparatus for tunneling data using a single simulated stateful TCP connection
US7406533B2 (en) Method and apparatus for tunneling data through a single port
US7979528B2 (en) System and method for traversing firewalls, NATs, and proxies with rich media communications and other application protocols
Kohler et al. Datagram congestion control protocol (DCCP)
EP3520267B1 (en) Router with bilateral tcp session monitoring
US7263071B2 (en) Connectionless TCP/IP data exchange
US5941988A (en) Session and transport layer proxies via TCP glue
Ford et al. TCP extensions for multipath operation with multiple addresses
US8230091B2 (en) System and method for real-time bidirectional communication through firewalls
US8559449B2 (en) Systems and methods for providing a VPN solution
JP4274195B2 (ja) マルチメディア・アプリケーションに関連付けられたマルチメディアデータを送信する方法、データ送信方法、分散されたネットワーク中にマルチメディアデータを送信するシステム、及びコンピュータ間のマルチメディア通信をイネーブルする通信プロトコル
US20030217149A1 (en) Method and apparatus for tunneling TCP/IP over HTTP and HTTPS
Fairhurst et al. Services provided by IETF transport protocols and congestion control mechanisms
US20050022017A1 (en) Data structures and state tracking for network protocol processing
WO2005117327A2 (en) A system, method, and computer program product for updating the states of a firewall
KR20070026331A (ko) 패킷이 필터링되어 있는 것 이외의 네트워크 프로토콜레이어에서 가상 사설망을 형성하기 위해 보안 통신 링크를설정하기 위한 시스템, 장치 및 방법
US7130266B2 (en) Handling of data packets
Gont Security assessment of the internet protocol version 4
Andreasson Iptables Tutorial 1.2. 2
Floyd et al. Datagram congestion control protocol (DCCP)
Gont TCP's reaction to soft errors
US20070288645A1 (en) Method and System for Persistent and Reliable Data Transmission
US8023985B1 (en) Transitioning a state of a connection in response to an indication that a wireless link to a wireless device has been lost
Bernardo et al. Network security considerations for a new generation protocol UDT
KR100898371B1 (ko) 투명 프록시 시스템 및 그의 패킷 처리 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080527