説明

通信制御装置及びプログラム、並びに、通信システム

【課題】 IPネットワークを介してメディアデータを送信する際の通信品質を向上させる。
【解決手段】 本発明は、複数の通信装置と、送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを処理して、宛先の通信装置へ向けて送出する通信制御装置とを備える通信システムに関する。そして、通信制御装置は、送信元の通信装置と宛先の通信装置との間で確立された送信セッションを管理する手段と、送信セッションごとに送信パケットを蓄積するセッションキューを1又は複数備える手段と、各送信セッションに係るシーケンス番号に従った順序により近い順序で、各セッションキューに供給された送信パケットを宛先の通信装置に向けて送出する送信制御を行う手段とを有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、通信制御装置及びプログラム、並びに、通信システムに関し、例えば、RTP(Real−time Transport Protocol)を用いて、通信装置間で音声や映像等のメディアデータを送信する際の通信制御に関する。
【背景技術】
【0002】
一般に、IP(Internet Protocol)を採用したネットワークを介して、音声通話や映像配信等のメディアデータを送信する通信システムでは、RTP(非特許文献1参照)等のリアルタイム転送向けのプロトコルを使用して、End−to−End(端末一端未間やサーバー端末間)のパケット転送を行なう。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】IETF RFC3550
【発明の概要】
【発明が解決しようとする課題】
【0004】
通常、インターネット等のIPネットワークにおけるパケット転送は、IPで規定される仕様に従って転送が行われるが、全ての区間で常に安定した通信品質が保たれることが保証されるわけではない。そのため、通常、インターネット等のIPネットワークにおけるEnd−to−Endの通信では、受信側でパケット順序が入れ替わってしまったり、重複したパケットを受信してしまったりすることがあった。
【0005】
メディアデータを受信して出力(例えば、映像の表示や音声の出力)する通信装置(例えば、パソコンやセット・トップ・ボックス等)には、本来の順序から入れ替わったパケットや、重複したパケットを受信すると、動作が安定しない(例えば、メディアデータが映像の場合は、映像が乱れる)といった症状が生じる問題があった。
【0006】
そのため、IPネットワークを介してメディアデータを送信する際の通信品質を向上させることができる通信制御装置及びプログラム、並びに、通信システムが望まれている。
【課題を解決するための手段】
【0007】
第1の本発明は、送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置において、(1)送信元の通信装置と宛先の通信装置との間で確立された、メディアデータを送信するための送信セッションを管理するセッション管理手段と、(2)上記セッション管理手段により管理された送信セッションごとに、送信パケットを蓄積するセッションキューを1又は複数備える送信パケット蓄積手段と、(3)上記セッション管理手段で管理されている各送信セッションに係るシーケンス番号に従った順序により近い順序で、上記セッションキューに供給された送信パケットを、宛先の通信装置に向けて送出する送信制御を行う送信制御手段とを有することを特徴とする。
【0008】
第2の本発明の通信制御プログラムは、(1)送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置に搭載されたコンピュータを、(2)送信元の通信装置と宛先の通信装置との間で確立された、メディアデータを送信するための送信セッションを管理するセッション管理手段と、(3)上記セッション管理手段により管理された送信セッションごとに、送信パケットを蓄積するセッションキューを1又は複数備える送信パケット蓄積手段と、(4)上記セッション管理手段で管理されている各送信セッションに係るシーケンス番号に従った順序により近い順序で、上記セッションキューに供給された送信パケットを、宛先の通信装置に向けて送出する送信制御を行う送信制御手段として機能させることを特徴とする。
【0009】
第3の本発明は、複数の通信装置と、送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置とを備える通信システムにおいて、上記通信制御装置として第1の本発明の通信制御装置を適用したことを特徴とする通信システム。
【発明の効果】
【0010】
本発明によれば、IPネットワークを介してメディアデータを送信する際の通信品質を向上させることができる。
【図面の簡単な説明】
【0011】
【図1】実施形態に係る通信システムの全体構成について示したブロック図である。
【図2】実施形態に係るトラヒック制御装置の機能的構成について示したブロック図である。
【図3】実施形態に係るセッション管理テーブルの内容例について示した説明図である。
【図4】実施形態に係るセッション識別部がIPパケットの供給を受けてセッション管理テーブルの内容を更新する処理について示したフローチャートである。
【図5】実施形態に係るセッション識別部が、定期的にセッション管理テーブルの内容を更新する処理について示したフローチャートである。
【図6】実施形態に係るRTPパケット振り分け部の処理について示したフローチャートである。
【図7】実施形態に係るセッションキュー管理部のセッションキューにRTPパケットが供給された場合の処理について示したフローチャートである。
【図8】実施形態に係るセッションキュー管理部が定期的に保持しているRTPパケットを送出する処理について示したフローチャートである。
【発明を実施するための形態】
【0012】
(A)主たる実施形態
以下、本発明による通信制御装置及びプログラム、並びに、通信システムの一実施形態を、図面を参照しながら詳述する。なお、この実施形態の通信制御装置は、トラヒック制御装置である。
【0013】
(A−1)実施形態の構成
図1は、この実施形態の通信システム1の全体構成を示すブロック図である。
【0014】
通信システム1には、サーバ20、及び2台のクライアント30(30−1、30−2)が配置されており、IPネットワークNを介して相互にIP通信可能となっている。なお、配置されるサーバ20及びクライアント30の台数は限定されないものである。
【0015】
また、クライアント30−1、30−2がIPネットワークNに接続する入口(IPネットワークNのエッジ)には、トラヒック制御装置10が配置されており、クライアント30は、トラヒック制御装置10を介してサーバ20と通信するものとする。すなわち、ここでは、サーバ20とクライアント30との間を流れるパケットは、全てトラヒック制御装置10を中継して宛先へ到達するものとする。
【0016】
ここでは、トラヒック制御装置10は、クライアント30から見てIPネットワークNの入り口(エッジ)に、トラヒック制御装置10が配置されているものとして説明するが、トラヒック制御装置10が配置される位置はこれに限定されないものである。例えば、トラヒック制御装置10は、IPネットワークN内の中継ルート上に配置するようにしても良いが、よりクライアント30に近い位置(少ないホップ数で到達することができる位置)に配置されていることが望ましい。
【0017】
サーバ20は、RTPにより、クライアント30に対して映像や音声等のメディアデータの送信を行うものであり、クライアント30は、サーバ20から送信されたデータを受信して所定の出力を行う(例えば、受信した映像データをユーザに表示出力を行う)ものである。なお、クライアント30によるメディアデータの出力方法は限定されないものである。
【0018】
すなわち、サーバ20はメディアデータが挿入されたRTPパケットをクライアント30に送信する。そして、クライアント30は、受信したRTPパケットに挿入されたメディアデータを取り出して所定の出力処理(復号処理等も含まれる)を行う。なお、RTPパケットとは、RTPプロトコルに準拠したパケット(データ単位)である。
【0019】
サーバ20については、例えば、既存のメディアデータを配信するサーバ(メディア配信サーバであって、RTPに対応したものであるもの)を適用することができるので詳細については説明を省略する。
【0020】
また、クライアント30についても、既存のメディア配信サーバ等からRTPによりメディアデータを受信することができる通信装置(例えば、パソコンやセット・トップ・ボックス等の端末)を適用することができるので詳しい説明については省略する。
【0021】
また、ここではサーバ20からそれぞれのクライアント30−1、30−2へのメディアデータ(RTPパケット)の送信は、ユニキャストにより行われるものとする。すなわち、サーバ20では、2台のクライアント30−1、30−2のそれぞれに対して別個のRTPセッションが確立しているものとする。
【0022】
次に、トラヒック制御装置10の概要について説明する。
【0023】
上述の通り、トラヒック制御装置10は、サーバ20とクライアント30との間を流れるパケットを中継するものである。トラヒック制御装置10は、サーバ20からクライアント30へ送信されたRTPパケットについて所定の通信制御処理を行い、宛先のクライアント30へ送信する。具体的には、トラヒック制御装置10は、受信したRTPパケットをセッションごとにキューイングし、セッションごとのRTPパケットの並べ替え、廃棄、送信タイミングの調整等を行う。
【0024】
トラヒック制御装置10において、RTPパケット以外のパケットの処理については限定されないものであるが、ここでは、既存のルータ等と同様に受信の都度宛先へ向けて転送するものとする。なお、トラヒック制御装置10が受信したパケットについて転送する際に、必要に応じてアドレス変換等のパケットの加工を行うようにしても良いが、ここでは説明を簡易にするため、上述のような加工はせずにそのまま転送するものとして説明する。
【0025】
次に、トラヒック制御装置10の内部構成について説明する。
【0026】
図2は、トラヒック制御装置10の内部構成について示したブロック図である。
【0027】
トラヒック制御装置10は、トラヒック制御装置10、送受信ポート11、送受信ポート12、セッション識別部13、RTPパケット振り分け部14、セッションキュー管理部15、及びセッション管理テーブル16を有している。
【0028】
トラヒック制御装置10は、例えば、CPU、ROM、RAM、EEPROM、ハードディスクなどのプログラムの実行構成、及び、他の通信装置と通信をするためのインタフェースを有する情報処理装置に、実施形態の通信制御プログラム等をインストールすることにより構築するようにしても良く、その場合でもトラヒック制御装置10の機能的構成は図2のように示すことができる。また、図2に示すトラヒック制御装置10の各構成要素について、一部又は全部をハードウェア(例えば、専用チップ)により構築するようにしても良い。
【0029】
送受信ポート11は、IPネットワークN内の上位側のネットワーク装置(例えば、ルータやレイヤ3スイッチ等)と接続するためのインタフェースである。すなわち、トラヒック制御装置10は、送受信ポート11を用いて、IPネットワークNを介してサーバ20と通信(パケットの送受信)を行う。
【0030】
送受信ポート12は、下位側(クライアント30)と接続するためのインタフェースである。図1においては、説明を簡易にするために、トラヒック制御装置10はクライアント30と直接接続するように図示しているが、トラヒック制御装置10とクライアント30との間の接続構成については限定されないものであり、他のネットワーク装置(例えば、L2スイッチ、レイヤ3スイッチ、ルータ等)を経由して接続するようにしても良い。図1においては図示を省略しているが、ここでは、トラヒック制御装置10は、送受信ポート12から他のネットワーク装置(例えば、L2スイッチ等)を経由して、クライアント30−1、30−2と接続しているものとする。
【0031】
なお、図2では、トラヒック制御装置10は、2つの送受信ポートを備えているが、トラヒック制御装置10が備えるインタフェースの種類及び数は限定されないものであり、IPネットワークNとの接続方式やクライアント30との接続方式に応じたものを備えるようにすれば良い。
【0032】
セッション管理テーブル16は、当該トラヒック制御装置10が現在中継しているRTPのセッションを管理するためのテーブルである。
【0033】
図3は、セッション管理テーブル16の内容例について示した説明図である。
【0034】
図3に示すように、セッション管理テーブル16には、RTPセッションごとに、セッション識別情報、セッション番号、及び通過カウンタの項目の情報が格納されている。なお、図3では、1行で1つのRTPセッションに関する情報を示している。
【0035】
セッション識別情報は、当該RTPセッションを識別するために必要な情報である。図3では、セッション識別情報として、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、及び宛先ポート番号の項目の情報が含まれている。
【0036】
送信元IPアドレスは、当該RTPセッションの送信元(RTPパケットの送信元)の通信装置のIPアドレスを示している。言い換えると、送信元IPアドレスは、当該RTPセッションに係るRTPパケットにおける、IPプロトコルヘッダの送信元IPアドレスである。
【0037】
宛先IPアドレスは、当該RTPセッションの宛先(RTPパケットの宛先)の通信装置のIPアドレスを示している。言い換えると、宛先IPアドレスは、当該RTPセッションに係るRTPパケットにおける、IPプロトコルヘッダの宛先IPアドレスである。
【0038】
送信元ポート番号は、当該RTPセッションに係るRTPパケットの送信元ポート番号(UDPプロトコルの送信元ポート番号)を示している。
【0039】
宛先ポート番号は、当該RTPセッションに係るRTPパケットの宛先ポート番号(UDPプロトコルの宛先ポート番号)を示している。
【0040】
ここでは、セッション識別情報には、以上のような項目の情報が含まれているものとするが、受信したRTPパケットからいずれのセッションに該当するのかが識別可能であれば、セッション識別情報に含まれる情報の組み合わせについては限定されないものである。例えば、送信元IPアドレス及び又は宛先IPアドレスだけでRTPセッションが識別可能であれば、セッション識別に最低限必要な項目の情報だけを、セッション識別情報に含めるようにしても良い。
【0041】
セッション番号は、セッション管理テーブル16において、各RTPセッションに付与される識別子である。セッション番号は、RTPセッションごとに異なる番号が付与される。セッション番号の表示形式については限定されないものであり、RTPセッションごとにユニークな内容であれば、任意の文字列や記号(例えば、アルファベット等)を用いるようにしても良い。
【0042】
通過カウンタは、当該RTPセッションについて、当該トラヒック制御装置10が中継したRTPパケットの数を数えるためのカウンタである。
【0043】
セッション管理テーブル16には、以上のような項目の情報が含まれているが、セッション管理テーブル16の内容を更新する処理については、後述する動作説明において詳述する。
【0044】
セッション識別部13は、送受信ポート11で受信したパケットのうち、RTPパケットについて抽出し、セッション管理テーブル16の内容にしたがって、そのRTPパケットがいずれのセッションに属するのか等を判定する。また、セッション識別部13は、受信したRTPパケットが、セッション管理テーブル16で管理されていないRTPセッションのいずれにも該当しない場合には、セッション管理テーブル16に新たなRTPセッションの情報を追加し、新たにセッション番号を付与する。
【0045】
セッション識別部13は、RTPパケットについては、当該RTPパケットに関する判定結果とともに、RTPパケット振り分け部14へ引き渡す。例えば、セッション識別部13は、RTPパケットを受信すると、そのRTPパケットに係るRTPセッションのセッション番号をセッション管理テーブル16から取得し、当該RTPパケットと共に、RTPパケット振り分け部14に引き渡すようにしても良い。
【0046】
RTPパケット振り分け部14は、セッション識別部13から与えられたRTPパケットについて、RTPセッションごとに振り分けて、セッションキュー管理部15に供給する。
【0047】
セッションキュー管理部15は、1又は複数のセッションキュー17を有しており、RTPセッションごとに1つのセッションキュー17が割り当てられている。すなわち、セッションキュー管理部15には、セッション管理テーブル16で管理されているRTPセッションのそれぞれに対応するセッションキュー17が存在している。そして、RTPパケット振り分け部14は、セッション識別部13から与えられたRTPパケットを、対応するRTPセッションのセッションキュー17に振り分ける。
【0048】
図2において、セッションキュー管理部15には、N個のセッションキュー17(17−1〜17−N)が生成されている様子について示している。セッションキュー管理部15では、セッション管理テーブル16で、RTPセッションの追加又は削除があった場合に、セッションキュー17の割当が変更される。
【0049】
セッションキュー17は、該当するRTPセッションのRTPパケット(RTPパケット振り分け部14で振り分けられたRTPパケット)を蓄積し、蓄積したRTPパケットについて所定の処理を行うものである。セッションキュー17は、例えば、蓄積したRTPパケットの送出、並べ替え、廃棄等を行う。セッションキュー管理部15における各セッションキュー17の処理の詳細については後述する動作説明において詳述する。
【0050】
セッションキュー管理部15上のセッションキュー17の数については、予め固定数そなえて、その中から各RTPセッションに割り当てて用いるようにしても良いし、必要な数(セッション管理テーブル16で管理されているセッション数)だけ動的に生成して割り当てるようにしても良い。各セッションキュー17については、ハードウェア的に実現(例えば、専用チップにより構築)するようにしても良いし、ソフトウェア的に実現(例えば、セッションキューごとにメモリ空間上の領域を動的に割り当てて構築)するようにしても良い。このように、セッションキュー管理部15上でセッションキュー17を実現する具体的な構成は限定されないものである。
【0051】
(A−2)実施形態の動作
次に、以上のような構成を有するこの実施形態の通信システム1におけるトラヒック制御装置10の動作を説明する。
【0052】
(A−2−1)セッション識別部の動作について
ここでは、まず、セッション識別部13の動作について説明する。
【0053】
図4は、セッション識別部13が、セッション管理テーブル16の内容を更新する処理について示したフローチャートである。
【0054】
送受信ポート11でIPパケットが受信され、セッション識別部13に供給されたものとする(S101)。
【0055】
次に、セッション識別部13は、供給されたIPパケットが、RTPパケットであるか否かを判定し(S102)、RTPパケットであると判定した場合には、後述するステップS103から動作し、そうでないと判定した場合には後述するステップS108から動作する。セッション識別部13において、当該IPパケットが、RTPパケットであるか否かを判定する方法については限定されないものであるが、例えば、ヘッダ情報等を解析して判定するようにしても良い。具体的な例としては、参考文献1(特開2006−74175号公報)の記載技術を用いて、判定するようにしても良い。
【0056】
上述のステップS102において、セッション識別部13により当該IPパケットがRTPパケットでないと判定された場合には、セッション識別部13は、当該IPパケットを、送受信ポート12に引渡し、当該IPパケットを宛先へ向けて送出させる(S108)。
【0057】
上述のステップS102において、セッション識別部13により当該IPパケットがRTPパケットであると判定された場合には、セッション識別部13は、当該IPパケットのヘッダ情報等を解析し、当該RTPパケットがいずれのRTPセッションに係るものであるのかを判定するのに必要な情報を抽出する(S103)。ここでは、セッション識別部13は、受信したRTPパケットのIPプロトコルヘッダの送信元IPアドレス、宛先IPアドレス、およびUDPプロトコルヘッダの送信元ポート番号、宛先ポート番号を抽出するものとする。
【0058】
次に、セッション識別部13は、セッション管理テーブル16で管理されているRTPセッションのうち、上述のステップS103で抽出した情報の全ての項目が一致するものを検索し(S104)、検出できた場合には後述するステップS106から動作し、検出できなかった場合には後述するステップS105の処理から動作する。
【0059】
上述のステップS104において、セッション管理テーブル16で管理されているRTPセッションから該当するものが検出できなかった場合、すなわち、セッション識別部13に供給されたRTPパケットが、まだセッション管理テーブル16で管理されていないRTPセッションに係るRTPパケットであった場合には、セッション識別部13は、セッション管理テーブル16に、当該RTPパケットに係るRTPセッションの情報(上述のステップS103で抽出した各項目に基づく情報)を、セッション管理テーブル16に追加する(S105)。セッション識別部13は、セッション管理テーブル16に新たに追加したRTPセッションのセッション識別情報として、上述のステップS103で抽出した各項目の情報を適用する。すなわち、上述のステップS103で抽出する情報は、セッション識別情報の項目と一致している必要がある。そして、セッション識別部13は、セッション管理テーブル16に新たに追加したRTPセッションの情報のうち、セッション番号については、セッション管理テーブル16上でユニークな番号(未だ使用されていない番号)を付与し、さらに、通過カウンタとして初期値(0)を設定する。
【0060】
上述のステップS105の処理が完了した場合、又は、上述のステップS104において、セッション管理テーブル16から該当するRTPセッションの情報が検出できた場合、セッション識別部13は、該当するRTPセッションの情報のうち通過カウンタの項目の値をインクリメント(+1)する(S106)。
【0061】
次に、セッション識別部13は、供給されたRTPパケットと、当該RTPパケットに係るセッション番号の情報を、RTPパケット振り分け部14へ引き渡す(S107)。
【0062】
次に、セッション識別部13が、セッション管理テーブル16のRTPセッションの情報を削除する動作について、図5を用いて説明する。
【0063】
図5に示すフローチャートは、セッション識別部13が、セッション管理テーブル16で管理されているRTPセッションの情報(各行の情報)を必要に応じて削除する処理について示している。セッション識別部13は、当該処理を定期的(例えば、30秒間隔としてもよくその長さは限定されない)に起動し(S201)、まず、セッション管理テーブル16の各RTPセッションの情報のうち、通過カウンタの値が0となっているRTPセッションを検索し、該当するRTPセッションの情報については、セッション管理テーブル16から削除すると判定する(S202)。
【0064】
そして、セッション識別部13は、上述のステップS202で、削除すると判定されたRTPセッションの情報を、セッション管理テーブル16から削除する処理を行う(S203)。なお、上述のステップS202で、セッション管理テーブル16から該当するRTPセッション(通過カウンタの値が0となっているRTPセッション)が検出されなかった場合には、ステップS203の処理は行われない。
【0065】
そして、セッション識別部13は、上述のステップS202で、削除すると判定されなかったRTPセッションの情報のそれぞれについて、通過カウンタの項目の値を全て0に更新し(S204)、処理を終了する。そして上述の通り、以降セッション識別部13では、定期的に上述のステップS201の処理から動作することになる。なお、セッション管理テーブル16から全てのRTPセッションの情報が削除されている場合には、ステップS204の処理は行われないことになる。
【0066】
次に、RTPパケット振り分け部14の動作について図6を用いて説明する。
【0067】
まず、セッション識別部13から、RTPパケット振り分け部14に、RTPパケット及び、そのRTPパケットのセッション番号が供給されたものとする(S301)。
【0068】
そして、RTPパケット振り分け部14は、供給されたセッション番号に対応するセッションキュー17に、当該RTPパケットを引き渡して(S302)処理を終了する。
【0069】
図7は、RTPパケット振り分け部14から、セッションキュー管理部15のいずれかのセッションキュー17に、RTPパケットが供給された場合のセッションキュー管理部15の動作について示したフローチャートである。
【0070】
なお、後述する図7の説明で用いる「最終シーケンス番号」は、各セッションキュー17において、最後に送出されたRTPパケットのシーケンス番号であるものとする。すなわち、セッションキュー管理部15では、各セッションキュー17について、最終シーケンス番号が管理されているものとする。なお、各RTPセッションに係る最終シーケンス番号については、セッション管理テーブル16に項目を追加して管理するようにしても良い。
【0071】
まず、RTPパケット振り分け部14から、セッションキュー管理部15のいずれかのセッションキュー17(以下、セッションキュー17−mと呼ぶものとする)に、RTPパケットが供給されたものとする(S401)。
【0072】
次に、セッションキュー管理部15では、上述のステップS401で供給されたRTPパケットのヘッダ情報からシーケンス番号が抽出され(S402)、抽出されたシーケンス番号と、セッションキュー17−mに係る最終シーケンス番号+1が比較される(S403)。ここでは、上述のステップS402で抽出された当該RTPパケットのシーケンス番号をS1、セッションキュー17−mの最終シーケンス番号をS2と表すものとする。そして、上述のステップS403の比較処理において、S1>(S2+1)と判定された場合には、後述するステップS404の処理から動作し、S1=S2+1と判定された場合には、後述するステップS407から動作し、S1<(S2+1)と判定された場合には、後述するステップS409の処理から動作する。
【0073】
上述のステップS403の比較処理の結果、S1>(S2+1)と判定された場合には、まず、セッションキュー管理部15では、セッションキュー17−mで保持しているRTPパケットの数が、所定の最大保持数に達しているか否かが確認される(S404)。そして、セッションキュー17−mで保持しているRTPパケットの数が最大保持数を超えていると判定された場合には、後述するステップS405の処理から動作し、そうでないと判定された場合には、後述するステップS406の処理から動作する。
【0074】
上述のステップS404で、セッションキュー17−mが保持しているRTPパケットの数が最大保持数を超えていると判定された場合には、セッションキュー管理部15は、セッションキュー17−mが保持しているRTPパケットの中から、シーケンス番号が最小となるRTPパケットから順に、シーケンス番号が昇順に連続しているすべてのRTPパケットを、送受信ポート12に引き渡して送信させる(S405)。さらに、セッションキュー管理部15は、セッションキュー17−mについて管理している最終シーケンス番号を、ステップS405で送信した最後のRTPパケットのシーケンス番号に更新する。
【0075】
次に、セッションキュー管理部15は、セッションキュー17−mに供給されたRTPパケットを保持させて(S406)、処理を終了する。
【0076】
上述のステップS403の比較処理の結果、S1>(S2+1)と判定された場合とは、最新に供給されたRTPパケットのシーケンス番号が、最終シーケンス番号よりも、2以上後の順序(次の順序よりもさらに後の順序)であることを示している。すなわち、上述のステップS403の比較処理の結果、S1>(S2+1)と判定された場合とは、最終シーケンス番号の次の順序のRTPパケットがトラヒック制御装置10に到達する前に、さらにその次以後の順序(最終シーケンス番号の2以上後の順序)のRTPパケットが、トラヒック制御装置10に到達していることを示している。したがって、この場合、最終シーケンス番号の2以上後の順序のRTPパケットを先に送信してしまうと、後に送信するRTPパケットの順序が入れ替わってしまうので、セッションキュー管理部15では、上述のステップS406に示すように、当該RTPパケットをセッションキュー17−mに一旦保持させて、後に最終シーケンス番号の次の順序のRTPパケット送信を待ち、その後送信することになる。
【0077】
また、上述のステップS404、S405では、セッションキュー17−mが保持しているRTPパケットが最大保持数に達している場合には、多少送信順序が入れ替わったり、間が空いたりしても保持しているRTPパケットを送信している。セッションキュー17−mに最大保持数以上のRTPパケットが保持されているということは、相当時間クライアント30側にRTPパケットが送信されていないことになる。上述の通り、クライアント30側でRTPパケットがシーケンス番号順に到達することが望ましいが、そのために、長時間クライアント30側にパケットが供給されなくなってしまうのを避ける方が良いため、上述のステップS404、S405の処理を設けている。長時間クライアント30側にパケットが供給されない場合、クライアント30で出力するメディアデータがなくなり、例えば、メディアデータが映像データであれば映像が途切れる等の問題が発生することになる。
【0078】
なお、上述のステップS404、S405の処理については、省略するようにしても良いが、その場合、長時間クライアント30側にパケットが供給されない場合がある。
【0079】
上述のステップS403の比較処理において、S1=S2+1と判定された場合には、セッションキュー管理部15は、供給されたRTPパケットを送受信ポート12に引き渡して送信させる(S407)。さらに、セッションキュー管理部15は、セッションキュー17−mについて管理している最終シーケンス番号を、ステップS407で送信したRTPパケットのシーケンス番号に更新する。
【0080】
上述のステップS403の比較処理において、S1=S2+1と判定された場合とは、最新に供給されたRTPパケットのシーケンス番号が、最終シーケンス番号の次の順序の番号であることを示している。したがって、この場合、セッションキュー管理部15は、最新に供給されたRTPパケットを送信すると、シーケンス番号の順序通りにRTPパケットを送信できることになる。
【0081】
次に、セッションキュー管理部15は、セッションキュー17−mで保持しているRTPパケットの中に、最終シーケンス番号+1のシーケンス番号のRTPパケットがあれば、以降昇順に連続するシーケンス番号を持つRTPパケットすべてを、送受信ポート12に引き渡して送信させ(S408)、処理を終了する。また、セッションキュー管理部15は、セッションキュー17−mについて管理している最終シーケンス番号を、最後に送信したRTPパケットのシーケンス番号に更新する。
【0082】
上述のステップS403の比較処理において、S1<(S2+1)と判定された場合には、セッションキュー管理部15は、供給されたRTPパケットを廃棄して(S409)処理を終了する。
【0083】
上述のステップS403の比較処理において、S1<(S2+1)と判定された場合とは、最新に供給されたRTPパケットのシーケンス番号が、最終シーケンス番号と一致する場合、又は、最終シーケンス番号よりも前の番号であることを示している。この場合、セッションキュー管理部15が最新に供給されたRTPパケットを送信すると、重複するRTPパケットを送信することになってしまったり、クライアント30側で出力には用いられない場合(例えば、クライアント30側で、既に後のシーケンス番号のデータを出力している場合)があり、上述のステップS409のように廃棄することが望ましい。
【0084】
なお、セッションキュー管理部15で、既に送信したRTPパケットのシーケンス番号を記憶しておき(例えば、直近の所定数のものだけ記憶するようにしても良い)、既に送信したシーケンス番号と重複するシーケンス番号のRTPパケットだけを廃棄し、該当しないRTPパケットについては宛先に送信するようにしても良い。これにより、セッションキュー管理部15で、重複するRTPパケットの送信を防止しつつ、中継するRTPパケットの欠損が発生する頻度を低減することができる。
【0085】
次に、セッションキュー管理部15が、定期的に各セッションキュー17により保持されているRTPパケットを送出する動作について図8を用いて説明する。
【0086】
セッションキュー管理部15は、各セッションキュー17により保持されているRTPパケットについて送出する処理を、定期的(例えば、20ms間隔としても良く長さは限定されない)に起動する(S501)。
【0087】
そして、セッションキュー管理部15は、前回定期起動動作の確認時から、各セッションキュー17で保持しているRTPパケットすべてを対象とし、シーケンス番号の小さい順に、受信した送受信ポート11と反対側の送受信ポート12から、対象とするRTPパケットを送信する。また、最終シーケンス番号を、最後に送信したRTPパケットのシーケンス番号とする(S502)。
【0088】
上述の通り、クライアント30側でRTPパケットがシーケンス番号順に到達することが望ましいが、そのために、長時間クライアント30側にパケットが供給されないことは避けた方が良い。そこで、セッションキュー管理部15では、定期起動動作の処理(上述のステップS502の処理)により、所定時間以上滞留しているRTPパケットについては、強制的に送信する処理を行っている。なお、図8のフローチャートに示す処理は、省略するようにしても良いが、その場合、長時間クライアント30側にパケットが供給されない場合がある。
【0089】
セッションキュー管理部15では、定期起動動作の処理の完了時に各セッションキュー17で保持しているRTPパケットと、その後、次の定期起動動作の処理が開始するまでに供給されたRTPパケットとを区別可能な形式で保持しているものとする。RTPパケットを区別する方式は限定されないものであるが、例えば、各セッションキュー17の中で、定期起動動作の処理の完了時に各セッションキュー17で保持しているRTPパケットを記憶する領域と、その後、次の定期起動動作の処理が開始するまでに供給されるRTPパケットを記憶する領域を別に割り当てるようにしても良い。また、例えば、セッションキュー管理部15で、定期起動動作の処理の完了時に保持している各RTPパケットのデータに、その旨を示すフラグ情報を付与しておき、その後、次の定期起動動作の処理が開始するまでに供給されたRTPパケットと区別(すなわち、新たに供給されたRTPパケットにはフラグ情報が付与されていない)するようにしても良い。
【0090】
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
【0091】
トラヒック制御装置10では、RTPセッション単位に一定期間RTPパケットを保持し、RTPパケット順序の入れ替え等の補正を行うことにより、リアルタイム性を損なわずに、シーケンス番号に従った順序により近い順序で送信している。これにより、サーバ20からクライアント30へ送信するRTPセッションによる通信の品質を向上させ、クライアント30の動作を安定させる等の効果を奏することができる。
【0092】
また、トラヒック制御装置10では、遅れて到着したRTPパケットがあった場合(セッションキュー17の最終シーケンス番号よりもシーケンス番号が前のRTPパケットが到達した場合)には、当該RTPパケットを廃棄することで、クライアント30に到着するIPパケットの順序入れ替えを少なくしている。
【0093】
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0094】
(B−1)上記の実施形態では、トラヒック制御装置10を、上述の通信制御を行う専用装置として構築する例について説明しているが、例えば、ルータ、レイヤ3スイッチ等のゲートウェイとして構築し、当該ゲートウェイに供給されるRTPパケットについて同様の通信制御を行う構成を付加するようにしても良い。
【0095】
(B−2)上記の実施形態では、トラヒック制御装置10が1台の構成として説明しているが、複数台配置するようにしても良い。例えば、サーバ20がクライアント30に対してIP電話サービスを提供する装置(IP−PBX等)である場合には、クライアント30との間では双方向に音声データが挿入されたRTPパケットが流れることになる。その場合に、サーバ20側(サーバ20により近い位置)にもトラヒック制御装置10を配置して、クライアント30から送出されるRTPパケットの通信制御(パケットの並び替え等)を行うようにしても良い。
【0096】
なお、上記の実施形態において、トラヒック制御装置10は、サーバ20とクライアント30との間の通信を中継するものとして説明したが、トラヒック制御装置10が中継する対象の通信装置の種類やその組み合わせは限定されないものである。例えば、トラヒック制御装置10を、サーバとクライアントとの間の通信だけなく、クライアント間やサーバ間の通信について用いるようにしても良い。
【0097】
(B−3)上記の実施形態では、トラヒック制御装置10において通信制御対象となっているパケットはRTPパケットであるものとして説明しているが、他のプロトコルその他のリアルタイム転送向けのプロトコルを通信制御対象とするようにしても良い。
【0098】
(B−4)上記の実施形態では、サーバ20とクライアント30との間を流れるパケットは、全てトラヒック制御装置10を中継して宛先へ到達するものとして説明したが、トラヒック制御装置10において通信制御対象となるパケット(上記の実施形態では、RTPパケット等メディアデータのパケットが該当する)だけについて、トラヒック制御装置10を中継させ、その他のパケット(例えば、呼制御等のシグナリングに係るパケット等)については、トラヒック制御装置10を中継しないようなネットワーク構成としても良い。
【0099】
(B−5)上記の実施形態では、サーバ20から各クライアント30へのメディアデータの送信はユニキャストにより行われるものとして説明したが、マルチキャストにより行うようにしても良い。その場合、セッション管理テーブル16では、宛先IPアドレス及び宛先ポート番号として、当該マルチキャストのチャンネルに係るIPアドレス及びポート番号が登録されることになる。
【符号の説明】
【0100】
1…通信システム、20…サーバ、30、30−1、30−2…クライアント、N…IPネットワーク、10…トラヒック制御装置、11…送受信ポート、12…送受信ポート、13…セッション識別部、14…RTPパケット振り分け部、15…セッションキュー管理部、16…セッション管理テーブル、17、17−1〜17−N…セッションキュー。

【特許請求の範囲】
【請求項1】
送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置において、
送信元の通信装置と宛先の通信装置との間で確立された、メディアデータを送信するための送信セッションを管理するセッション管理手段と、
上記セッション管理手段により管理された送信セッションごとに、送信パケットを蓄積するセッションキューを1又は複数備える送信パケット蓄積手段と、
上記セッション管理手段で管理されている各送信セッションに係るシーケンス番号に従った順序により近い順序で、上記セッションキューに供給された送信パケットを、宛先の通信装置に向けて送出する送信制御を行う送信制御手段と
を有することを特徴とする通信制御装置。
【請求項2】
上記セッション管理手段は、管理している送信セッションごとに、上記送信手段により最後に送信された送信パケットに係るシーケンス番号である最終シーケンス番号も管理し、
上記送信手段は、いずれかの上記セッションキューに送信パケットが供給されると、当該セッションキューに対応する送信セッションに係る最終シーケンス番号と、最新に当該セッションキューに供給された送信パケットのシーケンス番号とを比較し、その比較結果を利用して、当該セッションキューに蓄積されている送信パケットの送信制御内容を決定する
ことを特徴とする請求項1に記載の通信制御装置。
【請求項3】
上記送信手段は、いずれかの上記セッションキューに送信パケットが供給された場合に、最新に当該セッションキューに供給された送信パケットのシーケンス番号が、当該セッションキューに対応する送信セッションに係る最終シーケンス番号の次の順序の番号であった場合には、最新に供給された送信パケットを宛先の通信装置に向けて送出し、さらに、最新に送出した送信パケットからシーケンス番号が昇順に連続する送信パケットが、当該セッションキューに蓄積されている場合には、それらの送信パケットを宛先の通信装置へ向けて送出することを特徴とする請求項2に記載の通信制御装置。
【請求項4】
上記送信手段は、いずれかの上記セッションキューに送信パケットが供給された場合に、最新に当該セッションキューに供給された送信パケットのシーケンス番号が、当該セッションキューに対応する送信セッションに係る最終シーケンス番号の2以上後の順序であった場合には、最新に当該セッションキューに供給された送信パケットを、当該セッションキューに保持させておくことを特徴とする請求項2又は3に記載の通信制御装置。
【請求項5】
上記送信手段は、いずれかの上記セッションキューに送信パケットが供給された場合に、最新に当該セッションキューに供給された送信パケットのシーケンス番号が、当該セッションキューに対応する送信セッションに係る最終シーケンス番号と一致した場合、又は、最終シーケンス番号よりも前の順序の番号であった場合には、最新に当該セッションキューに供給された送信パケットを廃棄することを特徴とする請求項2〜4のいずれかに記載の通信制御装置。
【請求項6】
送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置に搭載されたコンピュータを、
送信元の通信装置と宛先の通信装置との間で確立された、メディアデータを送信するための送信セッションを管理するセッション管理手段と、
上記セッション管理手段により管理された送信セッションごとに、送信パケットを蓄積するセッションキューを1又は複数備える送信パケット蓄積手段と、
上記セッション管理手段で管理されている各送信セッションに係るシーケンス番号に従った順序により近い順序で、上記セッションキューに供給された送信パケットを、宛先の通信装置に向けて送出する送信制御を行う送信制御手段と
して機能させることを特徴とする通信制御プログラム。
【請求項7】
複数の通信装置と、送信元の通信装置から宛先の通信装置へ向けて送出された、メディアデータの一部を有する送信パケットを中継する通信制御装置とを備える通信システムにおいて、
上記通信制御装置として請求項1〜5のいずれかに記載の通信制御装置を適用したことを特徴とする通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−151675(P2012−151675A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−9052(P2011−9052)
【出願日】平成23年1月19日(2011.1.19)
【出願人】(308033722)株式会社OKIネットワークス (165)
【Fターム(参考)】