【実施例1】
【0025】
図2〜
図24を用いて、第1の実施例のパケット中継装置を説明する。以下においては、、TCP/IPパケットかつ、輻輳通知にはECNを用いるものとして説明するが、DCCP(Data Congestion Control Protocol)、SCTP(Stream Control Transmission Protocol)等の他のトランスポートプロトコルのパケット、他の輻輳通知のプロトコルであっても構わない。
【0026】
まず、
図2に本実施例のパケット中継装置の一構成例を示す。パケット中継装置2には、パケット入力用の入力回線20と、パケット出力用の出力回線30が接続されている。また、パケット中継装置2の内部には、パケットの受信処理を行うパケット受信回路21と、入力パケットに対するパケット検索部22と、パケット検索部22の経路検索部23で宛先IPアドレスから経路検索を行って判定された出力回線番号に基づきパケットをスイッチングするパケット中継処理手段26と、入力パケットに対するパケット検索部27と、パケットを読み出してパケットの送信処理を行うパケット送信回路28を備える。パケット検索部22内の経路検索部23で宛先IPアドレスから経路検索により出力回線番号を判定する検索方式は本実施例の構成では特定しないが、経路検索方式の一例は、例えば特許文献3に開示されている。
【0027】
なお、パケット検索部22とパケット検索部27は、受信側と送信側が異なる他は、フロー検出部24と帯域監視部25などに関し同様の構成となっている。本明細書において、パケット検索部と称する場合、パケット検索部22、パケット検索部27の何れか一方または両方を意味している。また、パケット受信回路21とパケット送信回路28は、パケットヘッダのECNフィールドとECEフィールドの書き換え機能を備えている。
【0028】
図2の構成において、入力回線20と出力回線30がそれぞれ1回線ずつ記載されているが、パケット中継装置2は、複数の入力回線20、複数の出力回線30を備える。パケット受信回路21とこれに接続されたパケット検索部22は、複数の入力回線20を収容することができる。また、パケット受信回路21とこれに接続されたパケット検索部22を複数備えて、それぞれが互いに異なる複数の入力回線20を収容する構成としても良い。同様にパケット送信回路28とこれに接続されたパケット検索部27は、複数の入力回線を収容することができる。また、パケット送信回路28とこれに接続されたパケット検索部27を複数備えて、それぞれが互いに異なる複数の出力回線30を収容する構成としても良い。また、パケット中継装置2には管理端末19が接続されており、レジスタを経由してパケット中継装置2の管理と各種設定を行う。
【0029】
パケット中継装置2は、パケット受信回路21に接続される入力回線20からパケットを受信する。送信端末1から送信されたパケットは入力回線20を経由してパケット受信回路21に入力される。
【0030】
図3に本実施例のパケット受信回路21の一構成例を示す。パケット受信回路21はパケット受信バッファ制御部210とパケット受信バッファ211とバッファ蓄積パケット数管理部212から構成される。パケット受信バッファ制御部210は、パケット受信バッファ211に対する読み出し制御と書き込み制御、バッファ面に対する上書きを許可する開放制御を行う。バッファ蓄積パケット数管理部212は、パケット受信パケット受信バッファ211に蓄積されているパケット数を計数して管理する。
【0031】
図4Aにパケット受信バッファ211の内部構成の一例を示す。パケット受信バッファ211は複数のバッファ面2111〜2113から構成されている。各バッファ面には、
図4Bに示すパケットのパケットヘッダ情報1000として、L2ヘッダ部102として宛先MACアドレス1020、送信元MACアドレス1021、イーサタイプ1022、VLAN(Virtual Local Area Network)ID1023、L3ヘッダ部103としてIPバージョン1030、TOS(Type of Service)1031、L4プロトコル1032、送信元IPアドレス1033、宛先IPアドレス1034、L4ヘッダ部104として送信元ポート番号1040、宛先ポート番号1041、TCPフラグ1042、そしてパケット受信回路1にて付加される内部ヘッダ101として入力回線番号1010とパケットのバイト長を示すLEN1011が書き込みされる。なお、
図4Aに示す、パケットヘッダ情報1000の構成は一例であり、本実施例の構成を限定するものではない。
【0032】
次に、
図5に示すように、TOS 1031は、ネットワークにおける転送の優先度を示すDSCP(Differentiated Services Code Point)フィールド10310と、ECNによる輻輳通知に用いられるECNフィールド10311から構成される。なお、DSCPの定義に関しては非特許文献1の第3章に、DSCPが適用されるQOSアーキテクチャのDiffservモデルに関しては非特許文献2の第2章に説明されている。ECNフィールド10311は、”01”または”10”の値のときにECNをサポート(ECN:ECN−Capable−Transport)していること、”11”のときにパケットが輻輳を経験したこと(CE:Congestion Experienced)を示す。ECNをサポートしている送信端末はECNフィールドを”01”または”10”に設定したパケットを送信し、パケット中継装置2にて輻輳が発生していると判断された場合、このフィールドはパケット中継装置2により”11”に書き換えられる。
【0033】
図6に示すように、TCPフラグ1042は、既存のフラグURG10422、ACK10423、PSH10424、RST10425、SYN10426、FIN10427に対し、ECNの拡張によりCWR10420、ECE10421が追加されている。
【0034】
図2、
図3に示した本実施例のパケット受信回路21は、入力回線20からパケットが入力されると、パケットが入力された順序に従って、パケット受信バッファ制御部210により、パケット受信バッファ211のバッファ面2111からバッファ面2113の順に、入力パケットのパケットヘッダ情報1000を書き込む。なお、バッファ蓄積パケット数管理部212にて管理するバッファ蓄積パケット数が全バッファ面数に相当するn個に達し、全てのバッファ面にn個のパケットヘッダ情報1000が書き込みされてしまうと、最初に書き込みされたバッファ面2111が開放されるまでの間、パケット受信回路21はパケットの受信を停止し、停止中に入力回線20から新たにパケットが入力した場合はこれを廃棄する。
【0035】
最初に書き込みされたバッファ面2111に書き込みされたパケットが、パケット検索部22での処理を完了してパケット中継処理手段26に出力され、そのパケットヘッダ情報1000をバッファ面2111に蓄積しておく必要がなくなると、パケット受信バッファ制御部210はバッファ面2111を開放する。そして、これ以降、入力回線20から新たにパケットが入力した場合は、パケット受信バッファ制御部210が、開放されたバッファ面2111に、当該パケットのパケットヘッダ情報1000を書き込みする。
【0036】
そして、パケット検索部22がパケットを受付可能なタイミングになると、パケット受信バッファ211に蓄積したパケットヘッダ情報1000を送信する。また、パケット検索部22での処理が完了してパケットをパケット中継処理手段26に送信するまでの間は、パケットヘッダ情報1000を一時的にパケット受信バッファ211に蓄積したままとしておく。以降、パケット中継処理手段26にパケットを新たに出力すると、その都度バッファ面2112 、バッファ面2113の順でバッファ面を開放して、開放されたバッファに対し開放された順に入力回線20から新たに入力したパケットを蓄積する。パケット検索部22は、出力回線12を識別するための出力回線番号を判定する経路検索部3と、フローを検索するフロー検索部4を備える。
【0037】
図7に、本実施例のフロー検索部24の一構成例を示す。フロー検索部24は、フロー検索テーブル41と、フロー検索テーブル41に対するテーブル書き込み、テーブル読み出し、テーブル検索起動等の各種制御を行うフロー検索テーブル制御部40とから構成される。フロー検索テーブル41は、物理的には例えばCAM(Content Addressable Memory)により構成することができる。CAMの概要については、例えば、特許文献2を参照されたい。
【0038】
図8に、本実施例のフロー検索テーブル41の一構成例を示す。フロー検索テーブル41は、複数のフロー検索エントリ410、411、・・・418より構成される。各フロー検索エントリ410〜418は、
図8に示す通り、VLANID、送信元IPアドレス、宛先IPアドレス、TOS、プロトコル、送信元ポート番号、宛先ポート番号、TCPフラグ等の各種パケットヘッダの情報から構成される。なお、
図8に示すフロー検索エントリを構成するパケットヘッダ情報項目はあくまで一例であり、本実施例の対象範囲を限定するものではない。
【0039】
図8の各フロー検索エントリ410〜418は、後述する帯域監視エントリと対応付けられており、各帯域監視エントリにより帯域監視する対象とするフローの条件を、フロー検索エントリで設定する。各フロー検索エントリの設定値は、パケット中継装置2の運用管理者が帯域監視の対象として決定した、フローの対象とするパケットヘッダの条件に応じて定まる。そして、パケット中継装置2の運用管理者がフローの対象とするパケットヘッダの条件を、管理端末19から入力することにより、この入力値がレジスタ9を経由して、フロー検索部24のフロー検索テーブル制御部40に入力され、フロー検索テーブル制御部40がフロー検索テーブル41に対し書き込み制御することにより、フロー検索テーブル41に設定される。
【0040】
以下では、パケットがTCPの応答パケットでない場合、つまり当該パケットのパケットヘッダ情報1000のTCPフラグフィールド1042のACK10423が0である場合の処理を説明する。TCPの応答パケットに対するフロー検索テーブル41の制御は後述する。
【0041】
フロー検索部24のフロー検索テーブル制御部40からフロー検索テーブル41を構成するCAMにパケットが入力して検索起動されると、CAMはフロー検索エントリのアドレスが上位の410−aにあるフロー検索エントリ410からアドレス下位の418−aにあるフロー検索エントリ418に向かって順にフロー検索エントリを検索して、パケットヘッダの情報の項目とフロー検索エントリに記載された情報の項目の全てが一致するフロー検索エントリを検索する。この際、「d.c.」と記載されたパケットヘッダ情報の項目に関しては、入力したパケットに記載された値を問わず当該のパケットヘッダ情報に一致と判定する。そして、最初に一致したフロー検索エントリのアドレスをヒットアドレスと判定して、ヒットアドレスをフロー検索テーブル制御部40に出力する。ヒットアドレスから、当該パケットはいずれのフロー検索エントリに一致し、後述するいずれの帯域監視エントリに対応付けられるフローであるか判定できる。
【0042】
図9に、本実施例の帯域監視部25の一構成例を示す。フロー検索部24からのヒットアドレスの情報は、フロー検索テーブル制御部40から帯域監視部25に出力される。
図9において、帯域監視部25は、帯域監視テーブル制御部50と、帯域監視テーブル51と、現在水量判定部52と、監視結果判定部53と、帯域監視エントリ毎輻輳状態管理部54から構成される。
【0043】
帯域監視テーブル制御部50は、帯域監視テーブル51に対する読み出し制御と書き込み制御を行う。パケット中継装置2の運用管理者が決定したフロー毎の帯域監視に関する帯域の条件は、パケット中継装置2の運用管理者が管理端末9から入力することにより、この入力値がレジスタ10を経由して帯域監視部25の帯域監視テーブル制御部50に入力され、帯域監視テーブル制御部50が帯域監視テーブル51に対し書き込み制御することにより、帯域監視テーブル51に設定される。
【0044】
図10に、本実施例の帯域監視テーブル51の一構成例を示す。帯域監視テーブル51は、フロー検索テーブル41の各フロー検索エントリに対応付けられた複数の帯域監視エントリ5101〜510nから構成される。各帯域監視エントリは、監視帯域R 510と、前回パケット到着時刻511と、バケツ水量CNT 512と、閾値THR 513、ECNマーキング閾値THRM 514から構成される。
【0045】
パケットが入力すると、帯域監視テーブル制御部50において、フロー検索部24にて判定されたヒットアドレスを帯域監視テーブル51の読み出しアドレスとして帯域監視テーブル51を読み出し、ヒットアドレスに対応付けられた帯域監視エントリを参照する。参照された帯域監視エントリに記載のR 510、TLST 511、CNT 512、THR 513、THRM 514は各々、R蓄積手段522、TLST蓄積手段523、CNT蓄積手段524、THR蓄積手段533、THRM蓄積手段534に蓄積され、帯域監視の判定に用いられる。帯域監視のアルゴリズムは、例えば、リーキーバケツアルゴリズムである。
【0046】
図11にリーキーバケツアルゴリズムの一例を示す。同図において、パケットが順次入力(1100)されているとして、このアルゴリズムに沿って説明する。まず、現在水量判定部52における演算について説明する。現在水量演算回路520では、タイマ521が示す現在時刻から、TLST蓄積手段523に蓄積されたTLSTを減算することで、経過時間Tを計算する。R蓄積手段522に蓄積されたRとTの積R×Tと、CNT蓄積手段524に蓄積されたCNTを大小比較する(1101)。その結果、R×Tの方が大きい場合は、CNTをゼロとする(1103)。その他の場合には、CNTからR×Tを減算する(1102)。以上の処理により決定されたCNTは、NOWCNT蓄積手段531に蓄積する。
【0047】
次に、帯域監視結果が遵守であるか違反であるかを判定する監視結果判定部53における演算について説明する。LEN蓄積手段532には、パケット受信回路1より送信された、パケットの内部ヘッダ101のLEN1011が蓄積される。LEN1011は、パケットのバイト長を示す値である。監視結果判定回路530では、NOWCNT蓄積手段531に蓄積されたCNTとTHR蓄積手段533に蓄積されたTHRを大小比較し(1104)、CNTの方が大きい場合には帯域違反となり、輻輳検出と判定してパケットを廃棄する(1105)。
【0048】
次に、CNTの方が小さい場合には、NOWCNT蓄積手段531に蓄積されたCNTとTHRM蓄積手段534に蓄積されたTHRMを大小比較し(1106)、CNTの方が大きい場合には帯域違反(1109)となり、輻輳検出と判定してECNマーキングを実施する(1107)。CNTの値をCNT2蓄積手段に蓄積し、タイマ521が示す現在時刻をTLST蓄積手段537に蓄積する。そして、帯域監視テーブル51の、パケットが一致したフローの帯域監視エントリのCNT512を CNT2蓄積手段538に蓄積されたCNTで書き換え、ヒットアドレスに対応付けられた帯域監視エントリのTLST511をTLST蓄積手段537に蓄積されたタイマ値で書き換える。
【0049】
上述のCNT>THRまたはCNT>THRMの条件に一致して帯域違反(1109)と判定され輻輳が検出されると、監視結果判定回路530から輻輳検出を示す情報とヒットアドレスを輻輳状態管理部54に出力する。輻輳状態管理部54は、帯域監視エントリ毎輻輳状態管理テーブル制御部540と帯域監視エントリ毎輻輳状態管理テーブル541から構成される。帯域監視エントリ毎輻輳状態管理テーブル制御部540は、帯域監視エントリ毎輻輳状態管理テーブル541に対する読み出し制御と書き込み制御を行う。
【0050】
図12に、本実施例の帯域監視エントリ毎輻輳状態管理テーブル541の一構成例を示す。帯域監視エントリ毎輻輳状態管理テーブル541は、フロー検索テーブル41の各フロー検索エントリに対応付けられた複数の帯域監視エントリ毎輻輳状態管理エントリ5411〜541nから構成される。各輻輳状態管理エントリ5411〜541nは、フロー検索エントリにより定義されたフロー毎の輻輳状態を示す輻輳状態フラグ5410から構成される。輻輳状態フラグ5410は、初期状態では輻輳状態に無いことを示す値となっている。輻輳状態管理部54は、監視結果判定回路530から輻輳検出を示す情報とヒットアドレスを入力されると、帯域監視エントリ毎輻輳状態管理テーブル制御部540によりヒットアドレスを書き込みアドレスとして帯域監視エントリ毎輻輳状態管理テーブル541の帯域監視エントリ毎輻輳状態管理エントリ5411〜541nの輻輳状態フラグ5410に輻輳検出を示す情報を書き込む。
【0051】
図11において、CNT>THRまたはCNT>THRMの条件に一致しない場合には帯域遵守(1110)となり、CNTにLENを加算した値をCNT2蓄積手段538に蓄積し(1108)、タイマ521が示す現在時刻をTLST蓄積手段537に蓄積する。そして、帯域監視テーブル51の、ヒットアドレスに対応付けられた帯域監視エントリのCNT512を CNT2蓄積手段538に蓄積されたCNTで書き換え、ヒットアドレスの帯域監視エントリのTLST511をTLST蓄積手段537に蓄積されたタイマの値で書き換える。また監視結果判定回路530から輻輳状態に無いことを示す情報が出力された場合には、帯域監視エントリ毎輻輳状態管理テーブル541の帯域監視エントリ毎輻輳状態管理エントリ5411〜541nの輻輳状態フラグ5410の書き換え処理は実施しない。
【0052】
なお帯域監視のアルゴリズムとして、クレジット方式によるリーキーバケツアルゴリズムの他、ウインドウ方式によるJumping Windowアルゴリズムも知られており(非特許文献3参照)、これを用いて帯域監視しても良い。その場合は、時間ウインドウW毎にパケット受信回路21より送信されたパケットのバイト長の積算値Bと、時間ウインドウWの間に許容されるバイト数W×Rとを大小比較し、Bの方が大きい場合には帯域違反、それ以外の場合には帯域遵守として、リーキーバケツアルゴリズムの際と同様な制裁の処理を行う。
【0053】
CNT>THRに一致せず、かつCNT>THRMに一致する場合は、ECNマーキングを実施(1107)することを示す情報をパケット受信回路21へ出力する。
【0054】
図13に、以上に説明した、リーキーバケツアルゴリズムにおけるバケツ水量CNT12と、閾値THR513、ECNマーキング閾値THRM514の関係を示す。
パケット受信回路21では、ECNマーキングを実施することを示す情報を入力されると、パケット受信回路21が備えるパケット受信バッファ211に蓄積された当該パケットのパケットヘッダ情報1000における
図5のTOSフィールド1031のECNフィールド10311の値を、パケット受信バッファ制御部210により読み出し、読み出されたECNフィールド10311の値が10または01であった場合には11に書き換える。読み出されたECNフィールド10311の値が00または11の場合には書き換えしない。以上が、本実施例のパケット中継装置2に入力したパケットがデータパケットであった場合の、帯域監視に関する処理の一例である。
【0055】
次に、本実施例のパケット中継装置2に入力したパケットがTCPのACKパケットである場合、つまり
図6に示した、当該パケットのパケットヘッダ情報1000のTCPフラグフィールド1042のACK10423が1である場合の処理を説明する。送信端末1から受信端末3に送信されるデータパケットに対するTCPのACKパケットでは、データパケットの送信元IPアドレスがACKパケットの宛先IPアドレスに、データパケットの宛先IPアドレスがACKパケットの送信元IPアドレスに、データパケットの送信元ポート番号がACKパケットの宛先ポート番号に、データパケットの宛先ポート番号がACKパケットの送信元ポート番号になる。
【0056】
従って、フロー検索部24のフロー検索テーブル制御部40で入力パケットのACK=1であると判定された場合は、送信元IPアドレスと宛先IPアドレス、送信元ポート番号と宛先ポート番号を交換した条件で、フロー検索テーブル制御部40からフロー検索テーブル41に対する検索起動をかける。すると、ACKパケットに対応するデータパケットが一致するフロー検索エントリのヒットアドレスがフロー検索テーブル41から出力される。このヒットアドレスを、フロー検索テーブル制御部40から帯域監視部25の帯域監視エントリ毎輻輳状態管理テーブル制御部540に出力し、このヒットアドレスを読み出しアドレスとして帯域監視エントリ毎輻輳状態管理テーブル541を読み出し制御する。
【0057】
すると、ACKパケットに対応するデータパケットに対する帯域監視エントリに対応する輻輳状態フラグが帯域監視エントリ毎輻輳状態管理テーブル制御部540に読み出され、ACKパケットに対応するデータパケットの帯域監視に関する輻輳状態を判定することができる。この輻輳状態フラグが輻輳状態にあることを示す値である場合には、ACKパケットのECEフラグを’1’に書き換えるECEマーキングを実施することを示す情報をパケット受信回路21へ出力する。
【0058】
パケット受信回路21では、ECEマーキングを実施することを示す情報を入力されると、パケット受信回路21が備えるパケット受信バッファ211に蓄積された当該パケットのパケットヘッダ情報1000におけるTCPフラグフィールド1042のECEフィールド10421の値を1に書き換える。これにより、ACKパケットに対するECEマーキングを、パケット中継装置2における帯域監視の輻輳状態に基づいて、受信端末3ではなくパケット中継装置2で実施することができる。すなわち、パケット中継装置2は、ACKパケットのパケットヘッダのうち、ネットワークの輻輳状態を示すフィールドとして、TCPパケットのECEフラグを用いる。その結果、パケット中継装置2から受信端末3、受信端末3からパケット中継装置2、パケット中継装置2から送信端末1の経路で輻輳通知することができる。輻輳状態フラグが輻輳状態に無いことを示す値である場合には、このECEマーキングは実施しない。
【0059】
本実施例のパケット中継装置に入力したパケットがCWR=1のデータパケットDATA(CWR)であった場合には、帯域監視エントリ毎輻輳状態管理テーブル制御部540は、帯域監視エントリ毎輻輳状態管理テーブル541において当該パケットが属するフローに対応する帯域監視エントリ毎輻輳状態管理エントリ5411〜541nの輻輳状態フラグ5410の値を輻輳状態に無いことを示す値に書き換える。すなわち、本実施例のパケット中継装置は、受信したTCPパケットのCWRフラグが1である場合に、フローが輻輳状態から解消したと判定することを意味する。これにより、それ以降パケット中継装置が受信したACKパケットに対するECEマーキングは実施されないこととなる。
【0060】
以上、実施例1の受信側のパケット検索部22が備える帯域監視部25にて、輻輳状態の検出と輻輳通知の指示を行う構成を説明したが、送信側のパケット検索部27でも同様に帯域監視部25を備えることができ、送信側の帯域監視に本実施例の構成を適用することもできる。
【0061】
次に、本実施例のパケット受信回路にて、輻輳状態の検出と輻輳通知の指示を行う場合の変形例について説明する。なお、パケットの優先度を考慮する拡張的なバッファ構成に関する適用例を開示するため、パケット受信回路はパケットの優先度に応じたバッファを複数備え、バッファ毎に輻輳状態の検出と輻輳通知の指示を行う構成とする。また、パケットの優先度はフロー検索部にて決定する構成とする。
【0062】
まず、
図14に、本変形実施例において、パケットの優先度を決定するフロー検索部の一構成例を示す。フロー検索部140は、先述した
図7のフロー検索部24の構成に加え、フローアクションテーブル制御部142とフローアクションテーブル143を備える。
【0063】
図15にフローアクションテーブル143の一構成例を示す。フローアクションテーブル143は、フロー1~n毎の優先度に応じてパケット受信回路21のパケット受信バッファ211にて蓄積するバッファ番号を示すフローアクションエントリ1431〜143nから構成される。フロー検索部24にパケットが入力すると、フロー検索テーブル制御部40によりパケットヘッダ情報1000がフロー検索テーブル41に入力され、当該のパケットヘッダ情報1000に一致するフロー検索エントリのヒットアドレスがフロー検索テーブル41を構成するCAMからフロー検索テーブル制御部40に出力される。このヒットアドレスをフロー検索テーブル制御部40からフローアクションテーブル制御部142へ出力する。フローアクションテーブル制御部142にて、このヒットアドレスをフローアクションテーブル143に対する読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、当該パケットに対応付けられるフローアクションエントリが読み出され、当該パケットを蓄積すべきパケット受信回路21のパケット受信バッファ211のバッファ番号が判定できる。
【0064】
図16に本実施例のパケット受信回路の他の構成例を示す。パケット受信回路160は、
図3に示したパケット受信回路21の基本構成、すなわち、パケット受信バッファ制御部1600、パケット受信バッファ1601、バッファ蓄積パケット数管理部1602に加え、ECNマーキング可否判定部1603を備える。パケット受信バッファ1601は、パケット受信バッファ211を拡張したもので、パケットの優先度に応じた複数のバッファを備える。
【0065】
図17にパケット受信バッファ1601の一構成例を示す。パケット受信バッファ1601は、バッファ面0〜バッファ面mのm+1個の面をもつバッファ16011〜バッファ1601nから構成される。パケットがパケット受信回路21に入力すると、パケット受信バッファ制御部210にてパケットのバッファ番号が示すバッファ1601i(i:1〜n)に対し、パケットのヒットアドレスを書き込みアドレスとしてパケットヘッダ情報1000をバッファ面0から順に書き込み制御する。そして、パケット受信バッファ毎に蓄積しているパケット数をバッファ蓄積パケット数管理部1602にて計数する。バッファ蓄積パケット数管理部1602にて計数されるバッファ毎蓄積パケット数は、パケット受信バッファ制御部1600を経由してECNマーキング閾値テーブル制御部1603に出力される。ECNマーキング閾値テーブル制御部1603では、パケットのバッファ番号を読み出しアドレスとしてECNマーキング閾値テーブル1604を読み出し制御する。
【0066】
図18にECNマーキング閾値テーブル1604の一構成例を示す。ECNマーキング閾値テーブル1604は、バッファ番号毎のECNマーキング閾値16041〜1604nから構成される。ECNマーキング閾値テーブル制御部1603では、パケットのバッファ番号を読み出しアドレスとしてECNマーキング閾値テーブル1604を読み出すと、当該パケットが蓄積されるバッファ番号に対するECNマーキング閾値が読み出される。このECNマーキング閾値がECNマーキング閾値テーブル制御部1603を経由してECNマーキング可否判定部1605に出力される。ECNマーキング可否判定部1605では、バッファ毎蓄積パケット数とECNマーキング閾値の大小比較の判定がなされ、ECNマーキング閾値<バッファ毎蓄積パケット数を満たす場合にECNマーキングを実行すべきと判定する。ECNマーキングの実行可否の情報をECNマーキング可否判定部1605から出力して、ECNマーキング閾値テーブル制御部1603を経由してパケット受信バッファ制御部1600に出力する。
【0067】
またこのとき、当該パケットが蓄積されているバッファ番号バッファ番号を読み出しアドレスとして、バッファ毎輻輳状態管理テーブル制御部1606からバッファ毎輻輳状態管理テーブル1607を読み出し制御する。バッファ毎輻輳状態管理テーブル1607の構成は、
図12に示す帯域監視エントリ毎輻輳状態管理テーブル541と同様であるが、帯域監視エントリ毎輻輳状態管理テーブル541は帯域監視エントリ毎に輻輳状態フラグを備えていたのに対し、バッファ毎輻輳状態管理テーブル1607はバッファ番号毎に輻輳状態フラグを備える点が異なる。そして、バッファ毎輻輳状態管理テーブル制御部1606により、当該パケットに対応するデータパケットを蓄積しているバッファ番号に対する輻輳状態フラグを、輻輳を示す値に書き換える制御がなされる。
【0068】
次に、パケット受信バッファ制御部1600では、パケット中継装置2に入力したパケットがデータパケットであり、ECNマーキングを実行すべきと判定された場合には、パケット受信回路160が備えるパケット受信バッファ1601に蓄積された当該パケットのパケットヘッダ情報1000におけるTOSフィールド1031のECNフィールド10311の値をパケット受信バッファ制御部1600により読み出し、読み出されたECNフィールドの値が10または01であった場合には11に書き換える。読み出されたECNフィールド10311の値が00または11の場合には書き換えしない。
【0069】
本実施例のパケット中継装置2に入力したパケットがTCPのACKパケットであった場合には、送信元IPアドレスと宛先IPアドレス、送信元ポート番号と宛先ポート番号を交換した条件で、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル41に対する検索起動をかける。すると、ACKパケットに対応するデータパケットが一致するフロー検索エントリのヒットアドレスがフロー検索テーブル41からフロー検索テーブル制御部40を経由してフローアクションテーブル制御部142に出力され、このヒットアドレスを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。
【0070】
すると、このACKパケットに対応するデータパケットを蓄積しているバッファ番号が読み出され、このバッファ番号をフローアクションテーブル制御部142、フロー検索テーブル制御部40を経由して、フロー検索部140からパケット受信回路160に送信し、パケット受信バッファ制御部1600を経由してバッファ毎輻輳状態管理テーブル制御部1606に出力する。ACKパケットに対応するデータパケットを蓄積しているバッファ番号を読み出しアドレスとして、バッファ毎輻輳状態管理テーブル制御部1606からバッファ毎輻輳状態管理テーブル1607を読み出し制御する。
【0071】
そして、ACKパケットに対応するデータパケットを蓄積しているバッファ番号に対する輻輳状態フラグがバッファ毎輻輳状態管理テーブル制御部1606に読み出され、バッファ毎輻輳状態管理テーブル制御部1606からパケット受信バッファ制御部1600に出力されると、この輻輳状態フラグが輻輳状態にあることを示す値である場合には、パケット受信バッファ1601に蓄積された当該パケットのパケットヘッダ情報1000におけるTCPフラグフィールド1042のECEフィールド10421の値を1に書き換える。これにより、ACKパケットに対するECEマーキングを、パケット中継装置におけるパケット受信バッファ1601の輻輳状態に基づいて、受信端末3ではなくパケット中継装置2で実施することができる。従って、パケット中継装置から受信端末、受信端末からパケット中継装置、パケット中継装置から送信端末の経路で輻輳通知することができる。輻輳状態フラグが輻輳状態に無いことを示す値である場合には、ECEマーキングは実施しない。
【0072】
本実施例のパケット中継装置に入力したパケットがCWR=1のデータパケットDATA(CWR)であった場合には、バッファ毎輻輳状態管理テーブル制御部1606は、バッファ毎輻輳状態管理テーブル1607において当該パケットが属するバッファに対応するバッファ毎輻輳状態管理エントリの輻輳状態フラグの値を輻輳状態に無いことを示す値に書き換える。これにより、それ以降パケット中継装置が受信したACKパケットに対するECEマーキングは実施されないこととなる。
【0073】
図19に、以上に説明した本実施例の受信側のパケット受信回路160が備えるバッファ面nのパケット受信バッファ1601のバッファ管理におけるECNマーキング閾値とバッファ蓄積パケット数の関係を模式的に示した。
【0074】
以上、受信側のパケット受信回路160が備えるパケット受信バッファ1601のバッファ管理において、輻輳状態の検出と輻輳通知の指示を行う構成で説明したが、
図2の送信側のパケット送信回路28でも同様にパケット送信バッファを備えることができ、送信側のバッファ管理に本実施例の構成を適用することもできる。特に送信側のバッファ管理において、バッファの送信帯域を制御可能としたものをシェーパと呼ぶ。
【0075】
図20に、シェーパを構成するパケット送信回路の一構成例を示す。パケット送信回路2000の構成は、
図16に示したパケット受信回路160におけるパケット受信バッファ1601、パケット受信バッファ制御部1600をパケット送信バッファ2001、パケット送信バッファ制御部2000と読み替えた同様の構成に加え、タイマ2017、送信時刻計算回路2018、回線毎送信帯域管理テーブル制御部2019、回線毎送信帯域管理テーブル2020を備える。パケット送信バッファ2001は、パケット受信バッファ2011とは異なりパケットの優先度毎には備えず、回線毎に備える。
【0076】
図21に、回線毎送信帯域管理テーブル2020の一構成例を示す。回線毎送信帯域管理テーブル2020には、複数の出力回線30毎の送信帯域Rの設定値と遅延タイマ値OTIMEと最後にパケット送信した際のタイマ2017のタイマ値である最終送信タイマ値TLSTとが、回線毎送信帯域管理エントリ20201〜2020nに記載される。送信帯域Rの設定値は、出力回線30の回線種別や、パケット中継装置の運用管理者が出力回線30毎に割り当てたい送信帯域の値に応じて決定される。パケット中継装置の運用管理者が、送信帯域Rの設定値を管理端末19から入力し、レジスタ29を経由して回線毎送信帯域管理テーブル制御部2019から回線毎送信帯域管理テーブル2020に書き込み制御することにより設定される。
【0077】
図22のフローチャートを用いて、本実施例のパケット送信回路の動作について説明する。同図において、バッファ毎のパケット処理が開始されると(2200)、パケット送信回路200のパケット送信バッファ制御部2000では、タイマ2017が出力するタイマ値に基づいて、現在のタイマ値が基準タイマ値に達したか判断する(2201)。基準タイマ値とは、パケット送信回路200がパケット送信処理またはパケット受信処理を実行する単位時間である。基準タイマ値は、パケット中継装置0が送受信するパケットの基準バイト数と、送信帯域Rの最大値とに基づいて、以下の式(1)により算出される。
【0078】
基準タイマ値[s]=基準バイト数*8[bit]/送信帯域Rの最大値[bps]・・・(1)
なお、本実施例では、[s]は秒ではなくタイマ値を示す。
【0079】
現在のタイマ値が基準タイマ値に達したと判断された場合には、受信処理および送信処理を実行する(2202以降)。現在のタイマ値が基準タイマ値に達していないと判断された場合には、現在のタイマ値が基準タイマ値に達したか判断する処理をループする。つまり、本実施例では、上述した基準タイマ値ごとに、受信処理と送信処理とが繰り返し実行されることになる。
【0080】
受信処理(2202)について説明する。受信処理の実行が開始されると、まず、パケット中継処理手段26からパケットを受信したか否かが判断され(2203)、パケットを受信した場合には、パケット送信バッファ制御部2000によって、そのパケットのバッファリング先が判定される(2204)。パケットを受信しなかった場合には、後述する送信処理(2208)に処理が移行される。
【0081】
パケットのバッファリング先が判定されると、送信バッファ制御部2000によって、パケット送信バッファ2001が参照され、そのバッファリング先に該当するパケット送信バッファ2001にパケットが蓄積されているかが判断される(2205)。該当バッファにパケットが蓄積されていない場合には、送信時刻計算回路2018により当該バッファからパケットの送信を遅延させる時間(遅延タイマ値OTIME)が計算される。本実施例では、パケット中継処理手段26から送信されたパケットのパケット長LENを、回線毎の送信帯域Rで除算することにより遅延タイマ値OTIMEを計算する(2206)。回線毎の送信帯域Rは、回線毎送信帯域管理テーブル制御部2019によりパケットの出力回線に応じて回線毎送信帯域管理テーブル2020を読み出すことにより得られる。この遅延タイマ値OTIMEは、以下の式(2) により算出される。この式(2)によれば、遅延タイマ値OTIMEはそのパケットを次の機会に送信することができる最も早い時間を示すことになる。
【0082】
OTIME=LEN/R ・・・(2)
送信時刻計算回路2018により遅延タイマ値OTIMEが計算されると、その値が回線毎送信帯域管理テーブル8−20内の該当バッファの回線毎送信帯域管理エントリに記載され、パケット送信バッファ2001の該当バッファの末尾に、受信されたパケットがパケット送信バッファ制御部2000によって蓄積される(2207)。なお、該当キューにパケットが蓄積されている場合には、遅延タイマ値OTIMEは計算されずに、受信されたパケットがパケット送信バッファ2001の該当バッファの末尾にそのまま蓄積される。既にパケットが蓄積されている場合には、前回のバッファ毎のパケット処理において、遅延タイマ値OTIMEは既に計算済であり、回線毎送信帯域管理テーブル2020にその遅延タイマ値OTIMEが記録されているからである。以上の受信処理が完了すると、引き続いて送信処理が実行され(2208)、該当バッファに蓄積パケットが有るか否かがチェックされる(2209)。
【0083】
蓄積パケットが確認されると、まず、送信時刻計算回路2018によって、タイマ2017から出力された現在のタイマ値TNOWと、最終送信タイマ値TLSTに遅延タイマ値OTIMEを加算した送信予定タイマ値とが比較される(2210)。
【0084】
現在のタイマ値TNOWと送信予定タイマ値とが一致するか、もしくは、現在のタイマ値が送信予定タイマ値を超えるという条件を満たすバッファが存在する場合には、そのバッファは、パケットを送信する対象の候補となる(以下、「送信対象バッファ」という)。送信時刻計算回路2018は上述の条件に基づいて、送信対象バッファが存在するかどうかを判断する。送信対象バッファが存在しない場合には、当該送信処理は終了する。
【0085】
送信対象バッファが存在する場合には、送信時刻計算回路2018は、それらの送信対象バッファのうち、最も送信予定タイマ値の早いバッファを特定する。そして、最も送信予定タイマ値の早いバッファが特定されると、パケット送信バッファ制御部2000によって、そのバッファから、パケットの送信が行われる。パケットの送信が行われると、回線毎送信帯域管理テーブル制御部2019は、回線毎送信帯域管理テーブル2020の該当回線の最終送信タイマ値TLSTを現在のタイマ値TNOWに更新する(2211)。
【0086】
最終送信タイマ値TLSTbの更新が行われると、続いて、パケット送信バッファ制御部2000によって、上述の最も送信予定タイマ値の早いバッファとして特定されたバッファに、次の蓄積パケットがあるかが判断される(2212)。次の蓄積パケットがなければ、当該送信処理は終了する。一方、次の蓄積パケットが存在していれば、送信時刻計算回路2018によって、そのバッファに関する新たな遅延タイマ値OTIMEが計算される。この遅延タイマ値DTは、蓄積されているパケットのパケット長LENを、その回線の送信帯域Rで割った値となる(2213)。新たな遅延タイマ値OTIMEが計算されると、その値は回線毎送信帯域管理テーブル制御部2019により、回線毎送信帯域管理テーブル2020の該当回線のエントリに書き込まれる。
【0087】
以上で説明した一連のシェーパ処理におけるECNマーキングの処理は、パケット受信回路160における処理と同様である。
図20のパケット送信回路200のパケット受信処理において、バッファリングがなされると、パケット送信バッファ毎に蓄積しているパケット数をバッファ蓄積パケット数管理部2002にて計数する。バッファ蓄積パケット数管理部2002にて計数されるバッファ毎蓄積パケット数は、パケット送信バッファ制御部2000を経由してECNマーキング閾値テーブル制御部2012に出力される。
【0088】
ECNマーキング閾値テーブル制御部2012では、ECNマーキング閾値テーブル2013を読み出し制御する。ECNマーキング閾値テーブル2013を読み出すと、当該パケットが蓄積されるバッファに対するECNマーキング閾値が読み出される。このECNマーキング閾値がECNマーキング閾値テーブル制御部2012を経由してECNマーキング可否判定部2014に出力される。ECNマーキング可否判定部2014では、バッファ毎蓄積パケット数とECNマーキング閾値の大小比較の判定がなされ、ECNマーキング閾値<バッファ毎蓄積パケット数を満たす場合にECNマーキングを実行すべきと判定する。ECNマーキングの実行可否の情報をECNマーキング可否判定部2014から出力して、ECNマーキング閾値テーブル制御部2012を経由してパケット送信バッファ制御部2000に出力する。
【0089】
パケット送信バッファ制御部2000では、当該パケットがデータパケットであり、ECNマーキングを実行すべきと判定された場合には、パケット送信回路200が備えるパケット送信バッファ2001に蓄積された当該パケットのパケットヘッダ情報1000におけるTOSフィールド1031のECNフィールド10311の値をパケット送信バッファ制御部2000により読み出し、読み出されたECNフィールドの値が10または01であった場合には11に書き換える。読み出されたECNフィールド10311の値が00または11の場合には書き換えしない。
【0090】
当該パケットがTCPのACKパケットであった場合には、送信元IPアドレスと宛先IPアドレス、送信元ポート番号と宛先ポート番号を交換した条件で、送信側のパケット検索部27におけるフロー検索部24のフロー検索テーブル制御部40からフロー検索テーブル41に対する検索起動をかける。すると、ACKパケットに対応するデータパケットが一致するフロー検索エントリのヒットアドレスがフロー検索テーブル41からフロー検索テーブル制御部40を経由してフローアクションテーブル制御部142に出力され、このヒットアドレスを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。
【0091】
すると、このACKパケットに対応するデータパケットを蓄積しているバッファ番号が読み出され、このバッファ番号をフローアクションテーブル制御部142、フロー検索テーブル制御部40を経由して、フロー検索部24からパケット送信回路200に送信し、パケット送信バッファ制御部2000を経由してバッファ毎輻輳状態管理テーブル制御部2015に出力する。ACKパケットに対応するデータパケットを蓄積しているバッファ番号を読み出しアドレスとして、バッファ毎輻輳状態管理テーブル制御部2015からバッファ毎輻輳状態管理テーブル2016を読み出し制御する。
【0092】
そして、ACKパケットに対応するデータパケットを蓄積しているバッファに対する輻輳状態フラグがバッファ毎輻輳状態管理テーブル制御部2015に読み出され、バッファ毎輻輳状態管理テーブル制御部2015からパケット送信バッファ制御部2000に出力されると、この輻輳状態フラグが輻輳状態にあることを示す値である場合には、パケット送信バッファ2011に蓄積された当該パケットのパケットヘッダ情報1000におけるTCPフラグフィールド1042のECEフィールド10421の値を1に書き換える。これにより、ACKパケットに対するECEマーキングを、パケット中継装置におけるパケット送信バッファ2001の輻輳状態に基づいて、受信端末ではなくパケット中継装置で実施することができる。従って、パケット中継装置から受信端末を経由しパケット中継装置、そして、パケット中継装置から送信端末の経路で輻輳通知することができる。輻輳状態フラグが輻輳状態に無いことを示す値である場合には、ECEマーキングは実施しない。
【0093】
当該パケットがCWR=1のデータパケットDATA(CWR)であった場合には、バッファ毎輻輳状態管理テーブル制御部2015は、バッファ毎輻輳状態管理テーブル2016において当該パケットが属するバッファに対応するバッファ毎輻輳状態管理エントリの輻輳状態フラグの値を輻輳状態に無いことを示す値に書き換える。これにより、それ以降パケット中継装置が受信したACKパケットに対するECEマーキングは実施されないこととなる。
【0094】
以上詳述した本実施例のパケット中継装置におけるECNの処理と、送信端末、受信端末とパケット中継装置間でなされるECNの通信の概要をシーケンス図にまとめて説明する。
【0095】
図23に、本実施例のパケット中継装置による通信のフローチャート図を示す。
図23で明らかなように、入力パケットがACKパケットか否かの判定(2301)、入力パケットがACKパケットである場合には、当該フローに対する輻輳状態管理テーブルの輻輳状態管理エントリを参照し(2302)、輻輳状態であるならば(2303)、当該ACKパケットのECEフィールドを1に更新する処理(2304)、入力パケットがDATA(CWR)である場合には(2305)、当該フローの非輻輳状態を輻輳状態管理テーブルに記録する処理(2306)、ECNフィールドを11に更新する場合には(2311)、当該フローの輻輳状態を輻輳状態管理テーブルに記録する処理(2310)が追加となる。
【0096】
図24に、本実施例のパケット中継装置を用いた通信のシーケンス図を示す。送信端末1から、例えばルータ(Router)等で構成されるパケット中継装置2を経由して受信端末3の間でパケットの送受信がなされるものとする。ECNの初期化に関わる通信として、初めにTCP制御フラグのECEフラグとCWRフラグを立てたECN−setup SYNパケットが送信端末1から受信端末3に送信される。これは、送信端末1がECN通信を開始しようとすることを受信端末3に示すパケットである。受信端末3がECN−setup SYNパケットを受信すると、受信端末3は、ECNをサポートしている場合にはECEフラグを立てたECN−setup SYN−ACKパケットを送信端末1に返信する。受信端末3がECN通信をサポートしていない場合には、ECEフラグを立てない通常のTCPの3way handshakeにおけるSYN−ACKパケットを送信端末1に返信する。従って、SYN−ACKパケットのECEフラグの有無により、送信端末1は受信端末3のECNサポート可否を判定でき、その後ECN通信を継続できるか否か判定する。そして、送信端末1通常のTCPの3way handshakeにおけるACKパケットを受信端末3に返信する。その後、ECNのデータ通信が開始される。受信端末3からのACKパケットを送信端末1が受信した際の送信端末1によるCongestion Windowを増加させる制御、つまりパケット送信帯域を増加させる制御は、通常のTCPと同様である。DATA(ECT)は、ECN−Capable−Transport、つまりECNサポートするデータパケットであり、ECNフィールドが01または10のパケットである。
【0097】
先に詳述したように、本実施例のパケット中継装置2では輻輳(Congestion)をパケット中継装置2が検出すると、その後にパケット中継装置2が受信したACK(SEQ=4001)をパケット中継装置2にてACK(ECE)に書き換える処理が追加となる。従来構成では、送信端末1はSEQ=5001のACK(ECE)により輻輳回避制御を開始したのに対し、
図24に示すように、SEQ=4001のACK(ECE)により輻輳回避制御を開始できるので、この分だけ早期に輻輳回避制御がなされることとなる。
【0098】
この結果、従来のECNのシーケンスでは、輻輳通知が間に合わず、SEQ=4001のACKによってSEQ=7001−8000のDATA(ECT)が送信されてしまう。そして、SEQ=7001−8000のDATA(ECT)は、パケット中継装置2における輻輳中に送信されているので、輻輳悪化を招き、パケット中継装置2において廃棄される。廃棄されたSEQ=7001−8000のDATA(ECT)に対する重複ACKまたはタイムアウトが送信端末1にて検出されると、送信端末1はSEQ=7001−8000のDATA(ECT)を再送するので、送信端末1とパケット中継装置間の帯域を余分に消費することとなり、実質的なスループットが低下してしまう。
【0099】
これに対し、本実施例のパケット中継装置2では、
図24に示すように、SEQ=4001のACK(ECE)によって早期に輻輳通知できるので、SEQ=7001−8000のDATA(ECT)の送信を遅延させることができる、この結果、送信端末1は、輻輳中の過剰なパケット送信を抑止することができて、再送パケットによるスループット低下を防止できる。パケット中継装置2と受信端末3間の遅延が大きくなるほどこの効果は高くなり、従来のECNよりもより早期に輻輳通知して輻輳回避制御できるので、より多くのパケット再送を抑止して、スループット低下を効果的に防止できる。そして、SEQ=4001のACK(ECE)を送信端末1が受信して、Congestion Windowを減少させて送信帯域を抑制する輻輳回避制御を行った後、SEQ=7001−8000のDATA(CWR)を受信端末3に送信する。DATA(CWR)はCongestion Window Reduced、つまりCongestion Windowを減少させて輻輳回避制御が送信端末1においてなされたことを示すデータパケットである。中継装置がDATA(CWR)を受信すると、中継装置内の輻輳状態管理テーブルにおいて、当該パケットが一致するフローに対する輻輳状態フラグを、輻輳状態でないことを示す値に書き換える。そして、受信端末3がDATA(CWR)を受信すると、受信端末3はACK(ECE)の送信を停止して、これ以降はECEフラグを立てないACKパケットを送信する。
【0100】
ACK(ECE)を送信端末1が受信すると、送信端末1はCongestion Windowを減少させて送信帯域を抑制する輻輳回避制御を行い、その後DATA(CWR)を受信端末3に送信する。DATA(CWR)はCongestion Window Reduced、つまりCongestion Windowを減少させて輻輳回避制御が送信端末1においてなされたことを示すデータパケットである。受信端末3がDATA(CWR)を受信すると、受信端末3はACK(ECE)の送信を停止して、ECEフラグを立てないACKパケットを送信する。
【0101】
なお、輻輳検出処理のタイミングは、パケット受信時であっても良いし、定期的に検出しても良い。
【0102】
以上詳述したように、実施例1のパケット中継装置によれば、早期に輻輳通知できるので、送信端末は、輻輳中の過剰なパケット送信を抑止することができて、再送パケットによるスループット低下を防止できる。パケット中継装置と受信端末間の遅延が大きくなるほどこの効果は高くなり、従来のECNよりもより早期に輻輳通知して輻輳回避制御できるので、より多くのパケット再送を抑止して、スループット低下を効果的に防止できる。
【実施例3】
【0112】
続いて、第3の実施例として、上流に位置し本発明に係る構成を有しないパケット中継装置により、ECNマーキングされたパケットの受信を契機に、当該パケットのACKパケットにECEマーキングを実施する構成の実施例を、
図26〜
図29を用いて、説明する。本実施例3の説明では、実施例2との差分のみを説明する。
【0113】
本実施例では、上流に位置する本発明の構成を備えないパケット中継装置によりECNマーキングされたパケットを検出して、フロー検索テーブルに登録するための上流装置連携登録用フロー検索エントリを、実施例2における登録用フロー検索エントリの直上のアドレスに、パケット中継装置の運用管理者の指定に基づいて登録する。また、上流装置連携登録用フロー検索エントリに基づいて登録される上流装置連携ECEマーキング用フロー検索エントリと上流装置連携解除用フロー検索エントリとを、上流装置連携登録用フロー検索エントリよりも上位アドレスに、パケット中継装置にて自律的に登録する。
【0114】
図26に、帯域監視用フロー検索エントリと登録用フロー検索エントリを省略した、本実施例におけるフロー検索テーブル145の構成を示す。フロー検索テーブル145は、TOSフィールドをDSCPフィールドとECNフィールドに分割して設定する点がフロー検索テーブル41と異なる。1451、1453、1455、1457は上流装置連携ECEマーキング用フロー検索エントリ、1452、1454、1456、1458は上流装置連係解除用フロー検索エントリ、1459は上流装置連登録用フロー検索エントリである。1451と1452、1453と1454、1455と1456、1457と1458は対になるフロー検索エントリとして本実施例のパケット中継装置2により自律的に登録され、上流装置連携ECEマーキング用フロー検索エントリではACK=1、上流装置連携解除用フロー検索エントリではACK=0かつCWR=1とする他は、全てのフローの条件に関し互いに一致している。
【0115】
実施例2で説明した登録用フロー検索エントリではECNフィールド=d.c.として上流パケット中継装置による輻輳検出有無によらずにパケット検出するのに対し、上流装置連携登録用フロー検索エントリ1459はECNフィールド=CEと設定して上流パケット中継装置による輻輳検出済パケットのみを検出する点が異なる。また、実施例2で説明した帯域監視用フロー検索エントリではTOSフィールドの下位2ビットとしてECNフィールドも入力パケットのパケットヘッダの値を登録したのに対し、上流装置連携ECNマーキング用フロー検索エントリ1451、1453、1455、1457と上流装置連係解除用フロー検索エントリ1452、1454、1456、1458ではECNフィールド=d.c.として、登録時の入力パケットのECNフィールド=CEであっても、上流装置連携ECNマーキング用フロー検索エントリではECN≠CEのパケットも検出する点が異なる。
【0116】
これは、ECNの規定では、受信端末がECN=CEのパケットを受信すると、その後CWR=1のパケットを受信するまでは、ECN≠CEのパケットを受信した場合であってもECE=1のACKパケットを送信し続ける処理に対応している。本実施例のパケット中継装置がECN=CEのパケットを受信すると、その後CWR=1のパケットを受信するまでは、ECN≠CEのパケットを受信した場合であっても、受信したACKパケットのECEを’1’に書き換えて送信し続ける。
【0117】
次に、
図27に、実施例2における帯域監視用フロー検索エントリに対応するフローアクションエントリと登録用フロー検索エントリに対応するフローアクションエントリを省略した、本実施例におけるフローアクションテーブル146の構成を示す。フローアクションテーブル146では、上流装置連携ECEマーキング用フロー検索エントリに対応するフローアクションエントリ1461には「上流装置連携ECEマーキング」を指示する情報を記載し、上流装置連係解除用フロー検索エントリに対応するフローアクションエントリ1462には「上流装置連係解除」を指示する情報を記載し、上流装置連携登録用フロー検索エントリに対応するフローアクションエントリ146nには「上流装置連携登録」を指示する情報を記載する。
【0118】
本実施例のパケット中継装置に、上流に位置する本発明の構成を備えないパケット中継装置によりECNマーキングされたECN=CEのパケットが入力すると、当該パケットのパケットヘッダ情報はフロー検索テーブル145において、予めパケット中継装置の運用管理者の指定に基づいて登録された上流装置連携登録用フロー検索エントリ1459に記載されたフローの条件に一致する。すると、当該上流装置連携登録用フロー検索エントリ1459のアドレスを読み出しアドレスとしてフローアクションテーブル制御部142から読み出したフローアクションテーブル146のフローアクションエントリに「上流装置連携登録」を指示する情報が記載されていた場合は、入力パケットは上流装置連携登録用フロー検索エントリに一致したものと、フローアクションテーブル制御部142にて判定される。
【0119】
上流装置連携登録用フロー検索エントリ一致を示す情報と入力パケットのパケットヘッダ情報はフロー検索テーブル制御部40を経由してレジスタ29に送信され、管理端末19に送信される。管理端末19では、送信されたパケットヘッダ情報を解析して、このパケットヘッダ情報に基づいたフローの条件をフロー検索テーブル41に上流装置連携ECEマーキング用フロー検索エントリと上流装置連係解除用フロー検索エントリとして設定することを指示する情報をレジスタ29経由でフロー検索テーブル制御部40に送信する。この際、上流装置連携ECEマーキング用フロー検索エントリと上流装置連係解除用フロー検索エントリのECNフィールドはd.c.として登録する。フロー検索テーブル制御部40は、この情報に従ってパケットヘッダ情報をフロー検索テーブル41に上流装置連携ECEマーキング用フロー検索エントリと上流装置連係解除用フロー検索エントリを書き込み制御して設定する。また、当該の上流装置連携ECEマーキング用フロー検索エントリのアドレスと同一のアドレスを書き込みアドレスとして、フローアクションテーブル制御部142はフローアクションテーブル146のフローアクションエントリに「上流装置連携ECEマーキング」を指示する情報を書き込み制御する。また、当該の上流装置連携解除用フロー検索エントリのアドレスと同一のアドレスを書き込みアドレスとして、フローアクションテーブル制御部142はフローアクションテーブル146のフローアクションエントリに「上流装置連携解除」を指示する情報を書き込み制御する。
【0120】
次に、実施例3のパケット中継装置に、TCPのACKパケットが入力した場合の処理について説明する。TCPのACKパケットが本実施例のパケット中継装置に入力すると、パケットヘッダ情報の送信元IPアドレスと宛先IPアドレス、送信元ポート番号と宛先ポート番号を交換するパケットヘッダ条件交換を行ってから、フロー検索テーブル制御部40からフロー検索テーブル41に対し検索起動をかける。検索の結果、上流装置連携ECEマーキング用フロー検索エントリとして登録したフローの条件に対し、パケットヘッダ条件交換を行った後に一致するパケットヘッダ情報をもつパケットが本実施例のパケット中継装置に入力すると、フロー検索テーブル145において一致する上流装置連携ECEマーキング用フロー検索エントリのアドレスを読み出しアドレスとしてフローアクションテーブル制御部42から読み出したフローアクションテーブル146のフローアクションエントリに「上流装置連携ECEマーキング」を指示する情報が記載されていた場合は、入力パケットは上流装置連携ECEマーキング用フロー検索エントリに一致したとフローアクションテーブル制御部142にて判定され、上流装置連携ECEマーキング用フロー検索エントリ一致を示す情報はフロー検索テーブル制御部40を経由してパケット受信回路21に送信される。すると、このACKパケットのパケットヘッダ情報1000を、パケット受信バッファ制御部210がパケット受信バッファ211から読み出し制御して、このパケットヘッダ情報1000におけるTCPフラグフィールド1042のECEフィールド10421の値を1に書き換える。これにより、ACKパケットに対するECEマーキングを、パケット中継装置におけるパケット受信バッファ211の輻輳状態に基づいて、受信端末ではなくパケット中継装置で実施することができる。従って、パケット中継装置から受信端末、受信端末からパケット中継装置、パケット中継装置から送信端末の経路で輻輳通知することができる。当該のACKパケットが上流装置連携ECEマーキング用フロー検索エントリに一致しない場合は、ECEマーキング処理はしない。ACKパケットではACK=1なので、ACK=0かつCWR=1の上流装置連携解除用フロー検索エントリに一致することは無い。
【0121】
一方、CWR=1のデータパケットが実施例3のパケット中継装置に入力した場合には、上述のパケットヘッダ条件交換を行わずにフロー検索テーブル制御部40からフロー検索テーブル41に対し検索起動をかける。検索の結果、当該データパケットのパケットヘッダ情報1000が上流装置連係解除用フロー検索エントリのフローの条件に一致した場合には、フロー検索制御部40から一致した上流装置連係解除用フロー検索エントリと、当該エントリと対として登録された上流装置連係ECEマーキング用フロー検索エントリを削除する制御を行う。次に、一致した上流装置連係解除用フロー検索エントリのアドレスと同一アドレスにあるフローアクションテーブル143のフローアクションエントリの「上流装置連係解除」を指示する情報を削除する。また、当該エントリと対として登録された上流装置連係ECEマーキング用フロー検索エントリのアドレスと同一アドレスにあるフローアクションテーブル143のフローアクションエントリの「上流装置連係ECEマーキング」を指示する情報を削除する。
【0122】
以上に述べた実施例3のパケット中継装置における処理をフローチャートにまとめ、送信端末、受信端末とパケット中継装置間でなされる本実施例の通信の概要をシーケンス図にまとめて説明する。
【0123】
図28に、実施例3のパケット中継装置における処理のフローチャートを示す。本実施例では、
図23に示した実施例1のフローチャートの処理に加え、入力パケットのECNフィールドが”11”、つまりCEであるか否かの判定が追加となる。入力パケットのECNフィールドが”11”でない場合は、実施例1と同様にパケット中継装置内での輻輳検出を判定する処理に移行する。入力パケットのECNフィールドが、”11”である場合は実施例3に特徴的な処理として、当該パケットのパケットヘッダ情報1000のパケットヘッダ条件交換を行い、当該パケットの属するフローに対し受信端末から送信されるACKパケットに対する上流装置連携ECEマーキング用フロー検索エントリと、当該パケットの属するフローでCWR=1のデータパケットに対する上流装置連係解除用フロー検索エントリをフロー検索テーブルに追加となる。
【0124】
また本実施例では、入力パケットがACKパケットである場合には、当該ACKパケットが上流装置連携ECEマーキング用フロー検索エントリに一致するか否かの判定を行い、一致する場合には、ECEマーキングを行う処理が追加となる。一致しない場合には実施例1と同様に、当該フローに対する輻輳状態管理テーブルを参照し、当該フローが輻輳状態にある場合にはECEマーキングを行う。
【0125】
また本実施例では、入力パケットがACKパケットではない場合、つまりデータパケットで、かつCWR=1である場合には、当該フローのパケットのパケットヘッダ情報が一致する上流装置連携ECEマーキング用フロー検索エントリと、当該フローのパケットのパケットヘッダ情報が一致する上流装置連係解除用フロー検索エントリを削除する処理と、当該フローの非輻輳状態を輻輳状態管理テーブルに記録する処理が追加となる。
【0126】
次に、
図29に、実施例3のパケット中継装置を用いた通信のシーケンス図を示す。本実施例のシーケンス図では、実施例1の通信のシーケンス
図24における通信構成要素である送信端末1、パケット中継装置2、受信端末3に加え、上流側中継装置(upstream Router)が追加となる。上流側中継装置は、パケット中継装置2よりも上流に位置する中継装置であり、本発明の構成を備えない中継装置であるものとする。パケット中継装置2は、上流側中継装置にてECNマーキングを実施されたSEQ=4001−5000のパケットであるDATA(ECE)を受信することにより、上流側中継装置における輻輳を検出し、これを契機としてそれ以降受信した当該パケットに対するACKパケット、つまりSEQ=4001以降のACKパケットに対しECEマーキングを実施する。これにより、上流に位置する本発明の機能構成を備えないパケット中継装置によりECNマーキングされたパケット受信を契機として、パケット中継装置2は、当該パケットに対するACKパケットにECEマーキングを実現して、送信端末1に送信することができる。
【実施例4】
【0127】
次に、第4の実施例のパケット中継装置を説明する。以下の説明では、実施例4の特徴的な処理のみを説明する。実施例4として、TCPの3way handshakeによる初期化処理を含め、受信端末におけるECNに関する処理の全てをパケット中継装置にて代行する構成について説明する。この構成により、受信端末がECNをサポートしていない場合にも、送信端末とパケット中継装置間でECNをサポートした通信が可能となる。なお本実施例のパケット中継装置では、ECNサポートのデータパケットであるDATA(ECT)や、ECNにおける輻輳回避制御が実施済であることを示すデータパケットDATA(CWR)を、ECN非サポートのデータパケットDATA(not−ECT)に書き換える隠蔽処理を行うことにより、受信端末に対するECN通信はなされないようにする。
【0128】
図30に、本実施例におけるフロー検索テーブルの構成を示す。フロー検索テーブル147は、SYNフィールドとECEフィールドを設けた点がフロー検索テーブル145と異なる。1471はSYN−ACKパケット検出用フロー検索エントリ、1472はACKパケット検出用フロー検索エントリ、11473はDATA(ECT)パケット検出用フロー検索エントリ、1474はDATA(CWR)パケット検出用フロー検索エントリ、1475はFINパケット検出用フロー検索エントリ、1476はECN−setup SYNパケット検出用フロー検索エントリである。1471〜1475は一組のフロー検索エントリとして本実施例のパケット中継装置により自律的に登録され、ACK、SYN、ECE、CWR、FINフィールドから構成されるTCPフラグフィールドとECNフィールドの他は、全てのフローの条件に関し互いに一致している。ECN−setup SYNパケット検出用フロー検索エントリ1476は、任意のACK=0かつSYN=1かつECE=1かつCWR=1のECN−setup SYNパケットを検出する。
【0129】
次に、
図31に、実施例4における上述のフロー検索エントリに対応するフローアクションテーブル148の構成を示す。フローアクションテーブル148では、SYN−ACKパケット検出用フロー検索エントリ1471に対応するフローアクションエントリ1481には「ECEマーキング」を指示する情報が記載される。これは、ECNサポートしていない受信端末が送信したECN非サポートを意味するSYN−ACKパケット、つまりECE=0のSYN−ACKパケットを、ECNサポートを意味するSYN−ACKパケット、つまりECE=1のSYN−ACKパケットに、本実施例4のパケット中継装置にて書き換えることを指示する。
【0130】
ACKパケット検出用フロー検索エントリ1472に対応するフローアクションエントリ1482には「輻輳時ECEマーキング」を指示する情報が記載される。これは、パケット中継装置にて輻輳を検出した場合、それ以降CWR=1のデータパケットを検出するまでの間は、ACKパケット検出用フロー検索エントリ1472にて検出されたACKパケットに対し、本実施例のパケット中継装置にてECEマーキングを行うことを指示する。
【0131】
DATA(ECT)パケット検出用フロー検索エントリ1473に対応するフローアクションエントリ1483には「not−ECTマーキング」を指示する情報が記載される。これは、DATA(ECT)パケット検出用フロー検索エントリ1473にて検査検出されたDATA(ECT)パケット、つまりECNフィールド=”01”または”10”または”11”のデータパケットを、DATA(not−ECT)パケット、つまりECNフィールド=”00”のデータパケットに、本実施例のパケット中継装置にて書き換えることを指示する。
【0132】
DATA(CWR)パケット検出用フロー検索エントリ1474に対応するフローアクションエントリ1484には「ECEマーキング停止¬−ECTマーキング」を指示する情報が記載される。これは、DATA(CWR)パケット検出用フロー検索エントリ1474にて検出されたDATA(CWR)パケット、つまりCWR=1のデータパケットを、DATA(not−ECT)パケット、つまりECNフィールド=”00”かつCWR=0のデータパケットに、本実施例のパケット中継装置にて書き換え、かつ輻輳状態管理テーブルの輻輳状態管理エントリを輻輳状態で無いことを示す値に書き換えることにより、それ以降のACKパケットのECEマーキングを停止することを指示する。
【0133】
FINパケット検出用フロー検索エントリ1475に対応するフローアクションエントリ1485には「ECNプロキシ削除」を指示する情報が記載される。これは、ECN−setup SYNパケット検出用フロー検索エントリ1476で検出されたフローに属するSYN−ACKパケットを検出するSYN−ACKパケット検出用フロー検索エントリ1471、データパケットを検出するDATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474、ACKパケットを検出するACKパケット検出用フロー検索エントリ1472、FINパケットを検出する本FINパケット検出用フロー検索エントリ1475をフロー検索テーブル147から削除し、これらのフロー検索エントリに対応するフローアクションエントリ1481〜1485をフローアクションテーブル148から削除して、それ以降のTCPの3way handshakeによる初期化処理を含めたECNプロキシ処理を停止することを指示する。
【0134】
ECN−setup SYNパケット検出用フロー検索エントリ1476に対応するフローアクションエントリ1486には「ECNプロキシ登録」を指示する情報が記載される。これは、ECN−setup SYNパケット検出用フロー検索エントリ1476で検出されたフローに属するSYN−ACKパケットを検出するSYN−ACKパケット検出用フロー検索エントリ1471、データパケットを検出するDATA(ECT)パケット検出用フロー検索エントリ1473、DATA(CWR)パケット検出用フロー検索エントリ1474、ACKパケットを検出するACKパケット検出用フロー検索エントリ1472、FINパケットを検出するFINパケット検出用フロー検索エントリ1475をフロー検索テーブル147に登録し、これらのフロー検索エントリに対応するフローアクションエントリ1481〜1485をフローアクションテーブル148に登録することを指示する。
【0135】
次に、各処理の詳細について説明する。
ACK=0かつSYN=1かつECE=1かつCWR=1かつFIN=0のECN−setup SYNパケットが本実施例のパケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するECN−setup SYNパケット検出用フロー検索エントリ1476のアドレス1476−aがフロー検索テーブル147から出力される。すると、このアドレス1476−aがフローアクションテーブル制御部42に入力され、アドレス1476−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「ECNプロキシ登録」を指示する情報が予め記載されたフローアクションエントリ1486が読み出される。すると、この「ECNプロキシ登録」を示す情報とパケットヘッダ情報1000がレジスタ29を経由して管理端末19に送信される。管理端末19では、送信されたパケットヘッダ情報1000を解析して、このパケットヘッダ情報1000に基づいたフローの条件をフロー検索テーブル147に帯域監視用フロー検索エントリとして設定することを指示する情報をレジスタ10経由でフロー検索テーブル制御部40に送信する。管理端末19では、送信されたパケットヘッダ情報1000を解析して、このパケットヘッダ情報1000に基づいたフローの条件をフロー検索テーブル147に、SYN−ACKパケット検出用フロー検索エントリ1471、 ACKパケット検出用フロー検索エントリ1472、DATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474として設定することを指示する情報をレジスタ29経由でフロー検索テーブル制御部40に送信する。
【0136】
そして、フロー検索テーブル制御部40からフロー検索テーブル147に対し、SYN−ACKパケット検出用フロー検索エントリ1471、 ACKパケット検出用フロー検索エントリ1472、DATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474、FINパケット検出用フロー検索エントリ1475の書き込み制御を行う。なお実際には、DATA(ECT)、DATA(CWR)は入力パケットのECNフィールド値によらずECN=01または10または11の3エントリを設定する。DATA(ECT)に対応するフローアクションエントリ1483も、ECN=01または10または11の3つのDATA(ECT)パケット検出用フロー検索エントリ1473に対応した3つのエントリから構成される。DATA(CWR)に対応するフローアクションエントリ1484も、ECN=01または10または11の3つのDATA(CWR)パケット検出用フロー検索エントリ1474に対応した3つのエントリから構成される。
【0137】
図30に示す通り、SYN−ACKパケット検出用フロー検索エントリ1471では、パケットヘッダ情報1000に基づいたフローの条件と、パケットヘッダ情報1000によらずACK=1、SYN=1、ECE=0、CWR=0かつFIN=0を設定する。ACKパケット検出用フロー検索エントリ1472では、パケットヘッダ情報1000に基づいたフローの条件と、パケットヘッダ情報1000によらずACK=1、SYN=0、ECE=0、CWR=0かつFIN=0を設定する。DATA(ECT)パケット検出用フロー検索エントリ1473では、パケットヘッダ情報1000に基づいたフローの条件と、パケットヘッダ情報1000によらずACK=0、SYN=0、ECE=0、CWR=0かつFIN=0と、パケットヘッダ情報1000によらずECN=01のエントリと、同じくECN=10のエントリと、同じくECN=11のエントリの3エントリを設定する。DATA(CWR)パケット検出用フロー検索エントリ1474では、パケットヘッダ情報1000に基づいたフローの条件と、パケットヘッダ情報1000によらずACK=0、SYN=0、ECE=0、CWR=1かつFIN=0と、パケットヘッダ情報1000によらずECN=01のエントリと、同じくECN=10のエントリと、同じくECN=11のエントリの3エントリを設定する。
【0138】
また、管理端末19では、フローアクションテーブル148のフローアクションエントリ1481に「ECEマーキング」を指示する情報を設定し、フローアクションエントリ1482に「輻輳時ECEマーキング」を指示する情報を設定し、フローアクションエントリ1483に「not−ECTマーキング」を指示する情報を設定し、フローアクションエントリ1484には「ECEマーキング停止¬−ECTマーキング」を指示する情報を設定することを指示する情報をレジスタ10経由でフローアクションテーブル制御部42に送信する。そして、フローアクションテーブル制御部42からフローアクションテーブル148に対し、フローアクションエントリ1481、フローアクションエントリ1482、フローアクションエントリ1483、フローアクションエントリ1484の書き込み制御を行う。
【0139】
次に、ACK=1かつSYN=1かつECE=0かつCWR=0かつFIN=0の、ECN非サポートのSYN−ACKパケットが本実施例4のパケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するSYN−ACKパケット検出用フロー検索エントリ1471のアドレス1471−aがフロー検索テーブル147から出力される。すると、このアドレス1471−aがフローアクションテーブル制御部142に入力され、アドレス1471−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「ECEマーキング」を指示する情報がフローアクションエントリ1481から読み出される。すると、この「ECEマーキング」を示す情報がパケット受信回路160のパケット受信バッファ制御部1600に送信され、当該パケットのパケットヘッダ情報1000をパケット受信バッファ1601から読み出し制御して、当該パケットのECE=1に書き換える。すると、本実施例のパケット中継装置にてECN非サポートのSYN−ACKパケットがECNサポートのECN−setup SYN−ACKパケット、つまりACK=1かつSYN=1かつECE=1かつCWR=0かつFIN=0のSYN−ACKに書き換えられて送信されることとなる。このECN−setup SYN−ACKパケットを送信端末が受信して、送信端末がACKパケットを受信端末に送信すると、ECNサポート通信に関するTCP 3way handshake処理が完了する。
【0140】
次に、ECNサポート通信が開始されると、ECN=01または10または11のDATA(ECT)パケットが本実施例のパケット中継装置に入力する。ACK=0かつSYN=0かつECE=0かつCWR=0かつFIN=0のDATA(ECT)が本実施例パケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するDATA(ECT)パケット検出用フロー検索エントリ1473のアドレス1473−aがフロー検索テーブル147から出力される。すると、このアドレス1473−aがフローアクションテーブル制御部142に入力され、アドレス1473−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「not−ECTマーキング」を指示する情報がフローアクションエントリ1483から読み出される。すると、この「not−ECTマーキング」を示す情報がパケット受信回路160のパケット受信バッファ制御部1600に送信され、当該パケットのパケットヘッダ情報1000をパケット受信バッファ1601から読み出し制御して、当該パケットのECN=00に書き換える。すると、本実施例のパケット中継装置にてECNサポートのDATA(ECT)パケットがECN非サポートのDATA(not−ECT)パケットに書き換えられて送信されることとなる。これにより、送信端末から送信されたECNサポートのデータパケットを、本実施例のパケット中継装置にて非ECNサポートのデータパケットに書き換えて、受信端末に対するECN通信を非ECN通信として隠蔽することができる。
【0141】
次に、本実施例のパケット中継装置にて書き換えられた非ECNサポートのデータパケットに対するACK=1かつSYN=0かつECE=0かつCWR=0かつFIN=0のACKパケットが本実施例のパケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するACKパケット検出用フロー検索エントリ1472のアドレス1472−aがフロー検索テーブル147から出力される。すると、このアドレス1472−aがフローアクションテーブル制御部142に入力され、アドレス1472−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「輻輳時ECEマーキング」を指示する情報がフローアクションエントリ1482から読み出される。すると、この「輻輳時ECEマーキング」を示す情報がパケット受信回路160のバッファ毎輻輳状態管理テーブル制御部1606に送信され、バッファ毎輻輳状態管理テーブル制御部1606によりバッファ毎輻輳状態管理テーブル1607の読み出し制御を行い、当該ACKパケットに対応するデータパケットが蓄積されているバッファの輻輳状態フラグを読み出す。この輻輳状態フラグが輻輳状態にあることを示す値であった場合には、パケット受信バッファ制御部1600によりパケット受信バッファ1601の当該ACKパケットのパケットヘッダ情報1000の読み出し制御を行い、当該ACKパケットのECEフラグを1に書き換える「輻輳時ECEマーキング」の処理を行う。
【0142】
次に、ECEマーキングされたACKパケットにより輻輳を検出して、送信端末1にて輻輳回避制御がなされたことを示すACK=0かつSYN=0かつECE=0かつCWR=1かつFIN=0のDATA(CWR)パケットが本実施例のパケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するDATA(CWR)パケット検出用フロー検索エントリ1474のアドレス1474−aがフロー検索テーブル147から出力される。すると、このアドレス1474−aがフローアクションテーブル制御部142に入力され、アドレス1474−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「ECEマーキング停止¬−ECTマーキング」を指示する情報がフローアクションエントリ1484から読み出される。すると、この「ECEマーキング停止」を示す情報がバッファ毎輻輳状態管理テーブル制御部1−15に送信され、バッファ毎輻輳状態管理テーブル制御部1606からバッファ毎輻輳状態管理テーブル1607の当該パケットが蓄積されるバッファに対する輻輳状態管理エントリの輻輳状態フラグの値を、輻輳状態に無いことを示す値に書き換える。これにより、これ以降本実施例のパケット中継装置に入力するACKパケットに対するECEマーキングの処理は停止する。また、「not−ECTマーキング」を示す情報がパケット受信回路160のパケット受信バッファ制御部1600に送信され、当該パケットのパケットヘッダ情報1000をパケット受信バッファ1601から読み出し制御して、当該パケットのECN=00に、CWR=0に書き換える。すると、本実施例のパケット中継装置にてECNサポートのDATA(CWR)パケットがECN非サポートのDATA(not−ECT)パケットに書き換えられて送信されることとなる。これにより、送信端末から送信されたECNサポートのDATA(CWR)パケットを、本実施例のパケット中継装置にて非ECNサポートのDATA(not−ECT)パケットに書き換えて、受信端末に対するECN通信を非ECN通信として隠蔽することができる。
【0143】
次に、通信終了を示すACK=0かつSYN=0かつECE=0かつCWR=0かつFIN=1のFINパケットが本実施例のパケット中継装置に入力すると、フロー検索部140のフロー検索テーブル制御部40からフロー検索テーブル147にパケットヘッダ情報1000を入力して検索起動制御がなされ、検索の結果、当該パケットのパケットヘッダ情報1000に一致するFINパケット検出用フロー検索エントリ1475のアドレス1475−aがフロー検索テーブル147から出力される。すると、このアドレス1475−aがフローアクションテーブル制御部142に入力され、アドレス1475−aを読み出しアドレスとしてフローアクションテーブル143を読み出し制御する。すると、「ECNプロキシ削除」を指示する情報がフローアクションエントリ1485から読み出される。すると、この「ECNプロキシ削除」を示す情報がフローアクションエントリ1482から読み出される。すると、フロー検索テーブル制御部40からフロー検索テーブル147において本FINパケット検出用フロー検索エントリ1475と、本エントリより上位にある4つのエントリとしてSYN−ACKパケット検出用フロー検索エントリ1471、ACKパケット検出用フロー検索エントリ1472、DATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474を削除する。また、フローアクションテーブル制御部142からフローアクションエントリ1481〜1485を削除する。これにより、ECN通信の完了後は当該フローに属するECNプロキシ関連フロー検索エントリとECNプロキシ関連フローアクションエントリを全て削除する。
以上に述べた本実施例のパケット中継装置における処理をフローチャートにまとめ、送信端末、受信端末とパケット中継装置間でなされる本実施例の通信の概要をシーケンス図にまとめて説明する。
【0144】
図32に本実施例のパケット中継装置における処理フローチャートを示す。
図32に示すフローチャートでは、受信端末がECN非サポートであることを前提とする。本実施例では、実施例1の
図23の処理フローに対し、ECN−setup SYNパケットが本実施例のパケット中継装置に入力すると、ECNプロキシ関連エントリ、つまりSYN−ACKパケット検出用フロー検索エントリ1471、ACKパケット検出用フロー検索エントリ1472、 DATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474、FINパケット検出用フロー検索エントリ1475を登録する処理が追加となる。また、FINパケットが本実施例のパケット中継装置に入力すると、ECNプロキシ関連エントリ、つまりSYN−ACKパケット検出用フロー検索エントリ1471、ACKパケット検出用フロー検索エントリ1472、 DATA(ECT)パケット検出用フロー検索エントリ1473、 DATA(CWR)パケット検出用フロー検索エントリ1474、FINパケット検出用フロー検索エントリ1475を削除する処理が追加となる。また、SYN−ACKパケットが本実施例のパケット中継装置に入力すると、当該パケットをECE=1のECN−setup SYN−ACKパケットに書き換えて送信する処理が追加となる。また、DATA(CWR)パケットが本実施例のパケット中継装置に入力すると、当該パケットをECN=00のECN非サポートパケットに書き換えて送信する処理が追加となる。また、その他のデータパケットが本実施例のパケット中継装置に入力すると、当該パケットをECN=00のECN非サポートパケットに書き換えて送信する処理が追加となる。
【0145】
最後に、
図33に、本実施例のパケット中継装置を用いた通信のシーケンス図を示す。本実施例のシーケンス図では、実施例1のシーケンス
図24に対し、3way−handshakeによるInitializeを含め、受信端末3におけるECNの手続きをパケット中継装置2で代行するECNプロキシの処理と、パケット中継装置2で、DATA(ECT)やDATA(CWR)をDATA(not−ECT)に書き換えて、受信端末3に対するECN通信を隠蔽する処理が追加となる。
【0146】
以上、本発明の種々の実施例の説明を行ったが、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0147】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、それぞれの機能を実現するプログラムを実行することで実現したが、これらの各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体におくことができるし、必要に応じてネットワーク等を介してダウンロード、インストロールすることも可能である。
【0148】
以上詳述したように、本明細書においては、特許請求の範囲に記載した発明以外に、種々の発明が開示されている。その一部を下記に適用例として列記する。
【0149】
[適用例1]
複数の入力回線と出力回線を備え、
入力回線から受信したパケットの入力物理回線番号、または入力論理回線番号、またはパケットヘッダ情報のうち少なくとも一つ以上の情報により識別されるパケットの集合から構成されるフローを検出し、
フローが輻輳状態にあるとパケット中継装置が判定すると、
それ以降にパケット中継装置が受信した当該フローに対する応答パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドを輻輳状態にあることを示す値に書き換えることを特徴とするパケット中継装置。
[適用例2]
適用例1のパケット中継装置において、
フロー毎の輻輳状態を記録するフロー毎の輻輳状態フラグから構成される輻輳状態管理テーブルを備え、
フローが輻輳状態にあるとパケット中継装置が判定すると、当該フローの輻輳状態フラグを輻輳状態にあることを示す値に書き換え、
フローが輻輳状態から解消したとパケット中継装置が判定すると、当該フローの輻輳状態フラグを非輻輳状態にあることを示す値に書き換え、
パケット中継装置が応答パケットを受信すると輻輳状態管理テーブルを参照して、応答パケットが属するフローの輻輳状態フラグに従って、
輻輳状態フラグが輻輳を示す場合には応答パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドの値を輻輳状態にあることを示す値に書き換え、
輻輳状態フラグが非輻輳状態を示す場合には応答パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドの値を非輻輳状態にあることを示す値に書き換えることを特徴とするパケット中継装置。
【0150】
[適用例3]
適用例2のパケット中継装置において、
受信したパケットのパケットヘッダ情報のうち、送信端末が輻輳回避制御を行ったことを示す情報が、輻輳回避を行ったことを示す値となっている場合に、フローが輻輳状態から解消したとパケット中継装置が判定することを特徴とするパケット中継装置。
【0151】
[適用例4]
適用例3のパケット中継装置において、
受信したTCPパケットのCWRフラグが1である場合に、フローが輻輳状態から解消したとパケット中継装置が判定することを特徴とするパケット中継装置。
【0152】
[適用例5]
適用例2から適用例4いずれか記載のパケット中継装置において、
フローが、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号の組み合わせが等しいTCPフローまたはDCCPフローまたはSCTPフロー、または送信元IPアドレス、宛先IPアドレスの組み合わせが等しいIPフロー、または同一VLANに属するVLANフロー、またはパケット中継装置の運用管理者が指定した任意のパケットヘッダ情報項目の組み合わせで定義されたフローであることを特徴とするパケット中継装置。
【0153】
[適用例6]
適用例2から適用例5いずれかに記載のパケット中継装置において、
フロー毎の輻輳状態フラグをパケット中継装置の運用管理者が指定した特定フローに対してのみ備えることを特徴とするパケット中継装置。
【0154】
[適用例7]
適用例1から適用例6いずれかに記載のパケット中継装置において、
応答パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドが、TCPパケットのECEフラグであることを特徴とするパケット中継装置。
【0155】
[適用例8]
適用例1から適用例7いずれかに記載のパケット中継装置において、
シェーパにおけるキュー長、またはポリサにおけるバケツ水量、またはバッファにおける蓄積パケット数が所定の閾値を超過すると、フローが輻輳状態にあると判定することを特徴とするパケット中継装置。
【0156】
[適用例9]
適用例1から適用例7いずれかに記載のパケット中継装置において、
受信パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドの値に基づいて、フローが輻輳状態にあると判定することを特徴とするパケット中継装置。
【0157】
[適用例10]
適用例9のパケット中継装置において、
受信パケットのパケットヘッダのうちネットワークの輻輳状態を示すフィールドが、IPパケットのECNフィールドであることを特徴とするパケット中継装置。
【0158】
[適用例11]
適用例1から適用例10のいずれかに記載のパケット中継装置において、
輻輳通知機能をサポートしない受信端末から送信された、送受信端末間で輻輳通知機能のサポート可否の情報を通知する制御パケットのパケットヘッダのうち、輻輳通知機能のサポート可否を示すフィールドの値を、輻輳通知機能の非サポートを示す値から輻輳通知機能のサポートを示す値に書き換えることを特徴とするパケット中継装置。
【0159】
[適用例12]
適用例11のパケット中継装置において、
ECNによる輻輳通知機能をサポートしない受信端末から送信された、ECNの初期化手順の3way handshake処理におけるECEフラグのセットされていないSYN−ACKパケットを、ECEフラグのセットされたSYN−ACKパケットに書き換えることを特徴とするパケット中継装置。