(57)【要約】【課題】  ネットワーク境界を横切るメディアストリームのためにメディアセッションを確立すること。【解決手段】  メディアリレーは、メディアパスを予約し、メディアパスを開き、メディアパスを閉じ、メディアパスについての情報を提供する。メディアコンフィグレータは、メディアコンフィグレータ制御モジュールおよびメディアリレーと通信するように構成されている。制御モジュールは、マルチメディアセッションイベントを扱うイベントハンドラ、メディアセッションのアドレス識別子がプライベートアドレス空間に属するか否かを決定するローカルアドレスリゾルバ、およびメディアパスの確立に使用する制御要素を有する。制御要素は、メディアリレーのリソースを管理する。状態リフレッシュタイマは、プロキシエンジンによって制御されるすべてのメディアリレーと制御要素の間の状態の一貫性を維持するために使用する。【選択図】  図６
2004355628.tif 000002
【特許請求の範囲】
【請求項１】
プロキシエンジンから受信したマルチメディアセッションイベントを扱うように構成されたイベントハンドラと、
前記イベントハンドラと通信するローカルアドレスリゾルバであって、アドレス識別子がプライベートアドレス空間に属しているか否かを判定し、前記アドレス識別子がプライベートアドレス空間に属している場合、一端を前記アドレス識別子とするメディアパスを確立するために使用されるものとして制御要素および制御グループのうちの少なくとも一方を判定するように構成されているローカルアドレスリゾルバと、
前記イベントハンドラと通信する少なくとも１つの制御要素であって、メディアリレーのリソースを管理する少なくとも１つの制御要素と
を備えたことを特徴とする前記メディアリレーを制御するメディアコンフィグレータ制御モジュール。
【請求項２】
前記少なくとも１つの制御要素は制御グループおよび少なくとももう１つの制御要素を含むことを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項３】
定義された期間より長い間、状態の一貫性検査が行われていない制御要素を探索し、
前記定義された期間より長い間、前記状態の一貫性検査が行われていない制御要素ごとに、
前記制御要素のロックを行うステップと、
前記制御要素が管理する前記メディアリレーによって確立されたすべてのアドレスマッピングについてのデータを取得するステップと、
前記制御要素が管理する前記メディアリレーおよび前記制御要素が前記確立されているアドレスマッピングについて同じ情報を有しているか否かを判定するステップと、
前記制御要素が管理する前記メディアリレーによって確立された前記マッピングと、前記制御要素によってマップされた前記マッピングの情報との間に矛盾が見つかった場合、
前記制御要素によってマップされたが、前記メディアリレーの前記現在のマッピングにはないマッピングに関連するポートを解除するステップと、
前記メディアリレーにはあるが、前記制御要素のマッピングにはないマッピングを条件付きで予約するステップと、
前記制御要素をロック解除するステップと
を含む前記状態の一貫性検査を開始するように構成された、
状態リフレッシュタイマをさらに備えたことを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項４】
前記少なくとも１つの制御要素および前記メディアリレーと通信するように構成されたメディアコンフィグレータをさらに備えたことを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項５】
前記マルチメディアセッションイベントは、セッション開始済みメッセージを含み、
前記イベントハンドラは、前記セッション開始済みメッセージの受信に応答して、前記ローカルアドレスリゾルバを介して、前記メディアストリームがプライベートアドレス空間とパブリックアドレス空間の間の前記境界を横切るか否かを判定し、前記メディアストリームが前記境界を横切る場合は前記メディアストリームのためにメディアパスを予約し、少なくとも１つのポートを含む前記メディアパスを予約せよとのメディアパス予約要求を、メディアコンフィグレータの少なくとも１つの制御要素を介して前記メディアコンフィグレータに送信し、前記予約要求が成功したときは、前記予約されたポートに対してなされた前記予約を一時記憶装置に格納し、前記ストリームのために広報されたアドレス識別子が予約されたものに変更されるようにセッション記述を変更し、変更されたセッション記述をプロキシエンジンに送信するようにさらに構成されていることを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項６】
前記マルチメディアセッションイベントは、セッション確認済みメッセージを含み、
前記イベントハンドラは、前記セッション確認済みメッセージの受信に応答して、前記メディアパスのために予約されたパブリックアドレスパラメータを取得し、メディアパス開放要求を前記予約されたパブリックアドレスパラメータとともにメディアコンフィグレータに送信し、前記メディアパス開放要求が成功した場合、前記メディアパスについては開かれたパスを参照するようにセッション記述を変更し、前記変更されたセッション記述をプロキシエンジンに送信するようにさらに構成されていることを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項７】
前記マルチメディアセッションイベントはセッション終了済みメッセージを含み、
前記イベントハンドラは、前記セッション終了済みメッセージの受信に応答して、前記メディアセッションのための前記開かれたパスのアドレスパラメータを取得し、前記メディアパスを閉じよという要求を前記アドレスパラメータとともにメディアコンフィグレータに送信し、前記開かれたメディアパスが閉じられた後でセッション終了メッセージをプロキシエンジンに送信するようにさらに構成されていることを特徴とする請求項１に記載のメディアコンフィグレータ制御モジュール。
【請求項８】
送信側から受信側にメディアストリームを送信するメディアセッションを確立する方法であって、
前記メディアストリームが第１のアドレス空間と第２のアドレス空間の間のネットワーク境界を横切るか否かを判定するステップと、
前記メディアストリームが前記ネットワーク境界を横切る場合、
どのメディアリレーを使用すべきかを判定するステップと、
少なくとも１つのポートを有するメディアパスを前記メディアストリームのために予約するよう前記メディアリレーに指示するステップと、
前記少なくとも１つのポートが予約されたときは、
前記少なくとも１つのポートの予約を一時記憶装置に格納するステップ、
アドレス識別子をアドレスリソースプールから予約されたアドレス識別子に変更するステップ、
前記メディアストリームのアドレス識別子が前記予約されたアドレス識別子に変更されるようにセッション記述を変更するステップ、および
前記セッション記述をメッセージで前記受信側に送信するステップ
を有するステップと
を含むステップと
を備えたことを特徴とする送信側から受信側にメディアストリームを送信するメディアセッションを確立する方法。
【請求項９】
前記少なくとも１つのポートが予約されていない場合、前記セッションを終了させるステップをさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１０】
前記一時記憶装置に格納されている予約を解除するステップをさらに備えたことを特徴とする請求項９に記載の方法。
【請求項１１】
前記メディアパスを予約するよう前記メディアリレーに指示するステップは、前記メディアパスを予約するようメディアコンフィグレータに指示するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記メディアセッションのイベントメッセージ（ＥＭ）セッションコンテキストを形成するステップをさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１３】
前記ＥＭセッションコンテキストをプロキシエンジンに送信するステップをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記セッション記述の送信に応答してセッション確認済みメッセージを受信するステップと、
前記メディアストリームが前記境界空間を横切る場合、
前記メディアパスを開くよう前記メディアリレーに指示するステップと、
前記メディアパスを介して前記送信側から前記受信側にメディアを送信するステップと
を含むステップと
をさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１５】
前記メディアセッションのイベントメッセージコンテキストを取得するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記メディアパスを開くよう前記メディアリレーに指示するステップは、前記メディアパスを開くようメディアコンフィグレータに指示するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記メディアリレーが前記メディアパスを開かない場合、前記メディアセッションを終了するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記メディアパスを開くよう前記メディアリレーに指示するステップは、少なくとも１つのポートを開くステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記セッションを終了するステップをさらに備えたことを特徴とする請求項１４に記載の方法。
【請求項２０】
前記メディアセッションを終了するステップは、前記メディアパスを閉じるよう前記メディアリレーに指示するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記メディアパスを閉じるよう前記メディアリレーに指示するステップは、
前記メディアパスのアドレスパラメータを取得するステップと、
どのメディアコンフィグレータが前記メディアリレーを制御しているかを判定するステップと、
前記メディアパスの前記アドレスパラメータを有し、前記メディアパスを閉じるよう前記メディアリレーに指示する要求を前記メディアコンフィグレータに送信するステップと、
を有することを特徴とする請求項２０に記載の方法。
【請求項２２】
前記メディアセッションを終了するステップは、前記メディアセッションが終了した後セッション終了メッセージをプロキシエンジンに送信するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２３】
送信側から受信側にメディアストリームを送信するメディアセッションを確立するシステムであって、
ネットワーク境界装置と通信するメディアリレーであって、ネットワーク境界においてメディアパスを開閉するメディアリレーと、
前記メディアリレーと通信するメディアコンフィグレータであって、前記メディアリレーに送信する要求をメディアコンフィグレータ制御モジュールから受信し、前記メディアリレーがサポートする前記制御プロトコルに固有のフォーマットに前記要求を変換し、前記要求を前記メディアリレーに送信し、動的開口部を作成せよという要求を前記ネットワーク境界装置に送信し、前記メディアリレーから応答を受信し、前記コンフィグレータがサポートする前記制御プロトコルに固有の前記フォーマットから前記メディアコンフィグレータ制御要素が認識する前記フォーマットに前記応答を変換し、変換された応答を前記メディアコンフィグレータ制御モジュールに転送するように構成されているメディアコンフィグレータと
を備えたことを特徴とするシステム。
【請求項２４】
前記メディアコンフィグレータ制御モジュールは、前記メディアコンフィグレータおよびプロキシエンジンと通信することを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記メディアコンフィグレータ制御モジュールは、
プロキシエンジンから受信されたマルチメディアセッションイベントを扱うように構成されたイベントハンドラと、
前記イベントハンドラと通信するローカルアドレスリゾルバであって、アドレス識別子がプライベートアドレス空間に属しているか否かを判定し、アドレス識別子がプライベートアドレス空間に属している場合、一端を前記アドレス識別子とするメディアパスを確立するために使用されるものとして制御要素および制御グループのうちの少なくとも一方を判定するように構成されているローカルアドレスリゾルバと、
前記ローカルアドレスリゾルバと通信する少なくとも１つの制御要素であって、メディアリレーのリソースを管理する少なくとも１つの制御要素と
を含むことを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記少なくとも１つの制御要素は、制御グループおよび少なくとももう１つの制御要素を有することを特徴とする請求項２５に記載のシステム。
【請求項２７】
定義された期間より長い間、状態の一貫性検査が行われていない制御要素を探索するように構成されており、
前記定義された期間より長い間、前記状態の一貫性検査が行われていない制御要素ごとに、
前記制御要素のロックを行い、
前記制御要素が管理する前記メディアリレーによって確立されたすべてのアドレスマッピングについてのデータを取得し、
前記制御要素が管理する前記メディアリレーおよび前記制御要素が前記確立されているアドレスマッピングについて同じ情報を有しているか否かを判定し、
前記制御要素が管理する前記メディアリレーによって確立された前記マッピングと、前記制御要素によってマップされた前記マッピングの情報との間に矛盾が見つかったときは、
前記制御要素によってマップされたが、前記メディアリレーの前記現在のマッピングにはないマッピングに関連するポートを解除し、
前記メディアリレーにはあるが、前記制御要素のマッピングにはないマッピングを条件付きで予約し、
前記制御要素をロック解除する前記状態の一貫性検査を開始するように構成されている状態リフレッシュタイマをさらに備えたことを特徴とする請求項２５に記載のシステム。
【請求項２８】
メディアコンフィグレータをイニシャライズし、前記メディアリレーのネットワーク名を提供するｉｎｉｔｉａｌｉｚｅコマンドを送信するステップと、
指定されたメディアパスを予約するｒｅｓｅｒｖｅｍｅｄｉａｐａｔｈコマンドを送信するステップと、
前記指定されたメディアパスを開くｏｐｅｎｍｅｄｉａｐａｔｈコマンドを送信するステップと、
前記指定されたメディアパスを閉じるｃｌｏｓｅｍｅｄｉａｐａｔｈコマンドを送信するステップと
を備えたことを特徴とするメディアリレーを制御する方法。
【請求項２９】
前記メディアコンフィグレータによって作成されたすべてのメディアパスを閉じるｃｌｏｓｅａｌｌｍｅｄｉａｐａｔｈｓコマンドを送信するステップをさらに備えたことを特徴とする請求項２８に記載の方法、
【請求項３０】
メディアパスに関する情報を取得するｑｕｅｒｙｍｅｄｉａｐａｔｈｉｎｆｏｒｍａｔｉｏｎコマンドを送信するステップをさらに備えたことを特徴とする請求項２８に記載の方法。
【請求項３１】
メディアセッションを確立するためのコンピュータ実行可能命令を有するコンピュータ読取可能な媒体であって、前記コンピュータ実行可能命令は、
前記メディアがネットワーク境界を横切る場合、少なくとも１つのポートを含むメディアパスを予約するようメディアリレーに指示するステップと、
前記メディアセッションのアドレス識別子を予約されたアドレス識別子に変更するステップと、
前記メディアセッションの変更されたセッション記述を、前記予約されたアドレス識別子とともに、前記メディアセッションの受信側に送信するステップと
を実行することを特徴とするコンピュータ読取可能な媒体。
【請求項３２】
セッション確認済みメッセージの受信に応答して前記メディアパスを開くよう前記メディアリレーに指示するステップと、
前記メディアパスを介して前記メディアセッションの前記受信側にメディアを送信するステップと
を実行するコンピュータ読取可能命令をさらに有することを特徴とする請求項３１に記載のコンピュータ読取可能な媒体。
【請求項３３】
前記メディアセッションを終了するステップを実行するコンピュータ読取可能命令をさらに有することを特徴とする請求項３２に記載のコンピュータ読取可能な媒体。
【請求項３４】
前記メディアセッションを終了するステップは、前記メディアパスを閉じるよう前記メディアリレーに指示するステップを含むことを特徴とする請求項３３に記載のコンピュータ読取可能な媒体。
【請求項３５】
前記メディアパスを閉じるよう前記メディアリレーに指示するステップは、前記メディアパスを閉じるようメディアコンフィグレータに指示するステップを有することを特徴とする請求項３４に記載のコンピュータ読取可能な媒体。
【請求項３６】
どのメディアリレーを使用すべきかを判定するステップと、
前記少なくとも１つのポートが予約されている場合、前記少なくとも１つのポートの予約を一時記憶装置に格納するステップと
を実行するコンピュータ読取可能命令をさらに有することを特徴とする請求項３１に記載のコンピュータ読取可能な媒体。
【請求項３７】
前記メディアパスを開くよう前記メディアリレーに指示するステップは、前記メディアパスを開くようメディアコンフィグレータに指示するステップを含むことを特徴とする請求項３１に記載のコンピュータ読取可能な媒体。
【請求項３８】
ｉｎｉｔｉａｌｉｚｅコマンドの受信に応答して前記メディアリレーのネットワーク名を提供するステップと、
ｒｅｓｅｒｖｅｍｅｄｉａｐａｔｈコマンドの受信に応答して指定されたメディアパスを予約するよう前記メディアリレーに指示するステップと、
ｏｐｅｎｍｅｄｉａｐａｔｈコマンドの受信に応答して前記指定されたメディアを開くよう前記メディアリレーに指示するステップと、
ｃｌｏｓｅｍｅｄｉａｐａｔｈコマンドの受信に応答して前記指定されたメディアパスを閉じるよう前記メディアリレーに指示するステップと
を備えたことを特徴とするメディアリレーを制御する方法。
【請求項３９】
ｃｌｏｓｅａｌｌｍｅｄｉａｐａｔｈｓコマンドの受信に応答してメディアコンフィグレータによって作成されたすべてのメディアパスを閉じるよう前記メディアリレーに指示するステップをさらに備えたことを特徴とする請求項３８に記載の方法。
【請求項４０】
ｑｕｅｒｙｍｅｄｉａｐａｔｈｉｎｆｏｒｍａｔｉｏｎコマンドの受信に応答してメディアパスについての情報を提供するステップをさらに備えたことを特徴とする請求項３８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に電子データ処理に関し、より詳細にはネットワーク境界を横切るストリーミングデータのフローの管理に関する。
【背景技術】
【０００２】
デジタル装置で表示するデジタル形式のビデオおよびオーディオを組合せたマルチメディアは、急速にその容量が増加し、普及が進んでいる。今日製造されているほぼすべての新しいパーソナルコンピュータは、何らかの形式のマルチメディアを含んでいる。カメラ、ビデオレコーダ、電話、テレビなどのデジタル製品の販売は、着実に増加している。インターネットが着実かつ急速に成長し続けるにつれて、マルチメディアは、インターネット領域においても次第に普及しつつある。この成長とともに、こうしたコンピュータ機器のユーザによるパフォーマンスの期待が高まってきた。ユーザのこうした期待は、ハードウェアの能力だけではなく、データ自体の処理の可能性においても高まりを見せている。
【０００３】
マルチメディアアプリケーションにおいてこうした期待の高まりに応えられるように、ストリーミングとして知られる技術が開発されてきた。ストリーミングによって、データを安定した連続的な流れとして処理できるように転送することができる。これによりファイル全体を送信し終える前にデータを表示でき、または聞くことができることとなるが、これはオーディオデータやビデオデータなど、大規模のマルチメディアファイルおよびリアルタイムメディアに無くてはならない利点である。
【０００４】
一般的なストリーミングおよびメディアの送信に関する１つの問題は、ネットワーク境界をメディアが横切ることである。ネットワーク境界は、ネットワークへの望ましくない侵入を防ぐために使用される。ネットワーク境界は一般に、１つのネットワークおよび／またはインターフェースを別のネットワークで物理的に終わらせ、並びに１つのネットワークの１つの論理アドレス空間を終わらせ、および他のネットワークにおいて別の論理アドレス空間を開始するエンティティとして定義される。本技術分野において、この問題に対応し、メディアを送信するための信号（ｓｉｇｎａｌｉｎｇ）プロトコルが開発された。メディアの送信に使用する多くの信号プロトコルでは、よく知られているアドレス情報を備えた一次チャネルで信号およびセッションの開始が行われ、１つまたは複数の二次チャネルでメディア転送が開始される。二次チャネル上のアドレス情報は、固定されておらず、動的に割り当てられる。二次チャネルへのポート割当は一時的な性質を有しているため、メディアがネットワーク境界を通過できるように、ネットワーク境界を静的に構成することができない。その結果、境界の「穴」の開閉の制御を実施する必要があるのである。ポイントツーポイントセッションでは、メディアをいずれかの端部から送信することができる。両端点が位相的にネットワーク境界の異なる側に配置されている場合、両端点は、メディアを他の端点まで通過させるための解決策として個々のファイアウォールを実装することができる。
【０００５】
産業界では、この問題に対応することとなった。公衆ネットワークを介して送信されるほとんどのマルチメディアは、一般にＩＰプロトコルを使用する。ＩＰプロトコルによって送信されるマルチメディアデータは、ＩＰアドレスおよびポートをプロトコルメッセージに埋め込む。これに対する解決策の１つは、アプリケーションレベルゲートウェイ（ＡＬＧ）ファイアウォールを使用することである。ＡＬＧファイアウォールは、アプリケーションプロトコルのフローを検査し、セキュリティポリシーに準拠するメッセージのみを通過させるアプリケーション連携ファイアウォール（ａｐｐｌｉｃａｔｉｏｎ  ａｗａｒｅ  ｆｉｒｅｗａｌｌ）である。この種のファイアウォールは、アドレス情報（ＩＰアドレスやポートなど）を抽出し、変更し、または使用できるように、プロトコルの知識が必要である。特定のプロトコルについて、ＡＬＧファイアウォールにプロトコルを認識させるように設計することができる。しかし、こうしたＡＬＧファイアウォールは、アプリケーションプロトコルを解析し、理解するのに他のロジックおよび処理を必要とするため、ネットワークのネックになる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
さらに、マルチメディアセキュリティ機構が実装されるシステムでは、ＡＬＧファイアウォールが動作しないことがある。例えば、プロトコルメッセージが暗号化されており、ＡＬＧファイアウォールが必要な鍵およびアルゴリズムを所有する信頼できるエンティティではない場合、ＡＬＧファイアウォールは機能せず、経路指定、セキュリティなどを決定することができない。さらに、今日ネットワークに配置されているほとんどのファイアウォールは、マルチメディアプロトコルを認識しない。こうしたファイアウォールは、プロトコルを認識するようにアップグレードする必要があるが、これには法外な費用がかかることになる。さらに、実際のネットワーク動作環境では、一連のファイアウォールおよびＮＡＴ装置は、通常、マルチメディアストリームの横切る経路に沿って配置されている。マルチメディアが横切るのを確実にするために、各ファイアウォールは、プロトコルを認識するＡＬＧファイアウォールとする必要がある。これは、すでに配置されているファイアウォールへの新たな投資および制御変更を意味する。新しいバージョンのプロトコルは頻繁にリリースされるので、新しいバージョンのプロトコルをサポートするため、ＡＬＧを頻繁にアップグレードする必要がある。これらの制御変更および頻繁な更新によって、ファイアウォールにおけるセキュリティ侵害がもたらされ、ネットワークを攻撃にさらす可能性がある。
【課題を解決するための手段】
【０００７】
本発明は、ネットワーク境界を横切るメディアストリームのためにメディアセッションを確立するシステムおよび方法を提供する。システムは、メディアリレーを制御するメディアコンフィグレータ制御モジュール（ｍｅｄｉａ  ｃｏｎｆｉｇｕｒａｔｏｒ  ｃｏｎｔｒｏｌ  ｍｏｄｕｌｅ）を含む。メディアリレーは、（ネットワーク境界におけるポートを含む）メディアパスを予約し、メディアパスおよびポートを開き、メディアパスを閉じ、メディアパスに関する情報を提供する。メディアコンフィグレータ制御モジュールのモジュラ部分であるメディアコンフィグレータは、メディアコンフィグレータ制御モジュールおよびメディアリレーと通信するように構成されている。
【０００８】
メディアコンフィグレータ制御モジュールは、プロキシエンジンから受信したマルチメディアセッションイベントを扱うように構成されているイベントハンドラを有する。ローカルアドレスリゾルバは、イベントハンドラと通信し、メディアセッションのアドレス識別子がプライベートアドレス空間に属しているか否かを決定し、アドレス識別子がプライベートアドレス空間に属している場合は、制御要素または制御要素の制御グループを使用して、一端をそのアドレス識別子とするメディアパスを確立することを決定するように構成されている。制御要素は、イベントハンドラと通信するオブジェクトである。制御要素は、メディアリレーのリソースを管理する。
【０００９】
メディアコンフィグレータ制御モジュールはまた、状態リフレッシュタイマ（ｓｔａｔｅ  ｒｅｆｒｅｓｈ  ｔｉｍｅｒ）も有する。状態リフレッシュタイマは、定義された期間より長い期間状態の一貫性検査（ｓｔａｔｅ  ｃｏｎｓｉｓｔｅｎｃｙ  ｃｈｅｃｋ）が行われていない制御要素を探索するように構成されている。状態の一貫性検査は、メディアリレーとメディアリレーに関連する制御要素の間の状態の一貫性を維持するために使用する。検査を行う理由は、メディアリレーが、メディアコンフィグレータ制御モジュールが稼働しているのとは物理的に別個のマシン上で稼働し得るためである。状態の一貫性検査は、定義された期間より長い間状態の一貫性検査が行われていない制御要素ごとに開始される。状態の一貫性検査は、制御要素のロックを行うステップと、制御要素が管理するメディアリレーによって確立されたすべてのアドレスマッピングについてのデータを取得するステップと、制御要素によって管理されるメディアリレーおよび制御要素が確立されているアドレスマッピングについて同じ情報を有しているか否かを決定するステップとを含む。メディアリレーによって確立されたマッピングと、制御要素によってマップされたマッピングの情報との間に矛盾が見つかった場合、制御要素によってマップされたが、メディアリレーの現在のマッピングにはないマッピングに関連するすべてのポートは解除され、メディアリレーにはあるが、制御要素のマッピングにはないマッピングは、条件付きで予約される。次いで制御要素はロック解除される。
【００１０】
マルチメディアセッションイベントは、セッション開始済みメッセージ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｅｄ  ｍｅｓｓａｇｅ）、セッション確認済みメッセージ（Ｓｅｓｓｉｏｎ  Ｃｏｎｆｉｒｍｅｄ  ｍｅｓｓａｇｅ）、セッション確立済みメッセージ（Ｓｅｓｓｉｏｎ  Ｅｓｔａｂｌｉｓｈｅｄ  ｍｅｓｓａｇｅ）、セッション変更済みメッセージ（Ｓｅｓｓｉｏｎ  Ｃｈａｎｇｅｄ  ｍｅｓｓａｇｅ）、およびセッション終了済みメッセージ（Ｓｅｓｓｉｏｎ  Ｔｅｒｍｉｎａｔｅｄ  ｍｅｓｓａｇｅ）を備える。イベントハンドラは、セッション開始済みメッセージの受信に応答して、ローカルアドレスリゾルバによって、メディアストリームがプライベートアドレス空間とパブリックアドレス空間の間の境界を横切るか否かを決定し、メディアストリームが境界を横切る場合はメディアストリームのためにメディアパスを予約し、少なくとも１つのポートを含むメディアパスを予約せよとのメディアパス予約要求を、メディアコンフィグレータの少なくとも１つの制御要素によってメディアコンフィグレータに送信し、予約要求が成功した場合、予約されたポートに対してなされた予約を一時記憶装置に格納し、ストリームのために広報（ａｄｖｅｒｔｉｓｅ）されたアドレス識別子が予約されたアドレス識別子に変更されるようにセッション記述を変更し、変更されたセッション記述をプロキシエンジンに送信する。
【００１１】
イベントハンドラは、セッション確認済みメッセージの受信に応答して、メディアパスのために予約されたパブリックアドレスパラメータを取得し、メディアパス開放要求を予約されたパブリックアドレスパラメータとともにメディアコンフィグレータに送信し、メディアパス開放要求が成功した場合、メディアパスについては開かれたパスを参照するようにセッション記述を変更し、変更されたセッション記述をプロキシエンジンに送信する。
【００１２】
イベントハンドラは、セッション終了済みメッセージの受信に応答して、メディアセッションのために開かれたパスのアドレスパラメータを取得し、メディアパスを閉じよという要求をアドレスパラメータとともにメディアコンフィグレータに送信し、開かれたパスが閉じられた後でセッション終了メッセージをプロキシエンジンに送信する。
【００１３】
メディアリレーは、メディアコンフィグレータに送信されたコマンドで制御される。アプリケーションプログラミングインターフェース（ＡＰＩ）を形成するコマンドは、メディアコンフィグレータを初期化し、メディアリレーのネットワーク名を提供するｉｎｉｔｉａｌｉｚｅコマンド、指定されたメディアパスを予約するｒｅｓｅｒｖｅｍｅｄｉａｐａｔｈコマンド、指定されたメディアパスを開くｏｐｅｎｍｅｄｉａｐａｔｈコマンド、および指定されたメディアパスを閉じるｃｌｏｓｅｍｅｄｉａｐａｔｈを含む。さらに、ｃｌｏｓｅａｌｌｍｅｄｉａｐａｔｈｓコマンドを使用して、メディアコンフィグレータによって作成されたすべてのメディアパスを閉じ、ｑｕｅｒｙｍｅｄｉａｐａｔｈｉｎｆｏｒｍａｔｉｏｎコマンドを使用して、メディアパスについての情報を取得する。
【００１４】
本発明の他の機能および利点は、添付の図面を参照して進める以下の実施形態の例の詳細な説明から明らかになる。
【００１５】
特許請求の範囲には本発明の特徴を詳しく記載しているが、以下の詳細な説明を添付の図面と併せ読めば、本発明、およびその目的および利点を最もよく理解できよう。
【発明を実施するための最良の形態】
【００１６】
本発明は、オーディオデータやビデオデータなどリアルタイムマルチメディアがネットワーク境界を一方向または双方向に通過するためのシステムおよび方法を提供する。本発明のメディアリレーは、メディアが一方向または双方向に流れることができるようにメディアパスにあるファイアウォールを動的に構成し、メディアが流れるべき二次チャネルのヘッダー（ＵＤＰ／ＩＰ、ＴＣＰ／ＩＰなど）に埋め込まれているアドレス情報を変換する。メディアリレーは、ファイアウォールの代わりに、ポートおよびＩＰアドレスの範囲を管理する。メディア制御モジュールを使用して、メディアリレーと、リアルタイム通信（ＲＴＣ）サーバのサーバエンジンまたはプロキシエンジンが稼働しているサーバオペレーティングシステムとの間のインターフェースをとる。これによって、すでに配置されているファイアウォールを備えるシステムは、信号プロトコルが変更され、または新しいプロトコルが開発されると、ファイアウォールを引き続き使用することができる。一例として、サーバエンジンは、Ｍｉｃｒｏｓｏｆｔ社のＭｉｃｒｏｓｏｆｔ（登録商標）Ｒｅａｌ−Ｔｉｍｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ２００３のサーバエンジンでもよい。
【００１７】
図面を参照すると、図中同様の参照番号は同様の要素を指しており、本発明を、適切なコンピューティング環境で実施されるものとして示している。必須ではないが、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明する。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。さらに、本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施できることを当分野の技術者であれば理解できよう。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリ記憶装置に置くことができる。
【００１８】
図１は、本発明を実施できる適切なコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、動作環境１００の例に示した構成要素のいずれか１つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
【００１９】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明での使用に適したよく知られているコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００２０】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
【００２１】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含む。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。
【００２２】
コンピュータ１１０は、一般に様々なコンピュータ読取可能な媒体を含む。コンピュータ読取可能な媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、取り外し可能および固定媒体を含む。コンピュータ読取可能な媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の取り外し可能および固定媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された１つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ読取可能な媒体の範囲内に含まれるものとする。
【００２３】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、および／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２４】
コンピュータ１１０は、他の取り外し可能／固定、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図１は、固定不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４１、取り外し可能不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、取り外し可能不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他の取り外し可能／固定、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェース１４０などの固定メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００２５】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース１９５などを介して接続できるスピーカー１９７、プリンタ１９６などの他の周辺出力装置を含むこともできる。
【００２６】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク型の環境で動作することができる。リモートコンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にパーソナルコンピュータ１１０に関連して上述した多くまたはすべての要素を含むが、図１にはメモリ記憶装置１８１のみを示している。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域エリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００２７】
ＬＡＮネットワーキング環境で使用する場合、パーソナルコンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク型の環境では、パーソナルコンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリ装置１８１上に存在するものとして示している。図示したネットワーク接続は一例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００２８】
以下の説明では、特に指定のない限り、１つまたは複数のコンピュータによって実行される動作および操作の象徴を引用して本発明を説明する。したがって、コンピュータで実行されることもあるこうした動作および操作は、コンピュータの処理単位により構造化された形式のデータを表す電気信号の操作を含むことが理解されよう。この操作は、データを変換し、またはコンピュータのメモリシステムのいくつかの場所にデータを維持し、これによって当分野の技術者にはよく理解されているようにコンピュータが再構成され、そうでない場合はその動作が変更される。データを維持するデータ構造は、データの形式で定義された特定の特性を有するメモリの物理位置のことである。しかし、本発明を上記の文脈で説明するが、以下に記載する様々な動作および操作をハードウェアでも実施できることを本技術分野の技術者であれば理解できるので、これに限定されるものではない。本発明の説明にはセッション開始プロトコル（ＳＩＰ）（ＲＦＣ２８４３）を使用する。本発明では、構成要素と他の構成要素の間のメッセージ名は、ＳＩＰの名称を使用する。他のプロトコルおよびメッセージ名を使用することもできることを理解されたい。
【００２９】
次に図２を参照すると、本発明を実行するのに適した動作環境の例を示している。図２は、本発明を配置できるいくつかの方法を示している。ファイアウォール２０２、２０４、２０６、２０８は、企業２１０の境界に配置されている。メディアリレー２２０は、プロキシエンジン２２２によって制御され、メディアシンク／ソース２２８１〜２２８３を有する論理ドメイン２２４、２２６にサービスを提供する。メディアリレー２３０は、プロキシエンジン２３２によって制御され、メディアシンク／ソース２２８４〜２２８５を有する論理ドメイン２３４にサービスを提供する。メディアリレー２３６は、プロキシエンジン２３２によって制御され、メディアシンク／ソース２２８６を有する論理ドメイン２３８にサービスを提供する。１つのプロキシエンジンは、単一または複数のメディアリレーにサービスを提供でき、複数のプロキシエンジンは、単一（各プロキシエンジンに割り当てられたアドレスリソースが独立している場合）または複数のメディアリレーを制御できることを理解されたい。また、動作環境２００は、適した動作環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではないことを理解されたい。また、動作環境２００を、動作環境２００の例に示した構成要素のいずれか１つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
【００３０】
次に図３ａおよび３ｂを参照すると、動作中、呼出要求（ｉｎｖｉｔｅ  ｒｅｑｕｅｓｔ）（すなわちユーザ（またはサービス）に送信される、送信者と受信者の間のセッションへの参加を要求する要求）がプロキシエンジン３００に送信される。発呼時には、呼出要求がクライアント３０２から送信される（矢印３２０）。プロキシエンジン３００は、メディアＩＰアドレスおよびポートを抽出して格納する。セッションが確立されたときに使用するアドレスリソースプール（すなわちメディアトラフィックの確立のための公衆のＵＰＤ／ＩＰまたはＴＣＰ／ＩＰアドレスおよびポートのプール）から公開識別子を予約する。また、プロキシエンジン３００は、呼出要求のメディアアドレス／ポートをメディアリレー３０２のパブリックアドレス／ポートに変更するようにセッション記述プロトコル（ＳＤＰ）「ブロブ」を変更する。プロキシエンジン３００は、変更された呼出要求をファイアウォール３０６を介してパブリッククライアント３０８に渡す（矢印３２２〜３２６）。クライアント３０８は、ＯＫで応答する（矢印３２８、３３０）。ファイアウォール３０６は、ＯＫをプロキシエンジン３００に転送する（矢印３３２）。プロキシエンジン３００は、メディアＩＰアドレスおよびポートをＯＫメッセージから抽出し、それらを格納する。また、プロキシエンジン３００は、メディアアドレス／ポートがメディアリレー３０４のプライベートアドレス／ポートに変更されるようにＳＤＰ「ブロブ」を変更する。プロキシエンジンは、ＯＫをクライアント３０２に転送する（矢印３３４）。ＯＫを受信した後、クライアント３０２は、メディアを開始し（矢印３３６）、ＡＣＫを送信する。プロキシエンジン３００は、ＡＣＫを受信し、それが格納している情報（メディアＩＰアドレスおよびポート）とともに要求をメディアリレー３０４に送信する（矢印３３８）。メディアリレー３０４は、ＲＴＰおよびＲＴＣＰストリーミングがクライアント３０２と３０８の間を流れるようにアドレスマッピングを設定する。ＡＣＫは、クライアント３０８に到達（矢印３４０〜３４４）し、メディアフローが双方向の場合、クライアント３０８はメディアフローを開始する。メディアは、矢印３３６〜３４４上を流れる。
【００３１】
着呼時には、呼出要求がクライアント３０８から公衆ネットワーク上で送信される（矢印３５０）。呼出要求はファイアウォール３０６（例えばファイアウォールのポート５０６０）に到達する（矢印３５２）。ポート５０６０に送信されるインバウンド接続が、メディアコンフィグレータ制御モジュールが存在するプライベートアドレス空間内のＲＴＣサーバに送信されるようにファイアウォールを構成する必要があることを理解されたい。既存のファイアウォールによってこうしたマッピングを設定することができる。ファイアウォール３０６は、呼出要求をプロキシエンジンに渡す（矢印３５４）。プロキシエンジン３００は、メディアＩＰアドレスおよびポートを抽出し、それらを格納する。セッションが確立されたときに使用するアドレスリソースプールから公開識別子を予約する。また、プロキシエンジン３００は、呼出要求のメディアアドレス／ポートをメディアリレー３０２のパブリックアドレス／ポートに変更するようにセッション記述プロトコル（ＳＤＰ）「ブロブ」を変更する。プロキシエンジン３００は、変更された呼出要求をクライアント３０２に渡す（矢印３５６）。クライアント３０２は、ＯＫで応答する（矢印３５８）。プロキシエンジン３００は、メディアＩＰアドレスおよびポートをＯＫメッセージから抽出して格納する。また、プロキシエンジン３００は、メディアアドレス／ポートがメディアリレー３０４のプライベートアドレス／ポートに変更されるようにＳＤＰ「ブロブ」を変更する。プロキシエンジンは、ＯＫを、ファイアウォール３０６を介してクライアント３０８に転送する（矢印３６０〜３６４）。ＯＫを受信した後、クライアント３０８は、メディアの対応を開始し（矢印３６６）、ＡＣＫを送信する。プロキシエンジン３００は、ＡＣＫを受信し、それが格納している情報（メディアＩＰアドレスおよびポート）とともに要求をメディアリレー３０４に送信する（矢印３７０）。メディアリレー３０４は、ＲＴＰおよびＲＴＣＰストリーミングがクライアント３０２と３０８の間を流れるようにアドレスマッピングを設定する。ＡＣＫは、クライアント３０２に到達し、メディアフローが双方向の場合、クライアント３０２はメディアフローを開始する。メディアは、矢印３３６〜３６８、３７２〜３７４上を流れる。
【００３２】
次に図４を参照すると、両方のクライアントがプライベートネットワークに配置されている同様の制御フローを示している。図４では、クライアント３０２は、ファイアウォール３０６の背後にあるプライベートネットワーク４００内にあり、クライアント３０８は、ファイアウォール４０４の背後にあるプライベートネットワーク４０２内にある。ファイアウォール３０６と４０４の間は、インターネットなどの公衆ネットワーク４０６である。ネットワーク４０２は、プロキシエンジン／メディアリレー４０８を有する。メディアセッションをセットアップするための制御メッセージは、矢印４１０〜４１８を介して送信され、メディアストリームは矢印４２０〜４２８上を流れる。プロキシエンジン／メディアリレーは、呼出要求を受信し、上述したように、メディアストリームがクライアントの前にメディアリレーに流れるようにＳＤＰ「ブロブ」を変更する。
【００３３】
すでにインストールされている、また開発されつつあるファイアウォールの種類は非常に多い。こうしたファイアウォールの多くは、ルータ、クライアントなどとのインターフェースをとるためのそれ自体の固有のソフトウェアを有している。次に図５を参照すると、プロキシエンジン５００は、メディア制御モジュール５２０を介してメディアリレー５１０と通信する。メディア制御モジュール５２０は、関連のメッセージ（呼出要求など）からメディア経路指定情報を抽出し、メディアフローからＮＡＴ（ネットワークアドレス変換）マッピングを設定／開放するようメディアリレー５２０に指示し、設定されたＮＡＴマッピングについての情報をプロキシエンジン５００に伝える。
【００３４】
プロキシエンジン５００は、ベーススタック５０２およびプロキシロジック５０４を含む。ベーススタック５０２は、（ＴＣＰまたはＵＤＰトランスポートを介して）Ｗｉｎｓｏｃｋなどから受信した未処理の文字ストリームをプロトコルメッセージのストリームに変換する。例えば、ベーススタック５０２がＳＩＰベーススタックの場合は、未処理の文字ストリームをＳＩＰメッセージのストリームに変換する。プロキシロジックは、プロトコルメッセージ（ＳＩＰメッセージなど）を、トランザクションイベント、マルチメディアセッションイベント、または発呼（ｃａｌｌ）イベントを受け取るように登録している拡張モジュールに送信する。メディアリレー制御モジュール５２０は、拡張モジュールとして分類される。メディアリレー制御モジュール５２０は、すべてのマルチメディアセッションイベントの配信を受け取るようにプロキシエンジン５００に登録する。プロキシエンジン５００は、メディアリレー制御モジュールが受け取るように登録しているマルチメディアセッションイベントを検出すると、メディアリレー制御モジュールに通知し、メッセージをメディアリレー制御モジュールに渡す。メディアリレー制御モジュール５２０は、必要な情報をメッセージから抽出し、どのメディアリレー５１０と連絡を取るべきかを決定し、メッセージで指定されたパラメータに従って双方向メディアフローを可能にする準備をせよという要求、メッセージが属するセッションのための双方向メディアパスを開けという要求、メッセージが属するセッションのための双方向メディアパスを閉じよという要求、またはプロキシエンジン５００の対象となる統計を取り出せという要求のうちの１つをメディアリレー５１０に送信する。
【００３５】
管理エンティティ５０６は、拡張モジュールに管理サービスを提供する。これらの管理サービスは、モジュールのセットアップおよびシャットダウン、システム全体が開始または停止したときのモジュール構成の格納および復元、およびモジュール構成の動的変更のための機構を含む。管理エンティティの例には、管理モジュール、ＳＩＰモジュールコントローラ、コマンドラインインタプリタ、グラフィカルＵＩサポートモジュールがある。
【００３６】
次に図６を参照すると、メディアリレー制御モジュール５２０は、変換（ｔｒａｎｓｌａｔｉｏｎ）管理層５２２およびメディアコンフィグレータ５２４１〜５２４１Ｎから成る。変換管理層５２２は、プロキシエンジン５００が管理するすべてのメディアリレー５１０に割り当てられたアドレスリソースを管理する。変換管理層５２２は、いくつかの論理機能を実行する。マルチメディアセッションイベントおよび関連するプロトコルメッセージ（ＳＩＰメッセージなど）をプロキシエンジン５００から受信し、配信されたメッセージで広報されたメディアストリームに関する情報を抽出する。変換管理層５２２は、メディアセッションにおけるメディアストリームが企業ネットワークのプライベート／パブリックの境界を横切るか否かを決定する。セッションにおけるメディアストリームが企業のプライベート／パブリックの境界を横切る場合、変換管理層５２２は、どのメディアコンフィグレータがそのストリームのためのメディアパスを制御するかを決定する。変換管理層５２２は、セッションイベントを、メディアパスを予約せよ、開け、または閉じよという適切な要求に変換する。次いで変換管理層は、選択されたメディアコンフィグレータに要求を転送し、メディアコンフィグレータがストリームのためのメディアパスを開く、または閉じることができた場合、必要なアクションを実行する。メディアコンフィグレータ５２４１〜５２４Ｎは、プロキシエンジン５００とメディアリレーの間の通信を行うエンティティである。各メディアコンフィグレータは、対応するメディアリレーが理解する制御プロトコルを使用して、対応するメディアリレーと通信する。
【００３７】
上述したように、管理エンティティ５０６は、管理サービスを提供する。メディア制御モジュール５２０では、こうした管理サービスは、開始、停止、格納、復元、初期化、およびシャットダウンのコマンドを備える。状態管理層５０８は、ベーススタック５０２からプロトコルメッセージのストリームを受信し、プロトコルメッセージをイベントハンドラ５２６に送信する。例えば、ベーススタックがＳＩＰベーススタックである場合、プロトコルメッセージは、呼出要求、ＯＫメッセージ、ＡＣＫメッセージ、ＢＹＥメッセージ、およびＣＡＮＣＥＬメッセージを備えることができる。状態管理層５０８は、プロトコルメッセージをセッション開始済みメッセージ、セッション確認済みメッセージ、セッション確立済みメッセージ、セッション変更済みメッセージ、セッション終了済みメッセージに変換する。
【００３８】
イベントハンドラ５２６は、プロキシエンジン５００によって配信されたマルチメディアイベントの処理を提供する。ローカルアドレストランスレータ５２８は、所与のアドレス識別子（ＩＰアドレスまたはドメイン名）について、アドレス識別子がプライベートアドレス空間に属しているか否かを決定する。ローカルアドレストランスレータは、プライベートドメイン内のアドレスのローカルアドレスデータベース、およびメディア制御モジュール５２０によって制御されるドメインのローカルドメインデータベースを使用する。アドレス識別子がプライベートアドレス空間に属している場合、ローカルアドレストランスレータ５２８は、どの制御要素５３０または制御グループを使用してメディアパスを確立すべきかを決定する。
【００３９】
制御要素５３０は、単一のメディアリレー５１０とそれに割り当てられたすべてのリソースを表すために変換管理層５２２によって作成されるメディアリレー５１０の抽象オブジェクトである。制御要素５３０は、メディアリレーに割り当てられたアドレスリソースを完全に認識しており、メディアリレーの代わりにこうしたリソースを管理する。制御要素が有する情報は、メディアリレーの制御ＩＰアドレス、そのドメイン名、メディアリレーがサービスを提供するプライベートアドレスの範囲、メディアリレーに割り当てられたパブリックアドレス識別子の範囲（すなわちパブリックＩＰアドレスおよびポート範囲）、メディアリレーとの通信に使用する制御プロトコル、およびメディアリレーに関する他の構成情報を含む。負荷の平均化のために、制御要素は、結合して制御グループ５３２を形成する。制御グループ５３２は、プライベートアドレス識別子の同じサブセット（すなわち論理ドメイン）にサービスを提供する制御要素の集まりである。制御グループは、複数のリレーおよび／またはファイアウォールの間の高密度の論理ドメインから負荷を分散させるために作成される。
【００４０】
例えば、制御グループ５３２１は、メディアリレーと通信するためにメディアコンフィグレータ５２４１とインターフェースをとる制御要素５３０１を含む。同様に、制御グループ５３２２は、制御要素５３０２および５３０２を含み、制御グループ５３２３は、制御要素５３０４、５３０５、および５３０６を含む。プライベートアドレス範囲が処理すべきメディアリレー制御モジュールに与えられると、ローカルアドレストランスレータは、範囲ごとに制御グループ５３０をインスタンス化する。制御グループへの参照は、アドレス範囲に関連付けられ、データベースに格納される。
【００４１】
状態リフレッシュタイマ５３４は、プロキシエンジン５００によって制御されるすべてのメディアリレーと制御要素５３０の間の状態の一貫性を管理するエンティティである。状態の一貫性は、メディアリレー５１０が、プロキシエンジン５００が稼働しているマシンとは物理的に別個のマシン上で動作することがあり、それによって接続が「古くなる」可能性があるために必要である。状態リフレッシュタイマは、スケジュールされると、定義された期間より長い期間状態の一貫性検査が行われていない制御要素を探索する。次いでタイマ５３４は、制御要素ごとに状態の一貫性検査を開始する。状態の一貫性検査は、制御要素のロックを行い、制御要素が管理するメディアリレーによって設定されたすべてのアドレスマッピングについてのデータを取得し、メディアリレー５１０および制御要素５３０が、設定されているアドレスマッピングについてまったく同じ情報を有しているか否かを決定する。メディアリレーによって設定されたマッピングと、メディアリレーの制御要素によってマップされたマッピングの情報との間に矛盾が見つかった場合、タイマ５３４は、その矛盾の責任を持つことを試みる。タイマは、制御要素によってマップされたが、メディアリレーの現在のマッピングにはないマッピングに関連するポートを解除し、メディアリレーにはあるが、制御要素のマッピングにはないマッピングを条件付きで予約する。その後、タイマ５３４は制御要素をロック解除する。
【００４２】
上述したように、イベントハンドラ５２６は、プロキシエンジン５００によって配信されたマルチメディアイベントの処理を行う。配信されたメッセージは、セッション開始済みメッセージ、セッション確認済みメッセージ、セッション確立済みメッセージ、セッション変更済みメッセージ、およびセッション終了済みメッセージを含む。プロキシエンジン５００は、呼出メッセージを受信すると、セッション開始済みメッセージをイベントハンドラ５２６に送信する。次に図７を参照すると、イベントハンドラ５２６は、セッション開始済み予約ルーチンを実行する。イベントハンドラは、セッション開始済みメッセージのセッション記述が空かどうかを決定する（ステップ７００）。セッション記述が空の場合、ポートは予約されない。セッション記述が空ではない場合、イベントハンドラ５２６は、セッション記述で広報されたメディアストリームごとに、メディアストリームがプライベートアドレス空間とパブリックアドレス空間の間の境界を横切るか否かを、ローカルアドレスリゾルバ５２８によって決定する（ステップ７０２）。メディアストリームが境界を通過しない場合、ストリームのためのメディアパスはすでに開いており、次のメディアストリームが検査される。メディアストリームが境界を通過する場合、メディアストリームのためのメディアパスが予約される。これは、ストリームのためにメディアパスを予約する責任を負うメディアコンフィグレータを決定することによって行われる（ステップ７０４）。メディアパスのためにパブリックポートが予約される（ステップ７０６）。メディアパス予約要求が、適切な制御要素を介してメディアコンフィグレータに送信される（ステップ７０８）。予約要求が成功した場合、予約されたポートに対してなされた予約は、一時記憶装置に格納される（ステップ７１０）。セッション記述は、メディアストリームのために広報されたアドレス識別子が受信側に対して周知となる（ｈａｖｅ  ｍｅａｎｉｎｇ）ように変更される。予約要求が失敗した場合、セッションに対して以前なされていたすべてのメディアパス予約は解除され（ステップ７１２）、セッションを終了すべきであるとプロキシエンジンに通知される（ステップ７１４）。
【００４３】
セッションの少なくとも１つのメディアストリームがアドレス空間境界を横切る場合、ストリームのために広報されたアドレス識別子がアドレスリソースプールから予約されたものに変更されるようにセッション記述が変更される（ステップ７１６）。予約されたポートを使用して信号セッションのＥＭ（拡張モジュール）セッションコンテキストを形成し、それをプロキシエンジン５００に配信して、ＥＭコンテキストとして格納する（ステップ７１８）。変更されたメッセージは、リモートクライアントに送信される（ステップ７２０）。
【００４４】
プロキシエンジン５００は、ＯＫ応答を受信すると、セッション確認済みメッセージをイベントハンドラ５２６に送信する。次に図８を参照すると、イベントハンドラは、セッション確認済みリソース委託ルーチン（session  confirmed  resource  committal  routine）を実行する。ＥＭコンテキストがプロキシエンジンから取り出される（ステップ８００）。ＥＭコンテキストが空であるか否かが決定される（ステップ８０２）。ＥＭコンテキストが空である場合、セッション開始済み予約ルーチンが稼働する（図７参照）。ＥＭコンテキストが空でない場合、イベントハンドラ５２６は、セッション記述で広報されたメディアストリームごとに、メディアストリームがプライベートアドレス空間とパブリックアドレス空間の間の境界を横切るか否かを、ローカルアドレスリゾルバ５２８を介して決定する（ステップ８０４）。メディアストリームが境界を通過しない場合、次のメディアストリームが検査される。メディアストリームが境界を通過する場合、メディアストリームのために以前予約されていたパブリックアドレスパラメータがＥＭコンテキストから取り出される（ステップ８０６）。制御側のメディアコンフィグレータへの参照がＥＭコンテキストから取り出される（ステップ８０８）。メディアパス開放要求が、パラメータとして以前予約されていたパブリックアドレスパラメータとともにメディアコンフィグレータに送信される（すなわちキューに入れられる）（ステップ８１０）。キューイングが成功すると、次のメディアストリームが検査される。キューイングが失敗すると、セッションにおける開いたすべてのパスについて、メディアパス閉鎖要求がキューに入れられ（ステップ８１２）、セッションを終了すべきであるとプロキシエンジンに通知される（ステップ８１４）。
【００４５】
セッションにおける少なくとも１つのメディアストリームがアドレス空間の境界を横切る場合、メディアストリームについては開かれたパスを参照するようにセッション記述が変更される（ステップ８１６）。開かれたポートが信号セッションのためのＥＭコンテキストとして「格納され」、プロキシエンジン５００に配信されてＥＭコンテキストとして格納される（ステップ８１８）。変更されたメッセージはリモートクライアントに送信される（ステップ８２０）。
【００４６】
セッションが終了すると、プロキシエンジン５００は、セッション終了済みメッセージをイベントハンドラ５２６に送信する。次に図９を参照すると、イベントハンドラは、セッション終了済みルーチンを実行する。開かれたメディアパスについての情報を、プロキシエンジン５００から取り出されたＥＭコンテキストから取得する（ステップ９００）。セッションのために開かれたメディアパスごとに、メディアパスのアドレスパラメータがＥＭセッションコンテキストから取り出される（ステップ９０２）。制御側のメディアコンフィグレータへの参照も、ＥＭセッションコンテキストから取り出される（ステップ９０４）。メディアパスを閉じよという要求が制御側のメディアコンフィグレータに送信されて（ステップ９０６）、メディアパスを閉じるようメディアリレーに指示する。すべてのメディアパスが閉じられた後、セッション終了メッセージがプロキシエンジン５００に送信される（ステップ９０８）。
【００４７】
上述したように、メディアコンフィグレータ５２４ｘは、一般に制御要求をメディアリレー５１０に伝える責任を負う。一般に、ＮＡＴ制御プロトコルごとに１つのメディアコンフィグレータが存在する。メディアコンフィグレータは、ファイアウォールと通信して、動的開口部を作成する。メディアコンフィグレータは、（ＩＭｅｄｉａＣｏｎｆｒｇｕｒａｔｏｒインターフェースを介して）メディアリレーに送信する要求を（制御要素を介して）変換管理層５２２から受信し、モジュールがサポートする制御プロトコルに固有のフォーマットに要求を変換し、要求をメディアリレーに送信し、動的開口部を作成せよという要求をファイアウォールに送信し、メディアリレーから応答を受信し、コンフィグレータがサポートする制御プロトコルに固有のフォーマットから制御要素が理解するフォーマットに応答を変換し、変換された応答を変換管理層に転送する。
【００４８】
すべてのメディアコンフィグレータは、プログラミングインターフェースを実装している。プログラミングインターフェースへのコマンドには、Ｉｎｉｔｉａｌｉｚｅ、ＲｅｓｅｒｖｅＭｅｄｉａＰａｔｈ、ＯｐｅｎＭｅｄｉａＰａｔｈ、ＣｌｏｓｅＭｅｄｉａＰａｔｈ、ＣｌｏｓｅＡｌｌＭｅｄｉａＰａｔｈｓ、ＱｕｅｒｙＭｅｄｉａＰａｔｈＩｎｆｏｒｍａｔｉｏｎ、およびＳｈｕｔｄｏｗｎが含まれる。Ｉｎｉｔｉａｌｉｚｅコマンドは、メディアコンフィグレータを初期化し、メディアリレーのネットワーク名を提供する。初期化されると、メディアコンフィグレータは、そのプライベートデータ構造を作成し、初期化し、メディアリレーおよびファイアウォールにより制御チャネルを確立する。メディアパスが正常に予約されると、コマンドはＯＫを戻す。成功しない場合、エラーコードが戻される。ＲｅｓｅｒｖｅＭｅｄｉａＰａｔｈコマンドは、メディアパスを予約し、予約すべきメディアパスの完全な、または部分的な仕様を提供する。コマンドは、メディアパスが正常に予約されると、成功メッセージを戻す。成功しなかった場合、エラーコードが戻される。
【００４９】
ＯｐｅｎＭｅｄｉａＰａｔｈコマンドは、提供されたパラメータで指定されているようにメディアパスを開く。提供されたパラメータは、開くべきメディアパスの完全な仕様である。メディアコンフィグレータは、パス開放要求を（以前予約されていたマッピングをコミットするために）メディアリレーに送信し、ポートを開くためにファイアウォールに送信する。メディアパスは、前もって予約されていなければならない。コマンドは、メディアパスが正常に開かれると、成功メッセージを戻す。成功しなかった場合、エラーコードが戻される。
【００５０】
Ｃ１ｏｓｅＭｅｄｉａＰａｔｈコマンドは、メディアパスを閉じる。このメディアパスへのハンドルがこのコマンドによって提供される。メディアコンフィグレータは、メディアリレーと通信して、メディアパスのために以前確立されていたマッピングを削除し、ファイアウォールと通信して、メディアパスのために以前開かれていたパブリックポートを閉じる。コマンドは、メディアパスが正常に閉じられると、成功メッセージを戻す。成功しなかった場合、エラーコードが戻される。
【００５１】
ＣｌｏｓｅＡｌｌＭｅｄｉａＰａｔｈｓコマンドは、メディアコンフィグレータによって作成されたすべてのメディアパスを閉じる。メディアコンフィグレータは、メディアリレーと通信して、メディアコンフィグレータによって以前設定されていたすべてのマッピングを削除し、ファイアウォールと通信して、メディアコンフィグレータの代わりにファイアウォールによって開かれたすべてのパブリックポートを閉じる。
【００５２】
ＱｕｅｒｙＭｅｄｉａＰａｔｈｌｎｆｏｒｍａｔｉｏｎコマンドを使用して、メディアパスに関する情報が取得される。この情報が取り出されているメディアパスへのハンドルおよびこのメディアデータパスの長さが提供される。情報が配信されるべきメモリへのポインタも提供される。コマンドは、メディアパス情報が正常に取り出されると、成功メッセージを戻す。成功しなかった場合、エラーコードが戻される。Ｓｈｕｔｄｏｗｎコマンドは、メディアコンフィグレータを停止する。使用されていたすべてのリソースの割当が解除される。
【００５３】
リアルタイムメディアがネットワーク境界を通過するためのシステムおよび方法を提示してきたことは理解できよう。セッション開始プロトコルに関して説明してきたが、本発明は、別の信号プロトコルに適用することもできる。本発明のメディアリレーは、ファイアウォールの代わりに、ポートおよびアドレスの範囲を管理し、それによってファイアウォールの設計が簡略化される。メディアリレーとの通信に使用するメディアリレー制御モジュールによって、管理者は、どんなタイプのファイアウォールでも使用することができる。
【００５４】
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面との関連で本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアに、またその逆に実装でき、あるいは実施形態の例を、本発明の意図から逸脱することなく、構成および詳細について変更できることを本技術分野の技術者であれば理解されよう。したがって本明細書に記載した本発明は、特許請求の範囲、およびその等価の範囲内に含まれ得るすべての実施形態を企図する。
【図面の簡単な説明】
【００５５】
【図１】本発明が存在するコンピュータシステムの例を示す概略ブロック図である。
【図２】本発明が動作する環境の例を示す概略ブロック図である。
【図３ａ】本発明に従ってプライベートアドレス空間においてユーザが開始するメディアセッションを確立するステップを示す概略ブロック図である。
【図３ｂ】本発明に従ってパブリックアドレス空間においてユーザが開始するメディアセッションを確立するステップを示す概略ブロック図である。
【図４】本発明に従ってメディアセッションの複数のクライアントが異なるプライベートアドレス空間にあるときにメディアセッションを確立するステップを示す概略ブロック図である。
【図５】本発明の構成要素がリアルタイム通信サーバの構成要素とどのようにインターフェースをとるかを示すブロック図である。
【図６】本発明のメディアリレー制御モジュールを示すブロック図である。
【図７】メディアセッションを開始するためにメディアリレー制御モジュールが行うステップを示すフロー図である。
【図８】メディアセッションを開くためにメディアリレー制御モジュールが行うステップを示すフロー図である。
【図９】メディアセッションを終了するためにメディアリレー制御モジュールが行うステップを示すフロー図である。
【符号の説明】
【００５６】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  読取り専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  インターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  インターフェース
１５１  磁気ディスクドライブ
１５２  取り外し可能不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取り外し可能不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティング装置
１６２  キーボード
１７０  ネットワークインターフェースまたはアダプタ
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  広域エリアネットワーク（ＷＡＮ）
１８０  リモートコンピュータ
１８１  メモリ記憶装置
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカー
２００  動作環境
２０２  ファイアウォール
２０４  ファイアウォール
２０６  ファイアウォール
２０８  ファイアウォール
２１０  企業
２２０  メディアリレー
２２２  プロキシエンジン
２２４  論理ドメイン
２２６  論理ドメイン
２２８１  メディアシンク／ソース
２２８２  メディアシンク／ソース
２２８３  メディアシンク／ソース
２２８４  メディアシンク／ソース
２２８５  メディアシンク／ソース
２２８６  メディアシンク／ソース
２３０  メディアリレー
２３２  プロキシエンジン
２３４  論理ドメイン
２３６  メディアリレー
２３８  論理ドメイン
３００  プロキシエンジン
３０２  クライアント
３０４  メディアリレー
３０６  ファイアウォール
３０８  パブリッククライアント
４００  プライベートネットワーク
４０２  プライベートネットワーク
４０４  ファイアウォール
４０６  公衆ネットワーク
４０８  プロキシエンジン／メディアリレー
５００  プロキシエンジン
５０２  ベーススタック
５０４  プロキシロジック
５０６  管理エンティティ
５０８  状態管理層
５１０  メディアリレー
５２０  メディアリレー制御モジュール
５２２  変換管理層
５２４１〜５２４Ｎ  メディアコンフィグレータ
５２６  イベントハンドラ
５２８  ローカルアドレストランスレータ
５３０  制御要素
５３２  制御グループ
５３４  状態リフレッシュタイマ
【図１】
2004355628.tif 000003
【図２】
2004355628.tif 000004
【図３ａ】
2004355628.tif 000005
【図３ｂ】
2004355628.tif 000006
【図４】
2004355628.tif 000007
【図５】
2004355628.tif 000008
【図６】
2004355628.tif 000009
【図７】
2004355628.tif 000010
【図８】
2004355628.tif 000011
【図９】
2004355628.tif 000012