説明

パケット中継装置

【課題】ルータ等のパケット中継装置において、輻輳が発生する危険性を極めて少なくする。
【解決手段】パケット破棄検出部17は、出力ポート12-1〜12-k毎に、その出力ポートから出力されたパケットの破棄を検出する。振り分け処理部18は、パケット破棄検出部17の検出結果に基づいて出力ポート毎の輻輳度合いを算出し、輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを選択すると共に、その輻輳度合いに基づいて、パケットを第1、第2の出力ポートに振り分ける際の振り分け比率を算出する。パケット転送部13は、入力ポート11-1〜11-jから入力された、宛先が第1の出力ポートに対応するパケットを、振り分け処理部18で算出された振り分け比率に従って第1の出力ポートと第2の出力ポートとに振り分ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットを中継するルータ、L3(レイヤー3)スイッチ等のパケット中継装置に関する。
【背景技術】
【0002】
近年のデータ通信利用者の著しい増加に伴って、インターネット等のネットワークを流れるデータは急激に増加している。インターネットは、IP(Internet Protocol)により経路制御を行うネットワークであり、ネットワーク上には、パケットを中継するためのルータ等のパケット中継装置が多数存在する。
【0003】
パケット中継装置では、RIP(Routing Information Protocol)や、OSPF(Open Shortest Path First)などのルーティングプロトコルを使用して、相手IPアドレス毎にコストの和が最小となる最適経路を計算し、ルーティングテーブルに経路情報として記録する。パケット中継装置は、パケットを受信すると、その宛先IPアドレスに基づいてルーティングテーブルから経路情報を検索し、この経路情報によって特定される出力ポートからパケットを送出する。尚、ルーティングテーブルの内容は、定期的または経路情報に変更が発生した場合に更新される。
【0004】
上記したようなRIPやOSPFといった既存のルーティングプロトコルに依存したパケット中継装置が利用する経路は、最適経路として求めた唯一の経路であるため、その経路にトラヒックが集中した場合には、パケット中継装置に輻輳が発生し、パケットが破棄されてしまうという問題がある。また、パケットが破棄されると、再送処理が行われるため、遅延時間が増加してしまうという問題も発生する。
【0005】
そこで、このような問題点を解決するため、次のような技術が提案された(例えば、特許文献1参照)。特許文献1に記載されている技術では、先ず、隣接ルータ間のリンクのトラフィック量に基づいて上記リンクに輻輳が発生しているか否かを判定する。そして、輻輳が発生している場合には、上記リンクを含む輻輳部分を限定する。その後、上記輻輳部分を迂回する負荷分散経路を検索し、この検索した負荷分散経路と輻輳部分を含む元々の経路との両方の経路を用いてパケットをルーティングする。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−244196号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に記載されている技術によれば、負荷分散経路と元々の経路との2つ経路に負荷を分散させることができるので、輻輳が発生する危険性を少なくすることができる。しかし、特許文献1には、どのような比率で負荷分散経路と元々の経路とにパケットを振り分けるかについては全く記載されておらず、輻輳が発生する危険性を十分には少なくすることができないという問題があった。例えば、元々の経路のトラフィック量が非常に大きい場合に、負荷分散経路へのパケットの振り分け率が小さいと、輻輳状態が改善されないこともある。
【0008】
[発明の目的]
そこで、本発明の目的は、輻輳が発生する危険性を十分には少なくすることができないという課題を解決したパケット中継装置を提供することにある。
【課題を解決するための手段】
【0009】
本発明にかかる第1のパケット中継装置は、
パケットを入力する複数の入力ポートと、
パケットを出力する複数の出力ポートと、
前記出力ポート毎に、その出力ポートから出力されたパケットの破棄を検出するパケット破棄検出部と、
該パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出する振り分け処理部と、
前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分けるパケット転送部とを備える。
【0010】
本発明にかかるパケット中継方法は、
パケットを入力する複数の入力ポートと、パケットを出力する複数の出力ポートと、パケット転送部と、パケット破棄検出部と、振り分け処理部とを備えたコンピュータが実行するパケット中継方法であって、
前記パケット破棄検出部が、前記出力ポート毎に、その出力ポートから出力されたパケットの破棄を検出し、
前記振り分け処理部が、前記パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出し、
前記パケット転送部が、前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分ける。
【0011】
本発明にかかるプログラムは、
パケットを入力する複数の入力ポートと、パケットを出力する複数の出力ポートとを備えたコンピュータをパケット中継装置として機能させるためのプログラムであって、
前記コンピュータを、
該パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出する振り分け処理部、
前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分けるパケット転送部として機能させる。
【発明の効果】
【0012】
本発明によれば、輻輳が発生する危険性を十分に少なくすることができるという効果を得ることができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態にかかるルータの構成例を示すブロック図である。
【図2】ルーティング14の内容例を示す図である。
【図3】ヘッダ情報管理部15の処理例を示すフローチャートである。
【図4】パケット破棄検出部17の処理例を示すフローチャートである。
【図5】振り分け処理部18の処理例の一部を示すフローチャートである。
【図6】振り分け処理部18の処理例の残りの部分を示すフローチャートである。
【図7】パケット転送部13の処理例を示すフローチャートである。
【図8】パケット破棄検出部17の動作を説明するための図である。
【図9】輻輳が解消される様子を示した図である。
【図10】本発明の第2の実施の形態にかかるルータの構成例を示す図である。
【図11】ホップ数調査部19の処理例を示すフローチャートである。
【発明を実施するための形態】
【0014】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0015】
[本発明の第1の実施の形態]
図1を参照すると、本発明の第1の実施の形態にかかるルータ1は、複数の入力ポート11-1〜11-jと、複数の出力ポート12-1〜12-kと、パケット転送部13と、ルーティングテーブル14と、ヘッダ情報管理部15と、管理テーブル16と、パケット破棄検出部17と、振り分け処理部18とを備えている。
【0016】
入力ポート11-1〜11-jには、隣接ルータ(図示せず)からのパケットが入力される。出力ポート12-1〜12-kからは、隣接ルータへのパケットが出力される。
【0017】
ルーティングテーブル14には、図2に示すように、パケットの宛先(IPアドレス)に関連付けて、該当するパケットの出力先にする本来の出力ポートのポート番号(通常時)が記録されている。更に、本実施の形態のルーティングテーブル14は、パケットを元々の出力ポート以外の出力ポートにも振り分ける際に出力先にする出力ポートのポート番号(振り分け時)と、振り分け比率とが記録できるようになっている。振り分け比率は、通常時に出力先にしている元々の出力ポートと、振り分け時に出力先にする出力ポートとへ、どのような比率でパケットを振り分けるのかを示すものである。図2の例は、宛先がA1のパケットは、出力ポート番号P12-1の出力ポートへ出力され、宛先がA2のパケットは、出力ポート番号がP12-2, P12-kの出力ポートに、X:Yの比率で振り分けられることを示している。
【0018】
パケット転送部13は、入力ポート11-1〜11-jから入力されたパケットの出力先にする出力ポートを、パケットの宛先とルーティングテーブル14の内容とに基づいて決定し、その出力ポートへパケットを出力する。
【0019】
ヘッダ情報管理部15は、出力ポート12-1〜12-kに対応する送出パケット数カウンタ15-1〜15-kを備えており、入力ポート11-1〜11-jを介してパケットが入力されると、ルーティングテーブル14を参照してパケットの出力先にする出力ポートを求め、その出力ポートに対応する送出パケット数カウンタのカウント値をインクリメント(本実施の形態では+1)する。更に、ヘッダ情報管理部15は、入力されたパケットのIPヘッダ内のプロトコルフィールドがTCP(Transmission Control Protocol)であれば、そのパケットのヘッダ情報を管理テーブル16に記録すると共に、上記パケットをパケット破棄検出部17に渡す。尚、入力されたパケットが、コネクションで最初のパケットである場合には、そのヘッダ情報を管理テーブル16に記録する処理を行うだけで、パケットをパケット破棄検出部17に渡す処理は行わない。また、入力されたパケットがコネクションの切断を指示すものである場合は、上記コネクションに関連するヘッダ情報(宛先IPアドレス、宛先ポート番号、送信元IPアドレス及び送信元ポート番号が上記パケットと同じヘッダ情報と、宛先IPアドレス、宛先ポート番号、送信元IPアドレス及び送信元ポート番号が上記パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス及び宛先ポート番号に入れ替わっているヘッダ情報)を管理テーブル16から削除する。
【0020】
パケット破棄検出部17は、出力ポート12-1〜12-kに対応する破棄検出カウンタ17-1〜17-kを備えている。そして、ヘッダ情報管理部15からパケットが渡されると、そのパケットと、管理テーブル16に記録されているヘッダ情報とに基づいて自ルータ1から出力したパケットがネットワーク上で破棄されたか否かを判定する。そして、破棄されたと判定した場合は、ヘッダ情報管理部15から渡されたパケットと、ルーティングテーブル14の内容とに基づいて、破棄されたパケットを出力した出力ポートを求め、その出力ポートに対応する破棄検出カウンタのカウント値をインクリメントする。
【0021】
振り分け処理部18は、下記(A)〜(F)の機能を有する。
【0022】
(A)出力ポート12-1〜12-kそれぞれの輻輳度合いを算出する機能。本実施の形態では、一定時間の間に出力ポート12-a(1≦a≦k)から出力されたパケットの総数に対する、上記一定時間の間に出力ポート12-aから出力されて破棄されたパケットの割り合いを示すパケット破棄検出率を出力ポート12-aの輻輳度合いとする。ここで、出力ポート12-aから出力されたパケットの総数をT、破棄されたパケット数をNとすると、パケット破棄検出率Paは、次式(a)に示すものとなる。
【0023】
Pa=Na/Ta ……(1)
【0024】
なお、輻輳度合いはこれに限られるものではなく、一定時間の間に破棄されたパケットの数などを使用することもできる。また、一定時間の間に出力ポート12-aから出力されたパケットの総数および破棄されたパケットの数は、それぞれ送出パケット数カウンタ15-aおよび破棄検出カウンタ17-aを参照することにより求めることができる。
【0025】
(B) 出力ポート12-1〜12-k毎に、そのパケット破棄検出率が予め定められている第1の閾値Th1を超えているか否かを判定する機能。
【0026】
(C)パケット破棄検出率が閾値Th1を超えている出力ポート12-aについては、他の出力ポートの中からパケットの振り分け先にする出力ポート12-b(1≦b≦k)を選択する機能。本実施の形態では、パケット破棄検出率が最も小さい出力ポートを振り分け先の出力ポートとして選択する。
【0027】
(D)宛先が上記出力ポート12-aに対応するパケットを、上記出力ポート12-aと上記出力ポート12-bとに振り分ける際の振り分け比率を算出する機能。本実施の形態では、出力ポート12-a、12-bの重みA, Bをそれぞれ式(2)、(3)により算出し、A:Bを振り分け比率とする。
【0028】
A=1−Pa ……(2)
B=Pa ……(3)
なお、Paは前述したように、出力ポート12-aのパケット破棄検出率である。
【0029】
(E)振り分け先の出力ポート12-bのポート番号と、パケットの振り分け比率A:Bとを、出力ポート12-aと対応する宛先に関連付けてルーティングテーブル14に記録する機能。
【0030】
(F)出力ポート12-1〜12-k毎に、そのパケット破棄検出率が予め定められている第2の閾値Th2未満であるか否かを判定し、閾値Th2未満の出力ポートについては、ルーティングテーブル14に振り分け先の出力ポートのポート番号が設定されているか否かを判定し、設定されている場合には、ルーティングテーブル16から振り分け先の出力ポートのポート番号およびパケットの振り分け比率を削除する機能。なお、第1、第2の閾値Th1,Th2は、Th1>Th2の関係を有している。
【0031】
パケット転送部13、ヘッダ情報管理部15、パケット破棄検出部17、及び、振り分け処理部18はCPU(中央処理装置)により実現可能であり、その場合には例えば次のようにする。CPUをパケット転送部13、ヘッダ情報管理部15、パケット破棄検出部17、及び、振り分け処理部18として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、CPUに上記プログラムを読み取らせる。CPUは、読み取ったプログラムに従って自身の動作を制御することにより、自CPU上にパケット転送部13、ヘッダ情報管理部15、パケット破棄検出部17、及び、振り分け処理部18を実現する。
【0032】
次に、本実施の形態の動作について詳細に説明する。
【0033】
入力ポート11-1〜11-jから入力されたパケットは、パケット転送部13およびヘッダ情報管理部15に渡される。
【0034】
これにより、パケット転送部13は、渡されたパケットの宛先と、ルーティングテーブル14の内容とに基づいて、パケットの出力先にする出力ポートを決定し、決定した出力ポートからパケットを出力する。このパケットは、隣接ルータとの間の経路を介して隣接ルータへ転送される。
【0035】
一方、ヘッダ情報管理部15は、パケットが渡されると、出力ポート12-1〜12-k毎の送出パケット数カウンタ15-1〜15-kの内の、上記パケットの出力先になる出力ポートと対応するカウンタのカウント値をインクリメントする(図3のステップS31)。なお、パケットの出力先となる出力ポートは、ルーティングテーブル14から検索できる。
【0036】
その後、ヘッダ情報管理部15は、パケットのIPヘッダ内のプロトコルフィールドの内容がTCPになっているか否かを判定する(ステップS32)。そして、プロトコルフィールドの内容がUDP(User datagram Protocol)など、TCP以外のものであった場合(ステップS32がNO)は、パケットを破棄する(ステップS33)。
【0037】
これに対して、プロトコルフィールドの内容がTCPである場合(ステップS32がYES)は、現在処理対象にしているパケットと同一コネクションのパケットのヘッダ情報が管理テーブル16に記録されているか否かを判定する(ステップS34)。この判定は、宛先IPアドレス、宛先ポート番号、送信元IPアドレス、及び、送信元ポート番号が、現在処理対象にしているパケットと同一のヘッダ情報、または、宛先IPアドレス、宛先ポート番号、送信元IPアドレス、及び、送信元ポート番号が上記パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び、宛先ポート番号に入れ替わっているヘッダ情報が記録されているか否かを判定することにより行う。
【0038】
ここで、プロトコルフィールドがTCPになっているパケットのヘッダ情報だけを管理テーブル16に記録しているのは、後述するように、本実施の形態では、パケットの破棄をTCPによる再送パケット及び確認応答パケット(ACKパケット)に基づいて検出するようにしているからである。
【0039】
そして、現在処理対象にしているパケットとコネクションが同一のヘッダ情報が管理テーブル16に記録されていない場合(ステップS34がNO)は、上記パケットのヘッダ情報を管理テーブル16に記録すると共に、ヘッダ情報に関連付けてACK到着フラグを記録する(ステップS35)。ACK到着フラグは、上記ヘッダ情報を含んだパケットに対するACKパケットが到着しているか否かを示すものであり、初期状態では、ACK到着フラグは“0”となっている。即ち、初期状態においては、ACK到着フラグは、ACKパケットが到着していないことを表示している。
【0040】
これに対して、コネクションが同一のヘッダ情報が管理テーブル16に記録されている場合(ステップS34がYES)は、パケットのヘッダ情報およびACK到着フラグを管理テーブル16に記録すると共に、上記パケットをパケット破棄検出部17に渡す(ステップS36,37)。
【0041】
パケット破棄検出部17は、ヘッダ情報管理部15からパケットが渡されると、そのヘッダ部にACKフラグが立っているか否か、即ちACKフラグが“1”になっているか否かを判定する(図4のステップS41)。
【0042】
そして、ACKフラグが“0”の場合(ステップS41がNOの場合)は、処理対象にしているパケットが送信側から再送されたパケットであるか否かを判定する(ステップS42)。この判定は、現在処理対象にパケットと同一コネクションのヘッダ情報であって、確認応答番号およびシーケンス番号が上記パケットと同一のヘッダ情報が管理テーブル16に記録されているか否かに基づいて行う。
【0043】
そして、処理対象にしているパケットが再送パケットでない場合(ステップS42がNO)は、パケット破棄検出部17は、その処理を終了する。これに対して、処理対象にしているパケットが再送パケットである場合(ステップS42がYES)は、パケットが破棄されたものと判定し、出力ポート12-1〜12-k毎に設けられている破棄検出カウンタ17-1〜17-kの内の、上記パケットの出力先となる出力ポートに対応する破棄検出カウンタをインクリメントする(ステップS43)。今、例えば、図8(A)に示すように、送信側ノードから受信側ノードに対してパケットP1を送信したが、ルータR2でパケットP1が破棄されたとすると、送信側ノードはACKパケットが戻ってこないので、パケットP1を再送することになる。このような場合、ルータR3~R5内のパケット破棄検出部17では、ステップS42の判定結果がYESとなり、パケットP1が破棄されたと判定される。
【0044】
また、ヘッダ情報管理部15から渡されたパケットにACKフラグが立っている場合、即ち、ヘッダ情報管理部15から渡されたパケットがACKパケットである場合(ステップS41がYES)は、管理テーブル16に記録されているACK到着フラグの内の、上記ACKパケットによって正常受信を知らせようとしているパケットのヘッダ情報と関連付けられているACK到着フラグが“1”になっているか否かを判定する(ステップS44)。なお、上記ACK到着フラグが関連付けられているヘッダ情報は、上記ACKパケットと同一コネクションのパケットのヘッダ情報の内の、確認応答番号が上記ACKパケット中のシーケンス番号と一致するヘッダ情報である。
【0045】
そして、ACK到着フラグが“0”の場合(ステップS44がNO)は、受信側ノードにおいて、パケットが正常に受信され、ACKパケットが返されたことになるので、ACK到着フラグを“1”に変更する(ステップS46)。
【0046】
これに対して、ACK到着フラグが“1”の場合(ステップS44がYES)は、パケットが破棄されたと判定し、出力ポート12-1〜12-k毎の破棄検出カウンタ17-1〜17-kの内の、ACKパケットによって正常受信を通知しようとしたパケットを出力した出力ポートに対応する破棄検出カウンタをインクリメントする(ステップS45)。今、例えば図8(B)に示すように、送信側ノードから受信側ノードに対してパケットP1〜P4が連続して送信され、パケットP2がルータR2において破棄されたとする。TCPが適用されている受信側ノードでは、パケットP1を受信することにより、パケットP1に対するACKパケットACK1を送信側ノードへ返す。その後、受信側ノードは、パケットP2がルータR2で破棄されているので、パケットP3を受信する。TCPが適用されている受信側ノードでは、パケットの受信時、受信に成功した最後のパケットに対するACKパケットを送信側ノードに送信する。この例の場合、受信に成功した最後のパケットは、パケットP1であるので、受信側ノードは、パケットP3, P4の受信時にも、パケットP1の受信時に送信したACKパケットACK1を送信側ノードに返す。このような場合、ルータR3〜R5内のパケット破棄検出部17では、ステップS44の判定結果がYESとなり、パケットが破棄されたと判定する。
【0047】
次に、図5、図6のフローチャートを参照して振り分け処理部18の処理を説明する。振り分け処理部18は、一定時間毎に、図5、図6のフローチャートに示す処理を実行する。
【0048】
先ず、振り分け処理部18は、出力ポート12-1〜12-kの内の1つに注目し、注目している出力ポート(例えば、出力ポート12-a)のパケット破棄検出率Paを算出する(ステップS51,S53)。具体的には、出力ポート12-aに対応する送出パケット数カウンタ15-aのカウント値Taと、破棄検出カウンタ17-aのカウント値Naとを入力し、前出の式(1)に示す演算を行うことにより、出力ポート12-aのパケット破棄検出率Pa=Na/Taを算出する。その後、振り分け処理部18は、次の出力ポートに注目し、前述した処理と同様の処理を行う。
【0049】
全ての出力ポート12-1〜12-kに対して前述した処理と同様の処理を行うと(ステップS52がYES)、振り分け処理部18は、再び出力ポート12-1〜12-kの内の1つに注目し、注目している出力ポート(例えば、出力ポート12-a)のパケット破棄検出率Paが予め定められている第1の閾値Th1を超えているか否かを判定する(ステップS54,S56)。
【0050】
そして、パケット破棄検出率Paが第1の閾値Th1を超えている場合(ステップS56がYES)は、他の出力ポート(出力ポート12-a以外の出力ポート)の中からパケットの振り分け先にする出力ポート12-bを1つ選択する(ステップS57)。本実施の形態では、出力ポート12-a以外の出力ポートの中から、パケット破棄検出率が最も小さな出力ポートを振り分け先の出力ポート12-bとして選択する。
【0051】
その後、振り分け処理部18は、宛先が出力ポート12-aに対応するパケットを、出力ポート12-aと振り分け先の出力ポート12-bとに振り分ける際の振り分け比率を算出する(ステップS58)。具体的には、前出の式(2)、(3)に示した演算を行うことにより、出力ポート12-a,12-bに対する重みA=1−Pa、B=Paを算出し、A:B=(1−Pa):Paをパケットの振り分け比率とする。
【0052】
次に、振り分け処理部18は、本来なら出力ポート12-aを出力先にするパケットが、出力ポート12-bへも振り分けられるようにするため、ルーティングテーブル16の内容を更新する(ステップS59)。具体的には、ルーティングテーブル14に記録されている宛先(IPアドレス)の内の、通常時の出力先が出力ポート12-aとなっている宛先に関連付けて、出力ポート12-bのポート番号と、パケットの振り分け比率(1−Pa):Paを記録する。このように、ルーティングテーブル14に振り分け先の出力ポート12-bのポート番号と、振り分け比率(1−Pa):Paとを記録することにより、通常は出力ポート12-aに振り分けられるパケットの一部が、出力ポート12-bに振り分けられることになる。ここで、出力ポート12-aのパケット破棄検出率Paが大きくなるほど、出力ポート12-aに振り分けられるパケットの割合を少なくすることができるので、ルータ1が配置されているネットワークにおいて輻輳が発生する危険性を極めて少なくすることができる。
【0053】
その後、振り分け処理部18は、次の出力ポートに注目し(ステップS54)、前述した処理と同様の処理を行う。
【0054】
ステップS56において、出力ポート12-aのパケット破棄検出率Paが第1の閾値Th1を超えていると判定された場合が上述した処理が行われる。これに対して、ステップS56において、パケット破棄検出率Paが閾値Th1以下であると判定された場合(ステップS56がNO)は、次のような処理が行われる。
【0055】
振り分け処理部18は、ステップS56において、出力ポート12-aのパケット破棄検出率Paが閾値Th1以下であると判定すると、図6のフローチャートに示すように、パケット破棄検出率Paが第2の閾値Th2未満か否かを判定する(ステップS62)。
【0056】
そして、出力ポート12-aのパケット破棄検出率Paが第2の閾値Th2以上である場合(ステップS62がNO)は、図5のステップS54の処理に戻り、次の出力ポートを注目する。これに対して、パケット破棄検出率Paが第2の閾値Th2未満である場合(ステップS62がYES)は、ルーティングテーブル14を参照し、出力ポート12-aのポート番号(通常時)に関連付けて、振り分け先の出力ポートのポート番号および振り分け率が記録されているか否かを判定する(ステップS63)。
【0057】
そして、記録されていない場合は、図5のステップS54の処理に戻り、次の出力ポートに注目する。これに対して、記録されている場合は、出力ポート12-bのポート番号および振り分け比率をルーティングテーブル14から削除する(ステップS64)。これにより、出力ポート12-bへはパケットが振り分けられなくなり、通常時に使用する本来の出力ポート12-aのみにパケットが振り分けられるようになる。その後、振り分け処理部18は、図5のステップS54の処理に戻り、次の出力ポートに注目する。
【0058】
上述した処理を繰り返し行い、未注目の出力ポートがなくなると(図5のステップS55がYES)と、振り分け処理部18は、図6のフローチャートに示すように、送出パケット数カウンタ15-1〜15-kおよびパケット破棄検出カウンタ17-1〜17-kをクリアし(ステップS61)、その処理を終了する。
【0059】
次に、図7のフローチャートを参照してパケット転送部13の動作を説明する。
【0060】
パケット転送部13は、入力ポート11-1〜11-jを介してパケットが入力されると、先ず、パケットから宛先(IPアドレス)を抽出する(ステップS71)。その後、パケット転送部13は、ステップS71で抽出した宛先をキーにしてルーティングテーブル14を検索する(ステップS72)。
【0061】
そして、検索結果が通常時にパケットの出力先にする本来の出力ポートのポート番号だけである場合(ステップS73がNO)は、上記本来の出力ポートにパケットを出力する(ステップS74)。
【0062】
これに対して、検索結果に、本来の出力ポートのポート番号に加え、振り分け先の出力ポートのポート番号および振り分け比率も含まれている場合(ステップS73がYES)は、本来の出力ポートと振り分け先の出力ポートとの内の、どちらをパケットの出力先にするかを決定する(ステップS75)。パケットの出力先の決定方法としては、種々の方法を採用することができ、例えば、次のような方法を採用することができる。パケットの振り分けを開始してから現時点までに、本来の出力ポートに出力したパケット数、および、振り分け先の出力ポートに出力したパケット数をカウントする第1及び第2のカウンタを用意する。パケットの出力先を決定する際には、上記第1、第2のカウンタのカウント値に基づいて、どちらの出力ポートにパケットを出力した方が、実際のパケットの振り分け比率が、ルーティングテーブル14に設定されている振り分け比率に近くなるか判定し、近くなると判定した方の出力ポートをパケットの出力先に決定する。その後、パケット転送部13は、通常時に使用する出力ポートと振り分け先の出力ポートとの内の、ステップS75で出力先に決定された出力ポートにパケットを出力する(ステップS76)。
【0063】
例えば、ルーティングテーブル14の内容が図2に示すものであり、パケットの宛先が「A1」である場合には、出力ポート12-1のみにパケットが出力される。これに対して、パケットの宛先が「A2」の場合は、通常時に使用される出力ポート12-2と振り分け先の出力ポート12-kとに、X:Yの比率でパケットが出力される。
【0064】
図9は、トラフィックの集中が解消される様子を示した図である。尚、図9に示したルータR1〜R6は、図1に構成を有するものである。
【0065】
図9(A)に示すように、ルータR3にトラフィックが集中すると、同図(B)に示すように、ルータR3に輻輳が発生する。その後、同図(C)に示すように、ルータR1がパケットをルータR2に向けて出力する。このパケットは、輻輳が発生しているルータR3において破棄される。その後、ルータR1内のパケット破棄検出部17は、同図(D)に示すように、パケットが破棄されたことを検出する。そして、ルータR2へパケットを送信するための出力ポートのパケット破棄検出率が前述した第1の閾値Th1を超えている場合は、ルータR1内の振り分け処理部18がルーティングテーブル14の内容を変更し、同図(E)に示すように、元々使用していた出力ポートと振り分け先の出力ポートとにパケットを振り分けて出力する。
【0066】
[第1の実施の形態の効果]
本実施の形態によれば、輻輳が発生する危険性を十分に少なくすることができるという効果を得ることができる。その理由は、パケット破棄検出率(輻輳度合い)が第1の閾値Th1を上回る出力ポート12-aのパケット破棄検出率に基づいて、宛先が出力ポート12-aに対応するパケットを、上記出力ポート12-aと振り分け先の出力ポート12-bとに振り分ける際の振り分け比率を算出する振り分け処理部18を備えているからである。
【0067】
また、本実施の形態では、輻輳度合いが最も少ない出力ポートを振り分け先の出力ポートとしているので、振り分け先の出力ポートの輻輳度合いが大きくなり、輻輳が発生する危険性を少なくすることができる。
【0068】
[本発明の第2の実施の形態]
次に、本発明にかかるルータの第2の実施の形態について説明する。本実施の形態は、通常時に使用される本来の出力ポートと、振り分け先の出力ポートとにパケットを振り分ける際の振り分け比率を、パケットの破棄を検出した出力ポートのパケット破棄検出率だけでなく、パケットの破棄を検出したルータからパケットを破棄したルータまでのホップ数も考慮して決定するようにしたことを特徴とする。
【0069】
図10を参照すると、本実施の形態にかかるルータ1aは、パケット破棄検出部17の代わりにパケット破棄検出部17aを備えている点、振り分け処理部18の代わりに振り分け処理部18aを備えている点、ホップ数調査部19が追加されている点、及び、ホップ数記憶部20が追加されている点で図1に示したルータ1と相違している。
【0070】
パケット破棄検出部17aは、自ルータ1aから出力したパケットが破棄されたことを検出した場合、ホップ数調査部19に対して、自ルータ1aからパケットを破棄したルータまでのホップ数を調査することを指示する機能を有する。より具体的には、図4のステップS43でパケットが破棄されたことを検出した場合は、ヘッダ情報管理部15から渡されたパケット(再送パケット)から宛先を抽出し、抽出した宛先を宛先として含んだホップ数調査指示をホップ数調査部19に渡す。また、ステップS45でパケットが破棄されたことを検出した場合は、ヘッダ情報管理部15から渡されたパケット(ACKパケット)から送信元を抽出し、抽出した送信元を宛先として含んだホップ数調査指示をホップ数調査部19に渡す。
【0071】
ホップ数調査部19は、パケット破棄検出部17aから宛先を含んだホップ数調査指示が渡されると、自ルータ1aからパケットを破棄したルータまでのホップ数を調査するため、宛先を上記パケット破棄検出部17aから渡された宛先とし、送信元を自ルータ1aのIPアドレスとしたホップ数調査用パケットを、そのTTL(Time to Live)を1,2,3・・・と1つずつ増やしながら、パケット転送部13を介してネットワークへ送出し、そのパケットに対する確認応答パケットがあるか否かを確認する。そして、確認応答パケットがなくなったTTLの値を、自ルータ1aからパケットを破棄したルータまでのホップ数と認識し、そのホップ数と、上記ホップ数調査用パケットの宛先に対応した出力ポートのポート番号と関連付けてホップ数記憶部20に記録する。
【0072】
また、ホップ数調査部19は、ホップ数調査用パケットをパケット転送部13を介して受信した場合、TLLが「1」であれば、それに対する確認応答パケットをパケット転送部13を介してホップ数調査用パケットの送信元に返信する。
【0073】
パケット転送部13は、ホップ数調査部19から渡されたホップ数調査用パケットを、出力ポート12-1〜12-kの内の、上記ホップ数調査用パケットの宛先に対応した出力ポートから出力する。また、パケット転送部13は、ホップ数調査用パケットに対する確認応答パケットを受信した場合には、それをホップ数調査部19に渡す。
【0074】
振り分け処理部18aは、パケット破棄検出率が第1の閾値Th1を超えている出力ポートに対する重みAと、パケットの振り分け先とする出力ポートに対する重みとを式(4)、(5)により算出し、A:Bを上記2つの出力ポートへのパケットの振り分け比率とする。
【0075】
A=1−(Pa+1/M) ……(4)
B=Pa+1/M ……(5)
尚、式(4)、(5)において、Mは、自ルータ1aからパケットを破棄したルータまでのホップ数、Paはパケット破棄検出率である。
【0076】
ここで、自ルータからパケットを破棄したルータまでのホップ数が少ないほど、自ルータから出力したパケットが破棄される危険性が高くなる。そこで、本実施の形態では、パケット破棄検出率が閾値Th1を超える出力ポートとパケットの振り分け先にする出力ポートへのパケットの振り分け比率を上記式(4)、(5)に示すものとし、パケットを破棄したルータまでのホップ数が少ない場合ほど、パケット破棄検出率が閾値Th1を超える出力ポートに振り分けるパケット数を少なくしているので、輻輳が発生する危険を第1の実施の形態よりも更に少なくすることができる。
【0077】
次に、本実施の形態の動作について説明する。ここでは、第1の実施の形態との相違部分について説明する。
【0078】
パケット破棄検出部17aは、図4のステップS43でパケットが破棄されたと判定した場合は、第1の実施の形態のパケット破棄検出部17が行う処理に加え、ヘッダ情報管理部15から渡されたパケット(再送パケット)から宛先を抽出し、抽出した宛先を宛先として含んだホップ数調査指示をホップ数調査部19に渡す。また、ステップS45でパケットが破棄されたと判定した場合は、第1の実施の形態のパケット破棄検出部17が行う処理に加え、ヘッダ情報管理部15から渡されたパケット(ACKパケット)から送信元を抽出し、抽出した送信元を宛先として含んだホップ数調査指示をホップ数調査部19に渡す。
【0079】
ホップ数調査部19は、パケット破棄検出部17aから宛先を含んだホップ数調査指示が渡されると、TLLを「1」、宛先をホップ数調査指示中の宛先、送信元を自ルータ1aのIPアドレスとしたホップ数調査用パケットを作成し、それをパケット転送部13に渡す(図11のステップS111、S112)。その後、ホップ数調査部19は、確認応答パケットの受信待ち状態になる。一方、ホップ数調査部19からホップ数調査用パケットを渡されたパケット転送部13は、ルーティングテーブル14を参照し、ホップ数調査用パケットを該当する出力ポートから出力する。
【0080】
ルータ1aから出力されたホップ数調査用パケットは、隣接ルータで受信される。隣接ルータ内のパケット転送部13は、受信したホップ数調査用パケットをホップ数調査部19に渡すと共に、ルーティングテーブル14を参照し、該当する出力ポートを介して隣接ノードに送信する。尚、ホップ数調査用パケットを出力する際にはそのTTLを−1してから出力する。また、−1したことにより、TTLが「0」になった場合には、ホップ数調査用パケットを出力ポートから出力することなく、破棄する。また、パケット転送部13からホップ数調査用パケットを渡されたホップ数調査部19は、そのTTLが「1」であれば、確認応答パケットをパケット転送部13に渡し、ホップ数調査用パケットの送信元のルータ1aへ返信する。尚、ホップ数調査用パケットを受信したノードが、ルータ1aからのパケットを破棄した輻輳しているノードである場合は、ホップ数調査用パケットが破棄され、確認応答パケットがルータ1aに返送されない可能性が高い。
【0081】
一方、ホップ数調査用パケットの送信元ルータ1a内のパケット転送部13は、ホップ数調査用パケットに対する確認応答パケットを受信すると、それをホップ数調査部19に渡す。確認応答パケットの受信待ち状態にあるホップ数調査部19は、ホップ数調査用パケットを送信してから一定時間内に確認応答パケットを受信した場合(図11のステップS113がYES)は、TTLをインクリメントしたホップ数調査用パケットを作成し、パケット転送手段13に渡す(ステップS116、S112)。
【0082】
これに対して、一定時間が経過しても確認応答パケットを受信できなかった場合(ステップS114がYES)は、現時点のTTLの値を、自ルータ1aからパケットを破棄したルータまでのホップ数と認識し、そのホップ数とホップ数調査用パケットを出力した出力ポートのポート番号とを関連付けてホップ数記憶部20に記録する(ステップS115)。
【0083】
次に、振り分け処理部18aの動作を説明する。図1に示した第1の実施の形態の振り分け処理部18との相違点は、図5のステップS58の処理だけであるので、以下では、この点についてだけ説明する。
【0084】
本実施の形態では、振り分け処理部18aは、ステップS58において、前出した式(4)、(5)に示す演算を行うことにより、パケット破棄検出率が閾値Th1を超えた出力ポート12-aと、パケットの振り分け先にする出力ポート12-bとの重みA,Bを算出し、A:Bを振り分け比率とする。その他の動作は、図1に示した振り分け処理部18aと同じである。
【0085】
[第2の実施の形態の効果]
本実施の形態によれば、第1の実施の形態よりも更に輻輳が発生する危険性を少なくすることができる。その理由は、パケット破棄検出率が第1の閾値Th1を超える出力ポート12-aと振り分け先の出力ポート12-bへパケットを振り分ける際の振り分け比率を算出する際、自ルータ1aからパケットを破棄したルータまでのホップ数も考慮して振り分け比率を算出する振り分け処理部18aを備えているからである。
【産業上の利用可能性】
【0086】
本発明は、ルータ、L3スイッチなどのパケット中継装置に利用可能である。
【符号の説明】
【0087】
1, 1a ルータ
11-1〜11-j 入力ポート
12-1〜12-k 出力ポート
13 パケット転送部
14 ルーティングテーブル
15 ヘッダ情報管理部
15-1〜15-k 送出パケット数カウンタ
16 管理テーブル
17,17a パケット破棄検出部
17-1〜17-k パケット破棄検出カウンタ
18, 18a 振り分け処理部
19 ホップ数調査部
20 ホップ数記憶部

【特許請求の範囲】
【請求項1】
パケットを入力する複数の入力ポートと、
パケットを出力する複数の出力ポートと、
前記出力ポート毎に、その出力ポートから出力されたパケットの破棄を検出するパケット破棄検出部と、
該パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出する振り分け処理部と、
前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分けるパケット転送部とを備えたことを特徴とするパケット中継装置。
【請求項2】
請求項1記載のパケット中継装置において、
前記出力ポートの輻輳度合いは、一定時間の間に前記出力ポートから出力されたパケットの総数と、前記一定時間の間に前記出力ポートから出力されて破棄されたパケットの数との比率を示すパケット破棄検出率であることを特徴とするパケット中継装置。
【請求項3】
請求項1または2記載のパケット中継装置において、
前記振り分け処理部は、前記第2の出力ポートを選択する際、前記複数の出力ポートの内の、最も輻輳度合いが少ない出力ポートを選択することを特徴とするパケット中継装置。
【請求項4】
請求項1,2または3記載のパケット中継装置において、
前記振り分け処理部は、前記振り分け比率を算出する際、前記第1の出力ポートの輻輳度合いと、自装置からパケットを破棄したパケット中継装置までのホップ数とに基づいて振り分け比率を算出することを特徴とするパケット中継装置。
【請求項5】
請求項4記載のパケット中継装置において、
前記振り分け比率は、前記第1の出力ポートの輻輳度合いが大きいほど、前記第1の出力ポートへ振り分けられるパケット数を少なくし、自装置からパケットを破棄したパケット中継装置までのホップ数が小さいほど、前記第1の出力ポートへ振り分けられるパケット数を少なくするものであることを特徴とするパケット中継装置。
【請求項6】
請求項1乃至5の何れか1項に記載のパケット中継装置において、
前記パケット破棄検出部は、同一コネクションにおいて再送されたパケットを検出した場合は、前記再送されたパケットの宛先に対応する出力ポートから出力されたパケットが破棄されたと判定し、同一コネクションにおいて同一パケットに対するACK応答を複数検出した場合は、前記ACK応答の送信元に対応する出力ポートから出力されたパケットが破棄されたと判定することを特徴とするパケット中継装置。
【請求項7】
パケットを入力する複数の入力ポートと、パケットを出力する複数の出力ポートと、パケット転送部と、パケット破棄検出部と、振り分け処理部とを備えたコンピュータが実行するパケット中継方法であって、
前記パケット破棄検出部が、前記出力ポート毎に、その出力ポートから出力されたパケットの破棄を検出し、
前記振り分け処理部が、前記パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出し、
前記パケット転送部が、前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分けることを特徴とするパケット中継方法。
【請求項8】
パケットを入力する複数の入力ポートと、パケットを出力する複数の出力ポートとを備えたコンピュータをパケット中継装置として機能させるためのプログラムであって、
前記コンピュータを、
該パケット破棄検出部の検出結果に基づいて前記出力ポート毎の輻輳度合いを算出し、該算出した輻輳度合いが閾値を超える第1の出力ポートについては、パケットの振り分け先にする第2の出力ポートを前記複数の出力ポートの中から選択すると共に、前記第1の出力ポートの輻輳度合いに基づいて、宛先が前記第1の出力ポートに対応するパケットを前記第1の出力ポートと前記第2の出力ポートとに振り分ける際の振り分け比率を算出する振り分け処理部、
前記入力ポートから入力された宛先が前記第1の出力ポートに対応するパケットを、前記振り分け処理部で算出された振り分け比率に従って前記第1の出力ポートと前記第2の出力ポートとに振り分けるパケット転送部として機能させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−134582(P2012−134582A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−282527(P2010−282527)
【出願日】平成22年12月20日(2010.12.20)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】