JP2015073210A - 転送装置 - Google Patents
転送装置 Download PDFInfo
- Publication number
- JP2015073210A JP2015073210A JP2013208051A JP2013208051A JP2015073210A JP 2015073210 A JP2015073210 A JP 2015073210A JP 2013208051 A JP2013208051 A JP 2013208051A JP 2013208051 A JP2013208051 A JP 2013208051A JP 2015073210 A JP2015073210 A JP 2015073210A
- Authority
- JP
- Japan
- Prior art keywords
- frame
- flow
- time
- read
- identification information
- 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.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】メモリ使用量の低減化を図ること。
【解決手段】転送装置100は、フレームを受信し、複数のバッファのうち受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、特定のバッファに同一フローの残存フレームがあるか否かを判断し、残存フレームがない場合に、フレームの理想送出時刻の演算要求を出力し、演算要求を受けた場合、フレームの受信時刻と、フローの設定帯域と、に基づいて、フレームを特定のバッファから読み出す理想送出時刻を算出し、算出された理想送出時刻が到来した場合、特定のバッファからフレームを読み出し、読み出されたフレームを当該フレームの転送先に送信する。
【選択図】図1
【解決手段】転送装置100は、フレームを受信し、複数のバッファのうち受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、特定のバッファに同一フローの残存フレームがあるか否かを判断し、残存フレームがない場合に、フレームの理想送出時刻の演算要求を出力し、演算要求を受けた場合、フレームの受信時刻と、フローの設定帯域と、に基づいて、フレームを特定のバッファから読み出す理想送出時刻を算出し、算出された理想送出時刻が到来した場合、特定のバッファからフレームを読み出し、読み出されたフレームを当該フレームの転送先に送信する。
【選択図】図1
Description
本発明は、データを転送する転送装置に関する。
テレビコンテンツのデジタル化やWebでの動画配信サービスの普及により、ストリーミングデータ増大やWebトラヒックが大容量化している。このため、高速通信を安価に実現できるイーサネット(登録商標、以下同じ)が普及している。イーサネット上で大容量のデータを送信する場合には、複数のフレームを連続的(バースト的)に送出する。このようなバーストトラヒックが多重される場合、中継網での廃棄が発生する場合があるため、QoS(Quality of Service)を確保するために網の入口でピークレートシェーピングを行う。この際、各フローの送信帯域に応じた帯域がシェーパには設定される。
このような多フローのバーストトラヒックに対するシェーピング方法として、フレーム出力リストスケジューリング方式がある。本方式は、各フローのフレーム送信予定時刻をフレーム出力リストに登録しておき、本リストを一定間隔で読み出すことにより、送出予定時刻に送出要求が登録されたフローのフレームを送出する。フレーム出力リストスケジューリング方式では、1フローにつき複数の送信予定時刻をフレーム出力リストに登録する登録方式が採用される。具体的には、当該登録方式では、フレーム到着の度にフレーム出力リストに送信予定時刻が登録される。この結果、バッファに保持している全フレームの送信予定時刻がフレームリストに登録される(たとえば、下記特許文献1を参照)。
しかしながら、上述した登録方式では、バッファに保持している全フレームの送信予定時刻が到着時にフレームリストに登録される。したがって、フレーム出力リストが大きくなり、膨大なメモリ容量が必要になるという問題がある。
本発明は、メモリ使用量の低減化を図ることを目的とする。
本願において開示される発明の一側面となる転送装置、転送方法および記録媒体は、フレームを受信し、複数のバッファのうち受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、前記特定のバッファに同一フローの残存フレームがあるか否かを判断し、前記残存フレームがない場合に、前記フレームの理想送出時刻の演算要求を出力し、前記演算要求を受けた場合、前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フレームを前記特定のバッファから読み出す理想送出時刻を算出し、算出された理想送出時刻が到来した場合、前記特定のバッファから前記フレームを読み出し、読み出されたフレームを当該フレームの転送先に送信することを特徴とする。
本発明の代表的な実施の形態によれば、メモリ使用量の低減化を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
(実施例1)
実施例1について説明する。実施例1の転送装置では、1フローにつき一つの理想送出時刻をフレーム出力リストに登録する登録方式が採用される。背景技術のように、出力フレームバッファに保持しているフレームのすべてではなく、実施例1の転送装置は、フロー毎に1フレームの理想送出時刻の位置にフローIDを登録する。したがって、フレーム出力リストに使用される転送装置内のメモリ使用量の低減化を図ることができる。
実施例1について説明する。実施例1の転送装置では、1フローにつき一つの理想送出時刻をフレーム出力リストに登録する登録方式が採用される。背景技術のように、出力フレームバッファに保持しているフレームのすべてではなく、実施例1の転送装置は、フロー毎に1フレームの理想送出時刻の位置にフローIDを登録する。したがって、フレーム出力リストに使用される転送装置内のメモリ使用量の低減化を図ることができる。
図1は、実施例1にかかる登録方式を示す説明図である。なお、転送装置は、時刻カウンタを有する。時刻カウンタは、1クロックごとにカウンタ値が1カウントアップする周回カウンタである。以下、(1)〜(7)の順に時系列で説明する。
(1)フレームが受信されると、転送装置100は、書込処理部101により、受信フレームをフローごとに分けて出力フレームバッファ102に書き込む。出力フレームバッファ102は、収容可能なn個のフローの各々についてキューとなるバッファ102−1〜102−nを有する。この際、書込処理部101は、受信フレームが所属するフローのバッファ102−i(i=1〜nのいずれか)に残存フレームがない場合、受信フレームの理想送出時刻の演算要求を、帯域管理部104に送信する。
(2)帯域管理部104は、受信フレームの理想送出時刻の演算要求を受信した場合、算出部141により、理想送出時刻を算出する。理想送出時刻の算出には、トークンバケツアルゴリズムが用いられる。算出部141は、現在のトークンの値が0以上であれば、現在の時刻カウンタの値を理想送出時刻として登録要求部142に出力する。
一方、現在のトークンの値が0以上でない場合は、下記式(A)により、理想送出時刻を算出して登録要求部142に出力する。なお、設定帯域とは、受信フレームが所属するフローに設定された帯域である。
理想送出時刻=(0−現在のトークンの値)/設定帯域・・・(A)
(3)登録要求部142は、受信フレームに含まれるフローIDと算出部141からの理想送出時刻とを含む登録要求を、登録処理部143に出力する。フローIDとは、受信フレームが所属するフローを一意に特定する識別情報である。たとえば、VLANIDが採用される。
(4)登録処理部143は、フレーム出力リスト105を有する。フレーム出力リスト105とは、複数のタイムスロットとなる領域を時系列で並べたリストである。1つのタイムスロットは、たとえば、8バイトの時間間隔を示す。登録処理部143は、現在時刻に相当するタイムスロットの位置から理想送出時刻分の時刻カウンタ値を進めた場合のタイムスロットを、登録要求に含まれるフローIDを登録すべきタイムスロットに決定する。すでに、他のフローIDが登録済みである場合は、登録処理部143は、後続の空きスロットに決定する。登録処理部143は、決定したタイムスロットにフローIDを登録する。
(5)登録処理部143は、現在時刻である現在の時刻カウンタ値に相当するタイムスロットに格納されているフローIDを含む読出要求を、読出処理部103に出力する。
(6)読出処理部103は、登録処理部143からの読出要求を受けると、読出要求内のフローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iに保持されている先頭フレームを読み出す。読み出されたフレームは、出力ポートから宛先に送信される。
(7)読出処理部103は、読出要求内のフローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iに残存フレームがある場合に、算出部141に演算要求を送信する。つぎに送信すべきフレームの理想送出時刻を算出して、フローIDをフレーム出力リスト105に登録するためである。
<転送装置100のハードウェア構成例>
図2は、実施例1にかかる転送装置100のハードウェア構成例を示すブロック図である。転送装置100は、複数(m枚)のインタフェースカード200−1〜200−mとフレーム中継部210とが接続されて構成される。各インタフェースカード200−1〜200−mは、同一機能である。あるインタフェースカード200−j(j=1〜mのいずれか)で受信されたフレームは、フレーム中継部210に送られる。フレーム中継部210では、フレームがどのインタフェースカード200−jから送信すべきかを特定して、特定したインタフェースカード200−jにフレームを出力する。フレーム中継部210からフレームを受けたインタフェースカード200−jは、該当する宛先にフレームを送信する。これにより、フレームが転送される。
図2は、実施例1にかかる転送装置100のハードウェア構成例を示すブロック図である。転送装置100は、複数(m枚)のインタフェースカード200−1〜200−mとフレーム中継部210とが接続されて構成される。各インタフェースカード200−1〜200−mは、同一機能である。あるインタフェースカード200−j(j=1〜mのいずれか)で受信されたフレームは、フレーム中継部210に送られる。フレーム中継部210では、フレームがどのインタフェースカード200−jから送信すべきかを特定して、特定したインタフェースカード200−jにフレームを出力する。フレーム中継部210からフレームを受けたインタフェースカード200−jは、該当する宛先にフレームを送信する。これにより、フレームが転送される。
つぎに、インタフェースカード200−jの詳細構成例についてインタフェースカード200−1を例に挙げて説明する。インタフェースカード200−1は、NIF(Network Interface)管理部201と、設定レジスタ202と、を有する。NIF管理部201は、たとえば、プロセッサであり、不図示の入力装置からの指示により、設定レジスタ202に所定の値を格納する。設定レジスタ202は、入力フレームバッファ制御部205および出力フレームバッファ制御部206で必要な値を格納する記憶領域である。設定レジスタ202は、たとえば、フリップフロップで構成され、入力フレームバッファ制御部205および出力フレームバッファ制御部206から参照可能である。
また、インタフェースカード200−1は、入出力回線IF(Interface)203と、入力ヘッダ処理部204と、入力フレームバッファ制御部205と、入力ヘッダ処理テーブル240と、を有する。入出力回線IF203は、いわゆるポートである。入出力回線IF203は、フレームを受信すると、受信フレームに対し、受信フレームのフレーム長を内部ヘッダとして付与し、入力ヘッダ処理部204に出力する。
図3は、フレームのヘッダのフォーマット例を示す説明図であり、図4は、内部ヘッダのフォーマット例を示す説明図である。図4において、内部ヘッダ400は、フレーム長フィールド401と、フローIDフィールド402と、出力NIFフィールド403と、を含む。入出力回線IF203では、フローIDフィールド402と出力NIFIDフィールド403は空である。出力NIFIDフィールド403とは、出力先のインタフェースカード200−iを一意に特定する識別情報を格納するフィールドである。
図2に戻り、入力ヘッダ処理部204は、入力ヘッダ処理テーブル240を参照して、入出力回線IF203で付与された内部ヘッダ400に、出力NIFIDとフローIDを格納し、入力フレームバッファ制御部205に出力する。
図5は、入力ヘッダ処理テーブル240の記憶内容例を示す説明図である。入力ヘッダ処理テーブル240に記憶される情報は、あらかじめ登録される。入力ヘッダ処理部204は、入出力回線IF203からフレームを受けると、フレームのヘッダからVLANヘッダ内のVLANIDを抽出する。そして、入力ヘッダ処理部204は、入力ヘッダ処理テーブル240において、抽出したVLANIDのエントリから出力NIFIDとフローIDとを抽出して、内部ヘッダに格納する。そして、入力ヘッダ処理部204は、フレームを入力フレームバッファ制御部205に出力する。
図2に戻り、入力フレームバッファ制御部205は、入力ヘッダ処理部204からのフレームを順次入力フレームバッファ250に格納し、先入れ先出し方式により、入力フレームバッファ250からフレーム中継部210にフレームを出力する。
また、インタフェースカード200−1は、出力フレームバッファ制御部206と、キュー管理テーブル261と、帯域管理テーブルと、フレーム出力リスト105と、出力フレームバッファ102と、を有する。
図6は、キュー管理テーブル261の記憶内容例を示す説明図である。キュー管理テーブル261は、出力フレームバッファ102を管理するテーブルであり、フローごとに、フローIDと、バッファサイズと、格納バイト数と、ライトポインタと、リードポインタと、を格納する。フローIDにはVLANIDが用いられるが、ここでは、インタフェースカード200−jごとに区別するため、VLANIDからオフセットされた値となる。格納バイト数、ライトポインタおよびリードポインタは、更新される値である。
バッファサイズは、そのフローに割り当てられたバッファのサイズである。格納バイト数とは、そのフローに格納されたフレームのバイト数である。ライトポインタとは、出力フレームバッファ102の書込位置を指定するアドレスであり、リードポインタとは、出力フレームバッファ102の読出位置を指定するアドレスである。なお、キュー管理テーブル261は、たとえば、RAM(Random Access Memory)により構成される。
図7は、帯域管理テーブル262の記憶内容例を示す説明図である。帯域管理テーブル262は、フローごとに、フローIDと、設定帯域と、バケツの深さと、前回トークン値と、前回時刻カウンタ値と、時刻カウンタ周回数と、を格納する。前回トークン値、前回時刻カウンタ値および時刻カウンタ周回数は、更新される値である。
設定帯域とは、そのフローにおいて流れるフレームの通信速度である。バケツの深さとは、トークンバケツアルゴリズムにおけるトークンの上限値である。バケツの深さは、0よりも大きい値である。トークンの値がバケツの深さを超えると、超えた分のトークンが破棄される。
前回トークン値とは、前回のトークン加算時におけるトークンの値である。前回時刻カウンタ値とは、前回のトークン加算時における時刻カウンタ値である。時刻カウンタ周回数とは、時刻カウンタがラップアラウンドした回数である。前回トークン値、前回時刻カウンタ値および時刻カウンタ周回数は、トークン加算に用いられる値である。
<出力フレームバッファ制御部206のハードウェア構成例>
図8は、図2に示した出力フレームバッファ制御部206の詳細なブロック構成を示すブロック図である。出力フレームバッファ制御部206は、図1に示した書込処理部101および読出処理部103と、帯域管理部104と、を有する。帯域管理部104は、図1に示した算出部141、登録要求部142、および登録処理部143を有する。
図8は、図2に示した出力フレームバッファ制御部206の詳細なブロック構成を示すブロック図である。出力フレームバッファ制御部206は、図1に示した書込処理部101および読出処理部103と、帯域管理部104と、を有する。帯域管理部104は、図1に示した算出部141、登録要求部142、および登録処理部143を有する。
書込処理部101は、フレーム中継部210からのフレームを、フローごとに分けて出力フレームバッファ102に書き込む。具体的には、たとえば、書込処理部101は、キュー管理テーブル261の該当するフローのエントリを参照して、ライトポインタの位置にフレームを書き込む。そして、書き込んだフレームのサイズ分、格納サイズ数を加算し、ライトポインタを更新する。また、書込処理部101は、図1の(1)に示したように、受信フレームが所属するフローに残存フレームがない場合、受信フレームの送信予定時刻の演算要求を、帯域管理部104に送信する。
読出処理部103は、図1の(6)に示したように、帯域管理部104からの読出要求を受けると、読出要求内のフローIDにより特定されるフローについて、出力フレームバッファ102に保持されている先頭フレームを読み出す。具体的には、たとえば、読出処理部103は、キュー管理テーブル261の該当するフローのエントリを参照して、リードポインタの位置からフレームを読み出す。そして、読み出したフレームのサイズ分、格納サイズ数を減算し、リードポインタを更新する。なお、読み出されたフレームは、入出力回線IF203から宛先に送信される。
また、読出処理部103は、図1の(7)に示したように、読出要求内のフローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iに残存フレームがある場合に、算出部141に演算要求を送信する。
帯域管理部104は、図1の(2)に示したように、受信フレームの送信予定時刻の演算要求を受信した場合、トークンバケツアルゴリズムにより送信予定時刻となる理想送出時刻を算出する。算出部141は、現在のトークンの値が0以上であれば、現在の時刻カウンタ値を理想送出時刻として登録要求部142に出力する。一方、現在のトークンの値が0以上でない場合は、上述したように、理想送出時刻を算出して登録要求部142に出力する。
また、帯域管理部104は、図1の(3)に示したように、受信フレームに含まれるフローIDと算出部141からの理想送出時刻とを含む登録要求を、登録処理部143に出力する。また、帯域管理部104は、図1の(4)に示したように、現在時刻に相当するタイムスロットの位置から理想送出時刻分の時刻カウンタ値を進めた位置となるタイムスロットを、登録要求に含まれるフローIDを登録すべきタイムスロットに決定する。すでに、他のフローIDが登録済みである場合は、登録処理部143は、後続の空きスロットに決定する。登録処理部143は、決定したタイムスロットにフローIDを登録する。
そして、帯域管理部104は、図1の(5)に示したように、現在時刻である現在の時刻カウンタ値に相当するタイムスロットを特定し、当該タイムスロットに格納されているフローIDを含む読出要求を、読出処理部103に出力する。
図9は、フレーム出力リスト105の構成例を示す説明図である。フレーム出力リスト105は、複数のタイムスロットとなる領域を時系列で並べたリストである。具体的には、各タイムスロットは存否フラグを有する。存否フラグは、タイムスロットにフローIDが存在するか否かを示す識別情報である。タイムスロットにフローIDが登録されると、帯域管理部104は、登録処理部143により、存否フラグを、未登録を示す「0」から登録を示す「1」に更新する。また、現在時刻に相当するタイムスロットからフローIDを読み出して読出処理部103に出力した場合、帯域管理部104は、登録処理部143により、フローIDが読みされて空になったタイムスロットに対応する存否フラグを「0」に更新する。
フレーム出力リスト105では、1フローにつき1フレームについてフローIDが登録されるため、上述した特許文献に比べて、フレーム出力リスト105のリスト長を短くすることができ、省メモリ化を図ることができる。
<書込処理手順例>
図10は、帯域管理部104の書込処理部101による処理手順例を示すフローチャートである。書込処理部101は、フレーム中継部210からフレームを受信することで処理を開始する(ステップS1000)。
図10は、帯域管理部104の書込処理部101による処理手順例を示すフローチャートである。書込処理部101は、フレーム中継部210からフレームを受信することで処理を開始する(ステップS1000)。
書込処理部101は、フレームの内部ヘッダ400から、フローIDおよびフレーム長を取得し、取得したフローIDのエントリから格納バイト数とバッファサイズとを抽出する(ステップS1001)。つぎに、書込処理部101は、取得したフローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iが満杯(Full)か否かを判断する(ステップS1002)。具体的には、たとえば、書込処理部101は、取得フレーム長+格納バイト長>バッファサイズを満たすか否かを判断する。
満たさない場合(ステップS1002:No)、すなわち、満杯でない場合、書込処理部101は、取得したフローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iは空であるか否かを判断する(ステップS1003)。具体的には、たとえば、書込処理部101は、格納バイト長=0であるか否かを判断する。
空である場合(ステップS1003:Yes)、書込処理部101は、受信フレームのフローID、フレーム長を含む演算要求を、図1の(1)に示したように、帯域管理部104に送信し(ステップS1004)、ステップS1005に移行する。
一方、ステップS1003において、空でない場合(ステップS1003:No)、書込処理部101は、演算要求を送信せずに、ステップS1005に移行する。
このあと、書込処理部101は、受信フレームを出力フレームバッファ102の該当するフローのバッファ102−iに格納する(ステップS1005)。そして、書込処理部101は、キュー管理テーブル261において、書き込んだフレームのフレーム長分、格納サイズ数を加算し、ライトポインタを更新する(ステップS1006)。
また、ステップS1002において、出力フレームバッファ102内のバッファ102−iが満杯(Full)である場合(ステップS1002:Yes)、書込処理部101は、受信フレームを廃棄する(ステップS1007)。これらの処理により書込処理が終了する。
<読出処理手順例>
図11は、帯域管理部104の読出処理部103による処理手順例を示すフローチャートである。読出処理部103は、帯域管理部104の登録処理部143から読出要求を受信することで処理を開始する(ステップS1100)。
図11は、帯域管理部104の読出処理部103による処理手順例を示すフローチャートである。読出処理部103は、帯域管理部104の登録処理部143から読出要求を受信することで処理を開始する(ステップS1100)。
読出処理部103は、読出要求に含まれるフローIDによりキュー管理テーブル261を検索してリードポインタおよびフレーム長を取得する(ステップS1101)。つぎに、読出処理部103は、フローIDにより特定されるフローについて、出力フレームバッファ102内のバッファ102−iのリードポインタの位置からフレームを読み出して、入出力回線IF203に出力する(ステップS1102)。これにより、読み出されたフレームは、転送装置100の外部に送信される。
このあと、読出処理部103は、キュー管理テーブル261において、読み出したフレームのフレーム長分、格納サイズ数を減算し、リードポインタを更新する(ステップS1103)。そして、読出処理部103は、フレームを読み出したことにより、該当するフローについて出力フレームバッファ102内のバッファ102−iが空になったか否かを判断する(ステップS1004)。すなわち、ステップS1103における更新後の格納サイズ数が0であるか否かを判断する。
空でない場合(ステップS1104:No)、残存フレームのうち先頭フレームについて、理想送出時刻を求め、フレーム出力リスト105に登録する必要がある。そのため、読出処理部103は、ステップS1101で取得したフローIDおよびフレーム長と、フレーム出力リスト105への登録すべき旨を示す登録指示情報と、を含む演算要求を、帯域管理部104に送信して(ステップS1105)、一連の処理を終了する。一方、空である場合(ステップS1104:Yes)、読出処理部103は、ステップS1101で取得したフローIDおよびフレーム長と、フレーム出力リスト105への登録すべきでない旨を示す登録不指示情報と、を含む演算要求を、帯域管理部104に送信して(ステップS1106)、一連の処理を終了する。
<帯域管理処理手順例>
図12は、帯域管理部104による帯域管理処理の処理手順例を示すフローチャートである。帯域管理部104は、図10のステップS1004、図11のステップS1105またはステップS1106におけるいずれかの演算要求を受信した場合に処理を開始する(ステップS1200)。
図12は、帯域管理部104による帯域管理処理の処理手順例を示すフローチャートである。帯域管理部104は、図10のステップS1004、図11のステップS1105またはステップS1106におけるいずれかの演算要求を受信した場合に処理を開始する(ステップS1200)。
帯域管理部104は、算出部141により、演算要求に含まれるフローIDのエントリを、帯域管理テーブル262から取得する(ステップS1201)。つぎに、帯域管理部104は、算出部141により、トークン加算処理を実行する(ステップS1202)。トークン加算処理(ステップS1202)は、現在のトークン値を算出する処理である。トークン加算処理(ステップS1202)では、たとえば、特開平5−252192に示したようなバーチャルスケジューリングアルゴリズムが適用される。トークン加算処理(ステップS1202)の詳細については図13で後述する。
帯域管理部104は、トークン加算処理(ステップS1202)により現在のトークン値を求めたあと、登録処理部143により、演算要求の送信元が、書込処理部101であるか読出処理部103であるかを判断する(ステップS1203)。書込処理部101である場合(ステップS1203:書込処理部)、帯域管理部104は、登録処理部143により、現在トークン値Tが、T≧0であるか否かを判断する(ステップS1204)。T≧0である場合(ステップS1204:Yes)、帯域管理部104は、登録処理部143により、理想送出時刻を現在の時刻カウンタ値Cとし(ステップS1205)、フレーム出力リスト登録処理を実行する(ステップS1207)。
一方、T≧0でない場合(ステップS1204:No)、理想送出時刻を、(0−T)/設定帯域として(ステップS1206)、フレーム出力リスト登録処理を実行する(ステップS1207)。フレーム出力リスト登録処理(ステップS1207)では、帯域管理部104は、登録処理部143により、フレーム出力リスト105における理想送出時刻の位置に、演算要求に含まれるフローIDを格納し、存否フラグを「1」に設定する。
このあと、帯域管理部104は、帯域管理テーブル262を更新する(ステップS1208)。具体的には、たとえば、帯域管理部104は、演算要求に含まれるフローIDのエントリについて、前回トークン値に現在トークン値Tを上書きし、前回時刻カウンタ値に現在時刻カウンタ値Cを上書きする。
一方、ステップS1203において、演算要求の送信元が読出処理部103であると判断された場合(ステップS1203:読出処理部)、帯域管理部104は、登録処理部143により、現在トークン値Tから、演算要求に含まれるフレーム長を減算することにより、現在トークン値Tを更新する(ステップS1209)。そして、帯域管理部104は、登録処理部143により、演算要求に登録指示情報と登録不指示情報のいずれの情報が含まれているかを判断する(ステップS1210)。
登録指示情報が含まれる場合(ステップS1210:登録指示)、ステップS1204に移行する。一方、登録不指示情報が含まれる場合(ステップS1210:登録不指示)、ステップS1208に移行する。すなわち、登録不指示の場合は、出力フレームバッファ102内のバッファ102−iに残存フレームがないため、フレーム出力リスト登録処理は実行されない。
<トークン加算処理手順例>
図13は、図12に示したトークン加算処理(ステップS1202)の処理手順例を示すフローチャートである。帯域管理部104は、算出部141により、演算要求に含まれるフローIDのエントリを、帯域管理テーブル262から取得する(ステップS1201)ことにより、トークン加算処理(ステップS1202)を開始する。
図13は、図12に示したトークン加算処理(ステップS1202)の処理手順例を示すフローチャートである。帯域管理部104は、算出部141により、演算要求に含まれるフローIDのエントリを、帯域管理テーブル262から取得する(ステップS1201)ことにより、トークン加算処理(ステップS1202)を開始する。
まず、帯域管理部104は、現在の時刻カウンタ値Cを求める(ステップS1301)。具体的には、たとえば、帯域管理部104は、下記式により現在の時刻カウンタ値Cを求める。
現在の時刻カウンタ値C=現在の時刻カウンタ値C+フローID×N・・・(B)
上記式(B)において、右辺でフローIDを加算することで、フローごとに時刻カウンタがラップアラウンドするタイミングがずれる。これにより、フローごとに仮想的な現在の時刻カウンタ値Cを求めることができる。また、Nは1以上の整数で、時刻カウンタの周回数の更新周期である。時刻カウンタの周回数の更新処理は、Nクロックに1回実行される。時刻カウンタの周回数の更新処理については、図14で後述する。
つぎに、帯域管理部104は、時刻カウンタの周回数が0,1,2のいずれであるかを判断する(ステップS1302)。周回数=0である場合(ステップS1302:0)、現在の時刻カウンタ値Cは、フレーム出力リスト105のリスト長に相当する時間を周回していない値になる。この場合、帯域管理部104は、加算トークン量Taddを、下記式(C)により算出し(ステップS1303)、ステップS1307に移行する。
Tadd=設定帯域×(C−Cp)・・・(C)
設定帯域は、処理対象となるフローのフローIDをキーにして、帯域管理テーブル262から読み出される値であり、Cpは、処理対象となるフローのフローIDをキーにして、帯域管理テーブル262から読み出される前回時刻カウンタ値である。
また、ステップS1302において、周回数=1である場合(ステップS1302:1)、帯域管理部104は、現在の時刻カウンタ値C>前回の時刻カウンタ値Cpであるか否かを判断する(ステップS1304)。現在の時刻カウンタ値C>前回の時刻カウンタ値Cpでない場合(ステップS1304:No)、帯域管理部104は、加算トークン量Taddを、下記式(D)により算出し(ステップS1305)、ステップS1307に移行する。
Tadd=設定帯域×(Cmax−(Cp−C)+1)・・・(D)
Cmaxは、時刻カウンタの最大値である。現在の時刻カウンタ値CがC=Cmaxである場合、つぎの時刻の時刻カウンタ値は、周回して「0」となる。Cmaxの大きさは、トークンの深さに対応しており、たとえば、時刻カウンタがn周したらバケツの深さ分のトークンを蓄積することができる。本例では、n=1として、時刻カウンタが1周以上したらバケツの深さ分のトークンを蓄積することができる。
一方、ステップS1304において、現在の時刻カウンタ値C>前回の時刻カウンタ値Cpでない場合(ステップS1304:No)、帯域管理部104は、加算トークン量Taddを、下記式(E)により算出し(ステップS1306)、ステップS1307に移行する。バケツの深さは、トークンの最大許容蓄積量である。
Tadd=バケツの深さ・・・(E)
また、ステップS1302において、周回数=2である場合(ステップS1302:2)、帯域管理部104は、加算トークン量Taddを、上記式(E)により算出し(ステップS1306)、ステップS1307に移行する。
このあと、帯域管理部104は、下記式(F)により、現在トークン値Tを算出する(ステップS1307)。
T=前回トークン値Tp+Tadd・・・(F)
前回トークン値Tpは、処理対象となるフローのフローIDをキーにして、帯域管理テーブル262から読み出されるトークン値である。
そして、帯域管理部104は、算出した現在トークン値Tが、T>バケツの深さであるか否かを判断する(ステップS1308)。T>バケツの深さである場合(ステップS1308:Yes)、帯域管理部104は、現在トークン値Tをバケツの深さに更新して(ステップS1309)、トークン加算処理(ステップS1202)を終了する。一方、T>バケツの深さでない場合(ステップS1308:No)、ステップS1309を実行せずにトークン加算処理(ステップS1202)を終了する。
<時刻カウンタ周回数更新処理手順例>
図14は、時刻カウンタ周回数更新処理の処理手順例を示すフローチャートである。帯域管理部104は、時刻カウンタがNクロック計数する都度、時刻カウンタ周回数更新処理を開始する(ステップS1400)。
図14は、時刻カウンタ周回数更新処理の処理手順例を示すフローチャートである。帯域管理部104は、時刻カウンタがNクロック計数する都度、時刻カウンタ周回数更新処理を開始する(ステップS1400)。
帯域管理部104は、まず、現在の時刻カウンタ値Cを取得し(ステップS1401)、Cの上位XビットがAll‘0’であるか否かを判断する(ステップS1402)。ここで、Xは、処理対象となる時刻カウンタ値Cのビット数−Log2(フローの上限数)であり、図2の設定レジスタ202に格納される値である。たとえば、フローの上限数=4で、かつ、時刻カウンタ値が7ビットのビット列である場合、上位5ビットがすべてAll‘0’であるか否か判断される。
Cの上位XビットがAll‘0’でない場合(ステップS1402:No)、帯域管理部104は、いずれのフローについても時刻カウンタ値の周回数を更新しないため、処理を終了する。
一方、Cの上位XビットがAll‘0’である場合(ステップS1402:Yes)、帯域管理部104は、Cの下位Yビットのうち、下位log2Nビット目からYビット目までのビット列を、処理対象となるフローIDとして抽出する。そして、帯域管理部104は、抽出したフローIDをキーにして帯域管理テーブル262のエントリを取得する(ステップS1403)。
そして、帯域管理部104は、取得したエントリにおける時刻カウンタ周回数が、時刻カウンタ周回数の上限値である「2」であるか否かを判断する。「2」である場合(ステップS1404:Yes)、時刻カウンタ周回数が上限に達しているため、処理を終了する。
一方、「2」でない場合(ステップS1404:No)、時刻カウンタ周回数が上限に達していないため、帯域管理部104は、取得したエントリにおける時刻カウンタ周回数をインクリメントし(ステップS1405)、インクリメント後の時刻カウンタ周回数を、取得したエントリに書き込む(ステップS1406)。これにより、時刻カウンタ周回数更新処理を終了する。
これにより、時刻カウンタ周回数を更新することができるため、トークン加算処理(ステップS1202)において、時刻カウンタ周回数に応じた加算トークン量Taddを求めることができる。
このように、実施例1の転送装置100によれば、フロー毎のバッファにフレームがない場合に、フレーム出力リスト105の理想送出時刻の位置にフローIDを登録し、フレームを送信する度にフロー毎のバッファにフレームが残存していれば続けて理想送出時刻の位置にフローIDを登録する。この結果、出力フレームバッファ102に保持しているフレームのすべてではなく、フロー毎に1フレームの理想送出時刻の位置にフローIDが登録される。したがって、出力フレームバッファ102に保持しているフレームのすべてについて理想送出時刻にフローIDを登録する場合に比べて、フレーム出力リスト105に使用される転送装置100内のメモリ容量の低減化を図ることができる。
(実施例2)
つぎに、実施例2について説明する。実施例1では、フロー毎の出力フレームバッファ102内の該当するバッファ102−iにフレームがない場合に、フレーム出力リスト105の理想送出時刻の位置にフローIDを登録し、フレームを送信する度にフロー毎の出力フレームバッファ102内のバッファ102−iにフレームが残存していれば続けて理想送出時刻の位置にフローIDを登録する登録方式について説明した。実施例1では、送信帯域の小さい、すなわち、遠い未来に登録されるフローはフレーム出力リスト105での競合の確率が低くなるため、理想的な時刻にフローIDを登録することができる。
つぎに、実施例2について説明する。実施例1では、フロー毎の出力フレームバッファ102内の該当するバッファ102−iにフレームがない場合に、フレーム出力リスト105の理想送出時刻の位置にフローIDを登録し、フレームを送信する度にフロー毎の出力フレームバッファ102内のバッファ102−iにフレームが残存していれば続けて理想送出時刻の位置にフローIDを登録する登録方式について説明した。実施例1では、送信帯域の小さい、すなわち、遠い未来に登録されるフローはフレーム出力リスト105での競合の確率が低くなるため、理想的な時刻にフローIDを登録することができる。
図15は、実施例1によるトークンバケツアルゴリズムによるフレームの転送例を示す説明図である。あるフローについて、フレームF0は、そのフローのトークンが0以上であるため、到着するとすぐに送出される。フレームF0の送出によりトークンが減少する。フレームF1が到着すると、トークンは0未満であるため、理想送出時刻が算出される。フレームF1の送出によりトークンが減少する。フレームF1は、理想送出時刻に送出される。同様に、フレームF2が到着すると、トークンは0未満であるため、フレームF1と同様、理想送出時刻が算出される。
このとき、既に登録されている送信帯域の小さい他のフローとフレーム出力リスト105にて競合が発生し、フレームF2の送出タイミングは、フレームF2の理想送出時刻よりも遅れる。これにより、揺らぎが発生し、フレーム転送がバースト的になる。理想送出時刻の計算は、実施例1で示したようにトークンバケツアルゴリズムで設計されるため、このバースト長がバケツの深さを超えるようになると、トークンが廃棄され、設定した送信帯域を下回る。つまり、設定帯域の大きいフロー程、設定した送信帯域通りに出力ができないこととなる。
このため、実施例2では、現在時刻での読出要求のタイミングにおいて、そのフローについてのトークン量に応じて、フレームを優先して送信すべきか否かを判定する。すなわち、転送装置100は、トークン量がバケツの深さに到達しそうなフローほど優先して、フレームを送信できるように制御する。これにより、既に登録されている送信帯域の小さいフローとフレーム出力リスト105にて競合が発生した場合、送信帯域の大きい方のフローのフレームを優先して送信することができ、設定した送信帯域通りのフレーム転送を実現することができる。
図16は、実施例2にかかる登録方式を示す説明図である。図16中、(1)〜(7)は、図2に示した登録方式と同一処理内容である。したがって、図2と同一処理内容については説明を省略するとともに、相違点について説明する。
実施例2にかかる転送装置100は、読出要求優先制御部1600を有する。(5)登録処理部143が、現在時刻である現在の時刻カウンタ値に相当するタイムスロットに格納されているフローIDを含む読出要求を出力すると、読出要求優先制御部1600は、当該読出要求を受信する。
(a)読出要求優先制御部1600は、振分け部1601により、読出要求に含まれるフローIDにより特定されるフローについてのトークン量に応じて、高優先キュー1602または低優先キュー1603のいずれに振り分けるべきかを決定する。振分け部1601は、トークンバケツに余裕がなければ、フローIDの振分け先を高優先キュー1602に決定し、余裕があれば、フローIDの振分け先を高優先キュー1602に決定する。そして、読出要求優先制御部1600は、振分け部1601により、決定した振分け先のキューに、読出要求に含まれるフローIDを格納する。
(b)読出要求優先制御部1600は、キュー制御部1604により、高優先キュー1602の先頭のフローIDから順次読出処理部103に出力する。高優先キュー1602が空になった場合、読出要求優先制御部1600は、キュー制御部1604により、低優先キュー1603の先頭のフローIDから順次読出処理部103に出力する。このように、フローIDは、高優先キュー1602から優先読出されるため、読出処理部103は、優先読出されたフローIDにより特定されるフローの先頭フレームを、出力フレームバッファ102内のバッファ102−iから読み出すことができる。
<出力フレームバッファ制御部206のハードウェア構成例>
実施例2にかかる転送装置100のハードウェア構成例は、図2に示した実施例1にかかるハードウェア構成例と同一構成であるため、その説明を省略する。ただし、実施例2では、出力フレームバッファ制御部206の内部構成が実施例1の出力フレームバッファ制御部206と相違する部分があるため、相違点について説明する。
実施例2にかかる転送装置100のハードウェア構成例は、図2に示した実施例1にかかるハードウェア構成例と同一構成であるため、その説明を省略する。ただし、実施例2では、出力フレームバッファ制御部206の内部構成が実施例1の出力フレームバッファ制御部206と相違する部分があるため、相違点について説明する。
図17は、実施例2にかかる出力フレームバッファ制御部206の詳細なブロック構成を示すブロック図である。なお、図8に示した構成と同一構成については同一符号を付し、その説明を省略する。
出力フレームバッファ制御部206は、読出要求優先制御部1600を有する。読出要求優先制御部1600は、図16に示したように、振分け部1601と、高優先キュー1602と、低優先キュー1603と、キュー制御部1604と、を有する。振分け部1601による振分け処理について、図18を用いて説明する。
<振分け処理手順例>
図18は、読出要求優先制御部1600(振分け部1601)による振分け処理手順例を示すフローチャートである。読出要求優先制御部1600は、登録処理部143から送出される読出要求を受信することで処理を開始する(ステップS1800)。
図18は、読出要求優先制御部1600(振分け部1601)による振分け処理手順例を示すフローチャートである。読出要求優先制御部1600は、登録処理部143から送出される読出要求を受信することで処理を開始する(ステップS1800)。
読出要求優先制御部1600は、読出要求に含まれるフローIDを用いて帯域管理テーブル262のエントリを取得する(ステップS1801)。そして、読出要求優先制御部1600は、取得したエントリについて、トークン加算処理を実行する(ステップS1802)。トークン加算処理(ステップS1802)は、図13に示したトークン加算処理(ステップS1202)と同一処理であるため、説明を省略する。
トークン加算処理(ステップS1802)により、現在のトークン値を取得できるため、読出要求優先制御部1600は、現在トークン値>バケツの深さ×重みであるか否かを判断する(ステップS1803)。重みは、設定レジスタ202に格納されており、0より大きく1未満の値をとる。すなわち、「バケツの深さ×重み」の値は、0(見かけの0)より大きく、バケツの深さ未満の値をとる。「バケツの深さ×重み」の値は、図15に示したしきい値に相当する。
現在トークン値>バケツの深さ×重みを満たさない場合(ステップS1803:No)、トークンバケツに余裕があることになるため、読出要求優先制御部1600は、受信した読出要求を低優先キュー1603に格納する(ステップS1804)。一方、現在トークン値>バケツの深さ×重みを満たす場合(ステップS1803:Yes)、トークンバケツに余裕がないことになるため、読出要求優先制御部1600は、受信した読出要求を高優先キュー1602に格納する(ステップS1805)。これにより、振分け処理を終了する。
このあと、キュー制御部1604が、高優先キュー1602に格納された読出要求から優先的に読み出して読出処理部103に出力し、高優先キュー1602が空になると、低優先キュー1603に格納された読出要求を読み出して読出処理部103に出力する。これにより、読出制御部は、優先読出されたフローIDにより特定されるフローの先頭フレームを出力フレームバッファ102から読み出すことができる。
このように、実施例2によれば、フローの設定帯域に関わらずトークンバケツの溢れ発生を防止することができ、設定帯域に依存しない公平な帯域制御が可能となる。
(実施例3)
つぎに、実施例3について説明する。実施例1および実施例2では、1フローにつき1つの理想送出時刻をフレーム出力リスト105に登録する登録方式を採用した。この場合、各フローのすべてのフレームについての理想送出時刻を登録する登録方式に比べて、フレーム出力リスト105のリスト長を短くすることができ、メモリ使用量の低減化を図ることができる。
つぎに、実施例3について説明する。実施例1および実施例2では、1フローにつき1つの理想送出時刻をフレーム出力リスト105に登録する登録方式を採用した。この場合、各フローのすべてのフレームについての理想送出時刻を登録する登録方式に比べて、フレーム出力リスト105のリスト長を短くすることができ、メモリ使用量の低減化を図ることができる。
これに対し、実施例3では、短期フレーム出力リストと長期フレーム出力リストという2つのフレーム出力リストを採用して、フレーム転送を実現する。
図19は、実施例1および実施例2のフレーム出力リスト105と、実施例3の短期フレーム出力リストおよび長期フレーム出力リストと、の比較例を示す説明図である。近年のフレームネットワークでは、64バイト長のフレームから9600バイト長のフレームが送信される。トークンバケツアルゴリズムにおいて、9600バイト長のような長大なフレームについてトークンが減算されたあとに、低帯域、たとえば、設定帯域の小さい0.5Mbpsのフレームが到着した場合、算出される理想送出時刻は、遠い未来の時刻となる。このため、そのような時刻に対応するタイムスロットをフレーム出力リスト105で確保する必要があり、フレーム出力リスト105のリスト長を長くする必要がある。
これに対し、実施例3では、フレーム出力リスト105のリスト長を短くして短期フレーム出力リスト1901とする。すなわち、短期フレーム出力リスト1901は、実施例1および実施例2のフレーム出力リスト105と同一構造であるが、リスト長が実施例1および実施例2のフレーム出力リスト105よりも短い。このため、実施例1および実施例2のフレーム出力リスト105に比べて、遠い未来の理想送出時刻についてはタイムスロットが存在しない。
また、短期フレーム出力リスト1901によりリスト長を短くした分を補うために、長期フレーム出力リスト1902を採用する。短期フレーム出力リスト1901に入りきらない未来の理想送出時刻については、長期フレーム出力リスト1902に格納させる。
図20は、長期フレーム出力リスト1902の構成例を示す説明図である。長期フレーム出力リスト1902は、タイムスロットではなく、フロー数分のエントリを有する。各エントリは、短期フレーム出力リスト1901と同様、フローIDおよび存否フラグを格納するほか、理想送出時刻も格納する。長期フレーム出力リスト1902のリスト長は、未来の時刻分のタイムスロット列ではなく、収容可能なフロー数分のエントリ列となるため、サイズを固定化することができ、メモリ使用量の低減化を図ることができる。
このように、短期フレーム出力リスト1901と長期フレーム出力リスト1902とを用いることにより、理想送出時刻が短期フレーム出力リスト1901に収まる場合には、実施例1および実施例2の場合と同様、帯域管理部104は、短期フレーム出力リスト1901に登録することができる。また、理想送出時刻が短期フレーム出力リスト1901に収まらない場合には、帯域管理部104は、そのフローのフローIDで特定されるエントリの存否フラグを、存在を示す「1」に設定して、理想送出時刻を格納する。
そして、長期フレーム出力リスト1902に格納された理想送出時刻が、短期フレーム出力リスト1901に収まる時間内の時刻になった場合に、帯域管理部104は、短期フレーム出力リスト1901において、その理想送出時刻の位置にフローIDを格納する。また、帯域管理部104は、短期フレーム出力リスト1901に格納したフローIDの存否フラグを、存在しないことを示す「0」に設定する。このような短期フレーム出力リスト1901と長期フレーム出力リスト1902の連携処理により、メモリ使用量の低減化を図ることができる。
<転送装置100のハードウェア構成例>
図21は、実施例3にかかる転送装置100のハードウェア構成例を示すブロック図である。実施例1と同一構成には同一符号を付し、その説明を省略する。ここでは、実施例1との相違点について説明する。インタフェースカード10−1には、フレーム出力リスト105の替わりに、短期フレーム出力リスト1901および長期フレーム出力リスト1902を有する。短期フレーム出力リスト1901および長期フレーム出力リスト1902は、出力フレームバッファ制御部206からアクセス可能である。具体的には、出力フレームバッファ制御部206内の帯域管理部104からアクセス可能である。
図21は、実施例3にかかる転送装置100のハードウェア構成例を示すブロック図である。実施例1と同一構成には同一符号を付し、その説明を省略する。ここでは、実施例1との相違点について説明する。インタフェースカード10−1には、フレーム出力リスト105の替わりに、短期フレーム出力リスト1901および長期フレーム出力リスト1902を有する。短期フレーム出力リスト1901および長期フレーム出力リスト1902は、出力フレームバッファ制御部206からアクセス可能である。具体的には、出力フレームバッファ制御部206内の帯域管理部104からアクセス可能である。
<帯域管理処理手順例>
図22および図23は、実施例3にかかる帯域管理部104による帯域管理処理の処理手順例を示すフローチャートである。実施例1と同一処理には同一ステップ番号を付し、その説明を省略する。ここでは、実施例1との相違点について説明する。
図22および図23は、実施例3にかかる帯域管理部104による帯域管理処理の処理手順例を示すフローチャートである。実施例1と同一処理には同一ステップ番号を付し、その説明を省略する。ここでは、実施例1との相違点について説明する。
図22において、ステップS1205またはステップS1206のあと、図23のステップS2301に移行する。また、ステップS1210において、演算要求に、登録不指示情報が含まれる場合(ステップS1210:登録不指示)、実施例1と同様、図23のステップS1208に移行する。
図23において、帯域管理部104は、登録処理部143により、ステップS1205またはステップS1206で算出した理想送出時刻が短期フレーム出力リスト1901において登録可能な時刻を超過するか否かを判断する(ステップS2301)。具体的には、たとえば、帯域管理部104は、登録処理部143により、理想送出時刻が、現在時刻である現在の時刻カウンタ値Cに短期フレーム出力リスト1901のリスト長に対応する時間長を加算した時刻を超過したか否かを判断する。
超過していない場合(ステップS2301:No)、帯域管理部104は、登録処理部143により、短期フレーム出力リスト登録処理を実行する(ステップS2302)。短期フレーム出力リスト登録処理(ステップS2302)は、フレーム出力リスト登録処理(ステップS1207)と同一処理である。
つぎに、帯域管理部104は、登録処理部143により、短期フレーム出力リスト1901への登録ができなかったか否かを判断する(ステップS2303)。たとえば、すでに同一の理想送出時刻のタイムスロットに他のフローIDが登録されている場合には、後続のタイムスロットに登録することになるが、後続のタイムスロットのいずれも空きがない場合には、短期フレーム出力リスト1901に登録できないことになる。
したがって、登録不可でない場合(ステップS2303:No)、すなわち、登録できた場合、ステップS1208に0移行する。一方、登録不可の場合(ステップS2303:Yes)、帯域管理部104は、登録処理部143により、長期フレーム出力リスト登録処理を実行する(ステップS2304)。また、ステップS2301において、理想送出時刻が短期フレーム出力リスト1901を超過する場合(ステップS2301:Yes)も、帯域管理部104は、登録処理部143により、長期フレーム出力リスト登録処理を実行する(ステップS2304)。
長期フレーム出力リスト登録処理(ステップS2304)では、帯域管理部104は、登録処理部143により、理想送出時刻で転送すべきフレームが所属するフローを特定するフローIDのエントリを長期フレーム出力リスト1902から特定し、当該特定されたエントリの存否フラグを、存在を示す「1」に設定し、かつ、理想送出時刻を格納する。そして、ステップS1208に移行する。
<長期フレーム出力リスト1902の更新処理手順例>
図24は、帯域管理部104による長期フレーム出力リスト1902の更新処理の処理手順例を示すフローチャートである。帯域管理部104は、登録処理部143により、長期フレーム出力リスト1902からの読出タイミングであるか否かを判断する(ステップS2401)。短期フレーム出力リスト1901のリスト長に相当する時間長を時刻カウンタが一周するまでの間は、長期フレーム出力リスト1902に登録された理想送出時刻の中の直近の時刻であっても到来することはない。したがって、読出タイミングとは、たとえば、短期フレーム出力リスト1901からすべての読出要求を読み出すのに要する所要時間を、フロー数で除算した時間間隔となる。
図24は、帯域管理部104による長期フレーム出力リスト1902の更新処理の処理手順例を示すフローチャートである。帯域管理部104は、登録処理部143により、長期フレーム出力リスト1902からの読出タイミングであるか否かを判断する(ステップS2401)。短期フレーム出力リスト1901のリスト長に相当する時間長を時刻カウンタが一周するまでの間は、長期フレーム出力リスト1902に登録された理想送出時刻の中の直近の時刻であっても到来することはない。したがって、読出タイミングとは、たとえば、短期フレーム出力リスト1901からすべての読出要求を読み出すのに要する所要時間を、フロー数で除算した時間間隔となる。
帯域管理部104は、登録処理部143により、読出タイミングが到来するまで待ち受ける(ステップS2401:No)。読出タイミングが到来した場合(ステップS2401:Yes)、帯域管理部104は、登録処理部143により、長期フレームリストの中の存否フラグが「1」のエントリのうち、未選択フローIDがあるか否かを判断する(ステップS2402)。未選択フローIDがない場合(ステップS2402:No)、ステップS2401に戻る。
一方、未選択フローIDが有る場合(ステップS2402:Yes)、帯域管理部104は、登録処理部143により、未選択フローIDを選択し(ステップS2403)、その理想送出時刻を抽出する(ステップS2404)。そして、帯域管理部104は、抽出した理想送出時刻を更新する(ステップS2405)。具体的には、たとえば、帯域管理部104は、抽出した理想送出時刻を示す時刻カウンタ値から、現在時刻を示す時刻カウンタ値を減算する。そして、帯域管理部104は、登録処理部143により、更新後の理想送出時刻について、図23のステップS2302と同様、短期フレーム出力リスト登録処理を実行する(ステップS2406)。
つぎに、帯域管理部104は、登録処理部143により、図23のステップS2303と同様、短期フレーム出力リスト1901への登録ができなかったか否かを判断する(ステップS2407)。登録不可の場合(ステップS2407:Yes)、帯域管理部104は、登録処理部143により、選択フローIDのエントリはそのままにして(理想送出時刻は更新前の時刻のまま)、ステップS2402に戻り、さらに、未選択フローIDがあるか否かを判断する。一方、登録不可でない場合(ステップS2407:No)、すなわち、登録できた場合、帯域管理部104は、登録処理部143により、選択フローIDの存否フラグを「1」から「0」に更新して(ステップS2408)、ステップS2401に移行する。
このように、実施例3によれば、近未来の時刻については短期フレーム出力リスト1901を用いてフローIDの登録処理を実行することで効率的なフレーム転送を実現し、それよりも先の遠い未来の時刻については長期フレーム出力リスト1902にフローIDおよび理想送出時刻を滞留させておく。そして、帯域管理部104は、短期フレーム出力リスト1901に登録可能になった場合に、フローIDを短期フレーム出力リスト1901に移行する。これにより、リスト長の短縮化を図ることができ、メモリ使用量の低減化を図ることができる。
(実施例4)
つぎに、実施例4について説明する。実施例1〜実施例3では、論理回路により構成した例を説明したが、実施例4は、実施例1〜実施例3の転送装置100の一部または全部の機能を、ソフトウェアにより実現する例である。なお、一部の機能をソフトウェアにより実現する場合、残余の部分は、実施例1〜実施例3に示したように論理回路で実現することとしてもよい。
つぎに、実施例4について説明する。実施例1〜実施例3では、論理回路により構成した例を説明したが、実施例4は、実施例1〜実施例3の転送装置100の一部または全部の機能を、ソフトウェアにより実現する例である。なお、一部の機能をソフトウェアにより実現する場合、残余の部分は、実施例1〜実施例3に示したように論理回路で実現することとしてもよい。
図25は、実施例4にかかる転送装置100のハードウェア構成例を示すブロック図である。転送装置100は、プロセッサ2501と、記憶デバイス2502と、入力デバイス2503と、出力デバイス2504と、通信インターフェース(通信IF2505)と、を有する。プロセッサ2501、記憶デバイス2502、入力デバイス2503、出力デバイス2504、および通信IF2505は、バス2506により接続される。プロセッサ2501は、転送装置100を制御する。
記憶デバイス2502は、プロセッサ2501の作業エリアとなる。また、記憶デバイス2502は、プロセッサ2501が実行することにより実施例1〜実施例3の転送装置100の一部または全部の機能を実現するプログラムや、実施例1〜実施例3で用いられた各種テーブルを記憶する非一時的な記録媒体である。
記憶デバイス2502としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。入力デバイス2503は、データを入力する。入力デバイス2503としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス2504は、データを出力する。出力デバイス2504としては、たとえば、ディスプレイ、プリンタがある。通信IF2505は、ネットワークと接続し、データを送受信する。
このように、実施例4によれば、実施例1〜実施例3にかかる転送装置100をソフトウェアにより実現することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
100 転送装置、101 書込処理部、102 出力フレームバッファ、103 読出処理部、104 帯域管理部、105 フレーム出力リスト、141 算出部、142 登録要求部、143 登録処理部、204 入力ヘッダ処理部、205 入力フレームバッファ制御部、206 出力フレームバッファ制御部、210 フレーム中継部、240 入力ヘッダ処理テーブル、250 入力フレームバッファ、261 キュー管理テーブル、262 帯域管理テーブル、1600 読出要求優先制御部、1602 高優先キュー、1603 低優先キュー、1604 キュー制御部、1901 短期フレーム出力リスト、1902 長期フレーム出力リスト
Claims (15)
- フレームを受信する受信部と、
複数のバッファのうち、前記受信部によって受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、前記特定のバッファに同一フローの残存フレームがあるか否かを判断し、前記残存フレームがない場合に、前記フレームの理想送出時刻の演算要求を出力する書込処理部と、
前記書込処理部からの前記演算要求を受けた場合、前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フレームを前記特定のバッファから読み出す理想送出時刻を算出する算出部と、
前記算出部によって算出された理想送出時刻が到来した場合、前記特定のバッファから前記フレームを読み出す読出処理部と、
前記読出処理部によって読み出されたフレームを当該フレームの転送先に送信する送信部と、
を有することを特徴とする転送装置。 - 所定サイズの記憶領域であるタイムスロットを時系列に構成したフレーム出力リストと、
前記理想送出時刻と前記フローの識別情報とを含む前記フレーム出力リストへの登録要求を出力する登録要求部と、
前記登録要求部からの前記登録要求を受けた場合、現在時刻に基づいて、前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録する登録処理部と、を有し、
前記読出処理部は、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記フレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記バッファから前記フレームを読み出すことを特徴とする請求項1に記載の転送装置。 - 前記読出処理部は、前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出した結果、前記特定のバッファに残存フレームが有る場合には、前記フローの識別情報を前記フレーム出力リストに登録すべき旨を示す登録指示情報を前記算出部に出力し、前記特定のバッファに残存フレームがない場合には前記フローの識別情報を前記フレーム出力リストに登録すべきでない旨を示す登録不指示情報を前記算出部に出力し、
前記算出部は、前記登録指示情報を受けた場合、前記残存フレームの理想送出時刻を算出し、前記登録不指示情報を受けた場合、前記残存フレームの理想送出時刻を算出せず、
前記登録要求部は、前記残存フレームの理想送出時刻が算出された場合、前記残存フレームの理想送出時刻と前記フローの識別情報とを含む前記フレーム出力リストへの登録要求を出力することを特徴とする請求項2に記載の転送装置。 - 前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フローにおける前記フレームのトークン量を算出し、当該トークン量が、トークンの最大許容蓄積量よりも小さい所定のしきい値以下である場合に前記フローの識別情報を含む読出要求を滞留させ、前記しきい値より大きい場合に前記フローの識別情報を含む読出要求を、滞留させた識別情報よりも優先して前記読出処理部に出力する優先制御部を有し、
前記読出処理部は、前記優先制御部からの前記読出要求を受けた場合、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項1に記載の転送装置。 - 前記優先制御部は、
第1のキューと、
前記第1のキューよりも優先読出しされる第2のキューと、
前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フローにおける前記フレームのトークン量を算出し、当該トークン量が、前記しきい値以下である場合に前記フローの識別情報を前記第1のキューに格納し、前記しきい値より大きい場合に前記フローの識別情報を前記第2のキューに格納する振分け部と、有し、
前記読出処理部は、前記第1のキューまたは前記第2のキューのうち前記第2のキューから優先的に出力される前記読出要求を受けた場合、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項4に記載の転送装置。 - 所定サイズの記憶領域であるタイムスロットを時系列に構成した第1のフレーム出力リストと、
収容可能なフローの数分のエントリにより構成されフローごとに前記算出部によって算出される理想送出時刻を格納可能な第2のフレーム出力リストと、
前記理想送出時刻と前記フローの識別情報とを含む前記第1のフレーム出力リストへの登録要求を出力する登録要求部と、
前記登録要求部からの前記登録要求を受けた場合、前記登録要求に含まれる前記理想送出時刻が、現在時刻から前記第1のフレーム出力リストに対応する時間長を加算した時刻を超過するか否かを判断し、超過しない場合には、前記第1のフレーム出力リストにおける前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録し、超過する場合には、前記第2のフレーム出力リストにおける前記フローのエントリに前記理想送出時刻を登録する登録処理部と、を有し、
前記読出処理部は、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記第1のフレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項1に記載の転送装置。 - 前記登録処理部は、連続的な読出タイミングで、前記第2のフレーム出力リストに登録された前記理想送出時刻が、前記読出タイミングから前記第1のフレーム出力リストに対応する時間長を加算した時刻を超過するか否かを判断し、超過しない場合には、前記第1のフレーム出力リストにおいて、前記第2のフレーム出力リストに登録された前記理想送出時刻に対応するタイムスロットに、前記第2のフレーム出力リストに前記理想送出時刻が登録されたエントリにより特定される前記フローの識別情報を登録することを特徴とする請求項6に記載の転送装置。
- フレームを受信する受信手順と、
複数のバッファのうち、前記受信手順によって受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、前記特定のバッファに同一フローの残存フレームがあるか否かを判断し、前記残存フレームがない場合に、前記フレームの理想送出時刻の演算要求を出力する書込手順と、
前記書込手順によって前記演算要求を受けた場合、前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フレームを前記特定のバッファから読み出す理想送出時刻を算出する算出手順と、
前記算出手順によって算出された理想送出時刻が到来した場合、前記特定のバッファから前記フレームを読み出す読出手順と、
前記読出手順によって読み出されたフレームを当該フレームの転送先に送信する送信手順と、
を含むことを特徴とする転送方法。 - 所定サイズの記憶領域であるタイムスロットを時系列に構成したフレーム出力リストへの前記理想送出時刻と前記フローの識別情報とを含む登録要求を出力する登録要求手順と、
前記登録要求手順によって前記登録要求を受けた場合、現在時刻に基づいて、前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録する登録手順と、を含み、
前記読出手順では、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記フレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記バッファから前記フレームを読み出すことを特徴とする請求項8に記載の転送方法。 - 前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フローにおける前記フレームのトークン量を算出し、当該トークン量が、トークンの最大許容蓄積量よりも小さい所定のしきい値以下である場合に前記フローの識別情報を含む読出要求を滞留させ、前記しきい値より大きい場合に前記フローの識別情報を含む読出要求を、滞留させた識別情報よりも優先して、前記読出手順をおこなう読出処理部に出力する優先制御手順を含み、
前記読出手順では、前記優先制御手順によって前記読出処理部が前記読出要求を受けた場合、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項8に記載の転送方法。 - 所定サイズの記憶領域であるタイムスロットを時系列に構成した第1のフレーム出力リストへの前記理想送出時刻と前記フローの識別情報とを含む登録要求を出力する登録要求手順と、
前記登録要求手順によって前記登録要求を受けた場合、前記登録要求に含まれる前記理想送出時刻が、現在時刻から前記第1のフレーム出力リストに対応する時間長を加算した時刻を超過するか否かを判断し、超過しない場合には、前記第1のフレーム出力リストにおける前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録し、超過する場合には、収容可能なフローの数分のエントリにより構成されフローごとに前記算出手順によって算出される理想送出時刻を格納可能な第2のフレーム出力リストにおける前記フローのエントリに、前記理想送出時刻を登録する登録手順と、を含み、
前記読出手順では、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記第1のフレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項8に記載の転送方法。 - プロセッサが実行するプログラムを格納する前記プロセッサにより読み取り可能な非一時的な記録媒体であって、
前記プロセッサに、
フレームを受信する受信手順と、
複数のバッファのうち、前記受信手順によって受信されたフレームを、当該フレームが所属するフローに関する特定のバッファに順次書き込むとともに、前記特定のバッファに同一フローの残存フレームがあるか否かを判断し、前記残存フレームがない場合に、前記フレームの理想送出時刻の演算要求を出力する書込手順と、
前記書込手順によって前記演算要求を受けた場合、前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フレームを前記特定のバッファから読み出す理想送出時刻を算出する算出手順と、
前記算出手順によって算出された理想送出時刻が到来した場合、前記特定のバッファから前記フレームを読み出す読出手順と、
前記読出手順によって読み出されたフレームを当該フレームの転送先に送信する送信手順と、
を実行させる転送プログラムを記録した非一時的な記録媒体。 - 前記プロセッサに、
所定サイズの記憶領域であるタイムスロットを時系列に構成したフレーム出力リストへの前記理想送出時刻と前記フローの識別情報とを含む登録要求を出力する登録要求手順と、
前記登録要求手順によって前記登録要求を受けた場合、現在時刻に基づいて、前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録する登録手順と、を実行させ、
前記読出手順では、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記フレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記バッファから前記フレームを読み出すことを特徴とする請求項12に記載の転送プログラムを記録した非一時的な記録媒体。 - 前記プロセッサに、
前記フレームの受信時刻と、前記フローの設定帯域と、に基づいて、前記フローにおける前記フレームのトークン量を算出し、当該トークン量が、トークンの最大許容蓄積量よりも小さい所定のしきい値以下である場合に前記フローの識別情報を含む読出要求を滞留させ、前記しきい値より大きい場合に前記フローの識別情報を含む読出要求を、滞留させた識別情報よりも優先して、前記読出手順をおこなう読出処理部に出力する優先制御手順を実行させ、
前記読出手順では、前記優先制御手順によって前記読出処理部が前記読出要求を受けた場合、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項12に記載の転送プログラムを記録した非一時的な記録媒体。 - 前記プロセッサに、
所定サイズの記憶領域であるタイムスロットを時系列に構成した第1のフレーム出力リストへの前記理想送出時刻と前記フローの識別情報とを含む登録要求を出力する登録要求手順と、
前記登録要求手順によって前記登録要求を受けた場合、前記登録要求に含まれる前記理想送出時刻が、現在時刻から前記第1のフレーム出力リストに対応する時間長を加算した時刻を超過するか否かを判断し、超過しない場合には、前記第1のフレーム出力リストにおける前記登録要求に含まれる前記理想送出時刻に対応するタイムスロットに前記登録要求に含まれる前記フローの識別情報を登録し、超過する場合には、収容可能なフローの数分のエントリにより構成されフローごとに前記算出手順によって算出される理想送出時刻を格納可能な第2のフレーム出力リストにおける前記フローのエントリに、前記理想送出時刻を登録する登録手順と、を実行させ、
前記読出手順では、前記理想送出時刻が到来した場合、前記理想送出時刻に対応するタイムスロットに登録された前記フローの識別情報を含む読出要求を前記第1のフレーム出力リストから受けて、前記読出要求に含まれる前記フローの識別情報により特定される前記特定のバッファから前記フレームを読み出すことを特徴とする請求項12に記載の転送プログラムを記録した非一時的な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013208051A JP2015073210A (ja) | 2013-10-03 | 2013-10-03 | 転送装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013208051A JP2015073210A (ja) | 2013-10-03 | 2013-10-03 | 転送装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015073210A true JP2015073210A (ja) | 2015-04-16 |
Family
ID=53015294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013208051A Pending JP2015073210A (ja) | 2013-10-03 | 2013-10-03 | 転送装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015073210A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017017538A (ja) * | 2015-07-01 | 2017-01-19 | 富士通株式会社 | メーター処理方法、メーター処理プログラム及びネットワーク装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001274795A (ja) * | 2000-03-23 | 2001-10-05 | Nippon Telegr & Teleph Corp <Ntt> | セルシェーピング装置 |
JP2001313669A (ja) * | 2000-04-27 | 2001-11-09 | Fujitsu Ltd | データシェーピング装置およびデータレート制御方法 |
JP2011199521A (ja) * | 2010-03-18 | 2011-10-06 | Fujitsu Ltd | パケット転送装置およびパケット転送方法 |
-
2013
- 2013-10-03 JP JP2013208051A patent/JP2015073210A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001274795A (ja) * | 2000-03-23 | 2001-10-05 | Nippon Telegr & Teleph Corp <Ntt> | セルシェーピング装置 |
JP2001313669A (ja) * | 2000-04-27 | 2001-11-09 | Fujitsu Ltd | データシェーピング装置およびデータレート制御方法 |
JP2011199521A (ja) * | 2010-03-18 | 2011-10-06 | Fujitsu Ltd | パケット転送装置およびパケット転送方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017017538A (ja) * | 2015-07-01 | 2017-01-19 | 富士通株式会社 | メーター処理方法、メーター処理プログラム及びネットワーク装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5795592B2 (ja) | 中央制御装置により制御されるデータパケットを受信し記憶する装置および方法 | |
US8248945B1 (en) | System and method for Ethernet per priority pause packet flow control buffering | |
CN110086728B (zh) | 发送报文的方法、第一网络设备及计算机可读存储介质 | |
CN112995064B (zh) | 一种时间敏感网络报文转发方法、装置、终端及存储介质 | |
US20170187587A1 (en) | Technologies for inline network traffic performance tracing | |
US20190280982A1 (en) | Information processing apparatus and information processing system | |
JP6492083B2 (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
WO2021088629A1 (zh) | DetNet数据包处理方法及装置 | |
US20220210078A1 (en) | Method implemented by computer means of a communicating entity in a packet-switched network, and computer program and computer-readable non-transient recording medium thereof, and communicating entity of a packet-switched network | |
CN108462649A (zh) | 降低onu中拥塞状态下高优先级数据传输时延的方法和装置 | |
US10686897B2 (en) | Method and system for transmission and low-latency real-time output and/or processing of an audio data stream | |
US20120051372A1 (en) | Shaping apparatus and method | |
JP2024502118A (ja) | データ伝送方法、装置、電子機器、及び記憶媒体 | |
US20160085683A1 (en) | Data receiving device and data receiving method | |
KR20120055946A (ko) | 공평한 대역 할당 기반 패킷 스케줄링 방법 및 장치 | |
JP2015073210A (ja) | 転送装置 | |
EP2670099A1 (en) | Communication apparatus and communication method | |
US6490629B1 (en) | System and method for scheduling the transmission of packet objects having quality of service requirements | |
WO2019095942A1 (zh) | 一种数据传输方法及通信设备 | |
KR20120055947A (ko) | 가입자 인지 플로우별 QoS 제공 방법 및 장치 | |
US9338219B2 (en) | Direct push operations and gather operations | |
CN107332839B (zh) | 一种报文传输方法及装置 | |
US8953473B2 (en) | Communication device | |
CN117155874A (zh) | 数据包发送方法、转发节点、发送端及存储介质 | |
JP2014049936A (ja) | データ転送装置、データ転送方法およびデータ転送プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160719 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170523 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20171114 |