JP6252112B2 - パケット処理装置、パケット処理方法、および、パケット処理システム - Google Patents

パケット処理装置、パケット処理方法、および、パケット処理システム Download PDF

Info

Publication number
JP6252112B2
JP6252112B2 JP2013230518A JP2013230518A JP6252112B2 JP 6252112 B2 JP6252112 B2 JP 6252112B2 JP 2013230518 A JP2013230518 A JP 2013230518A JP 2013230518 A JP2013230518 A JP 2013230518A JP 6252112 B2 JP6252112 B2 JP 6252112B2
Authority
JP
Japan
Prior art keywords
packet
processing
unit
storage unit
packets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013230518A
Other languages
English (en)
Other versions
JP2015091047A (ja
Inventor
良信 井上
良信 井上
伸彦 福田
伸彦 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013230518A priority Critical patent/JP6252112B2/ja
Priority to US14/510,576 priority patent/US9876728B2/en
Publication of JP2015091047A publication Critical patent/JP2015091047A/ja
Application granted granted Critical
Publication of JP6252112B2 publication Critical patent/JP6252112B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations

Description

本発明は、優先度の異なる複数のパケットの処理に関する。
通信装置の普及により、ネットワーク中で送受信されるパケットの種類やパケット中のデータの長さなども多様化してきている。さらに、優先度の異なるパケットが同じネットワーク中で送受信されることも多くなってきている。ネットワーク中で複数の優先度のパケットが送受信される場合、優先度の高いパケットについての通信処理による遅延を所定の範囲内にすることが望ましい場合がある。そのため、通信の開始前に、通信に使用する帯域を予約し、予約した帯域を使用して通信を行うことにより、処理遅延の変動を防止することも提案されている。
関連する技術として、処理対象の信号の優先度ごとに保証処理量を決定し、保証処理量を上限として、優先度順かつ先着順に処理することにより、負荷が高くても優先度の低い信号を処理可能な信号処理システムが提案されている(例えば、特許文献1)。また、複数の転送処理部を備えていて、受信パケットから抽出した情報に対応付けられている付帯情報に合わせて、受信パケットを処理する転送処理部を決定するノード装置も提案されている。ここで、ノード装置は、付帯情報と受信パケットの処理内容を対応付けた処理管理テーブルを保持しており、処理管理テーブルには、転送処理部での処理結果や転送処理部の負荷状態の変化が反映される(例えば、特許文献2)。さらに、受信データの特徴を含む特徴量を抽出し、特徴量に基づいて通信タスクが用いる処理能力を推測し、処理能力の推測結果と通信タスクの処理能力の差に基づいて処理能力を調整する装置も提案されている(例えば、特許文献3)。
特開平1―209839号公報 特開2002−354009号公報 特開2009−253520号公報
予約された帯域を使用して通信を行っても、パケットに対してソフトウェアによる処理が行われる場合、ソフトウェアを用いた処理によって予測以上に遅延が大きくなることがある。従って、通信帯域を予約したとしても、処理装置の処理能力によっては、遅延時間を所定の範囲内に保つことは困難になってきている。
関連する技術として背景技術で述べた方法を用いても、パケットに対するソフトウェアを用いた処理に起因する遅延が処理遅延に含まれている場合には、遅延時間を所定の範囲内に保つことは困難である。
本発明は、優先パケットを処理する際の遅延を所定期間内に保つことを目的とする。
実施形態に係るパケット処理装置は、受信部、処理部、第1の格納部、調整部、第2の格納部、出力部を備える。受信部は、パケットを受信する。処理部は、前記パケットを処理する。第1の格納部は、前記処理部が優先的に処理する優先パケットを格納する。調整部は、前記第1の格納部に格納される優先パケットの数を、前記優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数に調整する。第2の格納部は、前記第1の格納部に格納されないパケットを格納する。出力部は、前記第1の格納部中のパケットを前記処理部に出力する。さらに、出力部は、前記処理部が前記所定期間に可能な処理量から、前記第1の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第2の格納部から前記処理部に出力する。
優先パケットを処理する際の遅延が所定期間内に保たれる。
実施形態にかかる処理方法の例を示す図である。 処理装置の構成の例を示す図である。 処理装置のハードウェア構成の例を示す図である。 パケット特性テーブルの例を示す図である。 パラメータ情報テーブルの例を示す図である。 パケットのフォーマットの例を示す図である。 パケットの分類方法の例を説明するフローチャートである。 補正テーブルの例を示す図である。 予約情報テーブルの例を示す図である。 パケットのキューイングの際に行われる処理の例を説明するフローチャートである。 パケットのキューイングの際に行われる処理の例を説明するフローチャートである。 制御部で行われる処理の例を示すフローチャートである。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第2の実施形態で使用される予約情報テーブルの例を示す図である。 第3の実施形態での処理の例を示す図である。 実施形態にかかる方法が適用可能なシステムの例を示す図である。 パケットのフォーマットの例を示す図である。
図1は、実施形態にかかる処理方法の例を示す。処理装置は、予約キュー、ベストエフォートキュー、処理部を備えている。予約キューは、処理装置において優先的に処理されるパケットの格納に使用される。以下、優先的に処理される対象のパケットを「優先パケット」と記載することがある。一方、ベストエフォートキューは、優先パケットのうち、予約キューに格納されなかったパケットと、優先パケットではないパケット(通常パケット)を格納する。
処理装置は、予約キューに格納されたパケットに対して処理装置が所定期間中に行うことが可能な処理の量(処理量の設定値)を、予め設定している。処理装置は、パケットを受信すると、受信したパケットが優先パケットであるかを判定する。優先パケットであるかの判定は、パケットの種類やパケットの送信元と宛先の組み合わせなど、実装に応じた任意の情報を用いて行われるものとする。処理装置は、優先パケットを受信すると、予約キューに格納されているパケットの処理量と新たに受信した優先パケットとに対する処理量の合計が設定値を上回らない場合、新たに受信した優先パケットを、予約キューに格納する。
例えば、図1の例では、処理装置は、パケットP1〜P5を受信している。パケットP1〜P5のうち、パケットP1〜P4は優先パケットであり、パケットP5は通常パケットであるとする。処理装置は、まず、パケットP1を受信し、パケットP1が優先パケットであると判定すると、パケットP1に対する処理量を見積もる。図1の例では、パケットP1の処理量が設定値よりも小さく、他のパケットが予約キューに格納されていないので、処理装置は、パケットP1を予約キューに格納する。処理装置は、パケットP2を受信するとパケットP1と同様に判定処理を行う。さらに、パケットP2に対する処理量と、パケットP1に対する処理量の合計値を、設定値と比較する。図1の例では、パケットP1、P2の処理量の合計値が設定値よりも小さいので、パケットP2も予約キューに格納される。パケットP3についても、パケットP2と同様の処理により、予約キューに格納される。
次に、処理装置がパケットP4を受信したとする。パケットP4は優先パケットであるので、処理装置は、予約キューに格納されているパケットP1〜P3に対する処理量と、パケットP4に対する処理量の合計値を、設定値と比較する。ここで、パケットP1〜P4に対する処理量の合計値が設定値よりも大きいとする。すると、処理装置は、パケットP4は優先パケットではあるものの、予約キューには格納できないと判定し、パケットP4をベストエフォートキューに格納する。さらに処理装置がパケットP5を受信したとする。パケットP5は通常パケットであるので、処理装置は、パケットP5を、ベストエフォートキューに格納する。
その後、予約キューに格納されたパケットとベストエフォートキューに格納されたパケットは、予約キューに格納されたパケットから優先的に処理部で処理される。このとき、処理部は、予約キューから入力されたパケットの処理には、予め設定されている設定値で表わされる分のリソースを用いて処理を行う。換言すると、予約キューに格納されているパケットについては、設定値を用いて確保されているリソースによる処理が予約されているといえる。このため、予約キューに格納された優先パケットについては、予め設定された所定期間中に処理が終了する。処理部は、所定期間中に可能な処理量と、予約キューから取得したパケットの処理量の差分で、ベストエフォートキューから取得したパケットの処理を行う。
このように、処理装置では、所定時間内に処理する対象とするパケットは、パケットごとの処理量と、所定時間内に優先的に処理が可能な量を用いて選択される。また、予約キューに格納されたパケットは、所定の時間内に処理されるので、確実に処理遅延時間を見積もることができる。従って、予め、処理装置において、予約キューに格納されるパケットの処理量を大きく設計すれば、優先パケットを全て予約キューに格納することができ、優先パケットに対する処理遅延を正確に見積もることができるようになる。
<装置構成>
図2は、処理装置10の構成の例を示す。図2に示す例では、処理装置10は、フロー識別部11とパケット処理部12を備える。フロー識別部11は、受信部21、フロー分類部22、フロー管理部23、フロー分類記憶部20を有する。フロー分類記憶部20には、パケット特性テーブル24とパラメータ情報テーブル25が記憶されている。パケット処理部12は、振り分け部26、予約キュー30、予約情報テーブル33、補正テーブル34、ベストエフォートキュー40、キュー情報テーブル43、制御部50を備える。予約キュー30は、調整部31と格納部32を有する。ベストエフォートキュー40は、調整部41と格納部42を有する。制御部50は、計算部51、出力部52、処理部53を有する。なお、送信部27はオプションである。処理装置10がパケットの中継に使用される装置である場合や、処理部53での処理後のパケットが他の装置に送信される場合、処理装置10は、送信部27を備える。
受信部21は、ネットワークを介して、他の装置等からパケットを受信する。受信部21は、受信したパケットをフロー分類部22に出力する。フロー分類部22は、予約キュー30を用いた処理を行う対象のパケットを設定するための制御パケットと、ユーザからのデータパケットを、パケット中のタイプ情報を用いて識別する。フロー分類部22は、制御パケットが入力されると、制御パケットをフロー管理部23に出力する。フロー管理部23は、制御パケットを用いて、パケット特性テーブル24とパラメータ情報テーブル25の情報を管理する。
受信したパケットがデータパケットである場合、フロー分類部22は、パケット特性テーブル24とパラメータ情報テーブル25を参照して、受信部21から入力されたパケットが優先パケットであるかを判定する。パラメータ情報テーブル25、パケット特性テーブル24の例と、優先パケットの判定方法の例については、後述する。フロー分類部22は、受信パケットを、受信パケットが優先パケットであるかに関する情報と共に、振り分け部26に出力する。振り分け部26は、優先パケットであると判定されたパケットを、調整部31に出力する。さらに振り分け部26は、通常パケットを、調整部41に出力する。
調整部31は、適宜、補正テーブル34を使用して、入力されたパケットに対する処理量を計算する。さらに、調整部31は、これまでに格納部32に格納されているパケットに対する処理量と新たに入力されたパケットに対する処理量の合計値を計算する。調整部31は、得られた合計値を、予約キュー30中のパケットに割り当てられた処理量の設定値と比較する。このとき、調整部31は、適宜、予約情報テーブル33を使用する。合計値が設定値以下の場合、調整部31は、入力されたパケットを格納部32に格納する。一方、合計値の方が設定値よりも大きい場合、調整部31は、入力されたパケットを調整部41に出力する。予約情報テーブル33および補正テーブル34の例と、調整部31の動作の具体例については、後で述べる。
調整部41は、適宜、補正テーブル34を使用して、入力されたパケットに対する処理量を計算する。さらに、調整部41は、格納部42に格納されているパケットに対する処理量と、調整部31または振り分け部26から新たに入力されたパケットに対する処理量の合計値を計算する。調整部41は、合計値を用いて、新たに入力されたパケットを格納部42に格納できるかを判定する。ここで、処理部53が所定期間中に行う処理量の総量から、予約キュー30に格納されるパケットに対して設定されている設定値を差し引いた処理量で処理できるパケットについては、格納部42に格納される。このとき、調整部41は、適宜、キュー情報テーブル43を使用する。キュー情報テーブル43の例や調整部41の動作の具体例についても、後で述べる。
なお、ベストエフォートキュー40については、パケットの処理量の計算や調整を行わずに、格納部42の容量分のパケットを格納部42に格納しても良い。この場合、処理装置10は、調整部41を備えなくても良い。
計算部51は、格納部32に格納されたパケットに対する処理量を計算する。計算部51は、得られた計算結果を出力部52に出力する。出力部52は、格納部32に格納されているパケットを処理部53に出力する。さらに、出力部52は、処理部53が所定期間中に行う処理量の総量から、計算部51で得られた計算値を差し引いた余剰値を求める。さらに、余剰値で処理可能な分のパケットを格納部42から読み出して処理部53に出力する。処理部53は、出力部52から得られたパケットを処理する。従って、処理部53は、格納部32に格納されていたパケットを処理し、格納部32に格納されていたパケットを処理した後の余剰の処理能力を用いて、格納部42に格納されていたパケットを処理する。
図3は、処理装置10のハードウェア構成の例を示す。処理装置10は、Central Processing Unit(CPU)60、キャッシュ61、CPUコア62(62a、62b)、キャッシュ63(63a、63b)、メモリ64、バス65、回線インタフェース66(66a、66b)を備える。例えば、処理装置10はコンピュータによって実現され得る。なお、図3では、処理装置10にCPU60が備えられている場合を例としているが、処理装置10は、CPU60以外のプロセッサを備えていても良い。
CPUコア62は、フロー分類部22、フロー管理部23、振り分け部26、調整部31、調整部41、および、制御部50として動作する。キャッシュ61、キャッシュ63、メモリ64は、フロー分類記憶部20、格納部32、格納部42として動作し、さらに、予約情報テーブル33、補正テーブル34、キュー情報テーブル43などの情報を格納する。CPU60の動作に使用されるプログラムやデータはメモリ64に格納されており、適宜、キャッシュ61やキャッシュ63に読み込まれる。なお、予約キュー30に格納されたパケットを優先的に処理するために、キャッシュ63やキャッシュ61は、調整部41よりも調整部31に優先的に割り当てられる。バス65は、CPU60、メモリ64、回線インタフェース66を、相互にデータを入出力できるように接続する。回線インタフェース66は、受信部21と送信部27として動作する。
なお、格納部32に格納されたパケットと格納部42に格納されたパケットの処理に用いられるCPUコア62は、異なっていても同じであっても良い。例えば、CPUコア62aは、格納部32に格納されたパケットの処理に用いられ、CPUコア62bは、格納部32に格納されたパケットと格納部42に格納されたパケットの両方の処理に用いられるように設定されていても良い。
また、図3では、一例としてCPUコア62が2つの場合を示しているが、1つのCPU60に含まれるCPUコア62の数は任意である。例えば、CPU60に4つのCPUコア62が含まれている場合、CPUコア62a〜62cは、格納部32に格納されていたパケットの処理に優先的に使用され、CPUコア62dは、格納部42に格納されていたパケットの処理に使用されることがある。
<第1の実施形態>
以下、第1の実施形態を、処理装置10への予約の設定、受信したパケットの分類、パケットのキューイング、パケットの処理に分けて説明する。
〔処理装置への予約の設定〕
オペレータは、ユーザからの要求に応じて、予約キュー30を用いた処理の対象を通知するための制御パケットを処理装置10に送信する。フロー分類部22は、受信部21を介して取得した受信パケットのタイプが制御パケットに設定されている場合、受信パケットが制御パケットであると判定し、制御パケットをフロー管理部23に出力する。なお、タイプはIPヘッダ中のタイプフィールドなどを用いて設定され得る。以下、フロー管理部23によるパケット特性テーブル24とパラメータ情報テーブル25の更新について述べる。
図4は、パケット特性テーブル24の例を示す。パケット特性テーブル24には、処理装置10を経由するフローの分類方法が記録されている。図4に示すパケット特性テーブル24では、フローごとに、フロー識別番号、送信元IPアドレス、宛先IPアドレス、プロトコル、送信元ポート番号、宛先ポート番号などの情報が記録されている。さらに、図4の例では、フローごとに、Security Architecture for Internet Protocol(IPsec)のSecurity Parameter Index(SPI)の値も記録されている。ここで、フロー識別番号は、個々のフローを識別するために使用される識別子である。また、パケット特性テーブル24中のプロトコルの欄には、IPsec、Transmission Control Protocol(TCP)、User Datagram Protocol(UDP)など、フロー識別子で識別されるフローで使用されているプロトコルの情報が記録される。なお、IPsec SPIは、パケットに対するエンコードまたはデコードの際に使用されるパラメータの特定に使用される値である。初期状態では、予約キュー30を用いた処理についての設定が含まれていないので、パケット特性テーブル24aに示すように、処理装置10が受信し得る任意のパケットがフロー識別番号=0に対応付けられている。
フロー管理部23は、制御パケットを受信すると、制御パケットで指定されたフローのパケットを指定された所定パケット数だけ処理するときにかかるステップ数の予測値と、予約キュー30を介した処理が予約されているフローの所定期間の処理ステップ数の合計値を求める。さらに、フロー管理部23は、得られた合計値を、予約キュー30を用いた処理で所定期間中に可能なステップ数と比較する。ここで、所定期間は、予約情報テーブル33でのステップ数の管理に使用されている時間単位であり、例えば、1マイクロ秒、1ミリ秒、1秒など、実装に応じた任意の長さに設定される。合計値が予約キュー30を用いた処理で所定期間中に可能なステップ数を超えている場合、フロー管理部23は、予約キュー30に新たなフローのパケットを格納できないと判定し、制御パケットを廃棄すると共に、制御パケットの送信元にエラーを通知する。
一方、合計値が予約キュー30を用いた処理で所定期間中に可能なステップ数以下の場合、フロー管理部23は、新たなフローの予約が可能であると判定する。例えば、予約キュー30からのパケットに対して1秒間に200万ステップの処理が可能であり、パケット特性テーブル24aに示すように他のフローの処理の予約が含まれていないとする。ここで、ユーザが処理するパケットの種類に対応付けられたステップ数が1パケットあたり2000ステップで、ユーザが要求している処理速度では、1秒当たり1000パケットが処理されるとする。すると、合計値は、制御パケットで指定されたフローの処理ステップと予約済みフローの処理ステップの合計であるので、2000ステップ×100パケット+0ステップ=20万ステップである。従ってフロー管理部23は、制御パケットにより通知されたフローに関する予約を設定できると判定する。
フロー管理部23は、制御パケットにより通知されたフローに関する予約を設定できると判定すると、制御パケットに含まれている情報のうち、パケット特性テーブル24に登録されている情報要素を、パケット特性テーブル24に登録する。例えば、制御パケットにより指定されたフローでは、送信元IPアドレスが10.0.0.1、宛先IPアドレスが10.0.0.2であり、IPsecSPIの値が1001であるとする。すると、フロー管理部23は、パケット特性テーブル24bに示すフロー識別番号=1のエントリを、パケット特性テーブル24aに追加する。さらに、フロー管理部23は、パラメータ情報テーブル25も更新する。
図5は、パラメータ情報テーブル25の例を示す。パラメータ情報テーブル25では、フロー識別番号に対応付けて、予約状況、処理タイプ、想定処理ステップ数、アクセスメモリ量が記録されている。予約状況は、優先的に予約キュー30に格納されるパケットであるかを示す。優先的に予約キュー30を経由した処理を行うことが予約されているフローについては、予約状況は「予約」に設定される。一方、優先的に予約キュー30を経由した処理を行うことが予約されていないフローについては、予約状況は「ベストエフォート」に設定される。すなわち、優先パケットでは、予約状況が「予約」に設定され、通常パケットでは予約状況が「ベストエフォート」に設定される。
フロー管理部23は、パケット特性テーブル24に生成したエントリで使用したフロー識別番号に対応付けて、制御パケットで特定されている処理のタイプをパラメータ情報テーブル25に登録する。さらに、特定した処理の種類に応じて、1つのパケットの処理に用いる処理ステップ数とアクセスメモリ量を、パラメータ情報テーブル25に記録する。なお、フロー管理部23は、パケットの種類ごとに、1つのパケットの処理に用いる処理ステップ数とアクセスメモリ量の設定値として取り得る値を記憶しているものとする。ここで、パラメータ情報テーブル25に記録されている想定処理ステップ数は、パケットの種類に応じて、1パケットの処理にかかるステップ数の予測値として使用する値である。パケットの種類によっては、パケットの長さに応じて処理ステップ数が変動することがあるが、パラメータ情報テーブル25は、パケットの振り分けを容易にするために、パケットの長さにかかわらず、予め決められた所定の値を記憶している。アクセスメモリ量についても同様に、パケットの長さに関わらず、パケットの種類に応じた所定の値が設定される。なお、アクセスメモリ量は、1つのパケットの処理に使用されるメモリの量である。
次に、パラメータ情報テーブル25の変更の具体例を述べる。ここで、制御パケットは、制御パケットにより指定されたフローに対して、IPsecによるエンコードが要求されていることを示す情報を含んでいるものとする。すると、フロー管理部23は、フロー識別番号=1のフローに対して、予約キュー30の使用が予約されていることと、処理タイプがIPsecのエンコードであることをパラメータ情報テーブル25に記録する。想定される処理ステップ数が1パケットあたり2000ステップ、1パケットの処理に用いることが予測されるメモリ量が1024バイトである場合、フロー管理部23は、パラメータ情報テーブル25bのフロー識別番号=1のエントリに、それらの情報も追加する。さらに、次の制御パケットにより、以下の情報が通知されたとする。
送信元IPアドレス:10.0.0.2
宛先IPアドレス :10.0.0.1
プロトコル :IPsec
IPsecSPI :1001
処理 :IPsecデコード
すると、フロー管理部23が同様処理を行うことにより、パケット特性テーブル24には、パケット特性テーブル24bのフロー識別番号=2のエントリが追加される。一方、パラメータ情報テーブル25には、パラメータ情報テーブル25bのフロー識別番号=2のエントリが追加される。(ここでは、IPsecエンコードとデコードについて、同等のステップ数を想定するものとする)
〔パケットの分類〕
以下、処理装置10がパケット特性テーブル24bとパラメータ情報テーブル25bを保持している場合を例として、フローの分類方法を説明する。
受信部21が受信パケットをフロー分類部22に出力する。フロー分類部22は、受信パケットがデータパケットである場合、データパケットがいずれのフローで送信されたかを特定するために、パケット特性テーブル24でフローの分類に使用されている情報を受信パケットから抽出する。以下、パケット特性テーブル24でフローの分類に使用されている情報のことを、「フロー特徴情報」と記載することがある。例えば、フロー特徴情報には、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号などが使用される。フロー分類部22は、受信パケットのIPヘッダや、トランスポート層のヘッダから、フロー特徴情報を抽出する。さらに、フロー分類部22は、フロー特徴情報をキーとしてパケット特性テーブル24を検索し、受信パケットを含むフローを識別するフロー識別番号を特定する。
例えば、受信パケットの送信元IPアドレスが10.0.0.1、宛先IPアドレスが10.0.0.2であり、IPsecSPIの値が1001に設定されているとする。この場合、フロー分類部22は、これらの情報を用いてパケット特性テーブル24bを検索し、受信パケットの条件がフロー識別番号=1のエントリに一致していると判定する。ここで、受信パケットの条件が複数のエントリの条件に該当する場合、フロー分類部22は、最も多くの数の情報要素の値が完全一致したエントリの情報を、受信パケットの属するフローの情報とする。例えば、フロー識別番号=1に該当するパケットは、フロー識別番号=0の条件も満たすことになるが、送信元IPアドレスや宛先IPアドレス等、完全一致している情報要素の数は、フロー識別番号=1の方が多い。そこで、フロー分類部22は、フロー識別番号=1とフロー識別番号=0の両方に該当していても、今回のパケットについては、フロー識別番号=1のフローのパケットであると特定する。
次に、フロー分類部22は、特定したフロー識別番号を用いて、パラメータ情報テーブル25bを参照する。例えば、フロー分類部22は、パラメータ情報テーブル25bを用いることにより、フロー識別番号=1のフローについて、予約キュー30の使用が予約されていること、IPsecのエンコードの対象であることを特定する。さらに、フロー分類部22は、想定される処理ステップ数が1パケットあたり2000ステップ、アクセスメモリ量が1パケットあたり1024バイトであることも特定する。以下の説明では、フロー分類部22がパケット特性テーブル24とパラメータ情報テーブル25を用いて特定した情報のことを、「付加情報」と記載することがある。フロー分類部22は、付加情報を、受信パケットに対応付けて振り分け部26に出力する。
図6は、パケットのフォーマットの例を示す。フロー分類部22は、例えば、図6のP1に示すように、パケットごとにパケット共通管理ヘッダを生成し、パケット共通管理ヘッダを、振り分け部26に出力することができる。パケット共通管理ヘッダには、処理装置10のメモリ領域のうち、受信パケットが格納されているアドレスの先頭を示すポインタと、付加情報が格納されている領域の先頭を示すポインタが含まれている。付加情報には、予約状況、処理タイプ、想定処理ステップ数、アクセスメモリ量が含まれる。
図6のD1は、処理タイプフィールドの設定値の例を示す。処理タイプフィールドの設定値は、処理タイプを一意に特定するための値である。D1の例では、処理タイプには、L3中継、L2中継、Network Address Translation(NAT)、Generic Routing Encapsulation(GRE)トンネルを用いた通信用のカプセル化とデカプセル化、IPsecでのエンコードとデコードが含まれる。これらの処理タイプに、D1の例では、0〜6の値が設定されている。図6のD2には、予約状況を特定するための値の例が示されている。D2の例では、予約キュー30での処理が予約されていることがパラメータ情報テーブル25に記録されているフローについては、設定値は0になっている。一方、予約キュー30を用いる処理の予約が行われておらず、全てのパケットに対してベストエフォート方式での処理を適用するフローについては、設定値が1となっている。
図7は、パケットの分類方法の例を説明するフローチャートである。なお、図6では、付加情報をパケットとは異なる領域に格納する場合の例を示したが、付加情報は、パケットに添付されても良い。図7を参照しながら、パケットに付加情報が添付される場合の処理を説明する。
受信部21は、フロー分類部22にデータパケットを出力する(ステップS1)。フロー分類部22は、入力されたパケットからフロー特徴情報を抽出し、得られた情報をキーとしてパケット特性テーブル24を検索する(ステップS2)。次に、フロー分類部22は、特徴情報を用いて特定したフローにマッチするエントリがパラメータ情報テーブル25にあるかを判定する(ステップS3)。フローにマッチするエントリがパラメータ情報テーブル25にある場合、フロー分類部22は、そのエントリの内容に従って、付加情報をパケットに添付する(ステップS3でYes、ステップS4)。フロー分類部22は、付加情報を添付したパケットを、パケット処理部12に出力する(ステップS5)。一方、フロー分類部22は、特徴情報にマッチするエントリがパラメータ情報テーブル25に無い場合、フロー分類部22は、不正なパケットが入力されたと判定して、パケットを廃棄する(ステップS6)。
〔パケットのキューイング〕
(1)予約キュー30へのキューイング
振り分け部26は、付加情報を読み込み、予約キュー30を用いた処理が予約されているパケットを調整部31に出力する。さらに、振り分け部26は、予約キュー30を用いた処理の予約が行われていないパケットを調整部41に出力する。
調整部31は、入力されたパケットの種類を特定し、入力されたパケットに対する処理のステップ数がパケットの長さなどの可変のパラメータによって変化するかを判定する。パケットの長さなどによってステップ数が変化する処理の例として、IPsecによるエンコード、デコード、パケットの圧縮、パケットの解凍などが挙げられる。調整部31は、処理のステップ数がパケットの長さなどによって変化すると判定すると、補正テーブル34を参照して、処理にかかるステップ数を計算する。
図8は、補正テーブル34の例を示す。図8に示す補正テーブル34には、IPsecでのエンコードおよびデコードの対象となるパケットの処理ステップ数の補正式と、圧縮や解凍の対象となるパケットでの処理ステップ数の補正式が記録されている。補正式は、処理対象のパケットのIPデータ部分の1バイトあたりの処理のステップ数と、IPデータのバイト数の積と、付加情報の処理ステップ数の和として表わせる。なお、図8では、付加情報の処理ステップ数をAとしている。
例えば、フロー識別番号=1のパケットの場合、IPsecによるエンコードの対象である。そこで、フロー識別番号=1のパケットが入力されると、調整部31は、図8の1番目のエントリに記憶されている式を用いて、処理ステップ数を計算する。フロー識別番号=1のパケット中のIPデータの長さが256バイトであり、付加情報の処理ステップ数(A)が3000ステップであるとする。すると、フロー識別番号=1のパケットの処理にかかるステップ数は、
A+データ長×10=3000+256×10=5560
となる。調整部31は、パケットの処理にかかるステップ数を計算すると、予約情報テーブル33を参照することにより、パケットを格納部32に格納できるかを判定する。
図9は、予約情報テーブル33の例を示す。予約情報テーブル33aは、処理の単位とする所定期間の長さが1秒である場合の例を示す。予約情報テーブル33aには、割り当てステップ数、累計消費ステップ数、余剰ステップ数、割り当てアクセスメモリ量、消費メモリ量、余剰メモリ量が含まれる。割り当てステップ数は、予約キュー30に格納されたパケットに対して、処理部53が1秒間に処理可能なステップ数である。累計消費ステップ数は、処理対象としている所定期間の開始時刻以降に処理されるパケットであり、かつ、格納部32に格納済みのパケットについての処理に用いられるステップ数の合計値である。余剰ステップ数は、割り当てステップ数から累計消費ステップ数を差し引いた値である。割り当てアクセスメモリ量は、予約キュー30に格納されたパケットに対する処理において処理部53が使用可能なメモリの最大量である。消費メモリ量は、予約キュー30に格納されたパケットに対する処理において処理部53が使用しているメモリ量である。余剰メモリ量は、割り当てアクセスメモリ量から、消費メモリ量を差し引いた値である。以下の説明では、フロー識別番号=1のパケットが調整部31に入力されたときに、処理装置10が予約情報テーブル33aを保持しているとする。
調整部31は、補正テーブル34を用いた計算で得られたステップ数を、予約情報テーブル33aの余剰ステップ数と比較する。ここでは、調整部31が計算したステップ数は5560ステップである。従って、補正テーブル34を用いた計算で得られたステップ数が余剰ステップ数よりも小さいので、調整部31は、パケットの処理に使用されるメモリが確保できれば、パケットを格納部32に格納できると判定する。そこで、調整部31は、付加情報に含まれているアクセスメモリ量を、予約情報テーブル33aの余剰メモリ量と比較する。図6に示すようにアクセスメモリ量は1024バイトであるのに対し、予約情報テーブル33aの余剰メモリ量は2000000バイトであるので、余剰メモリ量の報がアクセスメモリ量よりも多い。従って、調整部31は、パケットを格納部32に格納できると判定し、パケットを格納部32に出力する。さらに、調整部31は、予約情報テーブル33aを予約情報テーブル33bに更新する。
一方、余剰ステップ数か余剰メモリ数のいずれかが不足している場合、調整部31は、パケットを調整部41に出力する。なお、調整部31は、調整部41に出力するパケットについて、処理ステップ数を補正している場合、補正したステップ数を調整部41に出力する。
なお、累計消費ステップ数の計算が開始された時刻から、所定の処理期間が経過すると、次の処理期間で処理を行うことが可能なパケットであるかを判定するために、調整部31は、累計消費ステップ数を0にリセットする。累計消費ステップ数が0にリセットされると、余剰ステップ数は割り当てステップ数と等しくなる。
(2)ベストエフォートキュー40へのキューイング
調整部41は、調整部31から入力されたパケットと、振り分け部26から入力されたパケットの両方に対して、格納部42に格納できるかの判定を行う。調整部41がパケットの処理にかかるステップ数を計算する方法は、調整部31と同様である。調整部41は、格納部42にパケットを格納できるかを判定する際に、キュー情報テーブル43を使用する。キュー情報テーブル43に含まれている情報要素は、予約情報テーブル33と同様であるが、キュー情報テーブル43に含まれる数値は、処理部53が格納部42に格納されているパケットの処理に対して所定の処理期間中に行うことができるステップ数等である。調整部41は、キュー情報テーブル43を用いて、調整部31と同様の判定を行う。なお、調整部41は、調整部31から入力されたパケットについてステップ数が計算されている場合、調整部31から得られた計算値を用いて判定を行う。調整部41は、パケットの処理にかかるステップ数とメモリがまかなえると判定すると、パケットを格納部42に格納する。一方、パケットの処理にかかるステップ数とメモリを確保できないと判定すると、調整部41は、パケットを廃棄する。
図10Aと図10Bは、パケットのキューイングの際に行われる処理の例を説明するフローチャートである。振り分け部26は、フロー分類部22からパケットを取得する(ステップS11)。振り分け部26は、パケットの付加情報中の予約状況が、予約になっているかを判定する(ステップS12)。パケットの付加情報中の予約状況が予約の場合、振り分け部26は、パケットを調整部31に出力する(ステップS12でYes)。調整部31は、パケットの付加情報から、想定処理ステップ数とアクセスメモリ量を取得する(ステップS13)。調整部31は、パケットの処理タイプが、処理ステップ数の補正の対象であるかを判定する(ステップS14)。処理ステップ数の補正の対象である場合、調整部31は、入力されたパケットに適用する補正式を補正テーブル34から取得する(ステップS14でYes、ステップS15)。調整部31は、取得した補正式を用いて処理ステップ数を計算する(ステップS16)。さらに、調整部31は、予約情報テーブル33から、余剰ステップ数と余剰メモリ量を取得する(ステップS17)。調整部31は、パケットの処理が所定時間内に可能であるかを、余剰ステップ数とパケットの処理に使用するステップ数の比較結果、および、余剰メモリ量とアクセスメモリ量の比較結果から判定する(ステップS18)。パケットの処理が所定時間内に可能である場合、調整部31は、パケットを予約キュー30中の格納部32に格納し、予約情報テーブル33を更新する(ステップS18でYes、ステップS19)。
一方、ステップS14で処理ステップ数の補正の対象でないと判定された場合、調整部31は、予約情報テーブル33から、余剰ステップ数と余剰メモリ数を取得する(ステップS14でNo、ステップS17)。その後、ステップS18以降の処理が行われる。
ステップS12において、パケットの付加情報中の予約状況が「予約」ではないと判定した場合、および、ステップS18でパケットの処理が所定時間内にできないと判定した場合、調整部31は、パケットを調整部41に出力する。調整部41は、パケットの付加情報から、想定処理ステップ数とアクセスメモリ量を取得する(ステップS20)。調整部41は、パケットの処理タイプが、処理ステップ数の補正の対象であるかを判定する(ステップS21)。処理ステップ数の補正の対象である場合、調整部41は、ステップ数の補正が予約キュー30中の調整部31によって行われているかを判定する(ステップS21でYes、ステップS22)。
ステップ数の補正が予約キュー30中の調整部31によって行われていない場合、入力されたパケットに適用する補正式を補正テーブル34から取得する(ステップS22でNo、ステップS23)。調整部41は、取得した補正式を用いて処理ステップ数を計算する(ステップS24)。さらに、調整部41は、キュー情報テーブル43から、余剰ステップ数と余剰メモリ量を取得する(ステップS25)。調整部41は、パケットの処理が所定時間内に可能であるかを、余剰ステップ数とパケットの処理に使用するステップ数の比較結果、および、余剰メモリ量とアクセスメモリ量の比較結果から判定する(ステップS26)。パケットの処理が所定時間内に可能である場合、調整部41は、パケットをベストエフォートキュー40中の格納部42に格納し、キュー情報テーブル43を更新する(ステップS26でYes、ステップS27)。パケットの処理が所定時間内にできないと判定した場合、調整部41は、パケットを廃棄する(ステップS26でNo、ステップS28)。
ステップS21で、パケットが処理ステップ数の補正の対象ではないと判定された場合、ステップS25以降の処理が行われる(ステップS21でNo)。また、ステップS22でステップ数の補正が予約キュー30中の調整部31によって行われていると判定された場合も、ステップS25以降の処理が行われる(ステップS22でYes)。
〔パケットの処理〕
計算部51は、格納部32に格納されているパケットの処理にかかるステップ数の合計値を計算する。なお、計算部51は、予約情報テーブル33の累積処理ステップ数を参照することにより、格納部32に格納されているパケットの処理にかかるステップ数を取得しても良い。計算部51は、得られた値を出力部52に出力する。出力部52は、所定の処理期間内に処理部53が処理できるステップの総数から、格納部32に格納されているパケットの処理にかかるステップ数の合計値を差し引いた値(余剰値)を求める。出力部52は、格納部32に格納されているパケットを処理部53に出力した後、余剰値のステップ数以下で処理できるパケットを格納部42から処理部53に出力する。処理部53は、出力部52から入力されたパケットを処理する。このため、格納部32に格納されたパケットは、所定の処理期間中に処理される。
なお、計算部51による計算を行わずに、パケットを格納部32と格納部42から処理部53に入力するように変形することもできる。この場合、格納部32のパケットが全て処理部53に入力された後で、処理部53は、格納部32のパケットの取得開始から所定の処理期間が経過するまで、格納部42からパケットを取得して処理する。この場合の処理方法を、図11を用いて説明する。
図11は、制御部50で行われる処理の例を示すフローチャートである。なお、図11は、処理装置10が中継処理を行う装置である場合を例としている。出力部52は、予約キュー30の中で最初に格納されたパケットを処理部53に出力する(ステップS31)。処理部53は、入力されたパケットの処理タイプに応じた処理を行い、パケットの付加情報に含まれているアクセスメモリ量を、予約情報テーブル33の余剰メモリ量から減算する(ステップS32、S33)。処理部53は、処理後のパケットを中継するために送信処理を行うとともに、余剰メモリ量を適宜修正する(ステップS34)。出力部52は、予約キュー30中の格納部32に、まだパケットが残っているかを判定する(ステップS35)。予約キュー30中の格納部32にパケットが残っている場合、ステップS31以降の処理が繰り返される(ステップS35でYes)。一方、予約キュー30中の格納部32にパケットが残っていない場合、出力部52は、格納部32のパケットの取得開始から所定の処理期間が経過したかを判定する(ステップS35でNo、ステップS36)。格納部32のパケットの取得開始から所定の処理期間が経過していない場合、出力部52は、ベストエフォートキュー40中の格納部42に格納されたパケットを処理部53に出力する(ステップS36でNo)。処理部53は、入力されたパケットを処理する(ステップS37)。その後、ステップS35以降の処理が繰り返される。このため、ベストエフォートキュー40中の格納部42に格納されていたパケットの処理後に優先パケットが格納部32に格納されると、所定の処理時間内であれば、優先パケットの処理が再開される。一方、格納部32のパケットの取得開始から所定の処理期間が経過した場合、次の処理期間についての処理が開始される(ステップS36でYes)。
このように、処理装置10では、所定時間内に処理する対象とするパケットは、パケットごとの処理量と、所定時間内に優先的に処理が可能な量を用いて選択され、格納部32に格納される。また、処理部53は、格納部32に格納されたパケットを優先的に処理するので、格納部32に格納されたパケットの処理遅延を確実に見積もることができる。このため、処理装置において、格納部32に格納されるパケットの処理量を大きく設計すれば、優先パケットを全て予約キューに格納することができ、優先パケットに対する処理遅延を正確に見積もることができるようになる。
さらに、処理部53は、処理時間中の処理量を、優先的に格納部32から取得したパケットの処理に割り当て、その余力を格納部42から取得したパケットに振り分ける。このため、格納部32に格納されているパケットの処理にかかる処理量が予測よりも小さい場合であっても、格納部42に格納されたパケットが処理され、処理部53の処理能力は無駄にならない。
<第2の実施形態>
第2の実施形態では、予約キュー30を介した処理が予約されているフローを用いて送受信されるパケットの数の変動に応じて、予約キュー30とベストエフォートキュー40に格納するパケットの量を変動させる場合の例を説明する。この場合、例えば、所定の期間中に処理部53が予約キュー30中のパケットに割り当てられるステップの上限値が決定され、上限を超えない範囲で予約キュー30を介したパケットの処理に使用するステップ数が変更され得る。なお、上限を設定するときに使用される期間の長さは、例えば、1時間、1日、1週間、1月など、ユーザとの契約要件や実装上の要件に応じて選択される。以下、上限を設定するときに使用される期間の長さのことを「調整周期」と記載することがある。なお、処理装置10への予約の設定と受信したパケットの分類についての処理は、第1の実施形態と同様である。また、1パケットあたりの処理ステップ数の補正方法や、振り分け部26の処理も、第1の実施形態と同様である。ただし、処理装置10は、予約情報テーブル33の代わりに予約情報テーブル35を備えている。
図12は、第2の実施形態で使用される予約情報テーブル35の例を示す。なお、予約情報テーブル35は、基準となる処理期間が1秒で、調整周期が1時間の場合を例として示しているが、処理期間や調整周期の長さは、ユーザとの契約要件や実装上の要件に応じて変動され得る。
予約情報テーブル35は、標準ステップ数、上限ステップ数、再エンキュー率、再エンキュー率上限、累計ステップ数、累計上限ステップ数が含まれており、さらに、予約情報テーブル33中の情報要素も含まれている。標準ステップ数は、割り当てステップ数が変動されていない状態において、格納部32に含まれているパケットの処理を行うために処理部53が1秒当たりに行う処理ステップの数である。上限ステップ数は、割り当てステップ数が取り得る上限値であり、予め、設定されている値である。再エンキュー率は、調整部31に入力されたパケットの数を基準としたときの、調整部31から調整部41に出力されたパケットの割合である。再エンキュー率上限は、再エンキュー率として許容される上限値である。累計ステップ数は、調整周期中に実施されたステップ数の累計値である。累計上限ステップ数は、割り当てステップ数を標準ステップ数よりも大きな値に設定可能な処理量の上限値である。調整部31は、累計ステップ数が累計上限ステップ数を越えると、標準ステップ数を越えたステップ数を割り当てステップ数とすることができないように、予約情報テーブル35を修正する。
以下、処理装置10が図12の予約情報テーブル35aを保持している場合に行われる処理の例を説明する。パラメータ情報テーブル25aの例では、割り当てステップ数が1秒あたり2億ステップであり、上限ステップ数は1秒あたり10億に設定されている。また、1時間単位でステップ数を変動させることができる設定になっており、1時間当たりに1.44兆ステップまでは、割り当てステップ数を変動できるように設定されている。調整部31は、予約情報テーブル35a中の余剰ステップ数や余剰メモリ量を用いて、パケットを格納部32に格納できるかを判定する。調整部31は、格納部32に格納できないパケットがある場合、そのパケットを調整部41に出力すると共に、再エンキュー率の値を変更する。パケットが格納部32に格納された後の処理、パケットが調整部41に出力された後に行われる処理、および、パケットが振り分け部26において調整部41に振り分けられた場合の処理は、第1の実施形態と同様である。
例えば、予約キュー30を用いた処理の予約がされているパケットが、割り当てステップ数を15%超過するペースで、調整部31に入力されたとする。すると、調整部31は、超過した15%分のパケットを調整部41に出力すると共に、再エンキュー率を15%にする。さらに余剰ステップ数や消費メモリ量などの値も、第1の実施形態と同様に変動する。ここでは、調整部31による処理と、その後に行われた処理部53での処理などにより、予約情報テーブル35aが予約情報テーブル35b(図12)に示すように更新されたとする。
すると、調整部31は、再エンキュー率が再エンキュー率上限を上回っているため、割り当てステップ数を、両者の差分の割合だけ増加させる。なお、このとき、調整部31は、割り当てステップ数が上限ステップ数を越えないように設定するものとする。例えば、予約情報テーブル35bの例では、再エンキュー率上限が10%であるのに対し、再エンキュー率が15%である。そこで、調整部31は、再エンキュー率と再エンキュー率上限の差が5%であると計算し、現在の割り当てステップ数を5%増加させられるかを判定する。現在の割り当てステップ数は毎秒2億ステップであるので、調整部31は、5%増加させたときの割り当てステップ数は毎秒2.1億ステップになると計算する。さらに、調整部31は、得られた計算値を上限ステップ数と比較する。上限ステップ数は毎秒10億ステップであるので、調整部31は、割り当てステップ数を2.1億に設定できると判定する。そこで、調整部31は、予約情報テーブル35bを、図13の予約情報テーブル35cに示すように変更すると共に、変更の内容を調整部41に通知する。調整部41は、予約キュー30に格納されるパケットの処理に割り当てられたステップ数の増加分を求め、ベストエフォートキュー40に割り当てられたステップ数から、増加分を差し引いてキュー情報テーブル43を更新する。
その後、処理装置10では、予約情報テーブル35cと更新後のキュー情報テーブル43を用いて、格納部32や格納部42へのパケットの格納が可能であるかが判定される。判定後に行われる処理は、第1の実施形態と同様である。
予約情報テーブル35cが用いた処理が開始されると、予約キュー30に格納されたパケットの処理に対する割り当て処理ステップが増加したことにより、予約情報テーブル35d(図13)に示すように、再エンキュー率が10%に抑えられたとする。しかし、その後も予約キュー30を用いた処理が予約されているフローのパケットの送受信量が増大し続けると、図12、図13を用いて述べたように、予約キュー30に格納されるパケットに対する処理ステップの割り当てが変更される。その結果、予約キュー30に格納されるパケットに対する割り当てステップ数が、毎秒9.8億ステップにまで達したとする。
予約キュー30中のパケットに対する割り当てステップ数が、毎秒9.8億ステップであるにもかかわらず、割り当てステップ数を20%超過するペースで、パケットが調整部31に入力されたとする。このとき、処理装置10には、図14に示す予約情報テーブル35eが保持される。予約情報テーブル35eに示すように、再エンキュー率が再エンキュー率上限を上回っているので、調整部31は、割り当てステップ数を、上限ステップ数まで引き上げるが、上限ステップ数より大きな値には割り当てステップ数を引き上げない。その後、予約情報テーブル35f(図14)に示すように、割り当てステップ数が上限ステップ数に達した後に、再エンキュー率が再エンキュー率上限を上回ったとしても、割り当てステップ数は引き上げられない。
その後も処理を継続したことにより、図15の予約情報テーブル35gに示すように、累計ステップ数が累計上限ステップ数に達したとする。すると、調整部31は、標準ステップ数を越えた処理が可能な量の上限まで処理が行われたと判定して、割り当てステップ数を標準ステップ数に戻す。すると、予約情報テーブル35gは、予約情報テーブル35h(図15)に示すように更新される。調整部31は、いったん累計ステップ数が累計上限ステップ数に達すると、その後、負荷が増大したとしても、次の調整周期に入るまでは、調整部31は、割り当てステップ数を増大させない。従って、負荷の増大に伴い、予約情報テーブル35hは、図16の予約情報テーブル35iのように変化する。
次の調整周期に入ると、累計ステップ数は0にリセットされる。このため、予約情報テーブル35iは、予約情報テーブル35jに示すように更新される。その後も、図12〜図14を参照しながら説明したように、予約キュー30を介した処理が予約されているパケットの受信数に応じて、割り当てパケット数が変更される。
割り当てステップ数が毎秒4.5億ステップにまで増加した後、パケットの送受信数が低下したことにより、再エンキュー率が0%になったとする。このとき、処理装置10は、図17の予約情報テーブル35kを保持しているとする。その後も再エンキュー率が0%の状態が所定の期間続くと、調整部31は、予め決められた割合で、割り当てステップ数を小さくしていく。なお、このとき、調整部31は、割り当てステップ数が標準ステップ数よりも小さくならないようにする。例えば、調整部31が割り当てステップ数を毎秒3.6億ステップに変更すると、予約情報テーブル35kは、予約情報テーブル35mに示すように更新される。さらに、予約キュー30を用いるパケットの受信数が減少すると、予約情報テーブル35mは図18の予約情報テーブル35nに示すように変動する。予約情報テーブル35nに示すように、割り当てステップ数が標準ステップ数に近い値であっても、再エンキュー率が0%の状態が続くと、調整部31は、割り当てステップ数を標準ステップ数にする。すると、予約情報テーブル35nは、予約情報テーブル35pに示すように変化する。この後は、さらに再エンキュー率が0%の状態が続いたとしても、調整部31は、割り当てステップ数を標準ステップ数より小さくはしない。なお、調整部31は、再エンキュー率が所定の閾値Th以下になったときに、図17、図18を示すように、割り当てステップ数を小さくするように設定されても良い。ここで、閾値Thは再エンキュー率上限よりも小さな値である。
第2の実施形態に示すように、負荷に応じて割り当てステップ数が変動すると、予約キュー30に格納できるパケットの数がトラフィックに応じて調整される。また、制御部50での処理の際には、第1の実施形態で述べたように、予約キュー30中の格納部32に格納されたパケットから優先的に処理部53で処理される。このため、トラフィックが変動しても、予約済みのフローのパケットについては、遅延時間が予測し易くなる
<第3の実施形態>
第3の実施形態では、パケットの処理の種類がL3中継処理である場合に、ルーティングテーブルのエントリ数に応じて、処理ステップ数を変動する方法について説明する。パケットの処理の種類がL3中継処理の場合、処理部53での処理には、入力されたパケットの宛先IPアドレスをキーとしてルーティングテーブルを検索する処理が含まれる。ルーティングテーブルに多数のエントリが含まれると、処理部53が使用する検索アルゴリズムによっては、転送先の検索に時間がかかるようになる場合がある。例えば、図19に示すように、ルーティングテーブルがリニアテーブルである場合、処理部53は、ルーティングテーブル中の先頭のエントリから順にリスト上の経路エントリを検索することになる。このため、図19に示すように、リニアテーブルの末尾に使用するエントリが記録されている場合には、処理部53での処理に時間がかかってしまう。
そこで、調整部31は、L3中継処理を行うパケットについては、処理ステップの算出の際に、ルーティングテーブル中のエントリ数を用いた補正を行う。例えば、調整部31は、予め、1つのエントリの処理にかかるステップ数を求めておき、1つのエントリの処理にかかるステップ数とエントリ数の積を、L3中継処理を行うパケットの処理にかかるステップ数として見積もることができる。さらに、処理部53はパケットに関するルーティングテーブル検索以外の全ての処理も実施し、その処理ステップ数の推定値は付加情報にて指定されている。この付加情報にて指定されるその他の処理ステップ数を含め、第3の実施形態では、L3中継処理を行うパケットに対する処理のステップ数を次式により計算する。
ステップ数=A+B×エントリ数
ここで、Aは付加情報にて指定される、ルーティングテーブル検索以外の全ての処理にかかるステップ数であり、Bはルーティングテーブル中の1つのエントリの処理にかかるステップ数である。なお、L3中継処理用の補正式も、補正テーブル34に格納される。
このように、L3中継の対象となるパケットの処理にかかるステップ数を正確に計算することにより、ルーティングテーブル中のエントリ数が変動しても、優先的に処理する対象のパケットについての遅延時間が見積もり易くなる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
(1)content addressable memory(CAM)を用いた処理
処理部53がL3中継の対象となるパケットを処理するときに、CAMを用いてルーティングテーブルを検索しても良い。CAMを用いて経路検索処理を実施すると、処理部53は、検索対象の宛先IPアドレスとの一致が最も大きな宛先に対するエントリを、一度の演算で求めることができる。例えば、処理部53がCAMを用いる代わりにソフトウェアによる処理でルーティングテーブルを処理すると、1回に600ステップかかるとし、予約情報テーブル33での割り当てステップ数が20000ステップ/秒であるとする。ここで、処理対象のパケットが全てL3中継の処理の対象であると、CAMを用いることにより、割り当てステップ数を、ソフトウェアによる処理を行う場合の600倍にすることができる。このように、調整部31は、処理部53においてCAMでの処理が可能な場合、CAMによるステップ数の減少に見合うだけのパケットを格納部32に格納できるようにするため、割り当てステップ数を600倍した値を予約情報テーブル33に設定できる。なお、ここではCAMを用いてL3中継が行われる場合を例としたが、他の処理回路により、他の処理のステップ数が減少する場合も同様である。すなわち、ソフトウェア処理でかかったステップ数を、処理回路を用いたときにかかるステップ数で割ったときの商と、ソフトウェアでの処理を基準に決められた割り当てステップ数との積が、予約情報テーブル33の割り当てステップに設定されうる。
(2)シェーパ方式による処理
調整部31が格納部32に格納するパケットの量を決定するときに、シェーパ方式を用いることもできる。この場合、ある処理期間内の時間において、予約量を超えた分のパケットも、閾値までは格納部32に保持する。予約された量を超えた分のパケットは、処理期間中に処理部53で処理されなくても、次の処理期間で処理される。なお、割り当てられたステップ数を超えてもパケットを格納部32に保持する場合、余剰ステップ数は負の値となる。余剰ステップ数が取れる値の範囲は、予め、ユーザに保証する遅延の範囲やジッタ等のサービス要件に応じて設定されるものとする。
(3)ネットワーク経由でのシステム
以上の例では、分り易くするために処理装置10が1つの装置である場合を例として説明したが、処理装置10は、フロー識別部11として動作する装置とパケット処理部12として動作する装置の2つに分けられていても良い。2つの装置により第1〜第3の実施形態を含む種々の形態の実現に使用可能なシステムの例を図20に示す。フロー識別装置70は、第1〜第3の実施形態でのフロー識別部11と同様に動作する。ただし、フロー識別装置70では、フロー分類部22は、付加情報をパケットに付加して、送信部27aに出力する。送信部27aに出力されるパケットのフォーマットの例を図21に示す。図21の例では、付加情報は、パケットの末尾に付されている。付加情報のフォーマットは、図6を参照しながら説明したとおりである。なお、図21はパケットのフォーマットの一例であり、実装に応じて、付加情報はパケット中の他の領域に格納されていても良い。
送信部27aは、パケット処理装置80に付加情報を含むパケットを送信する。パケット処理装置80中の振り分け部26、予約キュー30、予約情報テーブル33、補正テーブル34、ベストエフォートキュー40、キュー情報テーブル43、ベストエフォートキュー40、送信部27bの動作は、第1〜第3の実施形態と同様である。パケット処理装置80中の受信部21bは、受信したパケットを振り分け部26に出力する。なお、フロー識別装置70とパケット処理装置80のいずれも、ハードウェア構成は、図3を参照しながら説明したとおりである。
(4)以上の説明に使用したテーブル中の情報要素は一例であり、実装に応じて、1つのテーブルに含まれる情報要素の種類が変動しても良い。例えば、パラメータ情報テーブル25とパケット特性テーブル24は、1つのテーブルに統合されてもよく、また、3つ以上のテーブルに分けられていても良い。
(5)処理装置10、フロー識別装置70、パケット処理装置80のいずれも、Software Defined Networking(SDN)などの技術によって形成された仮想ネットワーク中の装置であっても良い。
10 処理装置
11 フロー識別部
12 パケット処理部
20 フロー分類記憶部
21 受信部
22 フロー分類部
23 フロー管理部
24 パケット特性テーブル
25 パラメータ情報テーブル
26 振り分け部
27 送信部
30 予約キュー
31、41 調整部
32、42 格納部
33 予約情報テーブル
34 補正テーブル
40 ベストエフォートキュー
43 キュー情報テーブル
50 制御部
51 計算部
52 出力部
53 処理部
60 CPU
61 キャッシュ
62 CPUコア
63 キャッシュ
64 メモリ
65 バス
66 回線インタフェース
70 フロー識別装置
80 パケット処理装置

Claims (8)

  1. パケットを受信する受信部と、
    前記パケットを処理する処理部と、
    前記処理部が優先的に処理する優先パケットを格納する第1の格納部と、
    前記第1の格納部に格納される優先パケットの数を、前記優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数に調整する調整部と、
    前記第1の格納部に格納されないパケットを格納する第2の格納部と、
    前記第1の格納部中のパケットを前記処理部に出力するとともに、前記処理部が前記所定期間に可能な処理量から、前記第1の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第2の格納部から前記処理部に出力する出力部
    を備えることを特徴とするパケット処理装置。
  2. 前記優先パケットに対する処理の種類の候補と、前記候補による処理の対象のパケットへの処理量を処理対象のパケットの長さの関数として表わす関数情報を対応付けて記憶する記憶部
    をさらに備え、
    前記調整部は、
    前記優先パケットに対する処理量が、前記優先パケットの長さに応じて変動する場合、前記優先パケットに対する処理の種類に対応付けられた関数情報と、前記優先パケットの長さを用いて、前記優先パケットに対する処理量を計算し、
    計算した処理量を用いて、前記優先パケットを前記第1の格納部に格納できるかを判定する
    ことを特徴とする請求項1に記載のパケット処理装置。
  3. 前記処理部での処理後のパケットを送信する送信部
    をさらに備え、
    前記記憶部は、前記処理部が前記処理部に入力されたパケットの宛先に向けた中継処理を行うときに使用する経路情報をさらに備え、
    前記調整部は、前記経路情報に含まれている経路数が多いほど、前記優先パケットに対する処理量を大きくする
    ことを特徴とする請求項に記載のパケット処理装置。
  4. 前記記憶部は、前記処理部で前記所定期間に処理可能な処理量の上限である上限値と、前記処理部で前記所定期間に処理可能な処理量の下限である下限値をさらに保持し、
    前記調整部は、
    前記第1の格納部に格納できない優先パケットの量が第1の閾値を超えると、前記上限値を超えない範囲で前記設定値を引き上げ、
    前記第1の格納部に格納できない優先パケットの量が、前記第1の閾値より小さい第2の閾値を下回ると、前記下限値以上の範囲で前記設定値を引き下げる
    ことを特徴とする請求項2または3に記載のパケット処理装置。
  5. 第1の格納部と第2の格納部を備える処理装置が、
    パケットを受信し、
    前記パケット中で優先的に処理する優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第1の格納部に格納し、
    前記第1の格納部に格納されないパケットを、前記第2の格納部に格納し、
    前記第1の格納部中のパケットを処理し、
    前記所定期間に可能な処理量から、前記第1の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第2の格納部から読み出して処理する
    ことを特徴とするパケット処理方法。
  6. 第1の格納部と第2の格納部を備える第1の装置と、
    優先的に処理される対象となる優先パケットと、優先的に処理されないパケットである通常パケットを前記第1の装置に送信する第2の装置、
    を備えるシステムであって、
    前記第1の装置は、
    前記第2の装置から前記優先パケットと前記通常パケットを受信し、
    前記優先パケットに対して前記第1の装置が所定期間に行うことができる処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第1の格納部に格納し、
    前記通常パケットを前記第2の格納部に格納し、
    前記第1の格納部中のパケットを処理し、
    前記所定期間に前記第1の装置が処理できる処理量から、前記第1の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第2の格納部から読み出して処理する
    ことを特徴とするパケット処理システム。
  7. 第1の格納部と第2の格納部を備える処理装置に、
    パケットを受信し、
    前記パケット中で優先的に処理する優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第1の格納部に格納し、
    前記第1の格納部に格納されないパケットを、前記第2の格納部に格納し、
    前記第1の格納部中のパケットを処理し、
    前記所定期間に可能な処理量から、前記第1の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第2の格納部から読み出して処理する
    装置として動作させることを特徴とするパケット処理プログラム。
  8. 前記第2の格納部は、前記調整部による調整により前記第1の格納部に格納されない優先パケットを格納すると共に、前記受信部により受信されるパケットのうちの優先パケット以外のパケットを格納することを特徴とする請求項1〜4のいずれか1項に記載のパケット処理装置。
JP2013230518A 2013-11-06 2013-11-06 パケット処理装置、パケット処理方法、および、パケット処理システム Active JP6252112B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013230518A JP6252112B2 (ja) 2013-11-06 2013-11-06 パケット処理装置、パケット処理方法、および、パケット処理システム
US14/510,576 US9876728B2 (en) 2013-11-06 2014-10-09 Packet processing apparatus, packet processing method, and packet processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013230518A JP6252112B2 (ja) 2013-11-06 2013-11-06 パケット処理装置、パケット処理方法、および、パケット処理システム

Publications (2)

Publication Number Publication Date
JP2015091047A JP2015091047A (ja) 2015-05-11
JP6252112B2 true JP6252112B2 (ja) 2017-12-27

Family

ID=53007013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013230518A Active JP6252112B2 (ja) 2013-11-06 2013-11-06 パケット処理装置、パケット処理方法、および、パケット処理システム

Country Status (2)

Country Link
US (1) US9876728B2 (ja)
JP (1) JP6252112B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540404B (zh) * 2017-03-06 2021-09-10 中国移动通信有限公司研究院 一种动态调整流表的方法和装置
CN113282659A (zh) 2017-03-28 2021-08-20 创新先进技术有限公司 一种基于区块链的数据处理方法及设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01209839A (ja) * 1988-02-17 1989-08-23 Fujitsu Ltd 優先度制御方式
US5293486A (en) * 1991-06-28 1994-03-08 Digital Equipment Corporation Deterministic method for allocation of a shared resource
JPH1124779A (ja) 1997-06-27 1999-01-29 Nec Corp ジョブ実行時間予約方式
JP2002354009A (ja) 2001-05-30 2002-12-06 Nippon Telegr & Teleph Corp <Ntt> ネットワークノード装置とパケット処理方法およびプログラム
JP2003032297A (ja) * 2001-07-17 2003-01-31 Mitsubishi Electric Corp パケット伝送装置及びパケット伝送方法及びコンピュータに実行させるためのプログラム及びコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US7385997B2 (en) * 2002-04-08 2008-06-10 International Business Machines Corporation Priority based bandwidth allocation within real-time and non-real-time traffic streams
JP2009253520A (ja) 2008-04-03 2009-10-29 Mitsubishi Electric Corp 通信装置
US8094556B2 (en) * 2009-04-27 2012-01-10 Avaya Inc. Dynamic buffering and synchronization of related media streams in packet networks

Also Published As

Publication number Publication date
US20150124834A1 (en) 2015-05-07
US9876728B2 (en) 2018-01-23
JP2015091047A (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
RU2692042C1 (ru) Способ определения маршрута и соответствующие устройство и система
JP5659125B2 (ja) 中継装置、中継方法
JP5915729B2 (ja) 制御装置、通信システム及び通信装置制御方法
US9083637B2 (en) System and method for providing dynamic QoS to maximize bandwidth utilization
JP5237841B2 (ja) 帯域制御装置および通信制御半導体
US10721744B2 (en) Resource reallocation
WO2017025021A1 (zh) 一种处理流表的方法及装置
US11582146B2 (en) High-quality adaptive bitrate video through multiple links
US8514741B2 (en) Packet forwarding device
JP2009027400A (ja) 過大フロー検出装置、過大フロー検出回路、端末装置及びネットワークノード
JP6252112B2 (ja) パケット処理装置、パケット処理方法、および、パケット処理システム
US9548929B2 (en) Frame transfer apparatus and frame transfer method
JP6287859B2 (ja) 通信ノード、制御装置、制御情報エントリの管理方法及びプログラム
JP7103883B2 (ja) 通信システム、通信制御方法、及び通信装置
CN104871500A (zh) 通信节点、控制装置、通信系统、分组处理方法、通信节点控制方法及程序
KR20120055946A (ko) 공평한 대역 할당 기반 패킷 스케줄링 방법 및 장치
KR20120055947A (ko) 가입자 인지 플로우별 QoS 제공 방법 및 장치
CN112714081A (zh) 一种数据处理方法及其装置
US20120057605A1 (en) Bandwidth Control Method and Bandwidth Control Device
CN104363176A (zh) 一种报文控制的方法和设备
US20170063725A1 (en) Control method, control device, and storage medium
JP6850618B2 (ja) 中継装置および中継方法
JP2019009630A (ja) ネットワーク負荷分散装置および方法
JP6802763B2 (ja) 中継装置及び帯域制御方法
US20170078438A1 (en) Communication device, communication method, and non-transitory computer readable medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171031

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171113

R150 Certificate of patent or registration of utility model

Ref document number: 6252112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150