JP2019054496A - Communication relay device - Google Patents

Communication relay device Download PDF

Info

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
Application number
JP2017179201A
Other languages
Japanese (ja)
Other versions
JP6895354B2 (en
Inventor
幹 郡谷
Miki Koritani
幹 郡谷
貴志 琴寄
Takashi Kotoyori
貴志 琴寄
南雲 隆司
Takashi Nagumo
隆司 南雲
隆 宮崎
Takashi Miyazaki
隆 宮崎
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 JP2017179201A priority Critical patent/JP6895354B2/en
Publication of JP2019054496A publication Critical patent/JP2019054496A/en
Application granted granted Critical
Publication of JP6895354B2 publication Critical patent/JP6895354B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

To provide a communication device saving a communication quality while housing a flow of the number of ques or more.SOLUTION: A communication relay device that relays a packet, comprises: a reception part that receives the packet and outputs the packet to be received; a distribution part that converts the packet output from the reception part to a hush value, and distributes the packet output by the reception part to a plurality of queues on the basis of a correspondence relationship of the hush value and each queue and the converted hush value; a buffer that stores the packet distributed by the distribution part into the plurality of queues; a learning part that accumulates information on a state of the plurality of queues of the buffer; a learning result processing part that generates information of a relationship where the plurality of hush values correspond to the queues on the basis of the information on the state in regards to the queues accumulated by the learning part, and transmits it to the distribution part; and a transmission part that transmits the packet stored to the buffer.SELECTED DRAWING: Figure 2

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 Patent Document 1, flow conditions corresponding to users and services are set in advance as configuration definition information, and received communication packets are temporarily stored in a queue prepared for each flow, and predetermined shaping conditions (transmission) A technique for transferring a communication packet based on a bandwidth value and a priority) is disclosed.

特開平11−346246号公報JP-A-11-346246

しかしながら、特許文献1の技術は、ユーザやサービスごとにフローを設定する必要があるため、多数のユーザやサービスに対応することが困難である。たとえば、数百万のユーザごとにフローを設定する場合、キューの数をユーザ数と同一数分確保することは困難である。仮に、ユーザ数と同一数分のキューを確保できたとしても、アクティブ率の低いユーザのキューを確保することは非効率である。   However, since the technique of Patent Document 1 needs to set a flow for each user or service, it is difficult to deal with a large number of users and services. For example, when a flow is set for each millions of users, it is difficult to secure the same number of queues as the number of users. Even if the same number of queues as the number of users can be secured, it is inefficient to secure queues for users with a low active rate.

本発明は、キュー数以上のフローを収容しつつ、かつ通信品質を守ることを目的とする。   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.

通信システムの一例を示す図である。It is a figure which shows an example of a communication system. ルータの構成例を示すブロック図である。It is a block diagram which shows the structural example of a router. 振分部の構成例を示す図である。It is a figure which shows the structural example of a distribution part. 学習部の構成例を示す図である。It is a figure which shows the structural example of a learning part. 学習結果処理部の構成例を示す図である。It is a figure which shows the structural example of a learning result process part. 学習結果処理部による作成処理手順の例を示すフローチャートである。It is a flowchart which shows the example of the creation process procedure by a learning result process part. 学習結果処理部による更新処理手順の例を示すフローチャートである。It is a flowchart which shows the example of the update process procedure by a learning result process part.

<システム構成例>
図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 communication system 100 is a network system that provides content such as moving images to users by streaming, for example. As illustrated, the communication system 100 includes servers 111 and 112, routers 120, 140, and 161 to 163 that are relay devices, and personal computers 171 to 173 that are user terminals.

サーバ111、112は、コンテンツを提供するサーバであり、各種コンテンツを記憶する。サーバ111、112は、ルータ120に直接的に接続されている。なお、ルータ120に接続されるサーバの数は、説明を簡単にするために2台として示しているが、3台以上であってもよい。   The servers 111 and 112 are servers that provide content, and store various types of content. The servers 111 and 112 are directly connected to the router 120. Note that the number of servers connected to the router 120 is shown as two for simplicity of explanation, but may be three or more.

ルータ120は、ネットワーク130に接続される。ネットワーク130は、たとえば、インターネットである。ただし、ネットワーク130の種類は、特に限定されるものではなく、専用回線などのWAN(Wide Area Network)であってもよいし、LAN(Local Area Network)であってもよい。   The router 120 is connected to the network 130. The network 130 is, for example, the Internet. However, the type of the network 130 is not particularly limited, and may be a WAN (Wide Area Network) such as a dedicated line or a LAN (Local Area Network).

また、ルータ140も、ネットワーク130に接続される。サーバ111、112、ルータ120、140は、たとえば、コンテンツ配信サービスを行うISP(Internet Service Provider)により設置される。   The router 140 is also connected to the network 130. The servers 111 and 112 and the routers 120 and 140 are installed by, for example, an ISP (Internet Service Provider) that provides a content distribution service.

ルータ140は、家庭151〜153のそれぞれに設置されたルータ161〜163を介して、パーソナルコンピュータ171〜173にそれぞれ接続される。ルータ140とルータ161〜163との間には、他の中継装置や集線装置が介在してもよい。   The router 140 is connected to personal computers 171 to 173 via routers 161 to 163 installed in the homes 151 to 153, respectively. Another relay device or a concentrator may be interposed between the router 140 and the routers 161 to 163.

パーソナルコンピュータ171〜173は、ユーザの端末であって、汎用のパーソナルコンピュータであるが、これに限定されるものではなく、ルータ161〜163に接続される端末は、サーバ111、112の配信するコンテンツを利用可能なコンピュータであればよく、たとえば、ネットワーク対応テレビなどであってもよい。   The personal computers 171 to 173 are user terminals and are general-purpose personal computers. However, the personal computers 171 to 173 are not limited to this, and the terminals connected to the routers 161 to 163 are contents distributed by the servers 111 and 112. As long as the computer can be used, for example, a network-compatible television may be used.

また、ルータ161〜163のそれぞれには、図示しない複数の端末が接続されていてもよい。また、ルータ140は、説明を簡単にするために、家庭151〜153のネットワークに接続されるものとしたが、実際には、たとえば、数千や数万の家庭のネットワークに接続される。   A plurality of terminals (not shown) may be connected to each of the routers 161 to 163. In addition, the router 140 is connected to the networks of the homes 151 to 153 for the sake of simplicity of explanation, but is actually connected to a network of thousands or tens of thousands of homes.

通信システム100において、サーバ111、112は、パーソナルコンピュータ171〜173から、コンテンツの利用要求を受け付けると、利用要求されたコンテンツを、利用要求元のパーソナルコンピュータ171〜173に向けて、パケットで配信する。   In the communication system 100, when the server 111 or 112 receives a content usage request from the personal computers 171 to 173, it distributes the requested content to the usage requesting personal computers 171 to 173 in packets. .

ルータ120、140は、サーバ111、112が配信するパケットを受信すると、それぞれのパケットを一旦バッファに蓄積し、平準化してパーソナルコンピュータ171〜173に向けて転送する。パーソナルコンピュータ171〜173は、ルータ161〜163を介して転送されたパケットを受信し、予めインストールされたアプリケーションで利用する。   When receiving the packets distributed by the servers 111 and 112, the routers 120 and 140 temporarily accumulate the respective packets in a buffer, level the packets, and transfer the packets to the personal computers 171 to 173. The personal computers 171 to 173 receive the packets transferred via the routers 161 to 163 and use them in applications installed in advance.

サーバ111、112からパーソナルコンピュータ171〜173に向けて配信されるパケットは、たとえば宛先となるパーソナルコンピュータ171〜173の3台それぞれに応じた通信の3つのフローとなる。ただし、フローはこれに限定されるものではなく、他の情報に基づいて識別されるフローであってもよい。   Packets distributed from the servers 111 and 112 to the personal computers 171 to 173 are, for example, three communication flows corresponding to the three personal computers 171 to 173 as destinations. However, the flow is not limited to this, and may be a flow identified based on other information.

<ルータの構成例>
図2は、ルータの構成例を示すブロック図である。なお、図1に示したルータ120、140は、本実施例においては同一構成であるので、以下では、特に断る場合を除いて、ルータ120の構成について説明する。
<Example of router configuration>
FIG. 2 is a block diagram illustrating a configuration example of a router. Since the routers 120 and 140 shown in FIG. 1 have the same configuration in this embodiment, the configuration of the router 120 will be described below unless otherwise specified.

ルータ120は、受信部201、振分部202、学習部203、バッファ204、帯域制御部205、送信部206、および学習結果処理部207を備えている。   The router 120 includes a reception unit 201, a distribution unit 202, a learning unit 203, a buffer 204, a bandwidth control unit 205, a transmission unit 206, and a learning result processing unit 207.

受信部201は、外部からパケット250r−1〜250r−f(fは2以上の任意の整数)を受信するインタフェースである。本実施例では、受信部201は、2つの物理ポート(不図示)を備える。この2つの物理ポートには、サーバ111、112が接続される。   The receiving unit 201 is an interface that receives packets 250r-1 to 250r-f (f is an arbitrary integer equal to or greater than 2) from the outside. In the present embodiment, the receiving unit 201 includes two physical ports (not shown). Servers 111 and 112 are connected to these two physical ports.

受信部201は、サーバ111、112からパケット250r−1〜250r−fを受信して、振分部202に出力する。なお、受信部201は、3つ以上の物理ポートを備えていてもよい。この場合、受信部201は、3台以上のサーバが接続されてもよい。   The receiving unit 201 receives the packets 250r-1 to 250r-f from the servers 111 and 112, and outputs them to the allocating unit 202. Note that the receiving unit 201 may include three or more physical ports. In this case, the receiving unit 201 may be connected to three or more servers.

パケット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 flows 260r-1 to 260r-f. For this reason, f is the number of flows, and may be the number of destination personal computers to which the packets 250r-1 to 250r-f are distributed. Each of the packets 250r-1 to 250r-f includes headers 251r-1 to 251r-f.

受信部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 receiving unit 201 to the allocating unit 202 has been received and is information inside the router 120, it is expressed as a packet 250 to indicate that it is internal information. The contents are the same as any one of the packets 250r-1 to 250r-f. Correspondingly, in the router 120, the flows 260r-1 to 260r-f are expressed as a flow 260, and the headers 251r-1 to 251r-f are expressed as a header 251.

振分部202は、受信部201から入力したパケット250を、バッファ204に確保されたキュー214−1〜214−n(nは2以上の任意の整数、キュー214−1〜214−nを区別しない場合は、キュー214と表記する)のいずれかへ振り分ける。   The distribution unit 202 distinguishes the packets 250 input from the reception unit 201 from the queues 214-1 to 214-n (n is an arbitrary integer equal to or greater than 2 and queues 214-1 to 214-n) secured in the buffer 204. If not, it is distributed to one of the queues 214).

ここで、キュー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 distribution unit 202 converts the header information included in the header 251 of the packet 250 into a hash value using a predetermined hash function, and the packet 250 is a queue corresponding to the hash value. 214.

このために、振分部202は、変換部221とハッシュ値テーブル222とを有する。変換部221は、パケット250のヘッダ251に含まれているヘッダ情報をハッシュ関数に与えてハッシュ値Hに変換する。   For this purpose, the distribution unit 202 includes a conversion unit 221 and a hash value table 222. The conversion unit 221 converts the header information included in the header 251 of the packet 250 to a hash value H by giving the hash function.

ハッシュ関数に与えられる情報は、パケット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 layer 3 header such as an IPv4 header and an IPv6 header, and a TCP header and a UDP header. Any one or more fields of the layer 4 header may be used.

使用されるフィールドの選択は、装置固定(ルータ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 router 120 and fixed), or may be specified by the device operator. However, it is preferable that a field including information that can identify the communication flow 260 distributed from the servers 111 and 112 to the personal computers 171 to 173 is selected, and a field including the destination address of the personal computers 171 to 173 is selected. It is preferred that

ハッシュ値テーブル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 conversion unit 221 with the queue 214 of the buffer 204. For example, when the hash value H is H1, the corresponding queue 214 stores queue pointer information such as Qp1.

ハッシュ値テーブル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 result processing unit 207. The allocating unit 202 is realized by an integrated circuit, for example. In this case, the hash value table 222 is stored in a memory in the integrated circuit.

学習部203は、振分部202によって、ハッシュ値に対応する複数のキュー214に振り分けられたパケット250を監視して、どのハッシュ値のパケット250が、どのキュー214にどれだけの流量が振り分けられるかを学習する。   The learning unit 203 monitors the packet 250 distributed to the plurality of queues 214 corresponding to the hash value by the distribution unit 202, and distributes the packet 250 with which hash value and the flow rate to which queue 214. To learn.

具体的には、たとえば、学習部203は、パケット250と共にハッシュ値HおよびキューポインタQpが入力され、ハッシュ値HごとにキューポインタQpを対象キューとして、現在キュー長およびパケット250の流量を監視し、学習情報として保持する。   Specifically, for example, the learning unit 203 receives the hash value H and the queue pointer Qp together with the packet 250, and monitors the current queue length and the flow rate of the packet 250 using the queue pointer Qp as a target queue for each hash value H. And keep it as learning information.

学習部203は、振分部202による振り分けにしたがってキュー214にパケット250の情報を送出し、学習結果を学習結果処理部207に出力する。なお、学習部203は、たとえば、集積回路により実現される、または、メモリに記憶されたプログラムをプロセッサに実行させることにより実現される。   The learning unit 203 sends the information of the packet 250 to the queue 214 in accordance with the distribution by the distribution unit 202, and outputs the learning result to the learning result processing unit 207. Note that the learning unit 203 is realized, for example, by an integrated circuit or by causing a processor to execute a program stored in a memory.

バッファ204は、受信部201が受信したパケット250を一時的に蓄積する記憶領域であり、複数のキュー214−1〜214−nを有する。本実施例では、キュー214−1〜214−nのそれぞれには、たとえば、同一の記憶容量が割り当てられている。   The buffer 204 is a storage area for temporarily storing the packet 250 received by the receiving unit 201, and includes a plurality of queues 214-1 to 214-n. In the present embodiment, for example, the same storage capacity is allocated to each of the queues 214-1 to 214-n.

複数のキュー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 distribution unit 202 as described above. Note that, at the time of congestion, the packet 250 exceeding the capacity of any one of the queues 214-1 to 214-n is discarded.

たとえば、キュー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 buffer 204. Are discarded without being stored in the queue 214-i.

帯域制御部205は、キュー214−1〜214−nごとに帯域を制御して、キュー214−1〜214−nに蓄積されたパケット250を送信部206に出力する。具体的には、たとえば、帯域制御部205は、予め設定された帯域制御ルールに基づいてスケジューリングを行い、キュー214−1〜214−nから順次にパケット250を読み出して、送信部206に出力する。なお、帯域制御部205は、たとえば、集積回路により実現される。   The bandwidth control unit 205 controls the bandwidth for each of the queues 214-1 to 214-n, and outputs the packets 250 accumulated in the queues 214-1 to 214-n to the transmission unit 206. Specifically, for example, the bandwidth control unit 205 performs scheduling based on preset bandwidth control rules, sequentially reads the packets 250 from the queues 214-1 to 214-n, and outputs the packets 250 to the transmission unit 206. . Band controller 205 is realized by, for example, an integrated circuit.

送信部206は、パケット250をルータ120の外部へ送信するインタフェースである。外部へ送信されたパケット250s−1〜250s−fのそれぞれの内容はパケット250r−1〜250r−fの内容と同じであり、フロー260s−1〜260s−fのそれぞれはフロー260r−1〜260r−fに対応する。   The transmission unit 206 is an interface that transmits the packet 250 to the outside of the router 120. The contents of the packets 250s-1 to 250s-f transmitted to the outside are the same as the contents of the packets 250r-1 to 250r-f, and the flows 260s-1 to 260s-f are flows 260r-1 to 260r, respectively. Corresponds to -f.

ヘッダ251s−1〜251s−fはヘッダ251r−1〜251r−fに対応するものであるが、ルータ120のルータとしての動作により、一部の情報が書き換えられていてもよい。   The headers 251s-1 to 251s-f correspond to the headers 251r-1 to 251r-f, but some information may be rewritten by the operation of the router 120 as a router.

学習結果処理部207は、学習部203より学習結果を受け取り、各種処理を実行する。たとえば、学習結果処理部207は、学習結果を元に特定の閾値以下の流量のフローを束ねるように算出し、算出した結果を振分部202のハッシュ値テーブル222に反映する。   The learning result processing unit 207 receives the learning result from the learning unit 203 and executes various processes. For example, the learning result processing unit 207 calculates based on the learning result so as to bundle flows having a flow rate equal to or lower than a specific threshold, and reflects the calculated result in the hash value table 222 of the allocating unit 202.

また、学習結果処理部207は、トラップまたはシステムログなどのメッセージを用いて、送信部206から学習結果を運用者の端末に送信したり、または、図示しない表示部に表示したりすることで、運用者に学習結果を通知する。   In addition, the learning result processing unit 207 uses a message such as a trap or a system log to transmit the learning result from the transmission unit 206 to the operator's terminal or display it on a display unit (not shown). Notify operators of learning results.

さらに、学習結果処理部207は、学習結果が登録または削除した場合、その登録または削除の情報を運用者に通知してもよい。なお、学習結果処理部207は、具体的には、たとえば、学習結果処理部207の処理を実行するためのプログラムをプロセッサに実行させることで実現される。   Furthermore, when the learning result is registered or deleted, the learning result processing unit 207 may notify the operator of registration or deletion information. Note that the learning result processing unit 207 is specifically realized by causing a processor to execute a program for executing the processing of the learning result processing unit 207, for example.

<振分部202の構成例>
図3は、振分部202の構成例を示す図である。図2でも示したように、振分部202は、変換部221とハッシュ値テーブル222とを有する。
<Configuration Example of Distribution Unit 202>
FIG. 3 is a diagram illustrating a configuration example of the distribution unit 202. As shown in FIG. 2, the distribution unit 202 includes a conversion unit 221 and a hash value table 222.

変換部221は、パケット250をハッシュ関数に基づいてハッシュ値Hに変換する。変換部221が変換するハッシュ値Hの範囲は、装置が有するキュー214の数以上の範囲で変換可能とする。この例ではキュー214の数の2倍程度の範囲で変換可能とする。   The conversion unit 221 converts the packet 250 into a hash value H based on a hash function. The range of the hash value H converted by the conversion unit 221 can be converted in a range that is equal to or greater than the number of queues 214 included in the apparatus. In this example, conversion is possible within a range of about twice the number of queues 214.

ハッシュ値テーブル222は、ハッシュ値301とキューポインタ302とを有する。ハッシュ値301は、ハッシュ値H1〜Hm(mは2以上の任意の整数、ハッシュ値H1〜Hmを区別しない場合は、ハッシュ値Hと表記する)を記憶する記憶領域である。   The hash value table 222 has a hash value 301 and a queue pointer 302. The hash value 301 is a storage area for storing the hash values H1 to Hm (m is an arbitrary integer equal to or greater than 2, and is expressed as the hash value H when the hash values H1 to Hm are not distinguished).

キューポインタ302は、キューポインタQp1〜Qpn(nはキュー214の数、キューポインタQp1〜Qpnを区別しない場合は、キューポインタQpと表記する)を記憶する記憶領域である。キューポインタQpは、ハッシュ値Hとキュー214を結びつけるポインタの役割を行う。   The queue pointer 302 is a storage area for storing the queue pointers Qp1 to Qpn (n is the number of the queues 214, and is expressed as the queue pointer Qp when the queue pointers Qp1 to Qpn are not distinguished). The queue pointer Qp serves as a pointer that links the hash value H and the queue 214.

具体的に、図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 hash value 301, the queue pointer Qp1 pointing to the queue 214-1 is stored in the queue pointer 302.

また、図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 queues 214, m is about twice the value of n. For example, the queue pointer Qp1 of the queue pointer 302 is This corresponds to the two hash values H of the hash value 301. That is, there are two queue pointers Qp1 of the queue pointer 302 that links the queue 214-1 to the hash value H.

また、ハッシュ値テーブル222において、ハッシュ値301のハッシュ値Hにキュー214が結び付けられていなくてもよい。このように、いずれのキュー214もハッシュ値Hに結び付けない情報であるNULLがキューポインタ302に記憶されてもよい。そして、ハッシュ値Hが使用される時点で、ハッシュ値Hにキュー214を結び付けるためのキューポインタQpが、NULLの代わりに記憶されてもよい。   In the hash value table 222, the queue 214 may not be associated with the hash value H of the hash value 301. In this way, NULL, which is information that is not associated with any of the queues 214 with the hash value H, may be stored in the queue pointer 302. Then, when the hash value H is used, a queue pointer Qp for associating the queue 214 with the hash value H may be stored instead of NULL.

なお、実際に通信されるフロー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 flows 260r-1 to 260r-f that are actually communicated, and the hash function is a function in which no collision occurs in that state, Since one packet 260 of one flow 260 is converted into one hash value H, one hash value H described below may be regarded as one flow 260.

<学習部203の詳細構成例>
図4は、学習部203の構成例を示す図である。学習部203は、振分部202によって各キュー214に振り分けられたパケット250のフロー260に対して、ハッシュ値Hごとに、対象キューQp、現在キュー長QL、および流量Rを監視および学習する。このために、学習部203は、パケット250と共にハッシュ値HとキューポインタQpを振分部202から入力する。
<Detailed Configuration Example of Learning Unit 203>
FIG. 4 is a diagram illustrating a configuration example of the learning unit 203. The learning unit 203 monitors and learns the target queue Qp, the current queue length QL, and the flow rate R for each hash value H with respect to the flow 260 of the packet 250 distributed to each queue 214 by the distribution unit 202. For this purpose, the learning unit 203 inputs the hash value H and the queue pointer Qp from the distribution unit 202 together with the packet 250.

学習情報400において、ハッシュ値401と対象キュー402のそれぞれは、振分部202から入力されたハッシュ値HとキューポインタQpを、その入力された対応関係のまま記憶し、その対応関係を学習部203が学習する。   In the learning information 400, each of the hash value 401 and the target queue 402 stores the hash value H and the queue pointer Qp input from the distribution unit 202 in the input correspondence relationship, and the correspondence relationship is stored in the learning unit. 203 learns.

現在キュー長403は、対象キュー402のキューポインタQpが指すキュー214内のパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の数を記憶する。パケット250の数の代わりに、1または複数のパケット250のバイト数などであってもよい。   The current queue length 403 stores the number of packets 250 in the queue 214 pointed to by the queue pointer Qp of the target queue 402 and converted into the hash value H of the hash value 401. Instead of the number of packets 250, the number of bytes of one or more packets 250 may be used.

流量404は、対象キュー402のキューポインタQpが指すキュー214へ出力されるパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の1秒当たりの数を記憶する。パケット250の数の代わりに、1または複数のパケット250のバイト数であってもよいし、1秒当たりの代わりに、他の期間当たりであってもよい。   The flow rate 404 stores the number of packets 250 output to the queue 214 pointed to by the queue pointer Qp of the target queue 402 and converted into the hash value H of the hash value 401 per second. Instead of the number of packets 250, it may be the number of bytes of one or more packets 250, or per other period instead of per second.

また、流量404は、対象キュー402のキューポインタQpが指すキュー214から出力されるパケット250であって、ハッシュ値401のハッシュ値Hに変換されたパケット250の1秒当たりの数を記憶してもよい。このために、学習部203はバッファ204あるいは帯域制御部205から流量Rのための情報を取得してもよい。   The flow rate 404 is a packet 250 output from the queue 214 pointed to by the queue pointer Qp of the target queue 402, and stores the number of packets 250 converted to the hash value H of the hash value 401 per second. Also good. For this purpose, the learning unit 203 may acquire information for the flow rate R from the buffer 204 or the band control unit 205.

図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 queue 214 is not linked, and the current queue length 403 and flow rate 404 are constant C. Here, the constant C is preferably a number that does not correspond to the rule described with reference to FIG.

学習部203は、振分部202から入力されたパケット250(ハッシュ値HとキューポインタQp)ごとに監視して学習情報400を更新することにより学習を行ってもよいし、予め設定された一定の周期ごとに振分部202から入力されたパケット250を監視して学習情報400を更新することにより学習を行ってもよい。   The learning unit 203 may perform learning by monitoring and updating the learning information 400 for each packet 250 (hash value H and queue pointer Qp) input from the allocating unit 202, or may be set in advance. Learning may be performed by monitoring the packet 250 input from the allocating unit 202 and updating the learning information 400 every period.

<学習結果処理部207の構成例>
図5は、学習結果処理部207の構成例を示す図である。学習結果処理部207が学習部203から学習結果271を受け取り、再振分情報272に反映させ、振分部202へ送る。学習結果271は、図4に示した学習情報400の学習した結果である。
<Configuration Example of Learning Result Processing Unit 207>
FIG. 5 is a diagram illustrating a configuration example of the learning result processing unit 207. The learning result processing unit 207 receives the learning result 271 from the learning unit 203, reflects it in the redistribution information 272, and sends it to the distribution unit 202. The learning result 271 is a learning result of the learning information 400 illustrated in FIG.

学習結果処理部207は、学習部203から学習結果271を受け取ると、予め設定された一定のルールに基づき、ハッシュ値Hと対象キューのキューポインタQpとの対応すなわちハッシュ値Hとキュー214の結び付けを分配しなおす。   Upon receiving the learning result 271 from the learning unit 203, the learning result processing unit 207 associates the hash value H with the queue pointer Qp of the target queue, that is, links the hash value H and the queue 214 based on a predetermined rule. Redistribute.

たとえば、一定のルールとして、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 queue 214, the flow rate already exceeds 30. The hash value H2 and the hash value H3 for which the current queue is already 1 or more are excluded, and the learning result processing unit 207 determines that the learning result 2711, the learning result 2713, and the learning result 2714 can be aggregated.

その判定の結果として、学習結果2713と学習結果2714のハッシュ値H4およびハッシュ値H5を、ハッシュ値H1の対象キューであるキューポインタQp1が指すキュー214−1と結び付けるため、学習結果処理部207は、再振分情報272にハッシュ値H4に対応する再振分情報2721としてキューポインタQp1を対象キューに設定し、ハッシュ値H5に対応する再振分情報2722としてキューポインタQp1を対象キューに設定する。   As a result of the determination, the learning result processing unit 207 associates the hash value H4 and the hash value H5 of the learning result 2713 and the learning result 2714 with the queue 214-1 pointed to by the queue pointer Qp1 that is the target queue of the hash value H1. In the redistribution information 272, the queue pointer Qp1 is set in the target queue as the redistribution information 2721 corresponding to the hash value H4, and the queue pointer Qp1 is set in the target queue as the redistribution information 2722 corresponding to the hash value H5. .

再振分情報272において、結び付けしなおさないハッシュ値H1〜H3については、学習部203から受け取った時点の学習結果271と同じであり、キューポインタQp1〜Qp3のままである。これらは、学習情報400およびハッシュ値テーブル222におけるハッシュ値H1〜H3とキューポインタQp1〜Qp3の関係とも同じであり、初期情報のままであるとも言える。   In the redistribution information 272, the hash values H1 to H3 that are not reconnected are the same as the learning results 271 at the time of reception from the learning unit 203, and the queue pointers Qp1 to Qp3 remain unchanged. These are the same as the relationship between the hash values H1 to H3 and the queue pointers Qp1 to Qp3 in the learning information 400 and the hash value table 222, and it can be said that the initial information remains as it is.

学習結果処理部207が、一定のルールに基づき再振分を行う際、装置運用者の指示、たとえばコンフィグレーションにより、再振分の対象外となるハッシュ値が指定され、指定されたハッシュ値は一定のルールから除外されてもよい。   When the learning result processing unit 207 performs redistribution based on a certain rule, a hash value that is not subject to redistribution is specified by an instruction from the device operator, for example, configuration, and the specified hash value is It may be excluded from certain rules.

振分部202は、学習結果処理部207から再振分情報272を受け取り、再振分情報272をハッシュ値テーブル222のキューポインタ302へ反映する。特に、再振分情報2721、2722が、ハッシュ値テーブル222のキューポインタ302に設定される。   The distribution unit 202 receives the redistribution information 272 from the learning result processing unit 207 and reflects the redistribution information 272 to the queue pointer 302 of the hash value table 222. In particular, the redistribution information 2721 and 2722 is set in the queue pointer 302 of the hash value table 222.

<学習結果処理部207による再振分情報272の作成処理手順例>
図6は、学習結果処理部207による処理手順の例を示すフローチャートである。図5を用いて説明したように、学習結果処理部207は学習結果271から再振分情報272を作成するため、この作成の処理手順の例を示すフローチャートとなる。ここで、一定のルールは既に説明したとおりである。
<Example of processing procedure for creating redistribution information 272 by learning result processing unit 207>
FIG. 6 is a flowchart illustrating an example of a processing procedure performed by the learning result processing unit 207. As described with reference to FIG. 5, the learning result processing unit 207 creates the redistribution information 272 from the learning result 271, and thus becomes a flowchart illustrating an example of the creation processing procedure. Here, certain rules are as already described.

学習結果処理部207は、学習部203から学習結果271を受信し(ステップ601)、受信した学習結果271のハッシュ値Hの若番から、現在キュー長と流量を判定するため、変数iに0を設定し(ステップ602)、変数iに1を加算する(ステップ603)。   The learning result processing unit 207 receives the learning result 271 from the learning unit 203 (step 601), and sets 0 to the variable i in order to determine the current queue length and flow rate from the young number of the hash value H of the received learning result 271. Is set (step 602), and 1 is added to the variable i (step 603).

ステップ603からステップ612まではループとなっており、変数iが1からハッシュ値Hの数であるmまでを処理して終了するため、学習結果処理部207は、変数iがm+1未満であるかを判定し(ステップ604)、変数iがm+1未満でないと判定した場合、ハッシュ値H1からハッシュ値Hmまでが既に処理済みであるので、ステップ613へ進んでループを終了する。   Steps 603 to 612 form a loop, and the variable i is processed from 1 to m, which is the number of hash values H, so that the learning result processing unit 207 determines whether the variable i is less than m + 1. (Step 604), and if it is determined that the variable i is not less than m + 1, since the hash value H1 to the hash value Hm have already been processed, the process proceeds to Step 613 to end the loop.

なお、ステップ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 step 604 that the variable i is less than m + 1, the learning result processing unit 207 determines whether or not the current queue length of the hash value Hi column in the learning result 271 is 0 (step 605). When it is determined that the length is 0, it is determined whether or not the flow rate of the hash value Hi column in the learning result 271 is equal to or less than a threshold set in a certain rule (step 606).

ステップ605で現在キューが0でないと判定した場合と、ステップ606で流量が閾値以下ではないと判定した場合は、ステップ603へ戻り、変数iに1が加算されて次のハッシュ値Hiが処理の対象となる。   If it is determined in step 605 that the current queue is not 0, or if it is determined in step 606 that the flow rate is not less than or equal to the threshold value, the process returns to step 603, 1 is added to the variable i, and the next hash value Hi is processed. It becomes a target.

ここで、閾値は既に説明したようにたとえば30である。なお、ステップ606は無くてもステップ611により同じ処理結果が得られるが、図5に示した学習結果271におけるハッシュ値H2の場合などで、以下で説明するステップ608からステップ611までのループの実行を予め省略できる。   Here, the threshold is, for example, 30 as already described. Even if step 606 is not provided, the same processing result can be obtained by step 611. However, in the case of the hash value H2 in the learning result 271 shown in FIG. 5, execution of a loop from step 608 to step 611 described below is performed. Can be omitted in advance.

ステップ606で流量が閾値以下であると判定した場合、ハッシュ値Hiよりも若番のハッシュ値Hj(jはi未満の整数)の列の対象キューであるキューポインタQpに、ハッシュ値Hiを集約するため、学習結果処理部207は、変数jに0を設定し(ステップ608)、変数jに1を加算する(ステップ608)。   When it is determined in step 606 that the flow rate is equal to or less than the threshold value, the hash value Hi is aggregated in the queue pointer Qp that is the target queue of the column of the hash value Hj (j is an integer less than i) that is younger than the hash value Hi. Therefore, the learning result processing unit 207 sets 0 to the variable j (step 608), and adds 1 to the variable j (step 608).

ステップ608からステップ611まではループとなっており、変数jが1から変数i―1までを処理して終了するため、学習結果処理部207は、変数jが変数i未満であるかを判定し(ステップ609)、変数jが変数i未満でないと判定した場合、ハッシュ値H1からハッシュ値Hi−1までは既に処理済みであり、集約する対象のハッシュ値Hjが見つからないため、ステップ603へ戻る。   Steps 608 to 611 form a loop, and the variable j is processed from 1 to the variable i−1 and is terminated. Therefore, the learning result processing unit 207 determines whether the variable j is less than the variable i. (Step 609) When it is determined that the variable j is not less than the variable i, the hash value H1 to the hash value Hi-1 have already been processed, and the hash value Hj to be aggregated is not found, so the process returns to Step 603. .

なお、ステップ607〜609はループのための処理の例であり、ハッシュ値H1からハッシュ値Hi−1までを処理できれば、これらの例に処理が限定されるものではない。   Steps 607 to 609 are examples of processing for the loop, and the processing is not limited to these examples as long as processing can be performed from the hash value H1 to the hash value Hi-1.

ステップ609で変数jが変数i未満であると判定した場合、学習結果処理部207は、学習結果271においてハッシュ値Hjの列の現在キュー長が0であるかを判定し(ステップ610)、現在キュー長が0であると判定した場合、学習結果271においてハッシュ値Hjの列の流量とハッシュ値Hiの列の流量との合計値が、一定のルールに設定された閾値以下であるかを判定する(ステップ611)。   When it is determined in step 609 that the variable j is less than the variable i, the learning result processing unit 207 determines whether or not the current queue length of the hash value Hj column in the learning result 271 is 0 (step 610). When it is determined that the queue length is 0, it is determined in the learning result 271 whether the total value of the flow rate of the hash value Hj column and the flow rate of the hash value Hi column is equal to or less than a threshold set in a certain rule. (Step 611).

ステップ610で現在キューが0でないと判定した場合と、ステップ611で流量の合計値が閾値以下ではないと判定した場合は、ステップ608へ戻り、変数jに1が加算されて次のハッシュ値Hjが処理の対象となる。   If it is determined in step 610 that the current queue is not 0, or if it is determined in step 611 that the total flow rate is not less than or equal to the threshold value, the process returns to step 608, 1 is added to the variable j, and the next hash value Hj Is the target of processing.

ステップ611で流量の合計値が閾値以下であると判定した場合、ハッシュ値Hiをハッシュ値Hjの列の対象キューであるキューポインタQpに集約できるので、学習結果処理部207は、学習結果271におけるハッシュ値Hjの列をハッシュ値Hiの列へコピーする(ステップ612)。   If it is determined in step 611 that the total value of the flow rates is equal to or less than the threshold value, the hash value Hi can be aggregated into the queue pointer Qp that is the target queue in the column of the hash value Hj. The sequence of hash values Hj is copied to the sequence of hash values Hi (step 612).

このコピーには、対象キューのキューポインタ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 result processing unit 207 sets the total flow rate to the flow rate in the column of the hash value Hj in the learning result 271 in step 612, and includes this total value in the copy.

これにより、ステップ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 step 611 is already the total value (5 + 2 = 7 of the hash value H1 and the hash value H4 shown in FIG. 5), the flow rate of the hash value Hi column is further increased. The added total value (7 + 3 = 10 plus the hash value H5 shown in FIG. 5) can be obtained.

また、合計値もコピーしているので、ハッシュ値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 steps 611 to 612, the learning result 271 is changed. However, the learning result 271 is not limited to this example. The queue pointer Qp to be aggregated and the total flow rate are stored separately from the learning result 271. However, a processing procedure corresponding to that may be used.

学習結果処理部207は、ステップ612を実行すると、ハッシュ値Hiに関する集約が終了したので、ステップ602へ戻り、変数iに1が加算して次のハッシュ値Hiを処理の対象とする。   When the learning result processing unit 207 executes step 612, the aggregation related to the hash value Hi is completed. Therefore, the learning result processing unit 207 returns to step 602 and adds 1 to the variable i to set the next hash value Hi as a processing target.

ステップ604で変数iがm+1未満でないと判定した場合、学習結果処理部207は、変更された対象キューを含む学習結果271のハッシュ値と対象キューを、再振分情報272のハッシュ値と対象キューへコピーし、処理を終了する。   When it is determined in step 604 that the variable i is not less than m + 1, the learning result processing unit 207 uses the hash value and the target queue of the learning result 271 including the changed target queue as the hash value and the target queue of the redistribution information 272. And finish the process.

<学習結果処理部207による再振分情報272の更新処理手順例>
図7は、学習結果処理部207による処理手順の例を示すフローチャートである。図5、6を用いて説明した学習結果処理部207が作成した再振分情報272は、集約されたハッシュ値HのキューポインタQpすなわちキュー214が使用されなくなる。
<Example of Update Processing Procedure of Redistribution Information 272 by Learning Result Processing Unit 207>
FIG. 7 is a flowchart illustrating an example of a processing procedure performed by the learning result processing unit 207. The redistribution information 272 created by the learning result processing unit 207 described with reference to FIGS. 5 and 6 does not use the queue pointer Qp of the aggregated hash value H, that is, the queue 214.

このため、使用されなくなったキュー214へ他のハッシュ値Hを対応させ、その他のハッシュ値Hに変換されるパケット250のフロー260のバッファに割り当てる処理手順を示すフローチャートとなる。なお、ここでは、学習結果処理部207の処理として説明するが、学習結果処理部207の代わりに振分部202が処理してもよい。   Therefore, the flowchart shows a processing procedure for associating another hash value H with the queue 214 that is no longer used and allocating it to the buffer of the flow 260 of the packet 250 converted to the other hash value H. Here, although described as processing of the learning result processing unit 207, the allocating unit 202 may perform processing instead of the learning result processing unit 207.

使用されなくなったキュー214へ他のハッシュ値Hを対応させる場合、学習結果処理部207は、図6に示したフローチャートの処理手順を実行した後、振分部202へ再振分情報272を送る前に、以下で説明する処理手順を実行する。使用されなくなったキュー214へ他のハッシュ値Hを対応させない場合は、以下で説明する処理手順を実行せず、図6を用いて説明したように再振分情報272を送る。   When associating another hash value H with the queue 214 that is no longer used, the learning result processing unit 207 sends the redistribution information 272 to the distribution unit 202 after executing the processing procedure of the flowchart shown in FIG. Before, the processing procedure described below is executed. If no other hash value H is associated with the queue 214 that is no longer used, the redistribution information 272 is sent as described with reference to FIG. 6 without executing the processing procedure described below.

学習結果処理部207は、新たに割り当てるハッシュ値Hk(kは1〜mの任意の整数)を取得する(ステップ701)。ハッシュ値Hkは、たとえば、新たに追加されたフロー260のパケット250から変換されたハッシュ値Hであり、通信が無くキュー214が結び付けられていないため、図3、4に示したキューポインタ(対象キュー)がNULLであるハッシュ値H7である。   The learning result processing unit 207 acquires a newly assigned hash value Hk (k is an arbitrary integer from 1 to m) (step 701). The hash value Hk is, for example, the hash value H converted from the packet 250 of the newly added flow 260, and since there is no communication and the queue 214 is not linked, the queue pointer (target) shown in FIGS. Queue) is a hash value H7 that is NULL.

なお、図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 learning result 271 is the same information as the learning information 400 shown in FIG. 4, and the redistribution information 272 is a copy of the learning result 271. The target queue corresponding to the hash value H7 of the redistribution information 272 is NULL.

学習結果処理部207は、キューポインタQpの数すなわちキュー214の数に相当するnビットのビットマップの各ビットに0を設定する(ステップ702)。このnビットのビットマップの各ビットは、使用されていないキュー214を0で表し、ステップ702はこの初期化である。   The learning result processing unit 207 sets 0 to each bit of the n-bit bitmap corresponding to the number of queue pointers Qp, that is, the number of queues 214 (step 702). Each bit in this n-bit bitmap represents an unused queue 214 as 0, and step 702 is this initialization.

なお、図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 redistribution information 272 illustrated in FIG. 5, which includes the hash value table 222, the learning information 400, Also, the hash values H1 and H5 remain even if some hash values H4 are aggregated in other queues 214, for example, based on the learning after the reflection and also reflected in the learning result 271.

このため、図6に示したステップ612では、ハッシュ値Hiの対象キューが他のハッシュ値Hが結び付けられている可能性もあり、使用されなくなったキュー214を特定しきれないので、再振分情報272をスキャンして、nビットのビットマップにキュー214の使用状況を反映させる。   For this reason, in step 612 shown in FIG. 6, there is a possibility that the target queue of the hash value Hi is associated with another hash value H, and the queue 214 that is no longer used cannot be specified. The information 272 is scanned to reflect the usage status of the queue 214 in the n-bit bitmap.

学習結果処理部207は、変数iに0を設定し(ステップ703)、変数iに1を加算し(ステップ704)、変数iがm+1未満であるかを判定する(ステップ705)。これらのステップ703〜705は、図6に示したステップ602〜604と同じである。   The learning result processing unit 207 sets 0 to the variable i (step 703), adds 1 to the variable i (step 704), and determines whether the variable i is less than m + 1 (step 705). These steps 703 to 705 are the same as steps 602 to 604 shown in FIG.

学習結果処理部207は、ステップ705で変数iがm+1未満であると判定した場合、再振分情報272におけるハッシュ値Hiの列の対象キューのキューポインタQpjを取得し、nビットのビットマップのj番目のビットに1を設定して(ステップ706)、ステップ704へ戻る。   If the learning result processing unit 207 determines in step 705 that the variable i is less than m + 1, the learning result processing unit 207 acquires the queue pointer Qpj of the target queue in the column of the hash value Hi in the redistribution information 272, and stores the n-bit bitmap. The j-th bit is set to 1 (step 706), and the process returns to step 704.

ステップ705で変数iがm+1未満でないと判定すると、ハッシュ関数Hmまでの列の対象キューのキューポインタQpの情報をnビットのビットマップに反映させたので、学習結果処理部207は、nビットのビットマップの情報を調べるために、変数iに0を設定し(ステップ707)、変数iに1を加算し(ステップ708)、変数iがn+1未満であるかを判定する(ステップ709)。   If it is determined in step 705 that the variable i is not less than m + 1, the learning result processing unit 207 reflects the information of the queue pointer Qp of the target queue of the column up to the hash function Hm in the n-bit bitmap. In order to examine the bitmap information, 0 is set to the variable i (step 707), 1 is added to the variable i (step 708), and it is determined whether the variable i is less than n + 1 (step 709).

学習結果処理部207は、ステップ709で変数iがn+1未満であると判定した場合、nビットのビットマップのi番目のビットが0であるかを判定し(ステップ710)し、nビットのビットマップのi番目のビットが0であると判定した場合、再振分情報272においてハッシュ値Hkの列の対象キューにキューポインタQpiを設定し、再振分情報272を更新する(ステップ711)。   If the learning result processing unit 207 determines in step 709 that the variable i is less than n + 1, the learning result processing unit 207 determines whether the i-th bit of the n-bit bitmap is 0 (step 710), and the n-bit bit When it is determined that the i-th bit of the map is 0, the queue pointer Qpi is set in the target queue of the column of the hash value Hk in the redistribution information 272, and the redistribution information 272 is updated (step 711).

学習結果処理部207は、ステップ710でnビットのビットマップのi番目のビットが0でないと判定した場合、キューポインタQpiは使用されているので、ステップ708へ戻り、ステップ709で変数iがn+1未満でないと判定した場合、キューポインタQp1〜Qpnには使用されていないものはないので、処理を終了する。   If the learning result processing unit 207 determines in step 710 that the i-th bit of the n-bit bitmap is not 0, the queue pointer Qpi is used, so the process returns to step 708, and in step 709, the variable i is n + 1. If it is determined that it is not less than the queue pointers Qp1 to Qpn, there are no unused queue pointers, so the processing ends.

図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 result processing unit 207 sends the updated redistribution information 272 to the distribution unit 202. Here, when it is determined in step 709 that the variable i is not less than n + 1, the queue 214 having a small current queue length and / or flow rate may be linked to the hash value Hk, or the operator may be notified.

以上で説明したように、キュー214の数以上のハッシュ値Hすなわちフロー260を収容しても、現在キュー長と流量の小さな複数のハッシュ値Hを集約できるので、キュー214の容量を超える可能性は低く、パケット250が破棄されないので、通信品質を守ることができる。   As described above, even if hash values H that are more than the number of queues 214, that is, flows 260 are accommodated, a plurality of hash values H having a small current queue length and flow rate can be aggregated. Since the packet 250 is not discarded, the communication quality can be protected.

また、集約により使用されなくなったキュー214へ新たなハッシュ値Hすなわち新たなフロー260を収容できるので、通信品質を守りながら、収容できるフロー260の数を増やすことも可能になる。   Further, since a new hash value H, that is, a new flow 260 can be accommodated in the queue 214 that is no longer used due to aggregation, it is possible to increase the number of flows 260 that can be accommodated while maintaining communication quality.

なお、本発明は以上で説明した実施例に限定されるものではなく、特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。たとえば、以上の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。   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 router 201 reception unit 202 distribution unit 203 learning unit 204 buffer 205 bandwidth control unit 206 transmission unit 207 learning result processing unit 214 queue 221 conversion unit 222 hash value table

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.
請求項1に記載の通信中継装置であって、
前記振分部は、
ハッシュ値とキューとの対応関係を記憶するハッシュ値テーブルを有し、
前記受信部が出力したパケットのヘッダをハッシュ値に変換し、
変換されたハッシュ値に対応するキューの情報を、前記ハッシュ値テーブルから取得し、
前記ハッシュ値テーブルから取得したキューの情報を前記バッファへ向けて送ることにより、前記受信部が出力したパケットを複数のキューに振り分けること
を特徴とする通信中継装置。
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.
請求項2に記載の通信中継装置であって、
前記受信部が受信したパケットは、宛先アドレスをヘッダに含み、
前記振分部は、
前記宛先アドレスを含めてハッシュ値に変換すること
を特徴とする通信中継装置。
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.
請求項3に記載の通信中継装置であって、
前記学習部は、
前記バッファのキューのキュー長と、前記振分部により振り分けられたパケットの流量とを、ハッシュ値ごとに、前記バッファの複数のキューそれぞれに関する状態の情報として蓄積すること
を特徴とする通信中継装置。
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 .
請求項4に記載の通信中継装置であって、
前記学習結果処理部は、
予め設定された値よりキュー長が小さく、予め設定された値よりバケットの流量が小さい状態となるパケットのヘッダから変換されたハッシュ値にキューを集約することにより、キューに複数のハッシュ値が対応する関係の情報を作成し、前記振分部へ送ること
を特徴とする通信中継装置。
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.
請求項5に記載の通信中継装置であって、
前記学習結果処理部は、
キューが集約されたハッシュ値の集約前のキューを、他のハッシュ値に対応させる関係の情報を作成し、前記振分部へ送ること
を特徴とする通信中継装置。
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.
JP2017179201A 2017-09-19 2017-09-19 Communication relay device Active JP6895354B2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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