JP2011130249A - 通信制御装置 - Google Patents

通信制御装置 Download PDF

Info

Publication number
JP2011130249A
JP2011130249A JP2009287646A JP2009287646A JP2011130249A JP 2011130249 A JP2011130249 A JP 2011130249A JP 2009287646 A JP2009287646 A JP 2009287646A JP 2009287646 A JP2009287646 A JP 2009287646A JP 2011130249 A JP2011130249 A JP 2011130249A
Authority
JP
Japan
Prior art keywords
packet
segment
unit
start position
offset
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
JP2009287646A
Other languages
English (en)
Other versions
JP5342428B2 (ja
Inventor
Hiroshi Okagawa
宏 岡川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Telecom Networks Ltd
Original Assignee
Fujitsu Telecom Networks Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Telecom Networks Ltd filed Critical Fujitsu Telecom Networks Ltd
Priority to JP2009287646A priority Critical patent/JP5342428B2/ja
Priority to US12/721,994 priority patent/US8498304B2/en
Publication of JP2011130249A publication Critical patent/JP2011130249A/ja
Application granted granted Critical
Publication of JP5342428B2 publication Critical patent/JP5342428B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】通信制御装置に設けられたメモリを効率的に使用する。
【解決手段】実施の1形態のスイッチ装置10は、固定長のセグメントを記憶領域の管理単位として、中継すべきパケットを一時的に保持するための複数のセグメントを含むパケットバッファ34と、中継すべきパケットを外部の通信ノード12から受け付け、あるセグメントにおける空き領域の開始位置を示すオフセットを参照して、そのセグメントにおけるオフセットが示す開始位置から第1のパケットを格納するとともにそのパケット長に応じてオフセットが示す開始位置を更新し、そのセグメントにおける更新後の開始位置から第2のパケットを格納する入力処理部44と、パケットバッファ34から第1および第2のパケットを読み出して通信ノード12へ送出する出力処理部46とを備える。
【選択図】図2

Description

この発明は、データ通信技術に関し、特に、通信パケットを中継するための通信制御技術に関する。
近年、高速インターネットやIP(Internet Protocol)電話が普及してきている。これに伴って、イーサネットパケット(「イーサネット」は登録商標)やIPパケット等の通信パケット(以下、単に「パケット」とも呼ぶ。)の高速な伝送が必要になっている。そのため、レイヤ2スイッチ・レイヤ3スイッチ・ルータ等の通信制御装置においてパケット中継処理の高速化が求められている。
通信制御装置には、その内部に、パケットのデータを一時的に保持するためのメモリ(以下、「パケットバッファ」とも呼ぶ)が設けられている。一般的にパケットのデータは可変長であるが、通信制御装置において可変長の記憶領域を管理することは処理の複雑化を招く。そのため、パケットバッファを固定長の管理単位(以下、「セグメント」とも呼ぶ)に分割し、1パケットを1以上のセグメントに割り当て、1セグメントには1パケットの構成データを格納して管理していた。
特開2005−130366号公報
通信制御装置が高速・大容量になるに伴いパケットバッファも大容量化し、セグメントで保持可能なデータサイズも増大している。本発明者は、1セグメントに対し1パケットの構成データを格納する方式では、セグメントに生じる未使用領域が大きいという課題を認識した。
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、通信制御装置に設けられたメモリを効率的に使用する技術を提供することである。
上記課題を解決するために、本発明のある態様の通信制御装置は、固定長のセグメントを記憶領域の管理単位として、中継すべきパケットを一時的に保持するための複数のセグメントを含むメモリと、中継すべきパケットを外部から受け付けるパケット受付部と、あるセグメントにおける空き領域の開始位置を示すオフセットを参照して、セグメントにおけるオフセットが示す開始位置からパケットを格納するとともにそのパケット長に応じてオフセットが示す開始位置を更新し、セグメントにおける更新後の開始位置から別のパケットを格納するパケット書込部と、開始位置からパケットを読み出し、更新後の開始位置から別のパケットを読み出して、それぞれのパケットを外部へ送出するパケット送出部と、を備える。
通信制御装置は、外部の通信ノードから受け付けられた通信パケットを一時的にバッファリングし、別の通信ノードへ中継するスイッチ装置であってもよい。例えば、レイヤ2スイッチ、レイヤ3スイッチ、ブリッジ、ルータ等であってもよい。セグメントは、パケットのバッファリング処理に対して、メモリの記憶領域が割り当てられる単位であってもよく、その割り当てが解放される単位であってもよい。この態様によると、1つのセグメントに複数のパケットのデータを格納することにより、セグメントの空き領域サイズを低減し、メモリを効率的に使用できる。
パケット書込部は、オフセットにより特定されるセグメントの空き容量をパケット長が超過する場合、超過したパケットのデータを別のセグメントへ格納するとともに、オフセットが示す開始位置を、別のセグメントに残存する空き領域の開始位置を示すよう更新してもよい。
別のセグメントは、空き領域として設定されたセグメントの情報を保持するテーブルにおいて、パケットの格納優先順位が最上位、もしくはオフセットが指し示すセグメントに続く次点のセグメントであってもよい。この態様によると、セグメントの空き容量がパケット長よりも短い場合は、そのセグメントには空き容量分のパケットのデータが格納され、残りは別のセグメントに格納される。これにより、1つのセグメントにおけるパケット格納領域の全体を有効に活用でき、メモリを効率的に使用できる。
複数のセグメントのそれぞれに対応づけて、各セグメントに格納された各パケットが読み出されるべき回数の合計値を保持する読み出し回数保持部と、セグメント解放部と、をさらに備えてもよい。パケット書込部は、パケット受付部において受け付けられたパケットをセグメントへ格納する際、当該セグメントに対応づけられた合計値を増加させ、パケット送出部は、セグメントに格納されたパケットを読み出した際、当該セグメントに対応づけられた合計値を減少させ、セグメント解放部は、合計値が0になったセグメントを新たに空き領域として設定してもよい。
新たに空き領域として設定するとは、空き領域として設定されたセグメントの情報を保持するテーブルへ、合計値が0になったセグメントの情報を追加することでもよい。また、セグメントとして割り当てられたメモリの記憶領域を適宜解放してもよい。この態様によると、セグメントに格納された複数のパケットそれぞれの読み出しが完了すると、言い換えれば、セグメントの格納データに対する最後の参照が完了すると、そのセグメントが空き領域として設定されて、新たなパケットが格納される。これにより、セグメントに格納されたパケットを保護しつつ、そのセグメントの再利用を実現できる。
パケット書込部は、複数の出力ポートから送出されるべきパケットをセグメントへ格納する際、当該セグメントに対応づけられた合計値を、当該パケットが送出されるべき出力ポートの数に応じて増加させ、パケット送出部は、複数の出力ポートのいずれかからパケットを送出すべき際、セグメントからパケットを読み出すとともに、セグメントに対応づけられた合計値を逐次減少させてもよい。
この態様によると、マルチキャストパケットやブロードキャストパケットの中継処理において、複数の出力ポートへの送出が完了するまではそれらのパケットの保持を継続し、また、それらのパケットを含むセグメントの適切な再利用を実現できる。
空き領域として設定されたセグメントの情報を保持する空きセグメント情報保持部と、空き領域として設定されたセグメントのうちパケットを格納すべきセグメントの情報を指し示す先頭ポインタと、新たに空き領域として設定されたセグメントの情報を格納すべき位置を指し示す末尾ポインタと、をさらに備えてもよい。パケット書込部は、先頭ポインタにより特定されるセグメントへパケットを格納し、セグメント解放部は、新たに空き領域として設定したセグメントの情報を末尾ポインタの指し示す位置へ格納し、当該セグメントが先頭ポインタにより特定されるものである場合はさらに、別のセグメントの情報を指し示すよう先頭ポインタを更新してもよい。
この態様によると、セグメント情報保持部における同一セグメントの二重管理を排除できる。二重管理が発生すると、先頭ポインタが指し示すエントリにより特定されるセグメントにパケットが格納されて、そのセグメントが空き領域でなくなっても、そのセグメントに関する別のエントリにより空き領域として把握されてしまうことがある。その結果、読み出しが未完了のパケットが上書きされる等、問題を生ずることがある。この態様では、このような問題の発生を回避でき、堅牢なセグメント管理を実現できる。
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、通信制御装置に設けられたメモリを効率的に使用できる。
実施の形態の通信システムの構成を示す図である。 図1のスイッチ装置の機能構成を示すブロック図である。 空き領域情報保持部に保持されるデータを模式的に示す図である。 キュー情報保持部に保持されるデータを模式的に示す図である。 図2の入力処理部の詳細を示すブロック図である。 図2の出力処理部の詳細を示すブロック図である。 スイッチ装置の動作を示すフローチャートである。 図7のS14の詳細を示すフローチャートである。 スイッチ装置の動作を示すフローチャートである。 図9のS42の詳細を示すフローチャートである。 図9のS46の詳細を示すフローチャートである。
本発明の実施の形態について、その構成を説明する前に概要を説明する。
スイッチ等の通信制御装置では、パケット伝送の信頼性を高めるために、パケットバッファにおける固定長のセグメントに対して、パケットのデータ(以下、単に「パケット」とも呼ぶ)を一時的に格納することが多い。従来、1セグメント長よりも長いパケットは複数のセグメントに分割して格納されていたが、1つのセグメントへ格納されるデータは1つのパケットを構成するデータであった。
例えば、512バイトが固定的に確保されるセグメントに対し64バイトのパケットが格納されると、そのセグメント容量の9割弱は未使用の状態になってしまっていた。すなわち、実際にパケットが格納されるのはパケットバッファ容量の一部であり、メモリが非効率に使用されることがあった。特に、パケットバッファが大容量化している現在、1つのセグメントに対し1つのパケットの構成データのみを格納する方式では、セグメントに生じる未使用領域が大きくなってしまう。
そこで本実施の形態では、セグメントにおける空き領域の開始位置を示すオフセットを管理し、オフセットが示す位置からパケットを格納する。これにより、1つのセグメントに対して複数パケットを格納し、そのセグメント容量を有効に活用して、効率的なメモリの使用を実現する。
図1は、実施の形態の通信システムの構成を示す。通信システム100は、スイッチ装置10と、複数の通信ノード12とを含む。スイッチ装置10は、ある通信ノード12から送信されたレイヤ2パケットやレイヤ3パケットを、そのパケットに設定された宛先アドレスにしたがって、別の通信ノード12へ中継する通信制御装置である。
通信ノード12は、スイッチ装置10を介して他の通信ノード12とパケットを送受する情報処理装置であり、例えばPC端末でもよく、スイッチ装置10とは異なる別のスイッチ装置でもよい。すなわち通信システム100においては、スイッチ装置10を介して、LAN・WAN・インターネット等、種々の通信網内に設置された通信ノード12が相互に接続される。
図2は、図1のスイッチ装置10の機能構成を示すブロック図である。スイッチ装置10は、入力ポート20で総称される第1入力ポート20a・第2入力ポート20b・第3入力ポート20cと、出力ポート22で総称される第1出力ポート22a・第2出力ポート22b・第3出力ポート22cと、データ保持部30とデータ処理部42とを備える。なお、入力ポート20および出力ポート22は、説明の便宜上3個図示しているが、特定の個数に制限されないことはもちろんである。
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
例えば、図2の入力ポート20および出力ポート22は、通信ノード12からの通信ケーブルが接続される接続ポートであってもよい。またデータ保持部30の機能は、メモリにより実現されてもよい。またデータ処理部42の機能は、プログラムとして実装され、スイッチ装置10のメモリに保持され、プロセッサにより実行されてもよく、LSI等の電子回路で実装されてもよい。
入力ポート20は、通信ノード12から送信されたパケットを受信して、そのパケットをデータ処理部42へ送出する。出力ポート22は、データ処理部42から送出されたパケットを通信ノード12へ送信する。
データ保持部30は、各種データが格納されて保持される記憶領域である。データ保持部30は、経路決定テーブル32と、パケットバッファ34と、空き領域情報保持部36と、キュー情報保持部38と、読み出し回数保持部40とを含む。
経路決定テーブル32は、通信ノード12から送信されたパケットに設定された宛先アドレス(例えばMACアドレスやIPアドレス)と、そのパケットを送出すべき出力ポート22とを対応づけて保持する。経路決定テーブル32は、例えばレイヤ2スイッチにおけるMACアドレステーブルでもよく、レイヤ3スイッチやルータにおけるルーティングテーブルであってもよい。
パケットバッファ34は、固定長のセグメントを記憶領域の管理単位として、複数のセグメントのそれぞれに1以上のパケットのデータを保持する。本実施の形態では、各セグメントに対し、他のセグメントと識別するためのID(以下、「セグメント番号」とも呼ぶ)が割り当てられる。以下、1〜N番のセグメント番号が割り当てられたセグメントを、セグメント#1〜#Nとも称する。また本実施の形態でのセグメント長は、512バイトであることとする。
空き領域情報保持部36は、空き領域を有するセグメント(以下、「空きセグメント」とも呼ぶ)の情報を保持する。図3は、空き領域情報保持部36に保持されるデータを模式的に示す。空き領域管理テーブル50は、空きセグメントとして指定されたセグメントについて、そのセグメント番号が順次記録される記憶領域である。先頭ポインタ52には、パケットを格納すべき空きセグメントのエントリとして、空き領域管理テーブル50における先頭エントリのアドレスが格納される。この先頭エントリは、空きセグメントの指定が維持されているセグメントのうち最先に記録されたエントリである。
空き領域オフセット54には、先頭ポインタ52により示された空きセグメントについて、その空き領域の開始位置を示すデータが格納される。例えば、空き領域オフセット54の値が100の場合、空きセグメントの100バイト目以降が空き領域であることを示す。末尾ポインタ56には、新たに空きセグメントして指定されたセグメントについて、そのセグメント番号を記録すべきアドレスが格納される。
図2に戻りキュー情報保持部38は、出力ポート22のそれぞれからパケットを送出する際に参照される、出力ポート22のそれぞれに対応するキューの管理情報を保持する。
図4は、キュー情報保持部38に保持されるデータを模式的に示す。キュー管理テーブル60は、各出力ポート22から送出されるべき各パケットについて、そのパケット長と、格納されたセグメント番号と、セグメントでの格納開始位置を示すオフセット値とが対応づけられたエントリを保持する。以下、特定の出力ポート22に対応するキュー管理テーブル60のエントリ全体を、その出力ポート22に対応するキューと称する。
図4のキュー先頭ポインタ62は、各出力ポート22に対応するキューのそれぞれにおける先頭エントリのアドレスを示す。キュー末尾ポインタ64は、各キューのそれぞれに対し新たなエントリが追加されるべきアドレスを示す。キュー管理テーブル60のエントリにおいては、基本的に、1パケットについてパケット長とセグメント番号とオフセットとが対応づけて設定される。セグメントの空き容量をパケット長が超過する場合は、その超過分を格納したセグメント番号が後続のエントリとして追加される。
例えば、図4の第1出力ポート22aに対応するキューには3つのパケットの情報が含まれている。第1のパケットは1024バイトであり、セグメント#9の400バイト目から格納されている。セグメント#9を超過するパケットデータはセグメント#11の先頭から格納され、さらにセグメント#11を超過するパケットデータはセグメント#14の先頭から格納されている。第2のパケットは64バイトであり、セグメント#14の400バイト目から格納されている。また第2のパケットは、マルチキャストパケットでもある。すなわち、第2出力ポート22bに対応するキューおよび第3出力ポート22cに対応するキューでも同様のエントリがあり、この第2のパケットを複数の出力ポート22から出力すべきことが記録されている。
図2に戻り読み出し回数保持部40は、パケットバッファ34における複数のセグメントのそれぞれについて、各セグメントに保持された複数のパケットのそれぞれで予定される読み出し回数の合計値を保持する。この読み出し回数は、言い換えれば、各パケットを送出すべき出力ポート22の数であり、ユニキャストパケットの場合は1となり、マルチキャストパケットおよびブロードキャストパケットの場合は2以上となる。また、セグメントの読み出し回数が0であれば、そのセグメントに格納されたパケットが読み出されることはない、すなわちそのセグメントの格納パケットを解放・上書き可能であることを示している。
データ処理部42は、通信ノード12間でやりとりされるパケットを中継するための各種データ処理を実行する。データ処理部42は、入力処理部44で総称される第1入力処理部44a・第2入力処理部44b・第3入力処理部44cと、出力処理部46で総称される第1出力処理部46a・第2出力処理部46b・第3出力処理部46cとを含む。
入力処理部44のそれぞれは、対応する入力ポート20からパケットを受け付けて、そのパケットに関連するデータをデータ保持部30へ格納する。ある入力処理部44は、他の入力処理部44とは独立しており、各々並行して動作する。図5は、図2の入力処理部44の詳細を示すブロック図である。入力処理部44は、パケット受付部70と、方路決定部72と、パケット書込部74とを含む。
パケット受付部70は、対応する入力ポート20を介して、通信ノード12から送信されたパケットを受け付ける。方路決定部72は、経路決定テーブル32を参照し、パケット受付部70において受け付けられたパケットで指定された宛先アドレスにしたがって、そのパケットの転送先を決定する。具体的には、複数の出力ポート22のいずれから、そのパケットを送出すべきかを決定する。
パケット書込部74は、送出先の出力ポート22が決定されたパケットをデータ保持部30へ格納する。以下詳細に説明する。まずパケット書込部74は、空き領域情報保持部36を参照して、パケットバッファ34に十分な空き領域が有るか否かを判定する。具体的には、先頭ポインタ52が示すアドレスと末尾ポインタ56が示すアドレスとが異なる場合は空き領域が有ると判定し、両アドレスが合致する場合は空き領域が無いと判定する。次に空き領域の全体容量、すなわち(セグメント長×空きセグメント数−空き領域オフセット54)を算出し、空き領域の全体容量がパケット長以上である場合は空き領域が有ると判定し、パケット長未満である場合は空き領域が無いと判定する。
続いてパケット書込部74は、キュー情報保持部38を参照して、キュー管理テーブル60に十分な空き領域があるか否かを判定する。具体的には、パケットを送出すべき出力ポート22に対応するキューについて、そのキュー末尾ポインタ64が示すアドレスとキュー先頭ポインタ62が示すアドレスとの差からキューの現在のデータサイズを特定する。そしてそのデータサイズと、キューへ新規追加すべきエントリのデータサイズとの合計値が、予め定められたキューの最大サイズ以内である場合は空き領域があると判定し、キューの最大サイズを超過する場合は空き領域が無いと判定する。
キュー管理テーブル60へ新規追加すべきエントリのデータサイズは、新規追加すべきエントリ数と正相関するため、例えば、そのエントリ数に対し1エントリのデータサイズを示す所定値を乗じて算出してもよい。新規追加すべきエントリ数は、パケットの格納に用いられるセグメント数と同数であり、下記の式(以下、「式1」とも呼ぶ)により算出する。
(パケット長+空き領域オフセット54の値)/セグメント長+1
したがって、図4で示したように、パケット長が1024バイト、空き領域オフセット54の値が400、セグメント長が512バイトである場合、(キューへ新規追加すべきエントリ数)=(パケットを格納するセグメント数)=3となる。
パケット書込部74は、パケットバッファ34とキュー管理テーブル60との少なくとも一方に十分な空き領域がなければ、ユニキャストパケットの書き込み処理を中止してそのユニキャストパケットを廃棄する。パケットバッファ34に十分な空き領域があり、かつ、キュー管理テーブル60に十分な空き領域がある場合、パケット書込部74は、ユニキャストパケットの書き込み処理を続行する。
なお、マルチキャストパケットまたはブロードキャストパケットのデータをデータ保持部30へ格納すべき際には、パケット書込部74は、パケットを送出すべき複数の出力ポート22に対応する複数のキューそれぞれの空き領域を判定する。そして、空き領域があると判定したキューが1つでもあれば、そのキューをエントリ追加対象キューとして特定するとともにパケットの書き込み処理を続行する。
パケットの書き込み処理を続行する場合、パケット書込部74は、まず上述の式1によりパケットを格納すべきセグメント(以下、「書き込みセグメント」とも呼ぶ)の数を算出する。パケット書込部74は、書き込みセグメント数が2以上である場合、その書き込みセグメント数が1になるまで以下の処理を繰り返す。
ステップ1:空き領域情報保持部36の先頭ポインタ52を参照して書き込みセグメントを特定する。そして、その書き込みセグメントにおいて、空き領域オフセット54が示す位置以降にパケットを書き込む。
ステップ2:先頭ポインタ52の値を加算する(すなわち、次の空きセグメントの情報を示すように更新する)とともに、空き領域オフセット54の値を0に更新する(すなわち、空きセグメントの先頭を示すように更新する)。
ステップ3:書き込みセグメント数を1減算する。
書き込みセグメント数が1の場合、上記ステップ2において、空き領域オフセット54の値が、パケットの末尾データを格納した次の位置を示すよう、空き領域オフセット54を更新する。その一方で、先頭ポインタ52の値は変更しない。
続いてパケット書込部74は、キュー情報保持部38のデータを更新する。具体的には、パケットを送出すべき出力ポート22に対応するキュー管理テーブル60のキューについて、そのキュー末尾ポインタ64が指し示すアドレス以降に、書き込みセグメントに対応する新たなエントリを追加する。パケット書込部74は、パケットを書き込んだセグメントのセグメント番号を各エントリへ記録する。そのパケットに関する先頭のエントリに対しては、パケット長と、書き込みを開始した位置、すなわち書き込みの開始時点における空き領域オフセット54の値をさらに記録する。
なお、マルチキャストパケットまたはブロードキャストパケットの場合、パケット書込部74は、新規エントリの追加により最大値の制限を超過しないキュー、すなわちエントリ追加対象キューに対してのみ新たなエントリの追加を行う。これにより、本来これらのパケットを送出すべき複数の出力ポート22のうち、エントリ追加対象キューに対応する出力ポート22からのみパケットが送出されることになる。
最後にパケット書込部74は、読み出し回数保持部40のデータを更新する。具体的には、各キューへ追加した新たなエントリごとに、そのエントリに記録したセグメント、すなわちパケットを格納したセグメントに対する読み出し回数を1加算する。
例えば、ユニキャストパケットをセグメント#1とセグメント#2とに格納し、それぞれのセグメント番号が記録された2つのエントリを1つのキューへ追加した場合、セグメント#1の読み出し回数とセグメント#2の読み出し回数の両方へ1を加算する。また、マルチキャストパケットをセグメント#1とセグメント#2とに格納し、上記と同様の2つのエントリを2つのキューのそれぞれへ追加した場合、セグメント#1の読み出し回数とセグメント#2の読み出し回数の両方へ2を加算する。
出力処理部46のそれぞれは、データ保持部30からパケット関連データを読み出して、対応する出力ポート22へパケットを送出する。ある出力処理部46は、他の出力処理部46とは独立しており、各々並行して動作する。図6は、図2の出力処理部46の詳細を示すブロック図である。出力処理部46は、パケット読出し部80と、パケット送出部82と、セグメント解放部84とを含む。
パケット読出し部80は、対応する出力ポート22のキューについて、そのキュー末尾ポインタ64が示すアドレスに変更があるか否かを定期的に監視する。キュー末尾ポインタ64が示すアドレスが変更された場合、新たなエントリが監視対象のキューに追加された旨を検出し、キュー先頭ポインタ62が指すエントリを特定する。
続いてパケット読出し部80は、キュー先頭ポインタ62が指すエントリの、パケット長とオフセット値とを上記の式1へ代入し、1パケットに対応するエントリの数を特定する。そして、各エントリを参照し、それぞれに設定されたセグメント番号に対応するパケットバッファ34のセグメントから1パケット分のデータを読み出す。例えば、1パケットに対応するキューのエントリのうち、先頭のエントリに対応するセグメントからは、(セグメント長−オフセット値)のデータを読み出す。またエントリが複数存在する場合、末尾のエントリに対応するセグメントからは、(パケット長+オフセット値−セグメント長×(エントリ数−1))のデータを読み出す。先頭と末尾の間のエントリに対応するセグメントからはセグメント長(すなわちセグメント全体)のデータを読み出す。
パケットの読み出し後、パケット読出し部80は、そのパケットを読み出す際に参照したエントリ数だけ、キュー情報保持部38のキュー先頭ポインタ62が示す位置を更新する。またパケット読出し部80は、読み出し回数保持部40を更新して、参照済の各エントリで指定されたセグメントの読み出し回数を1ずつ減算する。
パケット送出部82は、読出し部80により読み出されたパケットを、対応する出力ポート22を介して、通信ノード12へ送出する。1つのパケットのデータが分割され、複数のセグメントに分散して格納されていた場合は、個々のセグメントから読み出されたデータを合成し、1つのパケットのデータとして通信ノード12へ送出する。
セグメント解放部84は、読み出し回数保持部40における各セグメントの読み出し回数を定期的に参照して、読み出し回数が1以上から0に変化したセグメントを特定する。セグメント解放部84は、読み出し回数が0に変化したセグメントのセグメント番号を、空き領域情報保持部36において末尾ポインタ56が示す位置へ記録する。それとともに、次に読み出し回数が0になったセグメントの記録位置を示すように、末尾ポインタ56が示すアドレスを1エントリ分増加させる。
なおセグメント解放部84は、読み出し回数が0になったセグメントが、空き領域情報保持部36において先頭ポインタ52が示すセグメントでもあった場合は、先頭ポインタ52が指し示すセグメントを1エントリ分増加させる。すなわち、先頭ポインタ52が示すセグメントが、空き領域情報保持部36において読み出し回数が0になったセグメントの次に設定されたセグメントとなるように、先頭ポインタ52を更新する。
以上の構成による動作を以下説明する。
図7は、スイッチ装置10の動作を示すフローチャートである。同図は、1つの入力処理部44の動作を示している。通信ノード12から送信されたパケットがパケット受付部70において受け付けられると(S10のY)、方路決定部72は経路決定テーブル32を参照して、そのパケットを送出すべき出力ポート22を決定する(S12)。パケット書込部74は、方路決定部72における決定内容にしたがって、後述するパケット書き込み処理を実行する(S14)。パケット受付部70においてパケットが受け付けられなければ(S10のN)、以降の処理はスキップされて本図のフローを終了する。
図8は、図7のS14の詳細を示すフローチャートである。パケット書込部74は、空き領域情報保持部36を参照して、パケットバッファ34に空きセグメントが存在するか否か、また、パケットバッファ34の空き容量がパケット長以上か否かを判別する。空きセグメントが存在し(S20のY)、その空き容量がパケット長以上である場合(S22のY)、パケット書込部74は、キュー情報保持部38を参照して、キュー管理テーブル60に対して新規エントリの追加が可能か否かを判別する。新規エントリを追加可能であれば(S24のY)、パケットのデータを空きセグメントへ格納し(S26)、キュー管理テーブル60へ新規エントリを追加する(S28)。そして、キュー管理テーブル60に対する新規エントリに設定されたセグメントについて、読み出し回数保持部40の読み出し回数を1ずつ加算する(S30)。
パケットバッファ34に空きセグメントが存在しない(S20のN)、または、その空き容量がパケット長未満(S22のN)、または、キューに対し新規エントリ追加ができない場合(S24のN)は、パケットを廃棄して(S32)、本図のフローを終了する。なお図8には図示しないが、マルチキャストパケットやブロードキャストパケットの場合、パケットを送出すべき複数の出力ポート22それぞれに対応するキューについてS24の判定を行う。そして、エントリが追加可能なキューが存在すればS26〜S30を実行する。
図9は、スイッチ装置10の動作を示すフローチャートである。同図は、1つの出力処理部46の動作を示している。パケット読出し部80は、キュー管理テーブル60における監視対象キューに新たなエントリが追加されたことを検出すると(S40のY)、後述するパケット読み出し処理を実行する(S42)。パケット送出部82は、パケット読出し部80により読み出されたパケットデータを、対応する出力ポート22を介して、通信ノード12へ送信する(S44)。セグメント解放部84は、後述するセグメント解放処理を実行する(S46)。監視対象キューに新たなエントリの追加がなければ(S40のN)、以降の処理はスキップされて本図のフローを終了する。
図10は、図9のS42の詳細を示すフローチャートである。パケット読出し部80は、キュー管理テーブル60におけるエントリを参照して、パケットを読み出すべき1以上のセグメントを特定する(S50)。そして、キュー管理テーブル60におけるエントリで指定された順にセグメントからパケットデータを読み出し(S52)、そのセグメントについて読み出し回数保持部40の読み出し回数を1減算する(S54)。キュー管理テーブル60におけるエントリで指定されたセグメントの全てからパケットデータを読み出した場合は(S56のY)、本図のフローを終了する。パケットデータを未読み出しのセグメントが残っていれば(S56のN)、S52へ戻る。
図11は、図9のS46の詳細を示すフローチャートである。セグメント解放部84は、読み出し回数保持部40における各セグメントの読み出し回数を定期的に参照し、その読み出し回数が1以上から0に変化したセグメント(以下、「読み出し完了セグメント」とも呼ぶ)を検出する。読み出し完了セグメントを検出すると(S60のY)、セグメント解放部84は、その読み出し完了セグメントを空き領域として、空き領域情報保持部36における末尾ポインタ56が指定する位置にそのセグメント番号を格納する(S62)。
その読み出し完了セグメントのセグメント番号が、空き領域情報保持部36における先頭ポインタ52でも指定されていた場合(S64のY)、セグメント解放部84は、空き領域情報保持部36におけるパケット格納順位が次点のセグメント番号を示すよう、先頭ポインタ52を更新する(S66)。読み出し完了セグメントのセグメント番号が、先頭ポインタ52によって指定されていなければ(S64のN)、S66はスキップされる。読み出し完了セグメントが検出されなければ(S60のN)、以降の処理はスキップされて本図のフローを終了する。
本実施の形態のスイッチ装置10によれば、セグメントの空き領域の開始位置を示すオフセットを管理し、そのオフセットが示す位置からパケットを格納することにより、1つのセグメントに複数のパケットを格納できる。これにより、セグメントの容量全体をパケットの格納に有効活用でき、メモリの効率的な使用を実現する。例えば、本実施の形態で提案した技術によりメモリの使用効率がN倍になれば、スイッチ装置10に搭載すべきメモリ容量は1/Nになり、必要なハードウェアリソース量を低減できる。
またスイッチ装置10によれば、複数のセグメントそれぞれからのパケットデータの読み出し予定数が、読み出し回数保持部40において一元的に保持される。これにより、複数の入力処理部44のそれぞれが並行動作し、複数の出力処理部46のそれぞれが並行動作し、さらに複数の出力ポート22から出力すべきマルチキャストパケットやブロードキャストパケットと、ユニキャストパケットとが混在する場合でも、適切なタイミングで空きセグメントを設定でき、その再利用を実現できる。
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
上記実施の形態では、入力ポート20および出力ポート22は、外部の通信ノード12と直接接続されることとしたが、スイッチ装置10の態様はこれに限られない。変形例として、スイッチ装置10内部に論理的に構成された入出力ポートであってもよい。具体的には、入力ポート20と出力ポート22との少なくとも一方が、スイッチ装置10における他の通信制御処理と接続されるものであってもよい。すなわち、スイッチ装置10における他の通信制御処理後、入力ポート20〜入力処理部44〜出力処理部46〜出力ポート22でのパケット中継処理が実行されてもよい。また、入力ポート20〜入力処理部44〜出力処理部46〜出力ポート22でのパケット中継処理後、スイッチ装置10における他の通信制御処理が実行されてもよい。
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
10 スイッチ装置、 12 通信ノード、 22 出力ポート、 32 経路決定テーブル、 34 パケットバッファ、 36 空き領域情報保持部、 38 キュー情報保持部、 40 読み出し回数保持部、 50 空き領域管理テーブル、 52 先頭ポインタ、 54 空き領域オフセット、 56 末尾ポインタ、 70 パケット受付部、 72 方路決定部、 74 パケット書込部、 80 パケット読出し部、 82 パケット送出部、 84 セグメント解放部、 100 通信システム。

Claims (6)

  1. 固定長のセグメントを記憶領域の管理単位として、中継すべきパケットを一時的に保持するための複数のセグメントを含むメモリと、
    中継すべきパケットを外部から受け付けるパケット受付部と、
    あるセグメントにおける空き領域の開始位置を示すオフセットを参照して、前記セグメントにおける前記オフセットが示す開始位置からパケットを格納するとともにそのパケット長に応じて前記オフセットが示す開始位置を更新し、前記セグメントにおける更新後の開始位置から別のパケットを格納するパケット書込部と、
    前記開始位置から前記パケットを読み出し、前記更新後の開始位置から前記別のパケットを読み出して、それぞれのパケットを外部へ送出するパケット送出部と、
    を備えることを特徴とする通信制御装置。
  2. 前記パケット書込部は、前記オフセットにより特定されるセグメントの空き容量をパケット長が超過する場合、超過したパケットのデータを別のセグメントへ格納するとともに、前記オフセットが示す開始位置を、前記別のセグメントに残存する空き領域の開始位置を示すよう更新することを特徴とする請求項1に記載の通信制御装置。
  3. 前記複数のセグメントのそれぞれに対応づけて、各セグメントに格納された各パケットが読み出されるべき回数の合計値を保持する読み出し回数保持部と、
    セグメント解放部と、をさらに備え、
    前記パケット書込部は、前記パケット受付部において受け付けられたパケットをセグメントへ格納する際、当該セグメントに対応づけられた前記合計値を増加させ、
    前記パケット送出部は、セグメントに格納されたパケットを読み出した際、当該セグメントに対応づけられた前記合計値を減少させ、
    前記セグメント解放部は、前記合計値が0になったセグメントを新たに空き領域として設定することを特徴とする請求項1または2に記載の通信制御装置。
  4. 前記パケット書込部は、複数の出力ポートから送出されるべきパケットをセグメントへ格納する際、当該セグメントに対応づけられた前記合計値を、当該パケットが送出されるべき出力ポートの数に応じて増加させ、
    前記パケット送出部は、前記複数の出力ポートのいずれかから前記パケットを送出すべき際、前記セグメントから前記パケットを読み出すとともに、前記セグメントに対応づけられた前記合計値を逐次減少させることを特徴とする請求項3に記載の通信制御装置。
  5. 空き領域として設定されたセグメントの情報を保持する空きセグメント情報保持部と、
    前記空き領域として設定されたセグメントのうちパケットを格納すべきセグメントの情報を指し示す先頭ポインタと、新たに空き領域として設定されたセグメントの情報を格納すべき位置を指し示す末尾ポインタと、をさらに備え、
    前記パケット書込部は、前記先頭ポインタにより特定されるセグメントへパケットを格納し、
    前記セグメント解放部は、新たに空き領域として設定したセグメントの情報を前記末尾ポインタの指し示す位置へ格納し、当該セグメントが前記先頭ポインタにより特定されるものである場合はさらに、別のセグメントの情報を指し示すよう前記先頭ポインタを更新することを特徴とする請求項3または4に記載の通信制御装置。
  6. 固定長のセグメントを記憶領域の管理単位として、中継すべきパケットを一時的に保持するための複数のセグメントを含むメモリを備える通信装置を制御するプログラムであって、
    中継すべきパケットを外部から受け付けるパケット受付機能と、
    あるセグメントにおける空き領域の開始位置を示すオフセットを参照して、前記セグメントにおける前記オフセットが示す開始位置からパケットを格納するとともにそのパケット長に応じて前記オフセットが示す開始位置を更新し、前記セグメントにおける更新後の開始位置から別のパケットを格納するパケット書込機能と、
    前記開始位置から前記パケットを読み出し、前記更新後の開始位置から前記別のパケットを読み出して、それぞれのパケットを外部へ送出するパケット送出機能と、
    を前記通信装置に実現させることを特徴とする通信制御プログラム。
JP2009287646A 2009-12-18 2009-12-18 通信制御装置 Expired - Fee Related JP5342428B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009287646A JP5342428B2 (ja) 2009-12-18 2009-12-18 通信制御装置
US12/721,994 US8498304B2 (en) 2009-12-18 2010-03-11 Communication controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009287646A JP5342428B2 (ja) 2009-12-18 2009-12-18 通信制御装置

Publications (2)

Publication Number Publication Date
JP2011130249A true JP2011130249A (ja) 2011-06-30
JP5342428B2 JP5342428B2 (ja) 2013-11-13

Family

ID=44151007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009287646A Expired - Fee Related JP5342428B2 (ja) 2009-12-18 2009-12-18 通信制御装置

Country Status (2)

Country Link
US (1) US8498304B2 (ja)
JP (1) JP5342428B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141890A (ja) * 2011-01-05 2012-07-26 Fujitsu Ltd データ転送制御装置及び方法並びにデータ処理装置
JP2013135382A (ja) * 2011-12-27 2013-07-08 Nippon Telegr & Teleph Corp <Ntt> パケットバッファ装置およびパケットバッファ制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002185495A (ja) * 2000-12-13 2002-06-28 Hitachi Ltd パケットスイッチ
WO2004066571A1 (ja) * 2003-01-20 2004-08-05 Fujitsu Limited ネットワークスイッチ装置およびネットワークスイッチ方法
JP2006135379A (ja) * 2004-11-02 2006-05-25 Fujitsu Ltd パケット処理装置及びパケット処理方法
JP2009124488A (ja) * 2007-11-15 2009-06-04 Sumitomo Electric Ind Ltd データ中継処理装置及び方法
JP2009134609A (ja) * 2007-11-30 2009-06-18 Seiko Epson Corp 可変長データ格納装置、可変長データ格納方法、可変長データ読出方法及びそのプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991298A (en) * 1996-01-16 1999-11-23 Fujitsu Network Communications, Inc. Reliable and flexible multicast mechanism for ATM networks
JP4316349B2 (ja) 2003-10-27 2009-08-19 富士通株式会社 パケット転送経路制御装置および制御プログラム
JP5016880B2 (ja) * 2006-09-21 2012-09-05 富士通株式会社 優先クラスに応じたメモリ管理方法及び装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002185495A (ja) * 2000-12-13 2002-06-28 Hitachi Ltd パケットスイッチ
WO2004066571A1 (ja) * 2003-01-20 2004-08-05 Fujitsu Limited ネットワークスイッチ装置およびネットワークスイッチ方法
JP2006135379A (ja) * 2004-11-02 2006-05-25 Fujitsu Ltd パケット処理装置及びパケット処理方法
JP2009124488A (ja) * 2007-11-15 2009-06-04 Sumitomo Electric Ind Ltd データ中継処理装置及び方法
JP2009134609A (ja) * 2007-11-30 2009-06-18 Seiko Epson Corp 可変長データ格納装置、可変長データ格納方法、可変長データ読出方法及びそのプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141890A (ja) * 2011-01-05 2012-07-26 Fujitsu Ltd データ転送制御装置及び方法並びにデータ処理装置
JP2013135382A (ja) * 2011-12-27 2013-07-08 Nippon Telegr & Teleph Corp <Ntt> パケットバッファ装置およびパケットバッファ制御方法

Also Published As

Publication number Publication date
US20110149988A1 (en) 2011-06-23
US8498304B2 (en) 2013-07-30
JP5342428B2 (ja) 2013-11-13

Similar Documents

Publication Publication Date Title
JP4884402B2 (ja) 中継装置とその制御方法
JP4547339B2 (ja) 送信制御機能を備えるパケット中継装置
US20060203730A1 (en) Method and system for reducing end station latency in response to network congestion
US7751404B2 (en) Method, system, and computer program product for high performance bonding resequencing
JP5156332B2 (ja) パケット転送装置
US8514741B2 (en) Packet forwarding device
JP5025506B2 (ja) 中継装置と、ネットワークシステムと、ネットワークシステムの制御方法
US8306045B2 (en) Packet forwarding apparatus and method for discarding packets
KR20030053030A (ko) 처리 시스템, 데이터 구조 및 데이터 처리 시스템에서이용하기 위한 방법
CN113037640A (zh) 数据转发方法、数据缓存方法、装置和相关设备
CN111526095A (zh) 一种流量控制方法和装置
JP5342428B2 (ja) 通信制御装置
JP4921142B2 (ja) 通信装置
JP5673057B2 (ja) 輻輳制御プログラム、情報処理装置および輻輳制御方法
JP2020017903A (ja) 通信システム、通信制御方法、及び通信装置
US7822034B2 (en) Path controls apparatus and table updating method
US5913042A (en) Method and apparatus for managing packet memory
JP4630231B2 (ja) パケット処理システム、パケット処理方法、およびプログラム
JP4901777B2 (ja) ネットワーク中継装置およびネットワーク中継方法
JP4669442B2 (ja) パケット処理システム、パケット処理方法、およびプログラム
JP5631850B2 (ja) スイッチ装置
JP4769316B2 (ja) パケットキューイング装置およびパケットキューイング方法
EP4344155A1 (en) Packet scheduling method and apparatus
JP2005210385A (ja) 他装置とのバッファ共有方法及び装置
JP6127872B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120329

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130702

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130809

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees