図1に、本実施形態の無線通信システムの構成図を示す。無線通信システムは、データを送受信する送信ノード11、中継ノード12、および受信ノード13がバックホール14に接続されており、例えば携帯電話等の無線端末15と無線端末の通信対象16(たとえば、サーバ)間の通信データ(たとえば、通信対象16から無線端末15へのダウンロードデータ)の経路となっている。この無線通信システムにおいて、送信ノード11から受信ノード13へのバックホール14を流れるショートパケットデータの圧縮通信を行う。
図2に、ショートパケットの構造の一例として、GRE(Generic Routing Encapsulation)カプセリングされたショートパケット2101を示す。通信対象16はIPヘッダ2105及びペイロード2106から構成されるInnerパケットを送信ノード11へ送信する。IPヘッダ2105の宛先アドレスは、無線端末15のアドレスである。
非圧縮通信の場合、送信ノード11が、このInnerパケットに、Ethヘッダ2102、IPヘッダ2103、及びGREヘッダ2104から構成されるOuterヘッダを付与し、カプセリングを行う。Ethヘッダ2102の宛先アドレスは、送信ノード11が接続するルーターのMACアドレスである。IPヘッダ2103の宛先アドレスは、受信ノード13のIPアドレスである。GREヘッダ2104は、受信ノード13が、通信端末15を特定する為のGRE Key情報を持つ。以降、このショートパケットを例として説明する。
図3に、ジャンボフレームの構造の詳細を示す。ジャンボフレーム2201は標準のEthヘッダ2202、フレーム終端(FCSフィールド等)2206を持つ。また標準のIPヘッダ2203を持ち、IPヘッダ2203が示す宛先は受信ノード13宛である。ジャンボフレームのサイズは、中継ノード12と送信ノード11との間の、Path MTU(Maximum Transmission Unit)以下である。
ジャンボフレーム2201のペイロード部分に、圧縮情報領域を設ける。圧縮情報領域の各領域について説明する。
・コンテキスト・辞書領域2204
圧縮に使用するコンテキスト・辞書に関する情報を示す。この領域2204は、コンテキスト・辞書領域全体長領域2207と、Outer領域2208と、レイヤ毎の情報領域に分かれる。
コンテキスト・辞書領域全体長2207(13bit)
コンテキスト・辞書領域2204全体の長さを示し、最長2^13=8KBである。
Outer(3bit)
圧縮されたヘッダの内、Outerヘッダ部分の、レイヤの数であり、中継ノードがヘッダ解凍する際、このレイヤ数分のみ、解凍する。
図2のショートパケット2101の例では、1(GREヘッダのみ)である。
Innerヘッダ以降を解凍する無駄手順を省くための情報であり、最大2^3=8レイヤである。Outerが9レイヤ以上のパケットは無い。
第一レイヤ
ショートパケットの、一番目のレイヤの圧縮に関する情報を示し、図2のショートパケット2101の例では、GREヘッダ2104を示す。
アルゴリズム2209(4bit)
第一レイヤの圧縮に使用する、圧縮アルゴリズム名を示す。2^4=16種類の圧縮アルゴリズム名を表すことができる。
第一レイヤコンテキスト・辞書長2210(12bit)
第一レイヤコンテキスト・辞書情報のフィールド2211の長さ(byte)を示す。最長は4096byteである。
第一レイヤコンテキスト・辞書情報(可変長)2211
第一レイヤの圧縮に使用する、コンテキスト又は辞書情報を格納する。コンテキスト及び辞書情報の内容は、各圧縮アルゴリズムの標準規定に準拠する。
第二レイヤ
ショートパケットの、二番目のレイヤに関する情報を示し、図2のショートパケット2101の例では、IPヘッダ2105を示す。領域構造は第一レイヤと同様であるので、説明を省略する。
以降、同様の領域構造を、最終レイヤまで繰り返す。図2のショートパケットの2101例では、最終レイヤは第三レイヤであり、ペイロード2106である。
・ミドルフレーム領域2205
ミドルフレーム領域2205は、圧縮されたデータが格納される。圧縮データは、後述するミドルフレームという形式に、分割されて格納される。これは、中継ノード12がジャンボフレーム2201を分割して転送する処理において、ジャンボフレーム2201を解凍・再圧縮せずに分割できるように、予めこのミドルフレーム単位で分割しておく。詳細は後述する。
図4にミドルフレームの構造の詳細を示す。ミドルフレーム2301は、第一レイヤ長2302、第二レイヤ長2303、・・・、最終レイヤ長2304のデータ長領域と、圧縮後第一レイヤ2305、圧縮後第二レイヤ2306、・・・、圧縮後最終レイヤ2307の圧縮データ領域で構成される。
(1)データ長領域(2byte×N)
この領域は、下記(2)で示す、圧縮後データの長さ(レイヤ長)を格納する。長さはレイヤ毎に分けて記述し、たとえば、圧縮後第一レイヤ長=0x00FF、圧縮後第二レイヤ長=0x0FFFのように、各レイヤの長さを2byteで表現する。
(2)圧縮データ領域(可変長)
この領域は、レイヤ毎の圧縮後データを格納する。圧縮後データには、複数のショートパケットの圧縮後データが含まれる。図2のショートパケット2101の例では、圧縮後第一レイヤ(1パケット目のGREヘッダ、2パケット目のGREヘッダ、・・・)、圧縮後第二レイヤ(1パケット目のIPヘッダ、2パケット目のIPヘッダ、・・・)、圧縮後最終レイヤ(1パケット目のペイロード、2パケット目のペイロード、・・・)である。
なお、ミドルフレームのサイズは、受信ノード13と中継ノード12との間のPath MTU結果を元に、次式を満足する。
(ミドルフレーム)+(コンテキスト・辞書領域)=(分割後ジャンボフレーム)≦(受信Path MTU)
図5に、中継ノード12で分割後のジャンボフレームの構造の詳細を示す。
分割後のジャンボフレーム2401の構造は、図3のジャンボフレーム2201とほぼ同じであるが、含まれるミドルフレームは一つ(図5では、第Nミドルフレーム)である。分割後ジャンボフレーム2401のサイズは、受信ノード13と中継ノード12との間のPath MTU以下となるようにする(前述の式参照)。分割後のジャンボフレーム2401に含まれる各ミドルフレームは、共通のコンテキスト・辞書情報を使用して圧縮されるので、どのミドルフレームも、ジャンボフレーム2201中のコンテキスト・辞書情報で解凍可能である。たとえば、圧縮後の第一ミドルフレームは第一レイヤコンテキスト・辞書情報2211で解凍可能である。
図6に、送信ノードの構成を示す。送信ノード3100(図1の11)は、IP網と接続するインターフェイス(IP-IF)3101と、各種処理を実行するCPU3102と、このCPU3102のワークエリアとなるRAM3103を持つ。送信ノード3100は、IP-IF3101経由でIP網と接続している。
CPU3102は、ユーザデータパケットの送受信処理を実行するU-Plane処理部3104、受信ノード13との呼制御(回線制御)を実行するC-Plane処理部3105、パケットの圧縮処理を実行する圧縮処理部3106、フレーム組立を実行するフレーム処理部3107、受信ノード13及び中継ノード12と圧縮能力のネゴ(ネゴシエーション)処理を実行する圧縮ネゴ処理部3108、フレームを格納する各バッファを管理するバッファ管理部3109、並びに、圧縮アルゴリズムを選択するアルゴリズム選択処理部3114(図中、アルゴリズム選択部)を持つ。
RAM3103には、圧縮ネゴ処理部3108により作成される圧縮ネゴ管理テーブル3113が格納される。図7に、圧縮ネゴ結果管理テーブル3113を示す。圧縮ネゴ結果管理テーブル3113には、宛先受信ノード13のIPアドレス2502、宛先受信ノード13までの経路のPathMTU結果2503、中継ノードのPathMTU結果2504、及び宛先受信ノード13までの経路の対応圧縮アルゴリズムのリスト2505が格納されている。対応圧縮アルゴリズムのリスト2505には、図7に示すように、レイヤ毎の対応圧縮アルゴリズム情報が含まれる。圧縮アルゴリズム情報は、第一レイヤのアルゴリズム、第二レイヤのアルゴリズム、・・・という形式で、表現方式はビットマスク(16bit列)である。たとえば、1bit目が立っていれば(1ならば)LZW対応、2bit目が立っていればVJ対応等々である。また、圧縮ネゴ結果管理テーブル3113の開始行(図示略)には、予め管理者により設定された送信ノード11自身のMTUと、予め管理者により設定された送信ノード11自身の対応圧縮アルゴリズムのリストとが格納されている。
RAM3103は、C-Plane処理部3105により確立されたセッションに関するセッション情報テーブル3110を持つ。図8に、セッション情報テーブル3110を示す。セッション情報テーブル3110には、端末15の端末IPアドレス2602、端末15が収容される受信ノード13のIPアドレス2603、当該セッションを一意に特定するセッションID2604、および対応するバッファを一意に特定するバッファID2605が格納されている。
RAM3103には、確立したセッション毎に、フレーム処理部3107により作成される、組立途中のフレームを格納する、バッファ3111が設けられている。RAM3103には、各バッファ3111を管理するバッファ管理部3109により管理される、バッファ管理テーブル3112が設けられている。図9に、バッファ管理テーブル3112を示す。バッファ管理テーブル3112には、バッファID2703に対応させて、バッファ初期化時刻2704、圧縮ネゴ結果管理テーブル3113からコピーされた、当該受信ノードまでの経路のPathMTU結果2705及び中継ノードのPathMTU結果2706、各レイヤで使用する圧縮アルゴリズム2707が格納されている。また、図示を省略するが、管理者により予め設定された滞留時間上限が、バッファ管理テーブル3112またはRAM3103の所定の領域に格納されている。
RAM3103には、管理者によりあらかじめ設定された圧縮アルゴリズム優先順位を格納するアルゴリズム優先順位テーブル3115 が設けられている。図10に、アルゴリズム優先順位テーブル3115を示す。アルゴリズム優先順位テーブル3115は、圧縮アルゴリズム2803のビットマスク(16bit列)のbit毎の、優先順位2804を格納する。たとえば、図示するように、16bit目(最上位ビット)の優先順位16位、15bit目は1位のように格納する。
図11に、送信ノード3100(図1の11)による圧縮フレームの送信処理のフローチャートを示す。処理開始時、バッファ管理部3109は、バッファ管理テーブル3112をチェックし、満了しているタイマの有無を確認する(S1100)。具体的には、バッファ管理テーブル3112の各行毎のバッファ初期化時刻2704と、現時点の時刻を比較し、その差分が管理者により予め設定された滞留時間上限を超えているか否かを確認する。滞留時間上限を超えていれば、そのタイマは満了している。満了しているタイマ(満了タイマ)が存在しない場合、S1104に進む。
満了タイマが存在する場合、満了タイマに対応するバッファID2703によりバッファを特定し、フレーム処理部3107を呼び出す。フレーム処理部3107は当該バッファの内容をジャンボフレーム2201としてU-Plane処理部3104経由で、受信ノード13宛に送信する(S1101)。送信後、フレーム処理部3107は当該バッファ内容を初期化(データ消去、新たなジャンボフレーム領域・ミドルフレーム領域をバッファ内に確保)する(S1102)。
バッファ管理部3109は、バッファ管理テーブル3112の、初期化したバッファのバッファID2703に対応するバッファ初期化時刻2704を、現在時刻に初期化する(S1103)。また、バッファ管理部3109は、アルゴリズム選択処理部3114を呼び出し、各レイヤで使用する圧縮アルゴリズムを選択し、バッファ管理テーブル3112の圧縮アルゴリズム2707に格納する。圧縮アルゴリズムの選択方法は、圧縮ネゴ結果管理テーブル3113に格納されている対応圧縮アルゴリズム2505の中から、アルゴリズム優先順位テーブル3115に従って、最も高い優先順位の圧縮アルゴリズムを選択する。その後、S1100に戻る。
満了タイマが存在しない場合、U-Plane処理部3104は、パケット受信の有無を判定する(S1104)。パケット受信が無い場合、S1100に戻る。パケット受信が有る場合、受信パケット(図2のショートパケット2101のInnerパケット部分)のIPヘッダ2105の宛先IPアドレスに対応する、セッション情報テーブル3110に格納されている端末IPアドレス2602を取得する。取得した端末IPアドレス2602に対応する、セッション情報テーブル3110のセッションID2604を特定し、また受信パケットを送信すべき受信ノード13のIPアドレス2603を取得する(S1105)。
U-Plane処理部3104は、取得した受信ノードIPアドレス2603と一致する、圧縮ネゴ結果管理テーブル3113に格納されている宛先受信ノード13のIPアドレス2502に対応する、受信ノード13までの経路の対応圧縮アルゴリズムのリスト2505を取得する。対応アルゴリズムリスト2505が非圧縮のみ(0x0000・・・・)であれば(S1106)、U-Plane処理部3104は受信パケットを圧縮せずにそのまま受信ノード13に送信し(S1107)、S1100に戻る。
対応アルゴリズムが非圧縮以外であれば(S1106)、フレーム処理部3107は、受信パケットに対応するバッファが存在するかを確認する(S1108)。バッファが存在すれば、S1112へ進む。セッション確立直後の初回のパケット受信時は、バッファを作成していない。バッファが存在しなければ、バッファ3111を新規に獲得する(S1109)。フレーム処理部3107は、獲得したバッファの内容を初期化(データ消去、新たなジャンボフレーム領域・ミドルフレーム領域をバッファ内に確保)する。
バッファ管理部3109は、バッファ管理テーブル3112に、獲得した新規のバッファ3111に対応する行を追加し、バッファ初期化時刻2704に、現在時刻を設定することによりタイマを初期化する(S1110)。バッファ管理部3109は、アルゴリズム選択処理部3114を呼び出し、各レイヤで使用する圧縮アルゴリズムを選択し、バッファ管理テーブル3112の圧縮アルゴリズム2707に格納する。圧縮アルゴリズムの選択方法は、圧縮ネゴ結果管理テーブル3113の対応圧縮アルゴリズム2505の中から、アルゴリズム優先順位テーブル3115の優先度2804に従い、最も高い優先順位の圧縮アルゴリズムを選択する。
圧縮処理部3106は、圧縮前のショートパケットを用いて、圧縮コンテキストまたは辞書の初期設定を行い(S1111)、フレーム処理部3107経由でバッファ3111内のジャンボフレーム2201に格納する。コンテキスト及び辞書2204の内容は、圧縮アルゴリズム次第なので格納せずに、フレーム処理部3107は、ジャンボフレーム2201内のコンテキスト・辞書領域2204の、各レイヤアルゴリズム(たとえば、2209)及び各レイヤコンテキスト・辞書長(たとえば、2210)を格納する。
次に、圧縮処理部3106は、受信パケットを圧縮する(S1112)。圧縮処理部3106は、受信パケットを圧縮するための圧縮アルゴリズムとして、バッファ管理テーブル3112に格納されている圧縮アルゴリズム2707を使用する。
受信パケットを圧縮する際、バッファ3111に格納されているジャンボフレーム2201にミドルフレームが一つしかない(第一ミドルフレーム)場合(S1113)、圧縮アルゴリズムにおける辞書学習を許容する(S1114)。解凍処理において、各ミドルフレームは、一つのコンテキスト・辞書を共用する。もし第二ミドルフレーム以降の圧縮で、辞書の内容を書き換えてしまうと、第一ミドルフレームの圧縮時に使用した辞書とは辞書内容が変わってしまうことになるので、第一ミドルフレームの解凍が不可能になる。したがって、第二ミドルフレーム以降では、辞書の書換えを禁止する。第一ミドルフレームの圧縮の際に辞書を更新するか否かは、圧縮アルゴリズム依存する。スライド辞書方式やハフマン符号化では、圧縮対象データが入力される都度、学習してよいし、辞書サイズを制限するために、途中で学習を打ち切っても良い。辞書サイズの大きさに比例して圧縮/解凍処理が重くなるので、どこかで打ち切るのが一般的である。辞書学習した場合、フレーム処理部3107はジャンボフレーム2201内の各レイヤにおいて、コンテキスト・辞書情報(たとえば、2211)と、コンテキスト・辞書長(たとえば、2210)を更新する。またコンテキスト・辞書領域全体長2207も更新する。
フレーム処理部3107は、該当セッションに対応するバッファ3111の残量を確認し、ジャンボフレーム2101に圧縮後のショートパケット2301を格納するに十分なバッファが残っているかを確認する(S1115)。具体的には、バッファ3111の現時点のジャンボフレームサイズと、バッファ管理テーブル3112に格納されている中継ノード14までのPathMTU結果2707とを比較し、差分が圧縮後ショートパケット2301のサイズ以上か否かを確認する。現時点のジャンボフレームサイズがPathMTU結果2707より圧縮後ショートパケット2301のサイズ以上小さければ、バッファの残量は十分であり、バッファの残量が十分な場合、S1121に進む。
バッファ残量が不十分であれば、タイマ満了時の処理S1101と同様に、フレーム処理部3107は、バッファの内容をジャンボフレーム2201としてU-Plane処理部3104経由で受信ノード宛に送信する(S1116)。アルゴリズム選択処理部3114によるアルゴリズム選択も、タイマ満了時の処理と同様に行う。バッファの内容の送信後、フレーム処理部3107は、S1102と同様に、当該バッファ内容を初期化する(S1117)。また、バッファ管理部3109は、S1103と同様に、バッファ管理テーブル3112のバッファ初期化時刻情報2704を、現在時刻に初期化する(S1118)。アルゴリズム選択処理部3114によるアルゴリズム選択もタイマ満了時の処理と同様である。さらに、圧縮処理部3106は、S1111と同様に、圧縮前のショートパケットを用いて、圧縮コンテキスト・辞書の初期設定を行い、バッファ3111に格納する(S1119)。圧縮処理部3106は、初期設定したコンテキストまたは辞書を用いて、再度パケット圧縮をやり直す(S1120)。圧縮後、S1123に進む。
次に、フレーム処理部3107は、該当セッションに対応するバッファ3111の残量を確認し、ミドルフレームに圧縮後ショートパケットを格納することが可能かを確認する(S1121)。具体的には、バッファ3111の現時点のミドルフレームサイズと、ジャンボフレーム2201の、バッファ管理テーブル3112に格納されている受信ノード13までのPathMTU結果2705とを比較し、差分が圧縮後ショートパケット2301とコンテキストまたは辞書領域全体長2207の合計値以上か否かを確認する。バッファ残量が十分な場合、S1123に進む。
バッファ残量が不十分であれば、フレーム処理部3107は、ミドルフレームを分割する(S1122)。具体的には、ジャンボフレーム2201の現時点のミドルフレームを書込み禁止とし、次のミドルフレーム領域をジャンボフレーム2201内に確保する。たとえば、いまジャンボフレーム2201内に第Nミドルフレームがあれば、第N+1ミドルフレーム領域を確保する。
フレーム処理部3107は、圧縮後ショートパケットを、バッファ3111内のジャンボフレーム2201のミドルフレーム2205内に格納する(S1123)。その際、ミドルフレーム2301内の各レイヤ長領域2301、・・、2304を更新する。その後、S1100に戻る。
図12に圧縮ネゴのためのパケットフォーマットを示す。圧縮ネゴパケット4001は、標準のPath MTU 探索のICMP(Internet Control Message Protocol)パケット(IPヘッダ4002、ICMPヘッダ4003を有する)のペイロード4008に、Rビット4004、alg数4005、中継Path MTU4006、及び対応アルゴリズムリスト4007の領域を追加する。
Rビット4004は、1bitのネゴノード有無を示すフラグであり、送信ノード11は、R=0で圧縮ネゴパケットを送信する。受信ノード13は、応答パケット送信時、Rビットを立てて(R=1)応答する。送信ノード11は、R=1の応答を受信した場合、圧縮が可能と判断する。送信ノード11は、R=0の応答を受信した場合、圧縮不可と判断、alg数4005以降の領域を無視する。
alg数4005は、3bitで、対応アルゴリズムリスト4007の数を表す。alg数4005の最大は2^3=8個である。
中継Path MTU4006は、12bitで、中継ノード間のPathMTU値を表す。送信ノード11は、中継Path MTU4006を0にして、圧縮ネゴパケット4001を送信する。中継ノード12は、応答パケットの中継時、中継Path MTU4006を送信ノード11と自身(中継ノード12)の間のPath MTU値に書き換えて中継する。受信ノード13は、応答パケットの送信時、中継Path MTU4006を中継ノード12と自身(受信ノード13)の間のPath MTU値に書き換えて送信する。
対応アルゴリズムリスト4007は、2byte×N個の可変長の領域であり、ネゴするアルゴリズムのリストを表す。送信ノード11は、自身(送信ノード11)の対応するアルゴリズムのリストを付与する。リストは2byte(16bit)×レイヤ数分のビット列で表現される。受信ノード13は、通知されたアルゴリズムリストと、自身(受信ノード13)の対応するアルゴリズムの論理積を付与して、応答する。中継ノード12は、応答パケットの中継時、中継するアルゴリズムリストと、自身(中継ノード12)の対応するアルゴリズムの論理積を付与して、転送する。
図13に圧縮ネゴの初回のシーケンス図を示す。後述するが、送信ノード11と同様に、受信ノード13は圧縮ネゴ部4108及び圧縮ネゴ結果管理テーブル4110、中継ノード12は圧縮ネゴ部5108及び圧縮ネゴ結果管理テーブル5113を有する。
送信ノード11の圧縮ネゴ処理部3108は、セッション確立(S1300)後、受信ノード13にICMPパケット(Path MTU要求)4001を送信する(S1301)。送信ノード11は、ICMPパケット4001の対応アルゴリズムリスト4007に、圧縮ネゴ結果管理テーブル3113に格納されている、送信ノード11自身の対応圧縮アルゴリズムリスト2505(図13ではA)を格納する。Rビット4004は、R=0とし、中継Path MTU4006は、初回送信パケットサイズとして、自身(送信ノード11)のMTU(10KB)とする。ICMP(Datagram Too Big)を受信した場合(S1302)、標準通り、Next Hop MTU(9KB)で指定されたサイズ(9KB)でICMPパケット(Path MTU要求)を送信する(S1303)。
中継ノード12は、ICMPパケット(Path MTU要求)4001を中継する。中継ノード12の圧縮ネゴ部5108(後述)は、ICMPパケット(Path MTU要求)4001の中継時、圧縮ネゴ結果管理テーブル5113(後述)を参照し、同一の宛先(受信ノード13)のIPアドレス・送信元(送信ノード11)のIPアドレスの組合せの登録の有無を確認する(S1304)。登録が無ければ、中継するICMPパケット(Path MTU要求)4001の宛先IPアドレス・送信元IPアドレスを、圧縮ネゴ結果管理テーブル5113に格納する(S1305)。また受信したパケット4001のサイズ(9KB)を、送信ノード間PathMTUとして、圧縮ネゴ結果管理テーブル5113に格納する。このPath MTU要求パケットのサイズは、送信ノードと中継ノードとの間のPathMTUとみなせる。
中継ノード12によるICMPパケット(Path MTU要求)4001の中継に伴ってICMP(Datagram Too Big)を受信した場合(S1306)、NHMTUで示されるサイズ(4KB)でICMPパケット(Path MTU要求)を送信する(S1307)。さらに、受信ノード13からICMP(Datagram Too Big)を受信した場合(S1308)、NHMTUで示されるサイズ(2KB)でICMPパケット(Path MTU要求)を送信する(S1309)。
受信ノード13の圧縮ネゴ部4108(後述)は、ICMPパケット(Path MTU要求)4001を受信時、通知されたアルゴリズムリスト(A)と、圧縮ネゴ管理テーブル4110(後述)にある、自身(受信ノード13)の対応するアルゴリズムリスト(B)の論理積(A&B)を対応アルゴリズムリスト4007に格納し、Rビットを立てて(R=1)、応答する(S1310)。受信ノード13が圧縮アルゴリズムに非対応であれば、Rビットを立てずに(R=0)、単なるPathMTU応答となる。また受信したICMPパケット(Path MTU要求)4001のパケットサイズ(2KB)を、応答パケットの中継Path MTU領域に格納する。
中継ノード12は、PathMTU応答を中継時、Rビット内容を確認する(S1311)。Rbit=0であれば、中継ノード12は、何もせずにそのままPathMTU応答パケットを中継する。Rbit=1であれば、中継ノード12は、PathMTU応答パケット中の対応アルゴリズム(A&B)と、圧縮ネゴ結果管理テーブル5113にある、自身(中継ノード12)の対応アルゴリズム(C)の論理積を計算し、PathMTU応答パケットの対応アルゴリズムリストに計算結果(A&B&C)格納して、中継する(S1312)。またPathMTU応答パケット内の中継Path MTU(2KB)を、受信ノード間PathMTUとして、圧縮ネゴ結果管理テーブル5113に登録する(S1313)。受信ノード13の中継Path MTUは、受信ノード13と中継ノード12との間のPathMTUとみなせる。
送信ノード11は、PathMTU応答を受信時、Rビットが1であれば(S1314)、受信PMTU結果(2KB)と、中継ノードPMTU(9KB)と、PathMTU応答に格納されたアルゴリズムのリスト(A&B&C)を、圧縮ネゴ結果管理テーブル3113の受信PMTU2503と、中継PMTU2504と対応圧縮アルゴリズム2505に格納し(S1315)、ネゴを終了する。Rビット=0であれば、圧縮ネゴ結果管理テーブル3113には、受信ノード13が圧縮非対応であることを格納し、ネゴを終了する。
ネゴの結果、送信ノード11は、対応可能アルゴリズムのリスト(A&B&C)を得るので、受信ノード13及び中継ノード12が対応可能な圧縮アルゴリズムの選択が可能となる。また、受信ノード13までのPathMTU値(2KB)を得るので、このサイズでミドルフレーム2301の構成が可能になる。さらに、中継ノード12までのPathMTU値(9KB)を得るので、このサイズでジャンボフレーム2201の構成が可能になる。
中継ノード12は、受信ノード13までのPathMTU値(2KB)を得るので、ジャンボフレーム2201の受信時に、このサイズ(PathMTU値(2KB))となるよう、ミドルフレーム2301に分割して送信することが可能となる。
図14に、圧縮ネゴの再ネゴのシーケンス図を示す。受信ノード13は、対応しない圧縮アルゴリズムのフレームを受信した場合、またはフラグメントされた圧縮フレームを受信した場合(S1401)、送信ノード11宛に図12に示したフィールドを持つICMPパケット(Path MTU要求)を送信する(S1402)。このとき、Rビットは0、アルゴリズムは自身(受信ノード13)の対応するアルゴリズムのリストを格納する。送信ノード11は、初回ネゴ終了後にICMPパケット(Path MTU要求)を受信した場合、対応するセッションの圧縮ネゴ結果管理テーブル内容を破棄した上で、バッファ内容を全て非圧縮で送信した後、ネゴを再実行する(S1403)。
なお、このような再ネゴは、たとえば、中継ノード12がRebootして、圧縮ネゴ結果管理テーブル5113を初期化した場合などに必要となる。
図15に、受信ノードの構成図を示す。受信ノード4100(図1の13)は、IP網と接続するインターフェイス(IP-IF)4101と、各種処理を実行するCPU4102と、このCPU4102のワークエリアとなるRAM4103を持つ。受信ノード4100は、IP-IF4101経由でIP網と接続している。
CPU4102は、ユーザデータパケットの送受信処理を実行するU-Plane処理部4104、送信ノード11との呼制御(回線制御)を実行するC-Plane処理部4105、パケットの解凍処理を実行する解凍処理部4106、解凍したパケットの組立を実行するフレーム処理部4107、並びに、送信ノード11及び中継ノード12と圧縮能力のネゴ処理を実行する圧縮ネゴ処理部4108を持つ。
RAM4103には、解凍処理部4106が解凍したデータを格納するバッファ4109を持つ。RAM4103には、圧縮ネゴ処理部4108により使用される、圧縮ネゴ管理テーブル4110が設けられている。図16に圧縮ネゴ管理テーブル4110を示す。圧縮ネゴ管理テーブル4110には、受信ノード13自身を示すIPアドレス1601、及び、受信ノード13の持つ対応圧縮アルゴリズムのリスト1602が格納されている。
RAM4103は、C-Plane処理部4105により確立されたセッションに関する情報を格納するセッション情報テーブル4111を持つ。図17に、セッション情報テーブル4111を示す。セッション情報テーブル4111には、端末15のIPアドレス1701、当該セッションにおける送信ノード11のIPアドレス1702、及び、当該セッションを一意に特定するセッションID1703が格納されている。
図18に、受信ノード4100(図1の13)による圧縮フレーム受信処理のフローチャートを示す。U-Plane処理部4104は、パケット受信の有無を判定する(S1801)。パケット受信が無い場合、S1801に戻る。
パケット受信がある場合、受信したパケットのIPヘッダ2203に含まれる特定のプロトコルを示す情報を参照して、圧縮されたジャンボフレーム2201であるか判定する(S1802)。圧縮されたジャンボフレームでない場合、S1801へ移る。
受信したパケットが圧縮されたジャンボフレーム2201である場合、コンテキスト・辞書領域2204の各レイヤのアルゴリズムに、受信ノード4100が対応しているか判定する(S1803)。全てのアルゴリズムには対応していない場合、受信ノード4100は圧縮の再ネゴを実行するために、送信ノード11に図12に示したICMPパケット4001を送信し(S1804)、受信パケットを破棄して、S1801に戻る。S1804は、図14に示した再ネゴのS1402に相当する。
受信ノード4100が、全てのアルゴリズムに対応している場合、各ミドルフレーム2301を切り出して(S1805)、各ミドルフレーム2301の解凍処理を実行する。 各ミドルフレーム2301の切り出し(S1805)は、次のようにする。ジャンボフレーム2201のコンテキスト又は辞書領域全体長2207を元に、コンテキスト・辞書領域2204を切り出す。切り出したコンテキスト・辞書領域2204から、各レイヤのアルゴリズム(たとえば、2209)、及びコンテキスト辞書情報(たとえば、2211)を切り出す。各レイヤの切れ目は、各レイヤのコンテキスト・辞書長(たとえば、2210)から判別する。ジャンボフレーム2201のミドルフレーム領域2205から、各ミドルフレーム2301を切り出す。各ミドルフレーム2301の第一レイヤ長2302〜最終レイヤ長2304の合計が、各ミドルフレーム長であるので、ミドルフレーム領域2205の先頭から各ミドルフレーム長に対応する切れ目に応じて、各ミドルフレーム2301を切り出す。各ミドルフレーム2301から、第一レイヤ長2302〜最終レイヤ長2304を参照して、圧縮後第一レイヤ2305〜最終レイヤ2307を切り出す。
切り出したミドルフレーム2301の圧縮後第一レイヤ2305〜最終レイヤ2307を解凍する(S1806)。この解凍には、コンテキスト・辞書領域2204から切り出した、各レイヤのアルゴリズム(たとえば、2209)、及びコンテキスト・辞書情報(たとえば、2211)を使用する。
解凍したデータを第Nパケット毎に組み立てて、パケットデータを組み立てる(S1807)。S1806及びS1807をミドルフレーム領域2205の最終ミドルフレームまで繰り返し(S1808)、終了したらS1801へ戻る。
図19に、中継ノードの構成図を示す。中継ノード5100(図1の12)は、IP網と接続するインターフェイス(IP-IF)5101と、各種処理を実行するCPU5102と、このCPU5102のワークエリアとなるRAM5103を持つ。中継ノード5100は、IP-IF5101経由でIP網と接続している。
CPU5102は、ユーザデータパケットの転送処理を実行するU-Plane処理部5104、圧縮フレーム解凍処理を実行する解凍処理部5106、フレームの分割を実行するフレーム処理部5107、並びに、受信ノード及び送信ノードと圧縮能力ネゴを実行する圧縮ネゴ処理部5108を持つ。
RAM5103には、圧縮ネゴ処理部5108により作成される圧縮ネゴ管理テーブル5113が設けられている。図20に、圧縮ネゴ管理テーブル5113を示す。圧縮ネゴ結果管理テーブル5113には、受信ノード13のIPアドレス2001、受信ノード13から当該中継ノード12までの経路の受信PathMTU結果2002、送信ノード11のIPアドレス2003、及び、送信ノード11から当該中継ノード12までの送信PathMTU結果2004が格納されている。
図21に、中継ノード5100(図1の12)による圧縮フレーム中継処理のフローチャートを示す。中継ノード5100のU-Plane処理部5104は、は、パケット受信の有無を確認する(S2101)。パケット受信が無い場合、S2101に戻る。
パケット受信が有る場合、U-Plane処理部5104は、受信したパケットが圧縮されたジャンボフレーム2201か否かを、パケット中のIPヘッダ2203に含まれるコンテキスト・辞書領域有無に関する情報を暗唱して判定する(S2102)。圧縮されたジャンボフレーム2201でなければ、そのままパケット転送し(S2107)、S2101に戻る。
圧縮されたジャンボフレーム2201であれば、フレーム処理部5107は、圧縮されたジャンボフレーム2201のIPヘッダ2203に含まれる送受信IPアドレスと、圧縮ネゴ管理テーブル5113に登録済の送受信アドレス2001、2003を比較し、圧縮ネゴ管理テーブル5113の一致する行を特定し(S2103)、転送先受信ノード2001迄のPathMTU2002を取得し、IPヘッダ2203に含まれる、受信した圧縮されたジャンボフレーム2201のサイズと、取得したPathMTU2002を比較する(S2104)。
フレームサイズがPathMTU2002を超えていれば、フレーム処理部5107は、ジャンボフレームサイズがPathMTU以下となるよう、フレームを分割する(S2105)。次のようにフレームを分割する。ジャンボフレーム2201のコンテキスト又は辞書領域全体長2207を元に、コンテキスト・辞書領域2204を切り出す。切り出したコンテキスト・辞書領域2204から、各レイヤのアルゴリズム(たとえば、2209)、及びコンテキスト・辞書情報(たとえば、2211)を切り出す。各レイヤの切れ目は、各レイヤのコンテキスト・辞書長(たとえば、2210)から判別する。このとき、圧縮されたジャンボフレーム2201のレイヤ数(何レイヤ存在するか)を取得する。ジャンボフレーム2201のミドルフレーム領域2205から、各ミドルフレーム2301を切り出す。各ミドルフレーム2301の、第一レイヤ長2302〜最終レイヤ長2304の合計が、各ミドルフレーム長であるので、ミドルフレーム領域2205の先頭から各ミドルフレーム長に対応する切れ目に応じて、各ミドルフレーム2301を切り出す。
以上の処理により、コンテキスト・辞書領域2204と、各ミドルフレーム領域2205を切り出し、各ミドルフレーム2405に、コンテキスト・辞書領域2404を付与し、分割後ジャンボフレーム2401を作成する。このとき、コンテキスト・辞書領域2404とミドルフレーム2405とのサイズは、受信ノード13と中継ノード12との間のPathMTU以下とする。作成された各分割後ジャンボフレーム2401は、解凍処理部5106に渡される。
フレームサイズがPathMTU2002以下であれば(S2104)、圧縮されたジャンボフレーム2201は解凍処理部5106渡される。
解凍処理部5106は、次のように圧縮されたジャンボフレーム2201(または分割後ジャンボフレーム2401、以下、ジャンボフレーム2201を例に説明する。)の解凍処理を実行する(S2106)。ジャンボフレーム2201のコンテキスト又は辞書領域全体長2207を元に、コンテキスト・辞書領域2204を切り出す。切り出したコンテキスト・辞書領域2204の先頭から、各レイヤのアルゴリズム(たとえば、2209)、及びコンテキスト・辞書情報を切り出す(たとえば、2211)。各レイヤの切れ目は、各レイヤのコンテキスト・辞書長から判別する(たとえば、2210)。このとき、圧縮されたジャンボフレーム2201のレイヤ数(何レイヤ存在するか)を取得する。ジャンボフレーム2201のOuter領域より、Outerヘッダ部分のレイヤの数を得る。ジャンボフレーム2201のミドルフレーム領域2205から、各ミドルフレーム2301を切り出す。各ミドルフレーム2301の第一レイヤ長2302〜最終レイヤ長2304の合計が、各ミドルフレーム長であるので、ミドルフレーム領域2205の先頭から各ミドルフレーム長に対応する切れ目に応じて、各ミドルフレーム2301を切り出す。
ミドルフレーム2301の第一レイヤ長2302〜最終レイヤ長2304を参照して、切り出したミドルフレーム2301の圧縮後第一レイヤ2305〜最終レイヤ2307を切り出す。切り出した各ミドルフレーム2301の圧縮後第一レイヤ2305〜最終レイヤ2307のうち、前述のOuterヘッダ部分のレイヤの数だけ解凍する。解凍には前述の各レイヤのアルゴリズム(たとえば、2209)、及びコンテキスト・辞書情報(たとえば、2211)を使用する。
解凍されたヘッダ情報と、圧縮されたジャンボフレーム2201または分割後ジャンボフレーム2401は、U-Plane処理部5104に渡される。U-Plane処理部5104は、解凍されたヘッダ情報を元に、圧縮されたジャンボフレーム2201または分割後ジャンボフレーム2401を転送し(S2107)、S2101に戻る。
本実施形態によれば、複数のショートパケットを纏めて一つのジャンボフレームに格納し、そのジャンボフレームには圧縮のアルゴリズムやコンテキスト又は辞書などのコンテキスト情報を含み、そのジャンボフレーム内に閉じる圧縮を行うので、ジャンボフレーム内でショートパケット間の順序逆転は発生しない。またネットワーク上での欠落は、ジャンボフレームの欠落となるので、ジャンボフレーム内の特定のショートパケットだけ欠落することはない。これにより、順序保証されていないリンクを使用した通信が可能になる。また、コンテキスト同期外れが発生しないので、再同期の処理は不要となる。さらに、同期外れ中による解凍失敗も発生しなくなる。さらに、コンテキストはフレーム内に存在するので、送受信ノードがコンテキストを記憶する必要がない。
また、圧縮がフレーム内に閉じるので、辞書リセット・再学習処理はジャンボフレーム毎に実行することになり、パケット毎に実行する場合と比較して実行頻度が下がる。またコンテキスト情報はフレーム内に存在する為、中継ノードもヘッダを解凍可能となる。
また、本実施形態によれば、ヘッダ単位で圧縮するので、解凍もヘッダ単位で可能となり、ヘッダ単位で異なる圧縮アルゴリズムの選択も可能となる。これにより、ヘッダを解凍する際に、不要な部分まで解凍する必要が無くなる。さらに、副次的な効果として、ヘッダとペイロードで、それぞれ異なる圧縮アルゴリズムを使用可能となる。
さらに、本実施形態によれば、複数ノード間での、ツリー状の圧縮アソシエーション網を構築する。具体的には、通信経路上で、最下流のノードが自身の対応する圧縮アルゴリズムを上流のノードに通知する。通知された上流ノードは、通知されたアルゴリズムと自身の対応するアルゴリズムの論理積を計算し、更に上流のノードに通知する。このように圧縮能力通知を、最上流のノードまで繰り返す。これにより、送信ノードは、接続先の中継ノードおよび受信ノードの全てが対応可能な圧縮アルゴリズムを把握できるので、送信ノードは、自身が対応している圧縮アルゴリズムの中から、中継ノードおよび受信ノードが対応可能な圧縮アルゴリズムの選択が可能となる。選択可能なアルゴリズムの範囲内であれば、任意のタイミングで、パケット毎にアルゴリズムを変更できる。
他の観点で、本実施形態の効果を纏めると次のようになる。まず、バックホール区間における圧縮通信の計算資源コストを下げることができる。一般的にバックホール区間のノードでは、CPU・メモリといった計算資源は貴重であり、多大な計算資源を投入してまで、圧縮処理を実施するメリットは薄いと考えられている。本実施形態では、パケット順序逆転/パケット欠落への考慮が不要であるので、それに備えた再同期等に要する計算資源が不要である。また、同期外れによる解凍失敗と、それに伴う再送が無いので、再送のための計算資源/帯域資源を軽減できる。コンテキスト情報をジャンボフレーム内に含み、ノードがコンテキスト情報を記憶する必要がないので、使用する記憶容量を低減できる。辞書リセット/再学習処理はジャンボフレーム毎に実行するので、パケット毎実施と比較して実施頻度が下がり、リセット/再学習に必要な計算資源を軽減できる。
本実施形態の他の効果として、通信バックボーンを問わず、圧縮通信を可能とする。バックホール区間においては、L2レイヤとして様々な種類のリンクが使用されており、例えば広域Etherのような順序保証されていないリンクも広く使用されているので、圧縮通信を実行する上での阻害要因の一つである。これに対して、本実施形態では、順序保証についての考慮が不要となる為、L2レイヤの種類を問わず、圧縮通信が可能である。
本実施形態のさらに他の効果として、NATPやOpenFlow等、中継ノードがヘッダ情報を元にインテリジェンスな処理を行う技術との親和性を高める。本実施形態では、中継ノードも圧縮ヘッダを解凍可能であり、かつそのための計算資源消費量も従来に比べて低減されるので、インテリジェンスな処理の実行が容易である。