JP2018121307A - 中継装置および中継方法 - Google Patents

中継装置および中継方法 Download PDF

Info

Publication number
JP2018121307A
JP2018121307A JP2017013594A JP2017013594A JP2018121307A JP 2018121307 A JP2018121307 A JP 2018121307A JP 2017013594 A JP2017013594 A JP 2017013594A JP 2017013594 A JP2017013594 A JP 2017013594A JP 2018121307 A JP2018121307 A JP 2018121307A
Authority
JP
Japan
Prior art keywords
packet
queue
flow
information
learning
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.)
Granted
Application number
JP2017013594A
Other languages
English (en)
Other versions
JP6850618B2 (ja
Inventor
幹 郡谷
Miki Koritani
幹 郡谷
隆 宮崎
Takashi Miyazaki
隆 宮崎
慶亮 石松
Keisuke Ishimatsu
慶亮 石松
南雲 隆司
Takashi Nagumo
隆司 南雲
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.)
Alaxala Networks Corp
Original Assignee
Alaxala Networks Corp
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 Alaxala Networks Corp filed Critical Alaxala Networks Corp
Priority to JP2017013594A priority Critical patent/JP6850618B2/ja
Publication of JP2018121307A publication Critical patent/JP2018121307A/ja
Application granted granted Critical
Publication of JP6850618B2 publication Critical patent/JP6850618B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】記憶容量の増加を抑制しつつ通信品質の向上を図ること。【解決手段】中継装置は、第1フローを特定する第1特定情報を含む第1パケットを格納する第1キューと、第1特定情報から変換されたハッシュ値と同一ハッシュ値に変換され第2フローを特定する第2特定情報を含む第2パケットを格納する第2キューと、ハッシュ値と第1キューとを対応付けた第1対応情報と、第2特定情報と第2キューとを対応付けた第2対応情報と、パケット群を受信する受信部と、パケットが属するフローを特定する特定情報が第2特定情報に一致するか否かを判定し、一致する場合に第2対応情報を参照してパケットを第2キューに振り分け、一致しない場合に特定情報をハッシュ値に変換し、第1対応情報を参照してパケットを第1キューに振り分ける振分部と、振分部によって振り分けられたパケット群を送信する送信部と、を有する。【選択図】図2

Description

本発明は、パケット群を中継する中継装置に関する。
近年、動画や音声といった電子的なコンテンツをネットワーク経由でリアルタイム配信する、いわゆるストリーミング技術が普及している。かかるストリーミングをインターネットを介して実現する場合、多数のユーザ間で同一の回線が共用される。このため、帯域あたりのコストが低く抑えられる。一方で、通信パケットの廃棄量を抑制することにより、通信品質(QoS:Quality of Service)が確保される。このようなことから、中継装置はシェーパを搭載し、一度に多量に送信されるデータを一定レートに平準化して転送する技術が知られている(たとえば、下記特許文献1を参照)。
特許文献1は、ユーザやサービスに対応したフロー条件を予め構成定義情報として設定しておき、受信した通信パケットを、フローごとに用意したキューに一旦蓄積して、予め定めたシェーピング条件(送出帯域値や優先度)に基づいて通信パケットの転送を行う技術を開示する。
特許文献2は、入力フローをパケットのヘッダ情報などを元に一定のハッシュ関数によりハッシュ値へ変換し、ハッシュ値に対応したキューに自動で振り分けることにより通信の平準化を行う技術を開示する。また、特許文献2は、ハッシュ値のコリジョンなどにより廃棄が発生した場合は、ハッシュ関数を変更することで再度、平準化を行う技術を開示する。
特開平11−346246号公報 特開2009−182546号公報
しかしながら、特許文献1の技術は、ユーザやサービスごとにフローを設定する必要があるため、多数のユーザやサービスに対応することが困難である。たとえば、数百万のユーザごとにフローを設定する場合、キューの数をユーザ数と同一数分確保することは困難である。仮に、数百万のキューを確保したとしても、記憶媒体の容量の膨大化、または、受信パケットの振り分け処理によって生じる過大な負荷は、大幅なコスト増加を招き、現実的ではない。しかも、アクティブ率の低いユーザのキューを確保することは非効率である。
また、特許文献2の技術では、ハッシュ関数の変更後もハッシュ値のコリジョンが発生する可能性がある。またこれにより、ハッシュ関数の変更が頻発することで送信パケットの順序逆転が頻発する可能性がある。
本発明は、記憶容量の増加を抑制しつつ通信品質の向上を図ることを目的とする。
本願において開示される発明の一側面となる中継装置および中継方法は、パケット群を中継する中継装置及びその中継方法であって、中継装置は、第1フローに属し前記第1フローを特定する第1特定情報を含む第1パケットを格納する1以上の第1キューと、前記第1特定情報から変換されたハッシュ値と同一ハッシュ値に変換され第2フローを特定する第2特定情報を含む第2パケットを格納する1以上の第2キューと、を有するキュー群と、前記ハッシュ値と前記第1キューとを対応付けた第1対応情報を記憶する第1記憶部と、前記第2特定情報と前記第2キューとを対応付けた第2対応情報を記憶する第2記憶部と、を有し、中継装置は、受信部により、前記パケット群を受信し、振分部により、前記受信部によって受信されたパケット群の各々のパケットに含まれており前記パケットが属するフローを特定する特定情報が前記第2特定情報に一致するか否かを判定し、一致する場合には前記第2対応情報を参照して前記パケットを前記第2パケットとして前記第2キューに振り分け、一致しない場合には前記特定情報を前記ハッシュ値に変換し、前記第1対応情報を参照して前記パケットを前記第1パケットとして前記第1キューに振り分け、送信部により、前記振分部によって前記第1キューおよび前記第2キューに振り分けられた前記パケット群を送信することを特徴とする。
本発明の代表的な実施の形態によれば、記憶容量の増加を抑制しつつ通信品質の向上を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
図1は、通信システムの一例を示す説明図である。 図2は、ルータの構成例を示すブロック図である。 図3は、振分部の詳細な構成例を示す説明図である。 図4は、学習部の詳細な構成例を示す説明図である。 図5は、振分部による振り分け処理手順例を示すフローチャートである。 図6は、学習部による学習処理手順例を示すフローチャートである。 図7は、学習結果処理部による学習結果処理手順例を示すフローチャートである。 図8は、学習結果処理部による予備領域更新処理1の詳細な処理手順例を示すフローチャートである。 図9は、学習結果処理部による予備領域更新処理2の詳細な処理手順例を示すフローチャートである。
<システム構成例>
図1は、通信システムの一例を示す説明図である。通信システム100は、動画等のコンテンツをストリーミングによってユーザに提供するネットワークシステムである。図示するように、通信システム100は、サーバSV1,SV2と、中継装置であるルータRT1〜RT5と、端末であるパーソナルコンピュータPC1〜PC3とを備えている。
サーバSV1,SV2は、コンテンツを提供するサーバであり、各種コンテンツを記憶する。サーバSV1,SV2は、ルータRT1に直接的に接続されている。なお、ルータRT1に接続されるサーバの数は、説明を簡単にするために2つとして示しているが、3以上であってもよい。
ルータRT1は、ネットワークNTに接続される。ネットワークNTは、たとえば、インターネットである。ただし、ネットワークNTの種類は、特に限定するものではなく、専用回線などのWAN(Wide Area Network)であってもよいし、LAN(Local Area Network)であってもよい。
また、ルータRT2は、ネットワークNTに接続される。サーバSV1,SV2,ルータRT1,RT2は、たとえば、コンテンツ配信サービスを行うISP(Internet Service Provider)により設置される。ルータRT2は、各家庭A〜Cに設置されたルータRT3〜RT5を介して、パーソナルコンピュータPC1〜PC3にそれぞれ接続される。ルータRT2とルータRT3〜RT5との間には、他の中継装置や集線装置が介在してもよい。
パーソナルコンピュータPC1〜PC3は、汎用のパーソナルコンピュータである。なお、ルータRT3〜RT5に接続される端末は、サーバSV1,SV2の配信するコンテンツを利用可能なコンピュータであればよく、たとえば、ネットワーク対応テレビなどであってもよい。また、ルータRT3〜RT5には、複数の端末が接続されていてもよい。また、ルータRT2は、説明を簡単にするために、家庭A〜Cのネットワークに接続されるものとしたが、実際には、たとえば、数千や数万の家庭のネットワークに接続される。
通信システム100において、サーバSV1,SV2は、パーソナルコンピュータPC1〜PC3から、コンテンツの利用要求を受け付けると、利用要求されたコンテンツを、利用要求元のパーソナルコンピュータPC1〜PC3に配信する。ルータRT1,RT2は、サーバSV1,SV2が配信するパケットを受信すると、それぞれのパケットを一旦バッファに蓄積し、平準化してパーソナルコンピュータPC1〜PC3に向けて転送する。パーソナルコンピュータPC1〜PC3は、ルータRT3〜RT5を介して、転送されたパケットを受信して、予めインストールされたアプリケーションで利用する。
<ルータの構成例>
図2は、ルータの構成例を示すブロック図である。なお、図1に示したルータRT1,RT2は、本実施例においては同一構成であるので、以下では、特に断る場合を除いて、ルータRT1の構成について説明する。ルータRT1は、受信部201と振分部202と学習部203とバッファ204と帯域制御部205と送信部206と学習結果処理部207とを備えている。
受信部201は、外部からパケットPを受信するインタフェースである。本実施例では、受信部201は、2つの物理ポート(不図示)を備える。この2つの物理ポートには、サーバSV1,SV2が接続される。受信部201は、サーバSV1,SV2からパケットPを受信して、振分部202に出力する。なお、受信部201は、3つ以上の物理ポートを備えていてもよい。この場合、受信部201は、3以上のサーバに接続されてもよい。
振分部202は、受信部201が受信したパケットPを、バッファ204に確保されたキューQ1〜Qn(nは2以上の任意の整数。キューQ1〜Qnを区別しない場合、キューQと表記する。)のいずれかへ振り分ける。具体的には、たとえば、振分部202は、パケットPのヘッダhに含まれているヘッダ情報を、所定のハッシュ関数でハッシュ値に変換し、当該パケットPをハッシュ値に対応したキューQに振り分ける。
振分部202は、判定部221とハッシュ値テーブル222とを有する。判定部221は、パケットPのヘッダhに含まれているヘッダ情報をハッシュ関数に与えハッシュ値に変換する。ここで、ハッシュ関数に与えられる情報を、「ハッシュ変換キーk」と呼称する。ハッシュ変換キーkとして使用するヘッダ情報としては、たとえば、MACヘッダなどのレイヤ2ヘッダ、IPv4ヘッダやIPv6ヘッダなどのレイヤ3ヘッダおよびTCPヘッダやUPCヘッダなどのレイヤ4ヘッダのいずれかまたは複数のフィールドを使用してもよい。フィールドの選択は装置固定でもよいし、装置運用者が指定可能としてもよい。ハッシュ変換キーkは、そのパケットPが属するフローFを特定するフロー特定情報である。本例では、説明を簡略化するため、ヘッダ情報の一例として送信元IPアドレスを用いる。
判定部221は、正常なフローF(以下、正常フローFa)とコリジョンしたフローF(以下、コリジョンフローFb)に属するパケットPのハッシュ変換キーkbを保持しており、受信部201からのパケットPのハッシュ変換キーkと一致するか否かを判定する。
コリジョンとは、ハッシュ値の衝突である。すなわち、正常フローFaに属するパケットPに含まれるハッシュ変換キーk(以下、ハッシュ変換キーkaを表記)から得られるハッシュ値Hと、コリジョンフローFbに属するパケットPに含まれるハッシュ変換キーk(以下、ハッシュ変換キーkbを表記。kb≠ka)から得られるハッシュ値Hとが、同一の値になることである。すなわち、正常フローFaとコリジョンフローFbは、ハッシュ変換キーkは異なるがハッシュ値は同一となるパケットPが流れるフローFである。
不一致の場合、判定部221は、上述したように受信部201からのパケットPのハッシュ変換キーkをハッシュ値Hに変換する。一方、一致する場合、判定部221は、受信部201からのパケットPのハッシュ変換キーkをハッシュ変換せず、正常フローFaをキューイングするキューQaとは別に用意されている予備領域のキューQbに当該パケットPを送出する。
ハッシュ値テーブル222は、判定部221から得られたハッシュ値Hと、バッファ204のキューQとを対応付けたテーブルである。たとえば、ハッシュ値Hが1の場合、対応するキューQはQ1といった情報を格納する。なお、振分部202は、たとえば、集積回路により実現される。ハッシュ値テーブル222は、集積回路内のメモリに格納される。
学習部203は、振分部202によって対応する複数のキューQに振り分けられたフローF1〜Fn(フローF1〜Fnを区別しない場合、フローFと表記する。)を監視して、どのフローFのパケットがどのキューQに振り分けられるかを学習する。具体的には、たとえば、学習部203は、キューQごとにパケットPの流量を監視し、ハッシュ変換キーkを元に、同一のキューQに複数のフローFのパケットPが格納されるのを検出する。学習部203は、同一のキューQに複数のフローFのパケットPが格納されるのを検出した場合、複数のフローFのうちいずれか1つのフローFを正常フローFaとして学習し、残余のフローFを、コリジョンフローFbとして学習する。
学習部203は、振分部202による振り分けにしたがってキューQにパケットPを送出し、学習結果を学習結果処理部207に出力する。学習結果は、たとえば、コリジョンフローFbに属するパケットPのハッシュ変換キーkを含む。なお、学習部203は、たとえば、集積回路、または、メモリに記憶されたプログラムをプロセッサに実行させることにより実現される。
バッファ204は、受信部201が受信したパケットPを一時的に蓄積する記憶領域であり、複数のキューQ1〜Qnを有する。本実施例では、キューQ1〜Qnの各々には、たとえば、同一の記憶容量が割り当てられている。複数のキューQ1〜Qnには、上述したように、振分部202が決定した振り分け結果によって、受信した各々のパケットPが格納される。なお、輻輳時には、キューQ1〜Qnの容量を超えるパケットPは、廃棄される。たとえば、キューQに容量分のパケットPが既に蓄積されている場合には、新たにバッファ204に入力されるパケットPは、当該キューQに格納されずに破棄される。
帯域制御部205は、キューQ1〜Qnごとに帯域を制御して、キューQ1〜Qnに蓄積されたパケットPを送信部206に出力する。具体的には、たとえば、帯域制御部140は、予め設定された帯域制御ルールに基づいてスケジューリングを行い、キューQ1〜Qnから順次パケットPを読み出して、送信部206に出力する。なお、帯域制御部205は、たとえば、集積回路により実現される。
送信部206は、パケットPを外部へ送信するインタフェースである。本実施例では、均等割り当て方式によってスケジュールリングを行うこととした。具体的には、たとえば、キューQ1〜Qnに蓄積されたパケットPは、キューQ1〜Qn間で均等な頻度で読み出される。ただし、スケジューリングアルゴリズムは、特に限定するものではなく、たとえば、重み付け均等割り当て方式などであってもよい。また、最低帯域保証方式、最大帯域規制方式、余剰帯域重み付け分配方式などを用いてもよい。
学習結果処理部207は、学習部203より学習結果を受け取り、各種処理を実行する。たとえば、学習結果処理部207は、学習結果を振分部202に反映させる。具体的には、たとえば、学習結果処理部207は、振分部202を制御して、上述した予備領域のキューQと学習結果に含まれるハッシュ変換キーkbとを関連付ける。これにより、振分部202は、当該ハッシュ変換キーを含むパケットPを受信した場合、ハッシュ値に変換せずに、対応するキューQに送出する。
また、学習結果処理部207は、振分部202を制御して、予備領域のキューQと関連付けたハッシュ変換キーkbを、たとえば、エージングにより削除する。学習結果処理部207は、振分部202を制御して、予備領域のキューQと関連付けたハッシュ変換キーkbを、たとえば、当該コリジョンフローFの流量が所定量以下となったことを学習部203から取得した場合に削除してもよい。
また、学習結果処理部207は、トラップまたはシステムログなどのメッセージを用いて、送信部206から学習結果を運用者の端末に送信したり、または、図示しない表示部に表示したりすることで、運用者に学習結果を通知する。学習結果処理部207は、学習結果が登録または削除した場合、当該情報を運用者に通知してもよい。なお、学習結果処理部207は、具体的には、たとえば、当該学習結果処理部207の処理を実行するプログラムをプロセッサに実行させることで実現される。
<振分部202の詳細構成例>
図3は、振分部202の詳細な構成例を示す説明図である。振分部202は、判定部221とハッシュ値テーブル222とを有する。判定部221は、変換部301と、学習結果テーブル302と、を有する。変換部301は、パケットPのハッシュ変換キーkaをハッシュ値Hに変換する。学習結果テーブル302は、予備領域ハッシュ変換キー321と、予備領域キュー322と、を関連付けたテーブルである。予備領域ハッシュ変換キー321は、コリジョンフローFに属するパケットPのハッシュ変換キーkbを記憶する記憶領域である。予備領域キュー322は、コリジョンフローFが送出されるキューQbの識別情報を記憶する記憶領域である。
学習結果テーブル302のエントリは、エージングにより一定期間経過すると、学習結果処理部207により削除される。また、学習結果テーブル302のエントリは、予備領域ハッシュ変換キー321に対応するコリジョンフローFの流量が所定量以下となった場合、学習結果処理部207により削除されてもよい。学習結果テーブル302は、集積回路内のメモリに格納される。
ハッシュ値テーブル222は、ハッシュ値303と、キュー304と、使用中フラグ305と、を有する。ハッシュ値303は、ハッシュ値H1〜Hi(iはnよりも小さい整数。nはキューQの総数。ハッシュ値H1〜Hiを区別しない場合、ハッシュ値Hと表記する。)を記憶する記憶領域である。
キュー304は、キューQa1〜Qai(キューQa1〜Qaiを区別しない場合、キューQaと表記する。)の識別情報を記憶する記憶領域である。具体的には、たとえば、キューQa1〜Qaiはそれぞれ、ハッシュ値Hに対応する。キューQa1〜Qaiは、たとえば、キューQ1〜Qiである。なお、キューQaを通常領域と称す。
キューQb1〜Qbj(jは、n−iとなる整数。キューQb1〜Qbjを区別しない場合、キューQbと表記する。)は、ハッシュ値303と対応付けされない。キューQb1〜Qbjは、たとえば、キューQi+1〜Qnである。なお、キューQbを予備領域と称す。パケットPは、通常領域のキューQaに送出されるが、コリジョンが判明するとコリジョンフローFbに属するパケットPは、予備領域のキューQbに送出される。なお、キューQa,Qbを区別しない場合、キューQと表記する。
使用中フラグ305は、予備領域のエントリについて使用中フラグを記憶する記憶領域である。判定部221は、コリジョンフローFbに属するパケットPを送出すべきキューQを探索する場合、予備領域の使用中フラグ305を参照する。使用中フラグ305の値fb1〜Fbj(使用中フラグ305の値fb1〜Fbjと特定しない場合、使用中フラグ305の値fb、または、使用中フラグfbと表記する)は、ONまたはOFFの2値である。「ON」は、使用中を意味し、「OFF」は使用されていないことを意味する。コリジョンフローFに属するパケットPをキューQに送出する場合、判定部221は、使用中フラグ305の値fbがOFFであるキュー304(Qb)を特定し、そのキュー304(Qb)に当該パケットPを送出する。
<学習部203の詳細構成例>
図4は、学習部203の詳細な構成例を示す説明図である。学習部203は、学習機構LRNt1〜LRNtm(mは、0≦m≦nを満たす整数。学習機構LRNt1〜LRNtmを区別しない場合、学習機構LRNtと表記する。)を有する。たとえば、1つの学習機構LRNtは、1以上のフローFの振分先となるキューQに対応する。図4では、フローF1、F2が同一のキューQに振り分けられたため、学習機構LRNt1がフローF1、F2を監視、学習する。同様に、学習機構LRNt2がフローF3、F4を監視、学習する。学習機構LRNtm−1がフローFn−3、Fn−2を監視、学習する。学習機構LRNtmがフローFn−1、Fnを監視、学習する。
また、図4では、たとえば、学習部203の負荷低減のため、学習部203は、学習機構LRNt1〜LRNtmによる処理を時間t1〜tm(時間t1〜tmを区別しない場合、時間tと表記する。)で、時分割で実行する。時間tmでの処理が完了した場合、再度時間t1に対応する学習機構LRNt1から再度繰り返す。なお、1つの学習機構LRNtがいくつのフローFを担当するか、および、時間t1〜tmを何時間にするかは、ルータRT1の運用者が固定的に指定可能としてもよく、また、学習部203でのCPU使用率に連動して自動で決定してもよい。たとえば、学習部203は、CPU使用率が高くなると、1つの学習機構LRNtが担当するフロー数を減少させたり、時間tを短縮したりする。逆に、学習部203は、CPU使用率が低くなると、1つの学習機構LRNtが担当するフロー数を増加させたり、時間tを長くしたりする。
学習機構LRNtは、学習対象となるフローFについてコリジョンしているか否かを監視する。具体的には、たとえば、学習機構LRNtは、ハッシュ変換キーkが異なる複数のパケットPが学習機構LRNtを通過する場合、学習機構LRNtは、コリジョンが発生していると判定する。たとえば、学習機構LRNtは、ハッシュ変換キーkが異なる複数のパケットPが学習機構LRNtを通過する場合、先着パケットPのハッシュ変換キーkに対応するフローFを正常フローFaに決定し、残余のフローFをコリジョンフローFbに決定する。この学習以降は、振分先となるキューQaには正常フローFaが流れ、コリジョンフローFbは、予備領域のキューQbに流れることになる。
このように、先着パケットPで正常フローFaを決定することにより、学習機構LRNtでの学習処理の高速化や処理負荷の軽減を図ることができる。なお、学習機構LRNtは、先着パケットPではなく、時間t内でのハッシュ変換キーkごとの最大パケット数となるフローFを正常フローFaに決定してもよい。これにより、学習機構LRNtでの学習処理の高精度化を図ることができる。なお、最大パケット数となるフローFが複数ある場合、先着パケットPで正常フローFaを決定すればよい。これにより、可能な限り学習処理の高精度化を図りつつ、学習処理の効率化を図ることができる。
<振分部202による振り分け処理手順例>
図5は、振分部202による振り分け処理手順例を示すフローチャートである。振分部202は、受信部201からパケットPを取得すると(ステップS501)、振分部202は、取得したパケットPのヘッダhに含まれているヘッダ情報の少なくとも一部のフィールド(たとえば、送信元IPアドレス)をハッシュ変換キーkとして取得する(ステップS502)。
振分部202は、取得したパケットPはコリジョンフローFのパケットPであるか否かを判断する(ステップS503)。具体的には、たとえば、振分部202は、学習結果テーブル302の予備領域ハッシュ変換キー321を参照し、取得したパケットPのハッシュ変換キーkに一致するか否かを判断する。取得したパケットPのハッシュ変換キーkに一致する場合、取得したパケットPはコリジョンフローFのパケットPとなる(ステップS503:Yes)。したがって、ステップS507に移行する。一方、取得したパケットPのハッシュ変換キーkに一致しない場合、取得したパケットPは正常フローFaのパケットPとなる(ステップS503:No)。したがって、ステップS504に移行する。
ステップS504において、振分部202は、ステップS502で取得したハッシュ変換キーkをハッシュ関数に与えてハッシュ値Hを算出する(ステップS504)。そして、振分部202は、ハッシュ値テーブル222の通常領域のエントリ群を参照して、キュー304から、ハッシュ値303(算出ハッシュ値H)に対応するキューQaを特定する。振分部202は、特定したキューQaに、ステップS501で取得したパケットPを出力する(ステップS506)。これにより、振分部202の振分処理は終了する。
また、ステップS507において、振分部202は、ステップS503で取得したハッシュ変換キーkbに対応するキューQbを学習結果テーブル302から特定する(ステップS507)。振分部202は、特定したキューQbに、ステップS501で取得したパケットPを出力する(ステップS506)。これにより、振分部202の振分処理は終了する。
<学習部による学習処理手順例>
図6は、学習部203による学習処理手順例を示すフローチャートである。学習部203は、学習機構LRNtによる時分割処理を開始する(ステップS601)。ステップS602〜S604は、各学習機構LRNtによる学習処理である。学習機構LRNtは、通過するフローFを時間t内で学習する(ステップS602)。学習機構LRNtは、複数のフローFが通過しているか否かを判断する(ステップS603)。複数のフローFが通過していない場合(ステップS603:No)、学習機構LRNtの学習処理は終了し、ステップS605に移行する。
一方、複数のフローFが通過している場合(ステップS603:Yes)、学習機構LRNtは、先着パケットPまたはハッシュ変換キーkごとの最大パケット数により、正常フローFaのパケットPのハッシュ変換キーkaと、コリジョンフローFbのハッシュ変換キーkbとを特定する(ステップS604)。これにより、学習機構LRNtの学習処理は終了し、ステップS605に移行する。
学習部203は、各学習機構LRNtによる学習処理が終了すると、各学習機構LRNtにといて特定されたコリジョンフローFbのハッシュ変換キーkbと、ハッシュ値テーブル222の予備領域において現在使用されていない(使用中フラグ305がOFF)キューQb(の識別情報)と、を学習結果として学習結果処理部207に出力する(ステップS605)。これにより、学習部203による学習処理は終了する。
<学習結果処理部207による学習結果処理手順例>
図7は、学習結果処理部207による学習結果処理手順例を示すフローチャートである。学習結果処理部207は、学習部203から学習結果であるハッシュ変換キーkbを取得する(ステップS701)。学習結果処理部207は、学習結果から、ハッシュ変換キーkbとキューQb(の識別情報)とを1つずつ取り出して対応付け、組を生成する(ステップS702)。学習結果処理部207は、未選択の組があるか否かを判断する(ステップS703)。未選択の組がある場合(ステップS703:Yes)、学習結果処理部207は、未選択の組を1つ選択する(ステップS704)。
学習結果処理部207は、選択した組を学習結果テーブル302に登録する(ステップS705)。学習結果処理部207は、選択した組のキューQbについて、ハッシュ値テーブル222の使用中フラグ305の値fbをONにする(ステップS706)。そして、ステップS703に戻る。ステップS703において、未選択の組がない場合(ステップS703:No)、学習結果処理は終了する。
<学習結果処理部207による予備領域更新処理1>
つぎに、学習結果処理部207による予備領域更新処理1について説明する。予備領域更新処理1では、学習結果処理部207は、振分部202を制御して、学習結果テーブル302のエントリをエージングにより削除する。これにより、古いコリジョンフローFbから最新のコリジョンフローFbに予備領域のキューQbを割り当てることができる。以下、詳細な処理手順例について説明する。
図8は、学習結果処理部207による予備領域更新処理1の詳細な処理手順例を示すフローチャートである。まず、学習結果処理部207は、ステップS706のハッシュ変換キーkbの登録が完了を待ち受ける(ステップS801:No)。完了した場合(ステップS801:Yes)、学習結果処理部207は、当該登録したハッシュ変換キーkbについて計時を開始する(ステップS802)。そして、学習結果処理部207は、所定時間経過するのを待ち受ける(ステップS803:No)。所定時間経過した場合(ステップS803:Yes)、学習結果処理部207は、ステップS706で登録したハッシュ変換キーkbのエントリを学習結果テーブル302から削除する(ステップS804)。
そして、学習結果処理部207は、ステップS804で削除したハッシュ変換キーkbに対応する予備領域の使用中フラグ305の値fbをOFFにし(ステップS805)、予備領域更新処理1が終了する。これにより、古いコリジョンフローFbから最新のコリジョンフローFbに予備領域のキューQbを割り当てることができる。また、コリジョンフローFの流量を監視する必要がないため、学習処理部における処理負荷の低減を図ることができる。
<学習結果処理部207による予備領域更新処理2>
つぎに、学習結果処理部207による予備領域更新処理2について説明する。予備領域更新処理2では、学習結果処理部207は、学習部203からコリジョンフローFの流量を監視し、振分部202を制御して、所定量以下となったコリジョンフローFのエントリを削除する。これにより、流量が多いほどコリジョンフローFに予備領域のキューQbを割り当てることができる。以下、詳細な処理手順例について説明する。
図9は、学習結果処理部207による予備領域更新処理2の詳細な処理手順例を示すフローチャートである。まず、学習結果処理部207は、コリジョンフローFを予備領域のキューQbに送出する学習機構LRNtからコリジョンフローFの流量を取得する(ステップS901)。学習結果処理部207は、取得した流量が所定量以下のコリジョンフローFbがあるか否かを判断する(ステップS902)。所定量は、あらかじめ運用者により設定される。
取得した流量が所定量以下のコリジョンフローFbがない場合(ステップS902:No)、予備領域更新処理2が終了する。一方、取得した流量が所定量以下のコリジョンフローFbがある場合(ステップS902:Yes)、学習結果処理部207は、所定量以下のコリジョンフローFbに対応するエントリを学習結果テーブル302から削除する(ステップS903)。学習結果処理部207は、削除したハッシュ変換キーkbに対応する予備領域キュー322(Qb)を特定し、特定したキューQbに対応する予備領域の使用中フラグ305の値fbをOFFにし(ステップS904)、予備領域更新処理2が終了する。これにより、流量が多いほどコリジョンフローFbに予備領域のキューQbを割り当てることができる。したがって、高精度な振分けを実現することができる。
なお、図9では、所定量以下のコリジョンフローFbに対応するエントリを学習結果テーブル302から削除する(ステップS903)こととしたが、一定期間連続して、所定量以下となった場合に、そのコリジョンフローFbに対応するエントリを学習結果テーブル302から削除してもよい。これにより、より高精度な振分けを実現することができる。
このように、本実施例のルータRT1は、パケット群を中継する中継装置であって、1以上の第1キュー(キューQa)と1以上の第2キュー(キューQb)とを有するキュー群(バッファ204)と、第1対応情報(ハッシュ値テーブル222)と、第2対応情報(学習結果テーブル302)と、を有する。
第1キューは、第1パケットを格納する。第1パケットは、第1フロー(正常フローFa)に属し、第1フローを特定する第1特定情報(ハッシュ変換キーka)を含む。第2キューは、第2パケットを格納する。第2パケットは、第1特定情報から変換されたハッシュ値と同一ハッシュ値に変換され、第2フロー(コリジョンフローFb)を特定する第2特定情報(ハッシュ変換キーkb)を含む。
第1対応情報は、ハッシュ値と第1キューを指定する第1キュー(Qa)とを対応付けて記憶する。第2対応情報は、第2特定情報と第2キューを指定する第2キュー(Qb)とを対応付けて記憶する。
ルータRT1は、パケット群を受信する受信部201と、振分部202と、送信部206と、を有する。振分部202は、受信部201によって受信されたパケット群の各々のパケットに含まれておりパケットが属するフローを特定する特定情報(ハッシュ変換キーk)が第2特定情報に一致するか否かを、判定部221により判定する。振分部202は、一致する場合には第2対応情報を参照してパケットを第2パケットとして第2キューに振り分け、一致しない場合には特定情報をハッシュ値に変換し、第1対応情報を参照してパケットを第1パケットとして第1キューに振り分ける。
送信部206は、振分部202によって第1キューおよび第2キューに振り分けられたパケット群を送信する。
このように、上述したルータRT1では、複数のフローFにおいてコリジョンが発生した場合に、コリジョンフローFbを予備領域のキューQに退避させるため、ユーザやサービスごとにフローを設定する必要がなく、特にアクティブ率の低いユーザのキューQを確保する必要はない。これにより、記憶媒体の容量の膨大化を抑制することができる。また、複数のフローFにおいてコリジョンが発生した場合に、コリジョンフローFbを予備領域のキューQに退避させるため、ハッシュ値のコリジョンを回避でき、パケットPの順序逆転を抑制し、その結果、コリジョンによる輻輳の影響がトラフィック全体に及ぶことを抑制し、通信品質を確保することができる。
また、ルータRT1は、学習部203と学習結果処理部207を有してもよい。学習部203は、振分部202によって振り分けられた結果、特定情報が異なるパケットが属する複数のフローFが同一の第1キューに出力されるのを検出し、複数のフローFのうち、特定のフローを第1フローに決定し、特定のフロー以外の他のフローを前記第2フローに決定する。学習結果処理部207は、学習部203によって第2フローに決定された他のフローに属するパケットに含まれる特定情報と、第2対応情報の第2キューの識別情報とを含む学習結果を取得し、第2対応情報に登録する。
これにより、ルータRT1は、自律的に第2対応情報を更新することができ、通信品質の確保を継続することができる。
また、学習結果処理部207は、第2対応情報に、学習結果に含まれる第2キューが使用中であることを示す情報(使用中フラグ305)を付与し、当該付与後に学習結果を取得する場合、使用中であることを示す情報が付与されていない第2キューを選択する。
これにより、使用中の第2キューの選択を防止することができ、第2キューにおいてもコリジョンを抑制することができる。
また、学習部203は、複数のフローFのうち先着パケットPを含む特定のフローを第1フローに決定してもよい。これにより、学習部203での学習処理の高速化や処理負荷の軽減を図ることができる。
また、学習部203は、複数のフローFのうち一定期間内において流量パケット数が最大となる特定のフローを第1フローに決定してもよい。これにより、学習部203での学習処理の高精度化を図ることができる。
また、学習結果処理部207は、第2対応情報のうち登録されてから所定期間経過した学習結果を削除してもよい。これにより、古いコリジョンフローFbから最新のコリジョンフローFbに第2キューを割り当てることができる。
また、学習結果処理部207は、第2対応情報のうち登録されてからの流量パケット数がしきい値以下となった第2フローに対応する学習結果を削除してもよい。これにより、流量が多いほどコリジョンフローFbに予備領域のキューQbを割り当てることができる。したがって、効率的なキューイングを実現することができる。
また、学習結果処理部207は、学習結果を運用者に通知することにより、ハッシュ変換キーkbの変更やネットワーク構成の見直しを促すことができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
100 通信システム
140 帯域制御部
201 受信部
202 振分部
203 学習部
204 バッファ
205 帯域制御部
206 送信部
207 学習結果処理部
221 判定部
222 ハッシュ値テーブル
301 変換部
302 学習結果テーブル

Claims (8)

  1. パケット群を中継する中継装置であって、
    第1フローに属し前記第1フローを特定する第1特定情報を含む第1パケットを格納する1以上の第1キューと、前記第1特定情報から変換されたハッシュ値と同一ハッシュ値に変換され第2フローを特定する第2特定情報を含む第2パケットを格納する1以上の第2キューと、を有するキュー群と、
    前記ハッシュ値と前記第1キューとを対応付けた第1対応情報を記憶する第1記憶部と、
    前記第2特定情報と前記第2キューとを対応付けた第2対応情報を記憶する第2記憶部と、
    前記パケット群を受信する受信部と、
    前記受信部によって受信されたパケット群の各々のパケットに含まれており前記パケットが属するフローを特定する特定情報が前記第2特定情報に一致するか否かを判定し、一致する場合には前記第2対応情報を参照して前記パケットを前記第2パケットとして前記第2キューに振り分け、一致しない場合には前記特定情報を前記ハッシュ値に変換し、前記第1対応情報を参照して前記パケットを前記第1パケットとして前記第1キューに振り分ける振分部と、
    前記振分部によって前記第1キューおよび前記第2キューに振り分けられた前記パケット群を送信する送信部と、
    を有することを特徴とする中継装置。
  2. 請求項1に記載の中継装置であって、
    前記振分部によって振り分けられた結果、前記特定情報が異なるパケットが属する複数のフローが同一の前記第1キューに出力されるのを検出し、前記複数のフローのうち、特定のフローを前記第1フローに決定し、前記特定のフロー以外の他のフローを前記第2フローに決定する学習部と、
    前記学習部によって前記第2フローに決定された前記他のフローに属するパケットに含まれる前記特定情報と、前記第2対応情報の前記第2キューを指定する前記第2キューとを含む学習結果を取得し、前記第2対応情報に登録する学習結果処理部と、
    を有することを特徴とする中継装置。
  3. 請求項2に記載の中継装置であって、
    前記学習結果処理部は、前記第2対応情報に、前記学習結果に含まれる前記第2キューが使用中であることを示す情報を付与し、当該情報の付与後に前記学習結果を取得する場合、前記使用中であることを示す情報が付与されていない他の第2キューを選択することを特徴とする中継装置。
  4. 請求項2に記載の中継装置であって、
    前記学習部は、前記複数のフローのうち先着パケットが属する特定のフローを前記第1フローに決定することを特徴とする中継装置。
  5. 請求項2に記載の中継装置であって、
    前記学習部は、前記複数のフローのうち一定期間内において流量パケット数が最大となる特定のフローを前記第1フローに決定することを特徴とする中継装置。
  6. 請求項2に記載の中継装置であって、
    前記学習結果処理部は、前記第2対応情報のうち登録されてから所定期間経過した学習結果を削除することを特徴とする中継装置。
  7. 請求項2に記載の中継装置であって、
    前記学習結果処理部は、前記第2対応情報のうち登録されてからの流量パケット数がしきい値以下となった前記第2フローに対応する学習結果を削除することを特徴とする中継装置。
  8. パケット群を中継する中継装置による中継方法であって、
    前記中継装置は、
    第1フローに属し前記第1フローを特定する第1特定情報を含む第1パケットを格納する1以上の第1キューと、前記第1特定情報から変換されたハッシュ値と同一ハッシュ値に変換され第2フローを特定する第2特定情報を含む第2パケットを格納する1以上の第2キューと、を有するキュー群と、
    前記ハッシュ値と前記第1キューとを対応付けた第1対応情報を記憶する第1記憶部と、
    前記第2特定情報と前記第2キューとを対応付けた第2対応情報を記憶する第2記憶部と、を有し、
    前記中継方法では、
    前記中継装置は、
    前記パケット群を受信し、
    前記パケット群の各々のパケットに含まれており前記パケットが属するフローを特定する特定情報が前記第2特定情報に一致するか否かを判定し、一致する場合には前記第2対応情報を参照して前記パケットを前記第2パケットとして前記第2キューに振り分け、一致しない場合には前記特定情報を前記ハッシュ値に変換し、前記第1対応情報を参照して前記パケットを前記第1パケットとして前記第1キューに振り分け、
    前記第1キューおよび前記第2キューに振り分けられた前記パケット群を送信する、
    ことを特徴とする中継方法。
JP2017013594A 2017-01-27 2017-01-27 中継装置および中継方法 Active JP6850618B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017013594A JP6850618B2 (ja) 2017-01-27 2017-01-27 中継装置および中継方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017013594A JP6850618B2 (ja) 2017-01-27 2017-01-27 中継装置および中継方法

Publications (2)

Publication Number Publication Date
JP2018121307A true JP2018121307A (ja) 2018-08-02
JP6850618B2 JP6850618B2 (ja) 2021-03-31

Family

ID=63045512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017013594A Active JP6850618B2 (ja) 2017-01-27 2017-01-27 中継装置および中継方法

Country Status (1)

Country Link
JP (1) JP6850618B2 (ja)

Also Published As

Publication number Publication date
JP6850618B2 (ja) 2021-03-31

Similar Documents

Publication Publication Date Title
JP5659125B2 (ja) 中継装置、中継方法
CN107005848B (zh) 用于针对移动性管理而布置虚拟服务网关的系统和方法
US11582146B2 (en) High-quality adaptive bitrate video through multiple links
JP2013168934A (ja) 負荷均衡装置及び負荷均衡方法
JP4771988B2 (ja) 負荷分散装置及びネットワーク装置
US10063478B2 (en) Switching device and control method of switching device
CN109960586B (zh) 一种服务器状态可感知的四层负载均衡器及均衡方法
US20160269297A1 (en) Scaling the LTE Control Plane for Future Mobile Access
US20160014237A1 (en) Communication device, communication method, and computer-readable recording medium
JP7103883B2 (ja) 通信システム、通信制御方法、及び通信装置
JP6886874B2 (ja) エッジ装置、データ処理システム、データ送信方法、及びプログラム
CN112714081A (zh) 一种数据处理方法及其装置
JP6850618B2 (ja) 中継装置および中継方法
CN114024917B (zh) 互联网业务带宽保障的方法、装置、设备及存储介质
JP5349242B2 (ja) パケット交換装置及びパケット交換方法
US9774515B2 (en) Router and resource assignment method thereof
CN108351873B (zh) 一种缓存管理方法和装置
JP7211845B2 (ja) 動画セグメントの画質及び経路を判定する判定サーバ及びプログラム
JP6144559B2 (ja) 並列分散管理装置、プログラム及び並列分散処理システム
JP2015091047A (ja) パケット処理装置、パケット処理方法、および、パケット処理システム
JP6802763B2 (ja) 中継装置及び帯域制御方法
CN108536535A (zh) 一种dns服务器及其线程控制方法和装置
JP2019009630A (ja) ネットワーク負荷分散装置および方法
JP6856257B2 (ja) ネットワークシステム、管理サーバ及び通信解析プログラム
KR101566397B1 (ko) 대역폭 관리 장치, 중앙 관리 장치, 및 대역폭 관리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200721

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: 20210224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210308

R150 Certificate of patent or registration of utility model

Ref document number: 6850618

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250