JP2019054496A - Communication relay device - Google Patents
Communication relay device Download PDFInfo
- Publication number
- JP2019054496A JP2019054496A JP2017179201A JP2017179201A JP2019054496A JP 2019054496 A JP2019054496 A JP 2019054496A JP 2017179201 A JP2017179201 A JP 2017179201A JP 2017179201 A JP2017179201 A JP 2017179201A JP 2019054496 A JP2019054496 A JP 2019054496A
- Authority
- JP
- Japan
- Prior art keywords
- queue
- hash value
- queues
- unit
- packet
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 77
- 230000005540 biological transmission Effects 0.000 claims abstract description 9
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000004931 aggregating effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
本発明は、通信中継装置に関する。 The present invention relates to a communication relay device.
近年、動画や音声といった電子的なコンテンツをネットワーク経由でリアルタイム配信する、いわゆるストリーミング技術が普及している。かかるストリーミングをインターネット経由で実現する場合、多数のユーザ間で同一の回線が共用される。このため、帯域あたりのコストが低く抑えられる。 In recent years, so-called streaming technology that distributes electronic content such as video and audio in real time via a network has become widespread. When such streaming is realized via the Internet, the same line is shared among many users. For this reason, the cost per band can be kept low.
一方で、通信パケットの廃棄量を抑制することにより、通信品質(QoS:Quality of Service)が確保される。このようなことから、インターネットに接続する中継装置はシェーパを搭載し、一度に多量に送信されるデータを一定レートに平準化して転送する技術が知られている。 On the other hand, communication quality (QoS: Quality of Service) is ensured by suppressing the amount of discarded communication packets. For this reason, a technology is known in which a relay device connected to the Internet is equipped with a shaper, and data that is transmitted in large quantities at a time is leveled and transferred at a constant rate.
特許文献1には、ユーザやサービスに対応したフロー条件を予め構成定義情報として設定しておき、受信した通信パケットを、フローごとに用意したキューに一旦蓄積して、予め定めたシェーピング条件(送出帯域値や優先度)に基づいて通信パケットの転送を行う技術が開示されている。
In
しかしながら、特許文献1の技術は、ユーザやサービスごとにフローを設定する必要があるため、多数のユーザやサービスに対応することが困難である。たとえば、数百万のユーザごとにフローを設定する場合、キューの数をユーザ数と同一数分確保することは困難である。仮に、ユーザ数と同一数分のキューを確保できたとしても、アクティブ率の低いユーザのキューを確保することは非効率である。
However, since the technique of
本発明は、キュー数以上のフローを収容しつつ、かつ通信品質を守ることを目的とする。 An object of the present invention is to protect communication quality while accommodating a flow exceeding the number of queues.
上述の課題を解決するため、本発明に係る代表的な通信装置は、パケットを中継する通信中継装置であって、パケットを受信し、受信したパケットを出力する受信部と、前記受信部が出力したパケットをハッシュ値に変換し、ハッシュ値とキューとの対応関係にしたがい、変換されたハッシュ値に基づいて、前記受信部が出力したパケットを複数のキューに振り分ける振分部と、前記振分部により振り分けられたパケットを複数のキューに格納するバッファと、前記バッファの複数のキューそれぞれに関する状態の情報を蓄積する学習部と、前記学習部が蓄積したキューそれぞれに関する状態の情報に基づいて、キューに複数のハッシュ値が対応する関係の情報を作成し、前記振分部へ送る学習結果処理部と、 前記バッファに格納されたパケットを送信する送信部とを有することを特徴とする。 In order to solve the above-described problems, a typical communication device according to the present invention is a communication relay device that relays a packet, and receives a packet and outputs a received packet, and the reception unit outputs A distribution unit that converts the packet output from the reception unit into a plurality of queues based on the converted hash value according to a correspondence relationship between the hash value and the queue, A buffer for storing packets distributed by the plurality of queues in a plurality of queues, a learning unit for storing state information regarding each of the plurality of queues of the buffer, and a state information regarding each of the queues stored by the learning unit, A learning result processing unit that creates relation information corresponding to a plurality of hash values in a queue and sends the information to the distribution unit, and a buffer stored in the buffer. And a sending unit for transmitting Tsu bets.
本発明によれば、キュー数以上のフローを収容しつつ、かつ通信品質を守ることができる。前述した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。 According to the present invention, it is possible to protect the communication quality while accommodating flows exceeding the number of queues. Problems, configurations, and effects other than those described above will become apparent from the description of the following examples.
<システム構成例>
図1は、通信システムの一例を示す図である。通信システム100は、たとえば、動画などのコンテンツをストリーミングによってユーザに提供するネットワークシステムである。図示するように、通信システム100は、サーバ111、112と、中継装置であるルータ120、140、161〜163と、ユーザの端末であるパーソナルコンピュータ171〜173とを備えている。
<System configuration example>
FIG. 1 is a diagram illustrating an example of a communication system. The
サーバ111、112は、コンテンツを提供するサーバであり、各種コンテンツを記憶する。サーバ111、112は、ルータ120に直接的に接続されている。なお、ルータ120に接続されるサーバの数は、説明を簡単にするために2台として示しているが、3台以上であってもよい。
The
ルータ120は、ネットワーク130に接続される。ネットワーク130は、たとえば、インターネットである。ただし、ネットワーク130の種類は、特に限定されるものではなく、専用回線などのWAN(Wide Area Network)であってもよいし、LAN(Local Area Network)であってもよい。
The
また、ルータ140も、ネットワーク130に接続される。サーバ111、112、ルータ120、140は、たとえば、コンテンツ配信サービスを行うISP(Internet Service Provider)により設置される。
The
ルータ140は、家庭151〜153のそれぞれに設置されたルータ161〜163を介して、パーソナルコンピュータ171〜173にそれぞれ接続される。ルータ140とルータ161〜163との間には、他の中継装置や集線装置が介在してもよい。
The
パーソナルコンピュータ171〜173は、ユーザの端末であって、汎用のパーソナルコンピュータであるが、これに限定されるものではなく、ルータ161〜163に接続される端末は、サーバ111、112の配信するコンテンツを利用可能なコンピュータであればよく、たとえば、ネットワーク対応テレビなどであってもよい。
The
また、ルータ161〜163のそれぞれには、図示しない複数の端末が接続されていてもよい。また、ルータ140は、説明を簡単にするために、家庭151〜153のネットワークに接続されるものとしたが、実際には、たとえば、数千や数万の家庭のネットワークに接続される。
A plurality of terminals (not shown) may be connected to each of the
通信システム100において、サーバ111、112は、パーソナルコンピュータ171〜173から、コンテンツの利用要求を受け付けると、利用要求されたコンテンツを、利用要求元のパーソナルコンピュータ171〜173に向けて、パケットで配信する。
In the
ルータ120、140は、サーバ111、112が配信するパケットを受信すると、それぞれのパケットを一旦バッファに蓄積し、平準化してパーソナルコンピュータ171〜173に向けて転送する。パーソナルコンピュータ171〜173は、ルータ161〜163を介して転送されたパケットを受信し、予めインストールされたアプリケーションで利用する。
When receiving the packets distributed by the
サーバ111、112からパーソナルコンピュータ171〜173に向けて配信されるパケットは、たとえば宛先となるパーソナルコンピュータ171〜173の3台それぞれに応じた通信の3つのフローとなる。ただし、フローはこれに限定されるものではなく、他の情報に基づいて識別されるフローであってもよい。
Packets distributed from the
<ルータの構成例>
図2は、ルータの構成例を示すブロック図である。なお、図1に示したルータ120、140は、本実施例においては同一構成であるので、以下では、特に断る場合を除いて、ルータ120の構成について説明する。
<Example of router configuration>
FIG. 2 is a block diagram illustrating a configuration example of a router. Since the
ルータ120は、受信部201、振分部202、学習部203、バッファ204、帯域制御部205、送信部206、および学習結果処理部207を備えている。
The
受信部201は、外部からパケット250r−1〜250r−f(fは2以上の任意の整数)を受信するインタフェースである。本実施例では、受信部201は、2つの物理ポート(不図示)を備える。この2つの物理ポートには、サーバ111、112が接続される。
The
受信部201は、サーバ111、112からパケット250r−1〜250r−fを受信して、振分部202に出力する。なお、受信部201は、3つ以上の物理ポートを備えていてもよい。この場合、受信部201は、3台以上のサーバが接続されてもよい。
The
パケット250r−1〜250r−fのそれぞれは、フロー260r−1〜260r−fに属するパケットである。このため、fはフローの数であって、パケット250r−1〜250r−fが配信される宛先のパーソナルコンピュータの数であってもよい。また、パケット250r−1〜250r−fのそれぞれは、ヘッダ251r−1〜251r−fを含む。
Each of the packets 250r-1 to 250r-f is a packet belonging to the
受信部201から振分部202へ出力されるパケットは、受信済みであり、ルータ120の内部の情報であるので、内部の情報であることを示すためにパケット250と表記するが、パケット250の内容はパケット250r−1〜250r−fの任意の1つと同じである。また、これに対応して、ルータ120の内部では、フロー260r−1〜260r−fをフロー260と表記し、ヘッダ251r−1〜251r−fをヘッダ251と表記する。
Since the packet output from the
振分部202は、受信部201から入力したパケット250を、バッファ204に確保されたキュー214−1〜214−n(nは2以上の任意の整数、キュー214−1〜214−nを区別しない場合は、キュー214と表記する)のいずれかへ振り分ける。
The
ここで、キュー214−1〜214−nのそれぞれは、キューポインタであるQp1〜Qpnで指される。ただし、Qp1〜Qpnは、キュー214−1〜214−nへアクセス可能に特定する情報であれば、キュー214−1〜214−nそれぞれの名称や識別子であってもよい。 Here, each of the queues 214-1 to 214-n is pointed by Qp1 to Qpn which are queue pointers. However, Qp1 to Qpn may be the names and identifiers of the queues 214-1 to 214-n as long as they are information specifying that the queues 214-1 to 214-n can be accessed.
具体的な振り分けの処理として、たとえば、振分部202は、パケット250のヘッダ251に含まれているヘッダ情報を、所定のハッシュ関数によりハッシュ値へ変換し、パケット250をハッシュ値に対応したキュー214に振り分ける。
As a specific distribution process, for example, the
このために、振分部202は、変換部221とハッシュ値テーブル222とを有する。変換部221は、パケット250のヘッダ251に含まれているヘッダ情報をハッシュ関数に与えてハッシュ値Hに変換する。
For this purpose, the
ハッシュ関数に与えられる情報は、パケット250のヘッダ251に含まれるヘッダ情報であって、たとえば、MACヘッダなどのレイヤ2ヘッダ、IPv4ヘッダやIPv6ヘッダなどのレイヤ3ヘッダおよびTCPヘッダやUDPヘッダなどのレイヤ4ヘッダのいずれかまたは複数のフィールドが使用されてもよい。
The information given to the hash function is header information included in the header 251 of the packet 250, and includes, for example, a layer 2 header such as a MAC header, a
使用されるフィールドの選択は、装置固定(ルータ120に予め設定されて固定)であってもよいし、装置運用者が指定可能であってもよい。ただし、サーバ111、112からパーソナルコンピュータ171〜173へ向けて配信される通信のフロー260を識別できる情報を含むフィールドが選択されることが好ましく、パーソナルコンピュータ171〜173の宛先アドレスを含むフィールドが選択されることが好ましい。
The selection of the field to be used may be fixed to the device (preset by the
ハッシュ値テーブル222は、変換部221から得られたハッシュ値Hと、バッファ204のキュー214とを対応付けるためのテーブルである。たとえば、ハッシュ値HがH1の場合、対応するキュー214はQp1といったキューポインタの情報が格納される。
The hash value table 222 is a table for associating the hash value H obtained from the
ハッシュ値テーブル222のキューポインタの情報は、書き換え可能であり、学習結果処理部207からの指示により変更することができる。なお、振分部202は、たとえば、集積回路により実現される。この場合のハッシュ値テーブル222は、集積回路内のメモリに格納される。
Information on the queue pointer in the hash value table 222 is rewritable and can be changed by an instruction from the learning
学習部203は、振分部202によって、ハッシュ値に対応する複数のキュー214に振り分けられたパケット250を監視して、どのハッシュ値のパケット250が、どのキュー214にどれだけの流量が振り分けられるかを学習する。
The
具体的には、たとえば、学習部203は、パケット250と共にハッシュ値HおよびキューポインタQpが入力され、ハッシュ値HごとにキューポインタQpを対象キューとして、現在キュー長およびパケット250の流量を監視し、学習情報として保持する。
Specifically, for example, the
学習部203は、振分部202による振り分けにしたがってキュー214にパケット250の情報を送出し、学習結果を学習結果処理部207に出力する。なお、学習部203は、たとえば、集積回路により実現される、または、メモリに記憶されたプログラムをプロセッサに実行させることにより実現される。
The
バッファ204は、受信部201が受信したパケット250を一時的に蓄積する記憶領域であり、複数のキュー214−1〜214−nを有する。本実施例では、キュー214−1〜214−nのそれぞれには、たとえば、同一の記憶容量が割り当てられている。
The
複数のキュー214−1〜214−nには、既に説明したように、振分部202が決定した振り分け結果にしたがって、それぞれのパケット250が格納される。なお、輻輳時には、キュー214−1〜214−nのいずれかの容量を超えるパケット250は破棄される。
Each of the queues 214-1 to 214-n stores each packet 250 according to the distribution result determined by the
たとえば、キュー214−i(iは1〜nの中の任意の整数)にキュー214−iの容量分のパケット250が既に蓄積されている場合には、新たにバッファ204に入力されるパケット250は、そのキュー214−iに格納されずに破棄される。
For example, when packets 250 corresponding to the capacity of the queue 214-i have already been accumulated in the queue 214-i (i is an arbitrary integer from 1 to n), the packet 250 newly input to the
帯域制御部205は、キュー214−1〜214−nごとに帯域を制御して、キュー214−1〜214−nに蓄積されたパケット250を送信部206に出力する。具体的には、たとえば、帯域制御部205は、予め設定された帯域制御ルールに基づいてスケジューリングを行い、キュー214−1〜214−nから順次にパケット250を読み出して、送信部206に出力する。なお、帯域制御部205は、たとえば、集積回路により実現される。
The
送信部206は、パケット250をルータ120の外部へ送信するインタフェースである。外部へ送信されたパケット250s−1〜250s−fのそれぞれの内容はパケット250r−1〜250r−fの内容と同じであり、フロー260s−1〜260s−fのそれぞれはフロー260r−1〜260r−fに対応する。
The
ヘッダ251s−1〜251s−fはヘッダ251r−1〜251r−fに対応するものであるが、ルータ120のルータとしての動作により、一部の情報が書き換えられていてもよい。
The
学習結果処理部207は、学習部203より学習結果を受け取り、各種処理を実行する。たとえば、学習結果処理部207は、学習結果を元に特定の閾値以下の流量のフローを束ねるように算出し、算出した結果を振分部202のハッシュ値テーブル222に反映する。
The learning
また、学習結果処理部207は、トラップまたはシステムログなどのメッセージを用いて、送信部206から学習結果を運用者の端末に送信したり、または、図示しない表示部に表示したりすることで、運用者に学習結果を通知する。
In addition, the learning
さらに、学習結果処理部207は、学習結果が登録または削除した場合、その登録または削除の情報を運用者に通知してもよい。なお、学習結果処理部207は、具体的には、たとえば、学習結果処理部207の処理を実行するためのプログラムをプロセッサに実行させることで実現される。
Furthermore, when the learning result is registered or deleted, the learning
<振分部202の構成例>
図3は、振分部202の構成例を示す図である。図2でも示したように、振分部202は、変換部221とハッシュ値テーブル222とを有する。
<Configuration Example of
FIG. 3 is a diagram illustrating a configuration example of the
変換部221は、パケット250をハッシュ関数に基づいてハッシュ値Hに変換する。変換部221が変換するハッシュ値Hの範囲は、装置が有するキュー214の数以上の範囲で変換可能とする。この例ではキュー214の数の2倍程度の範囲で変換可能とする。
The
ハッシュ値テーブル222は、ハッシュ値301とキューポインタ302とを有する。ハッシュ値301は、ハッシュ値H1〜Hm(mは2以上の任意の整数、ハッシュ値H1〜Hmを区別しない場合は、ハッシュ値Hと表記する)を記憶する記憶領域である。
The hash value table 222 has a
キューポインタ302は、キューポインタQp1〜Qpn(nはキュー214の数、キューポインタQp1〜Qpnを区別しない場合は、キューポインタQpと表記する)を記憶する記憶領域である。キューポインタQpは、ハッシュ値Hとキュー214を結びつけるポインタの役割を行う。
The
具体的に、図3の例では、ハッシュ値301のハッシュ値H1にキュー214−1が対応する場合、キュー214−1を指すキューポインタQp1がキューポインタ302に記憶される。
Specifically, in the example of FIG. 3, when the queue 214-1 corresponds to the hash value H1 of the
また、図3の例では、キュー214の数に対してハッシュ値301の数が2倍程度であるため、mはnの2倍程度の値であり、キューポインタ302のたとえばキューポインタQp1は、ハッシュ値301の2つのハッシュ値Hに対応している。すなわち、ハッシュ値Hにキュー214−1を結びつけるキューポインタ302のキューポインタQp1は2つ存在することになる。
In the example of FIG. 3, since the number of hash values 301 is about twice the number of
また、ハッシュ値テーブル222において、ハッシュ値301のハッシュ値Hにキュー214が結び付けられていなくてもよい。このように、いずれのキュー214もハッシュ値Hに結び付けない情報であるNULLがキューポインタ302に記憶されてもよい。そして、ハッシュ値Hが使用される時点で、ハッシュ値Hにキュー214を結び付けるためのキューポインタQpが、NULLの代わりに記憶されてもよい。
In the hash value table 222, the
なお、実際に通信されるフロー260r−1〜260r−fの数に対して、ハッシュ値H1〜Hmの数が十分な状態であり、その状態においてハッシュ関数がコリジョンの発生しない関数である場合、1つのハッシュ値Hには、1つのフロー260のパケット250が変換されるため、以下で説明する1つのハッシュ値Hは1つのフロー260であるとみなされてもよい。
When the number of hash values H1 to Hm is sufficient with respect to the number of
<学習部203の詳細構成例>
図4は、学習部203の構成例を示す図である。学習部203は、振分部202によって各キュー214に振り分けられたパケット250のフロー260に対して、ハッシュ値Hごとに、対象キューQp、現在キュー長QL、および流量Rを監視および学習する。このために、学習部203は、パケット250と共にハッシュ値HとキューポインタQpを振分部202から入力する。
<Detailed Configuration Example of
FIG. 4 is a diagram illustrating a configuration example of the
学習情報400において、ハッシュ値401と対象キュー402のそれぞれは、振分部202から入力されたハッシュ値HとキューポインタQpを、その入力された対応関係のまま記憶し、その対応関係を学習部203が学習する。
In the learning
現在キュー長403は、対象キュー402のキューポインタQpが指すキュー214内のパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の数を記憶する。パケット250の数の代わりに、1または複数のパケット250のバイト数などであってもよい。
The
流量404は、対象キュー402のキューポインタQpが指すキュー214へ出力されるパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の1秒当たりの数を記憶する。パケット250の数の代わりに、1または複数のパケット250のバイト数であってもよいし、1秒当たりの代わりに、他の期間当たりであってもよい。
The
また、流量404は、対象キュー402のキューポインタQpが指すキュー214から出力されるパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の1秒当たりの数を記憶してもよい。このために、学習部203はバッファ204あるいは帯域制御部205から流量Rのための情報を取得してもよい。
The
図4の例は、対象キューQp1が指すキュー214−1の中におけるハッシュ値H1に変換されたパケット250の数は現在キュー長QL1という値であり、キュー214−1へ出力されるハッシュ値H1に変換されたパケット250の1秒当たりの数は流量R1という値であることを表している。 In the example of FIG. 4, the number of packets 250 converted to the hash value H1 in the queue 214-1 pointed to by the target queue Qp1 is the current queue length QL1, and the hash value H1 output to the queue 214-1 The number of packets 250 converted into 1 per second indicates that the value is the flow rate R1.
また、ハッシュ値H7に関しては、キュー214が結び付けられておらず、現在キュー長403と流量404は定数Cである。ここで、定数Cは、図5を用いて説明するルールに該当しない数であることが好ましい。
For the hash value H7, the
学習部203は、振分部202から入力されたパケット250(ハッシュ値HとキューポインタQp)ごとに監視して学習情報400を更新することにより学習を行ってもよいし、予め設定された一定の周期ごとに振分部202から入力されたパケット250を監視して学習情報400を更新することにより学習を行ってもよい。
The
<学習結果処理部207の構成例>
図5は、学習結果処理部207の構成例を示す図である。学習結果処理部207が学習部203から学習結果271を受け取り、再振分情報272に反映させ、振分部202へ送る。学習結果271は、図4に示した学習情報400の学習した結果である。
<Configuration Example of Learning
FIG. 5 is a diagram illustrating a configuration example of the learning
学習結果処理部207は、学習部203から学習結果271を受け取ると、予め設定された一定のルールに基づき、ハッシュ値Hと対象キューのキューポインタQpとの対応すなわちハッシュ値Hとキュー214の結び付けを分配しなおす。
Upon receiving the
たとえば、一定のルールとして、1つのキュー214において現在キュー長が0で流量が30以下となるように、ハッシュ値単位でパケットを集約すなわちフローを集約するというルールの場合、流量が既に30を超えているハッシュ値H2と現在キューが既に1以上のハッシュ値H3は対象外となり、学習結果処理部207は学習結果2711、学習結果2713、および学習結果2714が集約可能と判定する。
For example, in the case of a rule that aggregates packets in units of hash values so that the current queue length is 0 and the flow rate is 30 or less in one
その判定の結果として、学習結果2713と学習結果2714のハッシュ値H4およびハッシュ値H5を、ハッシュ値H1の対象キューであるキューポインタQp1が指すキュー214−1と結び付けるため、学習結果処理部207は、再振分情報272にハッシュ値H4に対応する再振分情報2721としてキューポインタQp1を対象キューに設定し、ハッシュ値H5に対応する再振分情報2722としてキューポインタQp1を対象キューに設定する。
As a result of the determination, the learning
再振分情報272において、結び付けしなおさないハッシュ値H1〜H3については、学習部203から受け取った時点の学習結果271と同じであり、キューポインタQp1〜Qp3のままである。これらは、学習情報400およびハッシュ値テーブル222におけるハッシュ値H1〜H3とキューポインタQp1〜Qp3の関係とも同じであり、初期情報のままであるとも言える。
In the
学習結果処理部207が、一定のルールに基づき再振分を行う際、装置運用者の指示、たとえばコンフィグレーションにより、再振分の対象外となるハッシュ値が指定され、指定されたハッシュ値は一定のルールから除外されてもよい。
When the learning
振分部202は、学習結果処理部207から再振分情報272を受け取り、再振分情報272をハッシュ値テーブル222のキューポインタ302へ反映する。特に、再振分情報2721、2722が、ハッシュ値テーブル222のキューポインタ302に設定される。
The
<学習結果処理部207による再振分情報272の作成処理手順例>
図6は、学習結果処理部207による処理手順の例を示すフローチャートである。図5を用いて説明したように、学習結果処理部207は学習結果271から再振分情報272を作成するため、この作成の処理手順の例を示すフローチャートとなる。ここで、一定のルールは既に説明したとおりである。
<Example of processing procedure for creating
FIG. 6 is a flowchart illustrating an example of a processing procedure performed by the learning
学習結果処理部207は、学習部203から学習結果271を受信し(ステップ601)、受信した学習結果271のハッシュ値Hの若番から、現在キュー長と流量を判定するため、変数iに0を設定し(ステップ602)、変数iに1を加算する(ステップ603)。
The learning
ステップ603からステップ612まではループとなっており、変数iが1からハッシュ値Hの数であるmまでを処理して終了するため、学習結果処理部207は、変数iがm+1未満であるかを判定し(ステップ604)、変数iがm+1未満でないと判定した場合、ハッシュ値H1からハッシュ値Hmまでが既に処理済みであるので、ステップ613へ進んでループを終了する。
なお、ステップ602〜604はループのための処理の例であり、ハッシュ値H1からハッシュ値Hmまでを処理できれば、これらの例に処理が限定されるものではない。 Note that steps 602 to 604 are examples of processing for the loop, and the processing is not limited to these examples as long as the hash value H1 to the hash value Hm can be processed.
ステップ604で変数iがm+1未満であると判定した場合、学習結果処理部207は、学習結果271においてハッシュ値Hiの列の現在キュー長が0であるかを判定し(ステップ605)、現在キュー長が0であると判定した場合、学習結果271においてハッシュ値Hiの列の流量が、一定のルールに設定された閾値以下であるかを判定する(ステップ606)。
If it is determined in
ステップ605で現在キューが0でないと判定した場合と、ステップ606で流量が閾値以下ではないと判定した場合は、ステップ603へ戻り、変数iに1が加算されて次のハッシュ値Hiが処理の対象となる。
If it is determined in
ここで、閾値は既に説明したようにたとえば30である。なお、ステップ606は無くてもステップ611により同じ処理結果が得られるが、図5に示した学習結果271におけるハッシュ値H2の場合などで、以下で説明するステップ608からステップ611までのループの実行を予め省略できる。
Here, the threshold is, for example, 30 as already described. Even if
ステップ606で流量が閾値以下であると判定した場合、ハッシュ値Hiよりも若番のハッシュ値Hj(jはi未満の整数)の列の対象キューであるキューポインタQpに、ハッシュ値Hiを集約するため、学習結果処理部207は、変数jに0を設定し(ステップ608)、変数jに1を加算する(ステップ608)。
When it is determined in
ステップ608からステップ611まではループとなっており、変数jが1から変数i―1までを処理して終了するため、学習結果処理部207は、変数jが変数i未満であるかを判定し(ステップ609)、変数jが変数i未満でないと判定した場合、ハッシュ値H1からハッシュ値Hi−1までは既に処理済みであり、集約する対象のハッシュ値Hjが見つからないため、ステップ603へ戻る。
なお、ステップ607〜609はループのための処理の例であり、ハッシュ値H1からハッシュ値Hi−1までを処理できれば、これらの例に処理が限定されるものではない。
ステップ609で変数jが変数i未満であると判定した場合、学習結果処理部207は、学習結果271においてハッシュ値Hjの列の現在キュー長が0であるかを判定し(ステップ610)、現在キュー長が0であると判定した場合、学習結果271においてハッシュ値Hjの列の流量とハッシュ値Hiの列の流量との合計値が、一定のルールに設定された閾値以下であるかを判定する(ステップ611)。
When it is determined in
ステップ610で現在キューが0でないと判定した場合と、ステップ611で流量の合計値が閾値以下ではないと判定した場合は、ステップ608へ戻り、変数jに1が加算されて次のハッシュ値Hjが処理の対象となる。
If it is determined in
ステップ611で流量の合計値が閾値以下であると判定した場合、ハッシュ値Hiをハッシュ値Hjの列の対象キューであるキューポインタQpに集約できるので、学習結果処理部207は、学習結果271におけるハッシュ値Hjの列をハッシュ値Hiの列へコピーする(ステップ612)。
If it is determined in
このコピーには、対象キューのキューポインタQpが含まれるため、ハッシュ値Hjに対応するキューポインタQpがハッシュ値Hiにも対応することになる。また、学習結果処理部207は、ステップ612で流量の合計値を、学習結果271におけるハッシュ値Hjの列の流量に設定し、この合計値もコピーに含める。
Since this copy includes the queue pointer Qp of the target queue, the queue pointer Qp corresponding to the hash value Hj also corresponds to the hash value Hi. In addition, the learning
これにより、ステップ611でのハッシュ値Hjの列の流量は、既に合計値(図5に示したハッシュ値H1とハッシュ値H4の5+2=7)である場合、ハッシュ値Hiの列の流量をさらに加えた合計値(図5に示したハッシュ値H5を加えた7+3=10)とすることができる。
Thereby, when the flow rate of the hash value Hj column in
また、合計値もコピーしているので、ハッシュ値Hiをハッシュ値Hjの列の対象キューであるキューポインタQpに集約しているにもかかわらず、ハッシュ値Hjの列の流量よりハッシュ値Hiの列の流量が小さくなるという現象が発生し、ハッシュ値Hjに集約できずにハッシュ値Hiに集約してしまうということもない。 Further, since the total value is also copied, the hash value Hi is calculated based on the flow rate of the hash value Hj column, even though the hash value Hi is aggregated in the queue pointer Qp that is the target queue of the hash value Hj column. A phenomenon that the flow rate of the column is reduced does not occur, and the hash value Hj cannot be aggregated and the hash value Hi is not aggregated.
なお、ステップ611〜612では、学習結果271を変更する例を示したが、これらに限定されるものではなく、集約の対象となるキューポインタQpと流量の合計値を学習結果271とは別に記憶し、それに応じた処理手順としてもよい。
In
学習結果処理部207は、ステップ612を実行すると、ハッシュ値Hiに関する集約が終了したので、ステップ602へ戻り、変数iに1が加算して次のハッシュ値Hiを処理の対象とする。
When the learning
ステップ604で変数iがm+1未満でないと判定した場合、学習結果処理部207は、変更された対象キューを含む学習結果271のハッシュ値と対象キューを、再振分情報272のハッシュ値と対象キューへコピーし、処理を終了する。
When it is determined in
<学習結果処理部207による再振分情報272の更新処理手順例>
図7は、学習結果処理部207による処理手順の例を示すフローチャートである。図5、6を用いて説明した学習結果処理部207が作成した再振分情報272は、集約されたハッシュ値HのキューポインタQpすなわちキュー214が使用されなくなる。
<Example of Update Processing Procedure of
FIG. 7 is a flowchart illustrating an example of a processing procedure performed by the learning
このため、使用されなくなったキュー214へ他のハッシュ値Hを対応させ、その他のハッシュ値Hに変換されるパケット250のフロー260のバッファに割り当てる処理手順を示すフローチャートとなる。なお、ここでは、学習結果処理部207の処理として説明するが、学習結果処理部207の代わりに振分部202が処理してもよい。
Therefore, the flowchart shows a processing procedure for associating another hash value H with the
使用されなくなったキュー214へ他のハッシュ値Hを対応させる場合、学習結果処理部207は、図6に示したフローチャートの処理手順を実行した後、振分部202へ再振分情報272を送る前に、以下で説明する処理手順を実行する。使用されなくなったキュー214へ他のハッシュ値Hを対応させない場合は、以下で説明する処理手順を実行せず、図6を用いて説明したように再振分情報272を送る。
When associating another hash value H with the
学習結果処理部207は、新たに割り当てるハッシュ値Hk(kは1〜mの任意の整数)を取得する(ステップ701)。ハッシュ値Hkは、たとえば、新たに追加されたフロー260のパケット250から変換されたハッシュ値Hであり、通信が無くキュー214が結び付けられていないため、図3、4に示したキューポインタ(対象キュー)がNULLであるハッシュ値H7である。
The learning
なお、図5の例では、ハッシュ値H7の図示を省略したが、学習結果271は図4に示した学習情報400と同じ情報であり、再振分情報272は学習結果271のコピーであるので、再振分情報272のハッシュ値H7に対応する対象キューはNULLである。
In the example of FIG. 5, the hash value H7 is not shown, but the
学習結果処理部207は、キューポインタQpの数すなわちキュー214の数に相当するnビットのビットマップの各ビットに0を設定する(ステップ702)。このnビットのビットマップの各ビットは、使用されていないキュー214を0で表し、ステップ702はこの初期化である。
The learning
なお、図5に示した再振分情報272のようにキューポインタQp1の指すキュー214−1にハッシュ値H1、H4、H5が結び付けられる場合もあり、これはハッシュ値テーブル222、学習情報400、および学習結果271にも反映し、反映した後の学習に基づいて、たとえば一部のハッシュ値H4が他のキュー214に集約されても、ハッシュ値H1、H5は残る。
Note that hash values H1, H4, and H5 may be associated with the queue 214-1 indicated by the queue pointer Qp1 as in the
このため、図6に示したステップ612では、ハッシュ値Hiの対象キューが他のハッシュ値Hが結び付けられている可能性もあり、使用されなくなったキュー214を特定しきれないので、再振分情報272をスキャンして、nビットのビットマップにキュー214の使用状況を反映させる。
For this reason, in
学習結果処理部207は、変数iに0を設定し(ステップ703)、変数iに1を加算し(ステップ704)、変数iがm+1未満であるかを判定する(ステップ705)。これらのステップ703〜705は、図6に示したステップ602〜604と同じである。
The learning
学習結果処理部207は、ステップ705で変数iがm+1未満であると判定した場合、再振分情報272におけるハッシュ値Hiの列の対象キューのキューポインタQpjを取得し、nビットのビットマップのj番目のビットに1を設定して(ステップ706)、ステップ704へ戻る。
If the learning
ステップ705で変数iがm+1未満でないと判定すると、ハッシュ関数Hmまでの列の対象キューのキューポインタQpの情報をnビットのビットマップに反映させたので、学習結果処理部207は、nビットのビットマップの情報を調べるために、変数iに0を設定し(ステップ707)、変数iに1を加算し(ステップ708)、変数iがn+1未満であるかを判定する(ステップ709)。
If it is determined in
学習結果処理部207は、ステップ709で変数iがn+1未満であると判定した場合、nビットのビットマップのi番目のビットが0であるかを判定し(ステップ710)し、nビットのビットマップのi番目のビットが0であると判定した場合、再振分情報272においてハッシュ値Hkの列の対象キューにキューポインタQpiを設定し、再振分情報272を更新する(ステップ711)。
If the learning
学習結果処理部207は、ステップ710でnビットのビットマップのi番目のビットが0でないと判定した場合、キューポインタQpiは使用されているので、ステップ708へ戻り、ステップ709で変数iがn+1未満でないと判定した場合、キューポインタQp1〜Qpnには使用されていないものはないので、処理を終了する。
If the learning
図7に示したフローチャートの処理が終了すると、既に説明したように、学習結果処理部207は、更新された再振分情報272を振分部202へ送る。ここで、ステップ709で変数iがn+1未満でないと判定した場合、さらに、ハッシュ値Hkに現在キュー長および/あるいは流量の少ないキュー214を結び付けたり、運用者へ通知したりしてもよい。
When the processing of the flowchart shown in FIG. 7 is completed, as described above, the learning
以上で説明したように、キュー214の数以上のハッシュ値Hすなわちフロー260を収容しても、現在キュー長と流量の小さな複数のハッシュ値Hを集約できるので、キュー214の容量を超える可能性は低く、パケット250が破棄されないので、通信品質を守ることができる。
As described above, even if hash values H that are more than the number of
また、集約により使用されなくなったキュー214へ新たなハッシュ値Hすなわち新たなフロー260を収容できるので、通信品質を守りながら、収容できるフロー260の数を増やすことも可能になる。
Further, since a new hash value H, that is, a new flow 260 can be accommodated in the
なお、本発明は以上で説明した実施例に限定されるものではなく、特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。たとえば、以上の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。 In addition, this invention is not limited to the Example demonstrated above, The various modification within the meaning of a claim and an equivalent structure are included. For example, the above embodiments have been described in detail for easy understanding of the present invention, and the present invention is not necessarily limited to those having all the configurations described.
また、以上で説明した各構成、機能、処理部、処理手段などは、それらの一部又は全部を、たとえば集積回路で設計するなどにより、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。 In addition, each of the configurations, functions, processing units, processing means, and the like described above may be realized in hardware by designing a part or all of them, for example, with an integrated circuit. It may be realized by software by interpreting and executing a program for realizing the above.
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリ、ハードディスク、SSD(Solid State Drive)などの記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納されてもよい。 Information such as programs, tables, and files for realizing each function is recorded on a memory, a hard disk, a storage device such as an SSD (Solid State Drive), an IC (Integrated Circuit) card, an SD card, or a DVD (Digital Versatile Disc). It may be stored on a medium.
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。 Further, the control lines and the information lines are those that are considered necessary for the explanation, and not all the control lines and the information lines that are necessary for the mounting are shown. In practice, it can be considered that almost all the components are connected to each other.
120 ルータ
201 受信部
202 振分部
203 学習部
204 バッファ
205 帯域制御部
206 送信部
207 学習結果処理部
214 キュー
221 変換部
222 ハッシュ値テーブル
120
Claims (6)
パケットを受信し、受信したパケットを出力する受信部と、
前記受信部が出力したパケットをハッシュ値に変換し、ハッシュ値とキューとの対応関係にしたがい、変換されたハッシュ値に基づいて、前記受信部が出力したパケットを複数のキューに振り分ける振分部と、
前記振分部により振り分けられたパケットを複数のキューに格納するバッファと、
前記バッファの複数のキューそれぞれに関する状態の情報を蓄積する学習部と、
前記学習部が蓄積したキューそれぞれに関する状態の情報に基づいて、キューに複数のハッシュ値が対応する関係の情報を作成し、前記振分部へ送る学習結果処理部と、
前記バッファに格納されたパケットを送信する送信部と
を有することを特徴とする通信中継装置。 A communication relay device that relays packets,
A receiver that receives the packet and outputs the received packet;
A distribution unit that converts packets output from the reception unit into hash values, and distributes the packets output from the reception unit to a plurality of queues based on the correspondence between the hash values and the queues, based on the converted hash values. When,
A buffer for storing packets distributed by the distribution unit in a plurality of queues;
A learning unit that accumulates state information about each of the plurality of queues of the buffer;
Based on the state information regarding each queue accumulated by the learning unit, a learning result processing unit that creates a relationship information corresponding to a plurality of hash values in the queue and sends the information to the allocating unit;
A communication relay device, comprising: a transmission unit that transmits a packet stored in the buffer.
前記振分部は、
ハッシュ値とキューとの対応関係を記憶するハッシュ値テーブルを有し、
前記受信部が出力したパケットのヘッダをハッシュ値に変換し、
変換されたハッシュ値に対応するキューの情報を、前記ハッシュ値テーブルから取得し、
前記ハッシュ値テーブルから取得したキューの情報を前記バッファへ向けて送ることにより、前記受信部が出力したパケットを複数のキューに振り分けること
を特徴とする通信中継装置。 The communication relay device according to claim 1,
The distribution unit is
A hash value table for storing the correspondence between hash values and queues;
The packet header output by the receiver is converted into a hash value,
Obtain queue information corresponding to the converted hash value from the hash value table,
A communication relay device, wherein the queue information acquired from the hash value table is sent to the buffer to distribute the packets output by the receiving unit to a plurality of queues.
前記受信部が受信したパケットは、宛先アドレスをヘッダに含み、
前記振分部は、
前記宛先アドレスを含めてハッシュ値に変換すること
を特徴とする通信中継装置。 The communication relay device according to claim 2,
The packet received by the receiving unit includes a destination address in a header,
The distribution unit is
A communication relay device that converts the address into a hash value including the destination address.
前記学習部は、
前記バッファのキューのキュー長と、前記振分部により振り分けられたパケットの流量とを、ハッシュ値ごとに、前記バッファの複数のキューそれぞれに関する状態の情報として蓄積すること
を特徴とする通信中継装置。 The communication relay device according to claim 3,
The learning unit
A communication relay device that accumulates the queue length of the queue of the buffer and the flow rate of packets distributed by the distribution unit as state information for each of the plurality of queues of the buffer for each hash value .
前記学習結果処理部は、
予め設定された値よりキュー長が小さく、予め設定された値よりバケットの流量が小さい状態となるパケットのヘッダから変換されたハッシュ値にキューを集約することにより、キューに複数のハッシュ値が対応する関係の情報を作成し、前記振分部へ送ること
を特徴とする通信中継装置。 The communication relay device according to claim 4,
The learning result processing unit
Multiple hash values correspond to queues by aggregating queues into hash values converted from packet headers where the queue length is smaller than the preset value and the bucket flow rate is less than the preset value A communication relay device that creates information on a relationship to be sent to the distribution unit.
前記学習結果処理部は、
キューが集約されたハッシュ値の集約前のキューを、他のハッシュ値に対応させる関係の情報を作成し、前記振分部へ送ること
を特徴とする通信中継装置。 The communication relay device according to claim 5,
The learning result processing unit
A communication relay device, characterized in that information on a relationship in which a queue before aggregation of hash values into which queues are aggregated is associated with other hash values is created and sent to the distribution unit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017179201A JP6895354B2 (en) | 2017-09-19 | 2017-09-19 | Communication relay device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017179201A JP6895354B2 (en) | 2017-09-19 | 2017-09-19 | Communication relay device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019054496A true JP2019054496A (en) | 2019-04-04 |
JP6895354B2 JP6895354B2 (en) | 2021-06-30 |
Family
ID=66013683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017179201A Active JP6895354B2 (en) | 2017-09-19 | 2017-09-19 | Communication relay device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6895354B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010171562A (en) * | 2009-01-21 | 2010-08-05 | Fujitsu Ltd | Communication apparatus and communication control method |
JP2013034164A (en) * | 2011-01-26 | 2013-02-14 | Alaxala Networks Corp | Relay device, and relay method |
-
2017
- 2017-09-19 JP JP2017179201A patent/JP6895354B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010171562A (en) * | 2009-01-21 | 2010-08-05 | Fujitsu Ltd | Communication apparatus and communication control method |
JP2013034164A (en) * | 2011-01-26 | 2013-02-14 | Alaxala Networks Corp | Relay device, and relay method |
Also Published As
Publication number | Publication date |
---|---|
JP6895354B2 (en) | 2021-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3758412B1 (en) | Multichannel data transmission method, apparatus, system and computer-readable medium | |
US9503382B2 (en) | Scalable flow and cogestion control with openflow | |
JP5659125B2 (en) | Relay device and relay method | |
US9407560B2 (en) | Software defined network-based load balancing for physical and virtual networks | |
JP4529974B2 (en) | Server load balancing system, server load balancing device, content management device, and server load balancing program | |
US10257066B2 (en) | Interconnect congestion control in a storage grid | |
WO2019134383A1 (en) | Method for controlling network congestion, access device, and computer readable storage medium | |
EP3780542B1 (en) | Data transmission method and device | |
US10721744B2 (en) | Resource reallocation | |
US10225201B2 (en) | Scalable multicast for notification-driven content delivery in information centric networks | |
CN109040243B (en) | Message processing method and device | |
WO2013181940A1 (en) | Method, device and system for scheduling data flow | |
JP5951888B2 (en) | COMMUNICATION DEVICE, COMMUNICATION METHOD, AND COMMUNICATION PROGRAM | |
CN109995664B (en) | Method, equipment and system for transmitting data stream | |
JP7103883B2 (en) | Communication systems, communication control methods, and communication devices | |
CN112087382B (en) | Service routing method and device | |
WO2021101610A1 (en) | Latency guarantee for data packets in a network | |
JP6895354B2 (en) | Communication relay device | |
JP6127900B2 (en) | Packet processing apparatus, packet processing method, and packet processing program | |
US20160294705A1 (en) | Apparatus and method for content caching | |
JP6850618B2 (en) | Relay device and relay method | |
JP2015216498A (en) | Communication device of contents distribution network, client device and program | |
US20180324231A1 (en) | Multicast adaptive bitrate channel selection in access networks | |
KR20200051196A (en) | Electronic device providing fast packet forwarding with reference to additional network address translation table | |
JP5909833B2 (en) | Bandwidth management device, central management device, and bandwidth management method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200423 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210317 |
|
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: 20210511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210607 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6895354 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |