JP2023139733A - スイッチ装置およびスイッチ装置の制御方法 - Google Patents
スイッチ装置およびスイッチ装置の制御方法 Download PDFInfo
- Publication number
- JP2023139733A JP2023139733A JP2022045419A JP2022045419A JP2023139733A JP 2023139733 A JP2023139733 A JP 2023139733A JP 2022045419 A JP2022045419 A JP 2022045419A JP 2022045419 A JP2022045419 A JP 2022045419A JP 2023139733 A JP2023139733 A JP 2023139733A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- information
- memory
- packet
- control unit
- 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
- 238000000034 method Methods 0.000 title claims description 8
- 238000012546 transfer Methods 0.000 claims abstract description 150
- 230000006870 function Effects 0.000 claims abstract description 10
- 230000000717 retained effect Effects 0.000 claims 2
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000003247 decreasing effect Effects 0.000 abstract 2
- 230000009471 action Effects 0.000 description 25
- 101100298837 Parengyodontium album PROK gene Proteins 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 7
- 101100166349 Homo sapiens CBY1 gene Proteins 0.000 description 6
- 102100026774 Protein chibby homolog 1 Human genes 0.000 description 6
- 101150081937 arb1 gene Proteins 0.000 description 6
- 230000010365 information processing Effects 0.000 description 6
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 5
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 5
- 108700012361 REG2 Proteins 0.000 description 5
- 101150108637 REG2 gene Proteins 0.000 description 5
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 5
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 5
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 101100191136 Arabidopsis thaliana PCMP-A2 gene Proteins 0.000 description 4
- 102100029648 Beta-arrestin-2 Human genes 0.000 description 4
- 101100109996 Homo sapiens ARRB2 gene Proteins 0.000 description 4
- 108091058543 REG3 Proteins 0.000 description 4
- 102100027336 Regenerating islet-derived protein 3-alpha Human genes 0.000 description 4
- 101100422768 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SUL2 gene Proteins 0.000 description 4
- 101100048260 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) UBX2 gene Proteins 0.000 description 4
- 101100002079 Schizosaccharomyces pombe (strain 972 / ATCC 24843) arb2 gene Proteins 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】パケットの転送経路情報を保持するキャッシュのキャッシュミスを減らすことで、パケットの中継性能の低下を抑制する。【解決手段】スイッチ装置は、パケットの転送制御機能の少なくとも一部が仮想スイッチから転送制御回路にオフロードされたスイッチ装置であって、前記転送制御回路は、メモリに保持されたパケットの転送経路情報のうちの少なくともいずれかの転送経路情報を保持するキャッシュと、受信したパケットの転送経路を、前記キャッシュに保持された転送経路情報を使用して決定する経路制御部と、受信したパケットに対応する転送経路情報が前記キャッシュに保持されていない場合、前記対応する転送経路情報を含む複数の転送経路情報を前記メモリから読み出して前記キャッシュに格納するプリフェッチ制御部と、を有する。【選択図】図1
Description
本発明は、スイッチ装置およびスイッチ装置の制御方法に関する。
ハイブリッドIP通信システムにおいて、IPパケット通信装置のローカル構成管理装置は、ローカルIPパケット転送テーブルを生成し、生成したローカルIPパケット転送テーブルをキャッシュ情報として保持する(例えば、特許文献1参照)。また、ネットワークシステムに含まれるキャッシュサーバは、自動キャッシュ更新動作またはリンク先読み動作等を行うのに適した経路を求め、求めた経路を使用して自動キャッシュ更新動作またはリンク先読み動作等を行う(例えば、特許文献2参照)。自立ネットワークにおいてパケットのルーティングを制御するルーティング制御システムは、フォワーディング情報ベース(FIB)を、RAMとデータパケットプロセッサのキャッシュとに記憶する(例えば、特許文献3参照)。
例えば、フォワーディング情報ベース(以下、FIB)の一部をキャッシュに記憶する場合、FIBを取得する時間が削減可能である。しかしながら、取得したいFIBがキャッシュに記憶されていない場合、キャッシュミスを判定した後にRAMにアクセスしてFIBが取得されるため、FIBの取得効率が低下し、パケットの中継性能が低下する。さらに、例えば、RAMへのアクセスが続くことで、FIBのアクセス要求を保持するリクエストキューが満杯になった場合、後続のパケットが破棄されるため、パケットの中継性能がさらに低下する。
1つの側面では、本発明は、パケットの転送経路情報を保持するキャッシュのキャッシュミスを減らすことで、パケットの中継性能の低下を抑制することを目的とする。
一つの観点によれば、スイッチ装置は、パケットの転送制御機能の少なくとも一部が仮想スイッチから転送制御回路にオフロードされたスイッチ装置であって、前記転送制御回路は、メモリに保持されたパケットの転送経路情報のうちの少なくともいずれかの転送経路情報を保持するキャッシュと、受信したパケットの転送経路を、前記キャッシュに保持された転送経路情報を使用して決定する経路制御部と、受信したパケットに対応する転送経路情報が前記キャッシュに保持されていない場合、前記対応する転送経路情報を含む複数の転送経路情報を前記メモリから読み出して前記キャッシュに格納するプリフェッチ制御部と、を有する。
パケットの転送経路情報を保持するキャッシュのキャッシュミスを減らすことで、パケットの中継性能の低下を抑制することができる。
以下、図面を参照して、実施形態が説明される。
図1は、一実施形態におけるスイッチ装置を含む情報処理装置の一例を示す。図1に示すスイッチ装置300は、サーバ100に搭載されるCPU(Central Processing Unit)200により実現される仮想スイッチ310および転送制御回路320を有する。
例えば、スイッチ装置300は、ネットワークスイッチである。なお、サーバ100は、情報処理装置の一例であり、CPU200は、演算処理装置の一例である。なお、他のコンピュータ装置が、サーバ100の代わりに適用されてもよく、他のプロセッサが、CPU200の代わりに適用されてもよい。
スイッチ装置300は、パケットPCKTの転送制御機能の少なくとも一部を仮想スイッチ310から転送制御回路320(すなわち、ハードウェア)にオフロードすることにより構築される。特に限定されないが、転送制御回路320は、サーバ100に搭載されるFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)等のロジックデバイスにより実現される。
CPU200は、プログラムを実行することにより、仮想スイッチ310および仮想マシン210として動作可能である。例えば、仮想スイッチ310は、パケットPCKTの仮想マシン210等への転送を制御する機能のうち、パケットPCKTの転送経路の決定に使用される転送経路情報をメモリ400に登録または更新する機能を有する。特に限定されないが、例えば、転送経路情報は、フォワーディング情報ベース(FIB)でもよい。
例えば、メモリ400は、サーバ100に搭載されるSDRAM(Synchronous Dynamic Random Access Memory)等である。例えば、転送経路情報は、パケットPCKTまたはパケットPCKTを受信する図示しないポートに対応して、メモリ400およびキャッシュ340に保持される。
転送制御回路320は、プリフェッチ制御部330、キャッシュ340および経路制御部350を有する。プリフェッチ制御部330は、受信したパケットPCKTに対応する転送経路情報を含む複数の転送経路情報をメモリ400から読み出す複数の読み出し要求を発行し、メモリ400から転送される複数の転送経路情報をキャッシュ340に格納する。
例えば、プリフェッチ制御部330は、転送制御回路320が受信したパケットPCKTに対応する転送経路情報がキャッシュ340に保持されていない場合、複数の読み出し要求をメモリ400に発行する。また、プリフェッチ制御部330は、転送制御回路320が受信したパケットPCKTに対応する転送経路情報がキャッシュ340に保持されている場合、複数の読み出し要求のメモリ400への発行を抑止する。これにより、プリフェッチ制御部330による無駄なプリフェッチを抑制することができる。
キャッシュ340は、プリフェッチ制御部330がメモリ400からプリフェッチした複数の転送経路情報および経路制御部350がメモリ400から読み出した転送経路情報を保持する。そして、キャッシュ340は、メモリ400に保持された複数の転送経路情報の少なくとも一部を保持する。
経路制御部350は、受信したパケットPCKTの転送経路をキャッシュ340に保持された転送経路情報を使用して決定する。経路制御部350は、受信したパケットPCKTに対応する転送経路情報がキャッシュ340に保持されていない場合、受信したパケットPCKTに対応する転送経路情報をメモリ400から読み出す読み出し要求をメモリ400に発行する。
例えば、受信したパケットPCKTに対応する転送経路情報が読み出し要求に応答してキャッシュ340に格納されるまで、キャッシュ340は、当該パケットPCKTに対応する転送経路情報に対してキャッシュミス状態である。経路制御部350は、当該パケットPCKTの転送経路を決定するときに、キャッシュ340がキャッシュミス状態の場合、メモリ400に読み出し要求を発行する。
この実施形態では、プリフェッチ制御部330は、受信したパケットPCKT以外のパケットPCKTに対応する転送経路情報をメモリ400からプリフェッチしてキャッシュ340に格納する。これにより、経路制御部350がパケットPCKTの転送経路を決定するときにキャッシュ340がキャッシュミス状態である頻度を低減することができる。この結果、スイッチ装置300によるパケットPCKTの中継性能の低下を抑制することができる。
図2は、図1のスイッチ装置300の動作シーケンスの一例を示す。すなわち、図2は、スイッチ装置300の制御方法の一例を示す。図2では、転送制御回路320が受信するパケットPCKT1、PCKT2の転送経路の決定に使用される転送経路情報は、互いに同じであるとする。また、パケットPCKT1、PCKT2の転送経路の決定に使用される転送経路情報は、パケットPCKT1を受信する前に仮想スイッチ310からメモリ400に登録または更新されているとする(図2(a))。
また、図2は、転送制御回路320がパケットPCKT(PCKT1、PCKT2)を受信した場合のプリフェッチ制御部330の動作を示す。プリフェッチ制御部330は、例えば、サーバ100の外部からのパケットPCKT1の受信に基づいて、パケットPCKT1に対応する転送経路情報がキャッシュ340に保持されていないことを判定する(キャッシュミス、図2(b)、(c))。
プリフェッチ制御部330は、キャッシュミスの判定に基づいて、パケットPCKT1に対応する転送経路情報と、他の転送経路情報とをメモリ400からキャッシュ340に転送するための複数のメモリアクセス要求MREQをメモリ400に発行する(図2(d))。メモリ400は、複数のメモリアクセス要求MREQに応答して複数の転送経路情報をキャッシュ340に転送する(図2(e))。メモリアクセス要求MREQは、読み出し要求の一例である。
このように、プリフェッチ制御部330は、受信したパケットPCKT1に対応する転送経路情報に加えて、他の少なくとも1つの転送経路情報をプリフェッチする。これにより、パケットPCKT1に対応する転送経路情報がキャッシュヒット状態になるだけでなく、他の少なくとも1つの転送経路情報をキャッシュヒット状態にすることができる。
なお、図2では、プリフェッチ制御部330は、複数のメモリアクセス要求MREQをメモリ400に発行している。しかしながら、メモリ400がバースト転送機能を有する場合、プリフェッチ制御部330は、バースト転送用の1つのメモリアクセス要求MREQをメモリ400に発行してもよい。
なお、図2にはプリフェッチ制御部330による転送経路情報のプリフェッチ動作を示しているが、実際には、図1の経路制御部350は、受信したパケットPCKT1の転送動作を実施する。経路制御部350は、受信したパケットPCKT1に対応する転送経路情報がキャシュ340に格納されている場合、キャッシュ340から読み出した転送経路情報に基づいてパケットPCKTの転送経路を決定する。そして、経路制御部350は、決定した転送経路にパケットPCKT1を転送する。
一方、受信したパケットPCKT1に対応する転送経路情報がキャシュ340に格納されていない場合、経路制御部350は、受信したパケットPCKT1に対応する転送経路情報をメモリ400からキャッシュ340に転送させるメモリアクセス要求をメモリ400に発行する。
この後、プリフェッチ制御部330は、例えば、サーバ100の外部からのパケットPCKT2の受信に基づいて、パケットPCKT2に対応する転送経路情報がキャッシュ340に保持されていることを検出する(キャッシュヒット、図2(f)、(g))。このため、プリフェッチ制御部330は、パケットPCKT2に対応する転送経路情報をメモリ400からキャッシュ340に転送するためのメモリアクセス要求MREQを発行しない。これにより、プリフェッチ制御部330による無駄なプリフェッチを抑制することができる。
図3は、図1のスイッチ装置300の動作シーケンスの別の例を示す。すなわち、図3は、スイッチ装置300の制御方法の別の例を示す。図3においても、転送制御回路320が受信するパケットPCKT1、PCKT2の転送経路の決定に使用される転送経路情報は、互いに同じであるとする。また、図3においても、パケットPCKT1、PCKT2の転送経路の決定に使用される転送経路情報は、パケットPCKT1を受信する前に仮想スイッチ310からメモリ400に登録または更新されているとする(図3(a))。
図3は、転送制御回路320がパケットPCKT(PCKT1、PCKT2)を受信した場合の経路制御部350の動作を示す。経路制御部350は、例えば、サーバ100の外部からパケットPCKT1を受信する(図3(b))。経路制御部350は、受信したパケットPCKT1に対応する転送経路情報がキャッシュ340に保持されていないことを検出する(キャッシュミス、図3(c))。
このため、経路制御部350は、パケットPCKT1に対応する転送経路情報をメモリ400からキャッシュ340に転送するためのメモリアクセス要求MREQをメモリ400に発行する(図3(d))。メモリ400は、メモリアクセス要求MREQに応答して、パケットPCKT1に対応する転送経路情報をキャッシュ340に転送する(図3(e))。
経路制御部350は、パケットPCKT1に対応してメモリ400からキャッシュ340に転送される転送経路情報を受信する(図3(f))。そして、経路制御部350は、受信した転送経路情報に基づいて、パケットPCKT1の転送経路を決定する。図3に示す例では、パケットPCKT1の転送経路は、仮想マシン210のいずれかを含む。このため、経路制御部350は、仮想マシン210のいずれかにパケットPCKT1を転送する(図3(g))。なお、経路制御部350は、パケットPCKT1に対応する転送経路情報がキャッシュ340に保持されていない場合、メモリアクセス要求MREQをメモリ400に発行した後、パケットPCKT1を保留またはキャンセルしてもよい。
この後、経路制御部350は、例えば、サーバ100の外部からパケットPCKT2を受信する(図3(h))。経路制御部350は、受信したパケットPCKT2に対応する転送経路情報がキャッシュ340に保持されていることを検出する(キャッシュヒット、図3(i))。
このため、経路制御部350は、パケットPCKT2に対応する転送経路情報をキャッシュ340から読み出す(図3(j))。そして、経路制御部350は、キャッシュ340から読み出した転送経路情報に基づいて、パケットPCKT2の転送経路を決定する。図3に示す例では、パケットPCKT2の転送経路は、仮想マシン210のいずれかを含むため、経路制御部350は、仮想マシン210のいずれかにパケットPCKT2を転送する(図3(k))。
以上、この実施形態では、プリフェッチ制御部330は、受信したパケットPCKTに対応する転送経路情報に加えて、他の転送経路情報をメモリ400からプリフェッチしてキャッシュ340に格納する。これにより、経路制御部350がパケットPCKTの転送経路を決定するときにキャッシュ340がキャッシュミス状態である頻度を低減することができる。
キャッシュ340のヒット率が向上するため、経路制御部350による転送経路情報の取得に掛かるレイテンシを短縮することができる。この結果、スイッチ装置300によるパケットPCKTの中継性能の低下を抑制することができる。
また、プリフェッチ制御部330は、受信したパケットPCKTに対応する転送経路情報がキャッシュ340に保持されている場合、メモリ400にメモリアクセス要求MREQを発行しない。これにより、プリフェッチ制御部330による無駄なプリフェッチを抑制することができる。
図4は、別の実施形態におけるスイッチ装置を含む情報処理装置の一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。図4に示すスイッチ装置300Aは、サーバ100Aに搭載されるCPU200Aが実行するプログラムにより実現される仮想スイッチ310Aと、ハードウェアにより実現される中継制御部320Aとを有する。
例えば、スイッチ装置300は、ネットワークスイッチである。なお、サーバ100Aは、情報処理装置の一例であり、CPU200Aは、演算処理装置の一例である。なお、他のコンピュータ装置が、サーバ100Aの代わりに適用されてもよく、他のプロセッサが、CPU200Aの代わりに適用されてもよい。
仮想スイッチ310Aは、CPU200Aが実行するプログラムにより実現される。スイッチ装置300Aは、パケットPCKTの転送制御機能の少なくとも一部を、ソフトウェアで実現される仮想スイッチ310Aからハードウェアで実現される中継制御部320Aにオフロードすることにより構築される。特に限定されないが、中継制御部320Aは、サーバ100Aに搭載されるFPGAまたはASIC等のロジックデバイスにより実現される。
特に限定されないが、例えば、スイッチ装置300Aは、分散仮想マルチレイヤスイッチのオープンソース実装であるOVS(Open vSwitch;登録商標)アクセラレーションとしてサーバ100Aに実装される。例えば、仮想スイッチ310Aは、OVS/DPDK(Data Plane Development Kit)を使用して構築されてもよい。DPDKは、高速パケット処理用ライブラリである。
CPU200Aは、プログラムを実行することにより、仮想スイッチ310A、仮想マシン210および仮想ネットワークインタフェースカードVNICとして動作可能である。以下では、仮想ネットワークインタフェースカードVNICは、単にVNICとも称される。
中継制御部320Aは、プリフェッチ制御部330A、キャッシュ340、FIB(Forwarding Information Base)制御部350Aおよび内部ポートIPTを有し、外部ポートEPTに接続される。なお、サーバ100Aは、複数の外部ポートEPTを有してもよい。中継制御部320Aの内部ポートIPTは、仮想スイッチ310AのVNICまたは仮想マシン210のVNICに接続される。中継制御部320Aは、転送制御回路の一例である。FIB制御部350Aは、経路制御部の一例である。
プリフェッチ制御部330Aは、受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されていない場合、受信したパケットPCKTに対応するFIB情報を含む複数のFIB情報をメモリ400から読み出す。プリフェッチ制御部330Aは、メモリ400から読み出された複数のFIB情報は、キャッシュ340に格納される。例えば、FIB情報は、後述するKEY情報およびACTION情報を含む。FIB情報については、図6で説明される。
FIB制御部350Aは、例えば、外部ポートEPTまたは内部ポートIPTを介して受信したパケットPCKTの転送経路をキャッシュ340に保持されたFIB情報を使用して決定する。FIB制御部350Aは、受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されていない場合、受信したパケットPCKTに対応するFIB情報をメモリ400から読み出す。FIB制御部350Aは、メモリ400から読み出したFIB情報を使用してパケットPCKTの転送経路を決定し、メモリ400から読み出したFIB情報をキャッシュ340に格納する。
図5は、図4のメモリ400およびキャッシュ340に保持されるFIB情報の一例を示す。メモリ400およびキャッシュ340は、例えば、FIB制御部350Aが受信するパケットPCKT毎にFIB情報を保持する複数の記憶領域を有する。
FIB情報は、KEY情報が格納されるKEY領域とACTION情報が格納されるACTION領域とを含む。KEY情報は、パケットPCKTに依存しない共通部分と、パケットPCKTに固有の固有部分とを含む。例えば、固有部分には、パケットプロトコルまたはパケットタイプ等の情報が格納される。共通部分には、固有部分に格納されるパケットプロトコル等の情報に対応する情報が格納される。
ACTION情報は、コードCODEおよび複数のデータ領域DT(DT1、DT2、...)を含む。例えば、コードCODEは、図11に示すマッチアクション部353Aが選択可能なACTION情報の数に対応するビット数を有する。コードCODEの各ビットは、複数のACTION情報のそれぞれに割り当てられる。各データ領域DTには、コードCODEにおいて、例えば"1"にセットされたビットに対応するACTION情報がそれぞれ格納される。特に限定されないが、複数のデータ領域DTには、コードCODEにおいて"1"にセットされたビット順にACTION情報が格納される。
これにより、コードCODEのビット値により、有効なデータ領域DTを検出することができ、有効なデータ領域DTに入っているACTION情報の仕様を判別することができる。マッチアクション部353Aが選択可能な複数のACTION情報は、パケットPCKTのヘッダに格納される転送制御情報またはパケットPCKTの転送先で使用するパケットPCKTの制御情報である。例えば、データ領域に格納されるACTION情報として、パケットPCKTの転送元アドレスの設定、パケットPCKTの転送先アドレスの設定またはパケットPCKTのドロップの指示等がある。
図6は、図4の中継制御部320Aの一例を示す。中継制御部320Aは、図4に示したプリフェッチ制御部330A、キャッシュ340およびFIB制御部350Aに加えて、パケット変換部321A、メタテーブル生成部322AおよびレジスタREG0を有する。
パケット変換部321Aは、中継制御部320Aが受信するパケットPCKTからパケットPCKTの識別に使用する論理ポート番号LPT-IDを生成し、生成した論理ポート番号LPT-IDをパケットPCKTとともにメタテーブル生成部322Aに出力する。また、パケット変換部321Aは、生成した論理ポート番号LPT-IDをプリフェッチ要求PRREQ0としてプリフェッチ制御部330Aに出力する。パケット変換部321Aの例は、図7に示される。
メタテーブル生成部322Aは、中継制御部320Aが受信するパケットPCKTから例えば、パケットヘッダに格納する情報を抜き出して、パケットPCKT毎にメタテーブルを生成する。メタテーブルには、論理ポート番号LPT-IDが含まれる。
メタテーブル生成部322Aは、プリフェッチ制御部330Aからマッチ情報PRMCHを受信した場合、受信するパケットPCKTに対応して生成したメタテーブルにマッチ情報PRMCHを格納する。また、メタテーブル生成部322Aは、FIB制御部350Aから発行済み情報PROKを受信した場合、受信するパケットPCKTに対応して生成したメタテーブルに発行済み情報PROKを格納する。
そして、メタテーブル生成部322Aは、生成したメタテーブルに含まれるメタテーブル情報MTINFを、受信したパケットPCKTとともにFIB制御部350Aに出力する。メタテーブル生成部322Aにより生成されるメタテーブルMTTBLについては、図10で説明される。
FIB制御部350Aは、キャッシュ340またはメモリ400において、受信したパケットPCKTに対応するFIB情報を保持している領域を示すアドレスを、メタテーブル情報MTINFに基づいて計算する。
FIB制御部350Aは、受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されている場合、キャッシュ340からFIB情報を読み出す。FIB制御部350Aは、受信したパケットPCKTに対応するFIB情報がメモリ400に保持されている場合、メモリ400からFIB情報を読み出す。
そして、FIB制御部350Aは、読み出したFIB情報に含まれるKEY情報と、パケットPCKTに含まれるKEY情報とが一致するか否かを判定する。FIB制御部350Aは、KEY情報が一致する場合、キャッシュ340またはメモリ400から読み出したACTION情報にしたがって、パケットヘッダを生成し、生成したパケットヘッダを含むパケットPCKTを転送先に転送する。
また、FIB制御部350Aは、書き込みアクセス要求UPDTをレジスタREG0を介して仮想スイッチ310A(CPU200A)から受信した場合、メモリ400およびキャッシュ340に保持されているFIB情報の更新処理を実施する。仮想スイッチ310Aは、FIB情報をメモリ400に書き込む場合、書き込みアクセス要求UPDTを示すデータをレジスタREG0に書き込む(REG-WR)。
図7は、図6のパケット変換部321Aの一例を示す。パケット変換部321Aは、レジスタREG1、REG2およびセレクタSEL1、SEL2を有する。レジスタREG1、REG2が保持する値は、図4の仮想スイッチ310Aにより設定される。この場合、レジスタREG1、REG2が保持する値は、図6のレジスタREG0を介して設定されてもよい。
レジスタREG1は、外部ポートEPTおよび内部ポートIPTのそれぞれに対応する物理ポートIDの生成に使用するオフセット値PORT-ID-OFSTを保持する。セレクタSEL1は、例えば、パケットPCKTを受信した外部ポートEPTまたは内部ポートIPTの識別番号にオフセット値PORT-ID-OFSTを加えることで物理ポートIDを生成し、生成した物理ポートIDをセレクタSEL2に出力する。すなわち、セレクタSEL1は、パケットPCKTを受信した外部ポートEPTまたは内部ポートIPTに対応する物理ポートID(番号で示される)を選択する。
レジスタREG2は、物理ポートID毎に値PORT-MAPx(xは0からn+1のn個の整数のいずれか)を保持する。例えば、値PORT-MAPxのxは、物理ポートIDの番号に対応する。
セレクタSEL2は、物理ポートIDの番号に対応する値PORT-MAPxを論理ポート番号LPT-IDとして図6のパケット変換部321Aに出力する。また、セレクタSEL2は、論理ポート番号LPT-IDをプリフェッチ要求PRREQ0としてプリフェッチ制御部330Aに出力する。なお、論理ポート番号LPT-IDおよびプリフェッチ要求PRREQ0は、中継制御部320Aが受信したパケットPCKTのそれぞれに対応して割り当てられる。
論理ポート番号LPT-IDは、中継制御部320Aが受信したパケットPCKTを識別するパケット識別情報の一例である。パケット変換部321Aは、パケット識別情報を生成する識別情報生成部の一例である。
図8は、図6のプリフェッチ制御部330Aの一例を示す。プリフェッチ制御部330Aは、プリフェッチ判定部331A、アドレス計算部332A、発行履歴キュー333AおよびレジスタREG3を有する。
プリフェッチ判定部331Aは、図7のパケット変換部321Aから発行されるプリフェッチ要求PRREQ0(すなわち、論理ポート番号LPT-ID)に基づいて発行履歴キュー333Aを参照する。そして、プリフェッチ判定部331Aは、メモリ400からFIB情報をプリフェッチするか否かを判定する。発行履歴キュー333Aは、アドレス計算部332Aが過去に発行したプリフェッチ要求PRREQ1の所定数を保持する。
プリフェッチ判定部331Aは、受信したプリフェッチ要求PRREQ0に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されていない場合、プリフェッチ要求PRREQ0をアドレス計算部332Aに出力する。また、プリフェッチ判定部331Aは、プリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されておらず、発行履歴キュー333Aが満杯の場合、消去指示ERSを発行履歴キュー333Aに出力する。発行履歴キュー333Aは、消去指示ERSに基づいて、最古のプリフェッチ要求PRREQ1を消去する。
プリフェッチ判定部331Aは、受信したプリフェッチ要求PRREQ0に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されている場合、プリフェッチ要求PRREQ0のアドレス計算部332Aへの出力を抑止する。そして、プリフェッチ判定部331Aは、マッチ情報PRMCHを出力する。プリフェッチ判定部331Aは、受信したパケットPCKTに対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されている場合、プリフェッチ要求PRREQ1のメモリ400への発行を抑止する発行抑止部の一例である。
マッチ情報PRMCHは、中継制御部320Aが受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されていること(すなわち、キャッシュヒット状態)を示す保持情報の一例である。例えば、論理値1のマッチ情報PRMCHは、プリフェッチ要求PRREQ0に対応するデータがキャッシュヒット状態であることを示す。論理値0のマッチ情報PRMCHは、プリフェッチ要求PRREQ0に対応するデータがキャッシュミス状態であることを示す。
マッチ情報PRMCHは、メタテーブルMTTBLに格納される。例えば、論理値1のマッチ情報PRMCHは、受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されていることを示す(キャッシュヒット状態)。例えば、論理値0のマッチ情報PRMCHは、受信したパケットPCKTに対応するFIB情報がキャッシュ340に保持されていないことを示す(キャッシュミス状態)。
このように、プリフェッチ制御部330Aは、発行履歴キュー333Aに保持されているプリフェッチ要求PRREQ1に基づいて、受信したパケットPCKTに対応するFIB情報がキャッシュヒット状態かキャッシュミス状態かを判定することができる。プリフェッチ制御部330Aは、受信したパケットPCKTに対応するメタテーブルMTTBLに、キャッシュヒット状態かキャッシュミス状態かを示すマッチ情報PRMCHを格納する。これにより、FIB制御部350Aは、メタテーブルMTTBLに保持されたメタテーブル情報MTINFを参照することで、キャッシュ340のキャッシュヒットまたはキャッシュミスを判定することができる。
アドレス計算部332Aは、プリフェッチ判定部331Aからのプリフェッチ要求PRREQ0(すなわち、論理ポート番号LPT-ID)をインデックスとしてベースアドレスBASE-ADRSに加算する加算器ADDを有する。そして、アドレス計算部332Aは、加算により得たアドレスを含むアクセス長LENmax分のメモリ400の記憶領域にアクセスするプリフェッチ要求PRREQ1を発行する。
プリフェッチ要求PRREQ1は、アクセス長LENmaxに対応して複数回発行されてもよく、メモリ400がバースト機能を有する場合、アクセス長LENmaxに対応するバースト長が設定されてもよい。アドレス計算部332Aは、プリフェッチ要求PRREQ1を生成する要求生成部の一例である。
なお、アドレス計算部332Aがプリフェッチ要求PRREQ1を出力する場合、FIB制御部350Aは、メモリ400にプリフェッチ要求を発行したことを示す発行済み情報PROKをメタテーブル生成部322Aに出力する。例えば、論理値1の発行済み情報PROKは、メモリ400にプリフェッチ要求を発行したことを示し、プリフェッチ要求に対応するデータが、この後にキャッシュヒット状態になることを示す。論理値0の発行済み情報PROKは、メモリ400にプリフェッチ要求を発行していないことを示し、プリフェッチ要求に対応するデータがキャッシュミス状態であることを示す。
発行履歴キュー333Aは、プリフェッチ要求PRREQ1を保持する複数のエントリを有する。発行履歴キュー333Aは、プリフェッチ要求PRREQ1を保持するプリフェッチ要求保持部の一例である。上述したように、発行履歴キュー333Aは、プリフェッチ判定部331Aから消去指示ERSを受けた場合、最古のプリフェッチ要求PRREQ1を消去する。発行履歴キュー333Aの更新動作の例は、図9で説明される。
図9は、図8のプリフェッチ制御部330Aの発行履歴キュー333Aの更新動作の一例を示す。図9では、説明を分かりやすくするため、プリフェッチ要求PRREQ0(LPT-ID)およびプリフェッチ要求PRREQ1は、8桁の数字で示される。また、図9では、発行履歴キュー333Aが4個のエントリを有し、エントリ番号が小さいほど、保持した時期が古いとする。特に限定されないが、発行履歴キュー333Aは、例えば、16個または32個のエントリを有してもよい。
(例1)は、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されておらず、エントリに空きがある場合の動作を示す。(例2)は、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されており、エントリが満杯の場合の動作を示す。(例3)は、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されておらず、エントリが満杯の場合の動作を示す。
(例1)では、アドレス計算部332Aは、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1を発行する。FIB制御部350Aは、プリフェッチ要求PRREQ1が発行されたことを示す発行済み情報PROKをメタテーブル生成部322Aに発行する。
プリフェッチ制御部330Aは、発行履歴キュー333Aの空いているエントリ3にプリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1(=66667777)を格納することで、新規登録する。
(例2)では、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1(=22223333)が発行履歴キュー333Aのエントリ1に保持されている。この場合、アドレス計算部332Aは、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1の発行を抑止する。プリフェッチ判定部331Aは、マッチ情報PRMCHを発行する。
プリフェッチ制御部330Aは、プリフェッチ要求PRREQ1(=44445555、66667777)を、エントリ2、3からエントリ1、2にシフトする。そして、発行履歴キュー333Aは、空いたエントリ3にプリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1(=22223333)を格納することで、発行履歴を更新する。
(例3)では、アドレス計算部332Aは、プリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1を発行する。FIB制御部350Aは、プリフェッチ要求PRREQ1が発行されたことを示す発行済み情報PROKをメタテーブル生成部322Aに発行する。
プリフェッチ制御部330Aは、発行履歴キュー333Aのエントリに空きがないため、エントリ0に保持している最古プリフェッチ要求PRREQ1(=01234567)を発行履歴キュー333Aから追い出す。そして、プリフェッチ制御部330Aは、エントリ1、2、3に保持されているプリフェッチ要求PRREQ1(=44445555、66667777、22223333)をエントリ0、1、2にシフトする。そして、発行履歴キュー333Aは、空いたエントリ0にプリフェッチ要求PRREQ0(LPT-ID)に対応するプリフェッチ要求PRREQ1(=88889999)を格納することで、新規登録する。
図10は、図6のメタテーブル生成部322Aにより生成されるメタテーブルMTTBLの一例を示す。メタテーブルMTTBLは、メタテーブル生成部322AによりパケットPCKT毎に生成される。各メタテーブルMTTBLは、パケットプロトコルに依存しない共通部分と、パケットプロトコル毎に異なる固有部分とを含むm+1個のエントリを有する。メタテーブルMTTBLのサイズは、パケットPCKTに依存せずに固定である。
例えば、共通部分は、論理ポート番号LPT-IDが格納されるエントリと、発行済み情報PROKおよびマッチ情報PRMCHが格納されるエントリを含む。例えば、固有部分は、パケットプロトコル毎に情報が格納される複数のエントリを有する。
例えば、メタテーブル生成部322Aは、仮想スイッチ310Aが受信してパケット変換部321Aにより変換されたパケットPCKTのパケットプロトコルに応じた情報をパケットPCKTから抽出する。ここで、メタテーブル生成部322Aが生成するメタテーブルMTTBLは、共通部分および固有部分の少なくともいずれかに、例えば、パケットプロトコルに対応するKEY情報を含む。
そして、メタテーブル生成部322Aは、抽出した情報をメタテーブル情報MTINFとしてメタテーブルMTTBLに格納することで、メタテーブルMTTBLを生成する。この際、メタテーブル生成部322Aは、パケットプロトコルに固有な情報を、固有部分の予め決められた位置のエントリに格納する。そして、メタテーブル生成部322Aは、生成したメタテーブルMTTBLをFIB制御部350Aに出力する。なお、FIB制御部350Aには、メタテーブルMTTBLとともにパケットPCKTが転送される。
図11は、図6のFIB制御部350Aの一例を示す。FIB制御部350Aは、レジスタREG3、アドレス計算部351A、リクエストキュー352A、セレクタSEL3、アービタARB0、ARB1、ARB2およびマッチアクション部353Aを有する。
レジスタREG3は、キャッシュ340またはメモリ400にアクセスするときのアクセス長LENと、ベースアドレスBASE-ADRSとを保持する。例えば、アクセス長LENは、メタテーブル生成部322Aから受信するメタテーブル情報MTINFに基づいて、パケットPCKT毎に設定される。
アドレス計算部351Aは、アクセス長LENがパケットPCKT毎に固有であることを除き、図8に示したアドレス計算部332Aと同一または同様の構成を有する。アドレス計算部351Aの加算器ADDは、パケットPCKTに対応してメタテーブル生成部322Aから受信するメタテーブル情報MTINFに含まれる論理ポート番号LPT-IDをインデックスとしてベースアドレスBASE-ADRSに加算する。
アドレス計算部351Aは、キャッシュ340またはメモリ400からFIB情報を読み出すために、加算により得たアドレスを含むアクセス長LEN分のメモリアクセス要求REQ0を発行する。メモリアクセス要求REQ0は、メタテーブル情報MTINFを含む。なお、メタテーブル生成部322Aから受信するメタテーブル情報MTINFに発行済み情報PROKまたはマッチ情報PRMCHが含まれる場合、メモリアクセス要求REQ0は、発行済み情報PROKまたはマッチ情報PRMCHを含む。
リクエストキュー352Aは、アドレス計算部351Aが発行するメモリアクセス要求REQ0を保持する複数のエントリを有する。メモリアクセス要求REQ0は、メタテーブル情報MTINFを含む。リクエストキュー352Aは、エントリに保持したメモリアクセス要求REQ0を、保持した順にメモリアクセス要求REQ1としてセレクタSEL3に出力する。リクエストキュー352Aは、メモリアクセス要求REQ0に対応するメモリアクセス要求MREQに応答してメモリ400から出力されるFIB情報に基づいて、保持している当該メモリアクセス要求REQ0を消去する。
セレクタSEL3は、メモリアクセス要求REQ1に発行済み情報PROK=1またはマッチ情報PRMCH=1が含まれる場合、メモリアクセス要求REQ1をキャッシュ読み出しアクセス要求CREQRとしてキャッシュ340に出力する。セレクタSEL3は、メモリアクセス要求REQ1に発行済み情報PROK=0およびマッチ情報PRMCH=0が含まれる場合、メモリアクセス要求REQ1をメモリ読み出しアクセス要求MREQ0RとしてアービタARB0に出力する。
このように、FIB制御部350Aは、メモリアクセス要求REQ1に含まれる発行済み情報PROKまたはマッチ情報PRMCHに基づいて、キャッシュ340がキャッシュヒット状態であるか否かを判定することができる。そして、FIB制御部350Aは、キャッシュ340がキャッシュヒット状態である場合、キャッシュ340に対するキャッシュ読み出しアクセス要求CREQRを発行する。FIB制御部350Aは、キャッシュ340がキャッシュミス状態である場合、メモリ400に対するメモリ読み出しアクセス要求MREQ0Rを発行する。メモリ読み出しアクセス要求MREQ0Rは、メモリ400に対する読み出し要求の一例である。
アービタARB0は、メモリ読み出しアクセス要求MREQ0R、プリフェッチ要求PRREQ1およびFIB情報の更新データの書き込みアクセス要求UPDTを調停する。アービタARB0は、調停により選択したメモリ読み出しアクセス要求MREQ0R、プリフェッチ要求PRREQ1または書き込みアクセス要求UPDTに含まれる情報に基づいて、メモリアクセス要求MREQを生成し、メモリ400に出力する。メモリアクセス要求MREQは、メモリ400においてFIB情報を保持する記憶領域を示すアドレスを含む。メモリアクセス要求MREQは、メモリ400に対する読み出し要求の一例である。また、アービタARB0は、調停によりプリフェッチ要求PRREQ1を選択した場合、発行済み情報PROK=1を図6のメタテーブル生成部322Aに出力する。
メモリ読み出しアクセス要求MREQ0Rまたはプリフェッチ要求PRREQ1に基づいてアービタARB0が生成するメモリアクセス要求MREQは、メモリ400からFIB情報を読み出す読み出し要求の一例である。書き込みアクセス要求UPDTに基づいてアービタARB0が生成するメモリアクセス要求MREQは、メモリ400にFIB情報を書き込む書き込み要求の一例である。
アービタARB1は、書き込みアクセス要求UPDTに含まれるFIB情報およびメモリ400から読み出されるFIB情報を調停する。アービタARB1は、調停により選択したFIB情報をキャッシュ340に書き込むキャッシュ書き込みアクセス要求CREQWを生成し、キャッシュ340に出力する。キャッシュ書き込みアクセス要求CREQWは、書き込みアクセス要求UPDTに含まれるFIB情報またはメモリ400から読み出されるFIB情報をキャッシュ340に書き込む書き込み要求の一例である。
アービタARB0、ARB1は、FIB情報を含む書き込みアクセス要求UPDTを仮想スイッチ310Aから受信した場合、FIB情報をメモリ400に格納するとともにキャッシュ340に格納する格納制御部の一例である。メモリ400に格納するFIB情報(更新データまたは新規登録データ)をキャッシュ340にも格納することで、対応するFIB情報を予めヒット状態にすることができる。これにより、FIB制御部350AによるFIB情報の取得に掛かるレイテンシを短縮することができる。
アービタARB2は、メモリ400から読み出されるFIB情報およびキャッシュ340から読み出されるFIB情報を調停する。アービタARB2は、調停により選択したFIB情報のいずれかをマッチアクション部353Aに出力する。
マッチアクション部353Aは、FIB制御部350Aが受信したパケットPCKTに対応するメタテーブルMTTBLに含まれるKEY情報と、キャッシュ340またはメモリ400から読み出されたFIB情報に含まれるKEY情報とを比較する。ここで、KEY情報の比較は、例えば、メタテーブルMTTBLに含まれるパケットプロトコルに対応する所定のKEY情報について行われる。
マッチアクション部353Aは、KEY情報の比較により、パケットPCKTに含まれるFIB情報が正しいか否かを判定する。
マッチアクション部353Aは、KEY情報の比較により、パケットPCKTに含まれるFIB情報が正しいか否かを判定する。
マッチアクション部353Aは、KEY情報同士が一致する場合、パケットPCKTが有効であると判定し、FIB情報に含まれるACTION情報にしたがって、パケットヘッダの生成動作等を実施する。そして、マッチアクション部353Aは、生成したパケットヘッダを含むパケットPCKTを転送先に転送する。なお、マッチアクション部353Aは、KEY情報同士が一致しない場合、パケットPCKTの転送を抑止する。
図12は、図6の中継制御部320Aの動作の一例を示す。すなわち、図12は、スイッチ装置300Aの制御方法の一例を示す。図12に示す動作は、図9の(例1)に対応する動作であり、プリフェッチ要求PRREQ0(LPT-ID)=66667777が発行履歴キュー333Aに保持されておらず、エントリに空きがある場合の動作を示す。
プリフェッチ制御部330Aは、発行履歴キュー333Aに保持された過去のプリフェッチ要求PRREQ1を参照して、プリフェッチ要求PRREQ0=66667777のキャッシュミスを判定する。プリフェッチ制御部330Aは、発行履歴キュー333Aのエントリに空きがあるため、プリフェッチ要求PRREQ0=66667777をエントリに格納する。そして、プリフェッチ制御部330Aは、FIB制御部350Aを介して発行済み情報PROKをメタテーブル生成部322Aに格納する。
発行済み情報PROKは、プリフェッチ要求PRREQ0=66667777に対応するパケットPCKTに基づいてメタテーブル生成部322Aが生成したメタテーブルMTTBLに格納される。メタテーブル生成部322Aは、生成したメタテーブルMTTBL(発行済み情報PROKを含む)をFIB制御部350Aに出力する。FIB制御部350Aは、発行済み情報PROKを含むメタテーブルMTTBLに基づいて、キャッシュ読み出しアクセス要求CREQRをキャッシュ340に出力する。
アービタARB0は、プリフェッチ要求PRREQ1を調停により選択し、メモリアクセス要求MREQとしてメモリ400に出力する。メモリ400は、メモリアクセス要求MREQの応答RSPとしてFIB情報を出力する。アービタARB1は、メモリ400から読み出されるFIB情報を調停により選択し、選択したFIB情報をキャッシュ340に書き込む。これにより、中継制御部320Aが受信したパケットPCKTに対応するFIB情報がキャッシュ340に書き込まれる。
なお、実際には、プリフェッチ制御部330Aは、複数のプリフェッチ要求PRREQ1(メモリアクセス要求MREQ)をメモリ400に出力し、メモリ400からの複数の応答RSPに対応する複数のFIB情報がキャッシュ340に格納される。また、複数のプリフェッチ要求PRREQ1に対応する複数のプリフェッチ要求PRREQ0(LPT-ID)が発行履歴キュー333Aに格納される。
ここで、中継制御部320AがパケットPCKTを受信してからキャッシュ読み出しアクセス要求CREQRを出力する時間は、中継制御部320AがパケットPCKTを受信してからキャッシュ書き込みアクセス要求CREQWを出力する時間より長い。換言すれば、受信したパケットに対応してメモリ400から読み出されるFIB情報は、キャッシュ読み出しアクセス要求CREQRがキャッシュ340に出力される前にキャッシュ340に書き込まれる。そして、キャッシュ340は、キャッシュ読み出しアクセス要求CREQRに対応するFIB情報に含まれるKEY情報およびACTION情報を出力する。
図13は、図6の中継制御部320Aの動作の別の例を示す。すなわち、図13は、スイッチ装置300Aの制御方法の一例を示す。図13に示す動作は、図9の(例2)に対応する動作であり、プリフェッチ要求PRREQ0(LPT-ID)=22223333が発行履歴キュー333Aに保持され、エントリが満杯である場合の動作を示す。
プリフェッチ制御部330Aは、発行履歴キュー333Aに保持された過去のプリフェッチ要求PRREQ1を参照して、プリフェッチ要求PRREQ0=22223333のキャッシュヒット状態を判定する。プリフェッチ制御部330Aは、プリフェッチ要求PRREQ1=22223333を発行履歴キュー333Aのエントリ1からエントリ3に移動する。そして、プリフェッチ制御部330Aは、FIB制御部350Aを介してマッチ情報PRMCHをメタテーブル生成部322Aに格納する。
マッチ情報PRMCHは、プリフェッチ要求PRREQ0=22223333に対応するパケットPCKTに基づいてメタテーブル生成部322Aが生成したメタテーブルMTTBLに格納される。メタテーブル生成部322Aは、生成したメタテーブルMTTBL(マッチ情報PRMCHを含む)をFIB制御部350Aに出力する。FIB制御部350Aは、マッチ情報PRMCHを含むメタテーブルMTTBLに基づいて、キャッシュ読み出しアクセス要求CREQRをキャッシュ340に出力する。
そして、キャッシュ340は、キャッシュ読み出しアクセス要求CREQRに対応するFIB情報に含まれるKEY情報およびACTION情報を出力する。なお、中継制御部320Aが受信したパケットPCKTに対応するFIB情報は、キャッシュ340に既に保持されているため(キャッシュヒット状態)、メモリアクセス要求MREQは、メモリ400に出力されない。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、プリフェッチ制御部330Aは、受信したパケットPCKTに対応するFIB情報に加えて、他のFIB情報をメモリ400からプリフェッチしてキャッシュ340に格納する。これにより、FIB制御部350AがパケットPCKTの転送経路を決定するときにキャッシュ340がキャッシュミス状態である頻度を低減することができる。キャッシュ340のヒット率を向上できるため、FIB制御部350AによるFIB情報の取得に掛かるレイテンシを短縮することができ、スイッチ装置300AによるパケットPCKTの中継性能の低下を抑制することができる。
さらに、この実施形態では、プリフェッチ制御部330Aは、受信したプリフェッチ要求PRREQ0に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されている場合、メモリ400へのプリフェッチ要求PRREQ1の発行を抑止する。これにより、アービタARB0による無駄な調停動作を抑制することができ、メモリ400およびキャッシュ340が無駄にアクセスされることを抑制することができる。この結果、FIB制御部350AによるFIB情報の取得効率を向上することができ、FIBの取得に掛かるレイテンシを短縮することができる。
プリフェッチ制御部330Aは、発行履歴キュー333Aに保持されているプリフェッチ要求PRREQ1に基づいて、受信したパケットPCKTに対応するFIB情報がキャッシュヒット状態かキャッシュミス状態かを判定することができる。
プリフェッチ制御部330Aは、受信したプリフェッチ要求PRREQ0に対応するプリフェッチ要求PRREQ1が発行履歴キュー333Aに保持されている場合、メタテーブルMTTBLにマッチ情報PRMCH=1を格納する。FIB制御部350Aは、プリフェッチ制御部330Aが出力したプリフェッチ要求PRREQ1をアービタARB0により選択した場合、メタテーブルMTTBLに発行済み情報PROK=1を格納する。
これにより、FIB制御部350Aは、メタテーブルMTTBLに保持されたメタテーブル情報MTINFを参照することで、キャッシュ340のキャッシュヒットまたはキャッシュミスを判定することができる。そして、FIB制御部350Aは、判定結果に基づいて、キャッシュ340に対するキャッシュ読み出しアクセス要求CREQRまたはメモリ400に対するメモリ読み出しアクセス要求MREQ0Rを発行することができる。すなわち、メモリ400からのFIB情報の読み出しを、プリフェッチ制御部330AとFIB制御部350Aとの両方により実施することができる。
メモリ400に格納するFIB情報(更新データまたは新規登録データ)をキャッシュ340にも格納することで、対応するFIB情報を予めヒット状態にすることができる。これにより、FIB制御部350AによるFIB情報の取得に掛かるレイテンシをさらに短縮することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
100、100A サーバ
200、200A CPU
210 仮想マシン
300、300A スイッチ装置
310、310A 仮想スイッチ
320 転送制御回路
321A パケット変換部
322A メタテーブル生成部
320A 中継制御部
330、330A プリフェッチ制御部
331A プリフェッチ判定部
332A アドレス計算部
333A 発行履歴キュー
340 キャッシュ
350 経路制御部
351A アドレス計算部
352A リクエストキュー
353A マッチアクション部
350A FIB制御部
400 メモリ
ADD 加算器
ARB0、ARB1、ARB2 アービタ
CREQR キャッシュ読み出しアクセス要求
CREQW キャッシュ書き込みアクセス要求
ERS 消去指示
LEN アクセス長
LPT-ID 論理ポート番号
MREQ メモリアクセス要求
MREQ0R メモリ読み出しアクセス要求
MTINF メタテーブル情報
PCKT パケット
PRMCH マッチ情報
PROK 発行済み情報
PRREQ0、PRREQ1 プリフェッチ要求
REG0、REG1、REG2、REG3 レジスタ
REQ0、REQ1 メモリアクセス要求
SEL1、SEL2、SEL3 セレクタ
UPDT 書き込みアクセス要求
200、200A CPU
210 仮想マシン
300、300A スイッチ装置
310、310A 仮想スイッチ
320 転送制御回路
321A パケット変換部
322A メタテーブル生成部
320A 中継制御部
330、330A プリフェッチ制御部
331A プリフェッチ判定部
332A アドレス計算部
333A 発行履歴キュー
340 キャッシュ
350 経路制御部
351A アドレス計算部
352A リクエストキュー
353A マッチアクション部
350A FIB制御部
400 メモリ
ADD 加算器
ARB0、ARB1、ARB2 アービタ
CREQR キャッシュ読み出しアクセス要求
CREQW キャッシュ書き込みアクセス要求
ERS 消去指示
LEN アクセス長
LPT-ID 論理ポート番号
MREQ メモリアクセス要求
MREQ0R メモリ読み出しアクセス要求
MTINF メタテーブル情報
PCKT パケット
PRMCH マッチ情報
PROK 発行済み情報
PRREQ0、PRREQ1 プリフェッチ要求
REG0、REG1、REG2、REG3 レジスタ
REQ0、REQ1 メモリアクセス要求
SEL1、SEL2、SEL3 セレクタ
UPDT 書き込みアクセス要求
Claims (7)
- パケットの転送制御機能の少なくとも一部が仮想スイッチから転送制御回路にオフロードされたスイッチ装置であって、
前記転送制御回路は、
メモリに保持されたパケットの転送経路情報のうちの少なくともいずれかの転送経路情報を保持するキャッシュと、
受信したパケットの転送経路を、前記キャッシュに保持された転送経路情報を使用して決定する経路制御部と、
受信したパケットに対応する転送経路情報が前記キャッシュに保持されていない場合、前記対応する転送経路情報を含む複数の転送経路情報を前記メモリから読み出して前記キャッシュに格納するプリフェッチ制御部と、
を有するスイッチ装置。 - 前記プリフェッチ制御部は、
前記メモリから前記複数の転送経路情報を読み出すプリフェッチ要求を生成して前記メモリに発行する要求生成部と、
前記要求生成部が生成したプリフェッチ要求を保持するプリフェッチ要求保持部と、
前記受信したパケットに対応する転送経路情報に対応する読み出し要求が前記プリフェッチ要求保持部に保持されている場合、対応する読み出し要求の前記メモリへの発行を抑止する発行抑止部と、
を有する請求項1に記載のスイッチ装置。 - 前記転送制御回路は、
受信したパケットを識別するパケット識別情報を生成する識別情報生成部と、
受信したパケットに含まれる情報のうち前記経路制御部で使用する情報と、前記パケット識別情報とを含むメタテーブルをパケット毎に生成するメタテーブル生成部と、を有し、
前記プリフェッチ制御部は、前記プリフェッチ要求保持部に保持された読み出し要求に対応するメタテーブルに、対応する転送経路情報が前記キャッシュに保持されていることを示す保持情報を格納する
請求項2に記載のスイッチ装置。 - 前記経路制御部は、
受信したパケットに対応するメタテーブルに含まれる前記パケット識別情報に基づいて、受信したパケットの転送経路情報が保持された前記キャッシュの記憶領域を求め、
受信したパケットに対応するメタテーブルに前記保持情報が格納されている場合、求めた前記キャッシュの記憶領域から転送経路情報を読み出す読み出し要求を前記キャッシュに発行し、
受信したパケットに対応するメタテーブルに前記保持情報が格納されていない場合、受信したパケットに対応する転送経路情報を前記メモリから読み出す読み出し要求を前記メモリに発行し、前記メモリから読み出された転送経路情報を前記キャッシュに格納する
請求項3に記載のスイッチ装置。 - 前記プリフェッチ制御部は、前記メモリに読み出し要求を発行した場合、前記メモリに読み出し要求を発行したことを示す発行済み情報を前記メタテーブルに格納し、
前記経路制御部は、
受信したパケットに対応するメタテーブルに前記発行済み情報が格納されている場合、前記求めたキャッシュの記憶領域から転送経路情報を読み出す読み出し要求を前記キャッシュに発行する
請求項4に記載のスイッチ装置。 - 前記経路制御部は、
前記メモリに保持された転送経路情報の更新データを前記仮想スイッチから受信した場合、受信した更新データを前記メモリに格納するとともに前記キャッシュに格納する格納制御部を有する請求項1ないし請求項5のいずれか1項に記載のスイッチ装置。 - パケットの転送制御機能の少なくとも一部が仮想スイッチから転送制御回路にオフロードされたスイッチ装置の制御方法であって、
前記転送制御回路が、
受信したパケットの転送経路を、メモリに保持されたパケットの転送経路情報のうちの少なくともいずれかの転送経路情報を保持するキャッシュに保持された転送経路情報を使用して決定し、
受信したパケットに対応する転送経路情報が前記キャッシュに保持されていない場合、前記対応する転送経路情報を含む複数の転送経路情報を前記メモリから読み出して前記キャッシュに格納する
スイッチ装置の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022045419A JP2023139733A (ja) | 2022-03-22 | 2022-03-22 | スイッチ装置およびスイッチ装置の制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022045419A JP2023139733A (ja) | 2022-03-22 | 2022-03-22 | スイッチ装置およびスイッチ装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023139733A true JP2023139733A (ja) | 2023-10-04 |
Family
ID=88204817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022045419A Pending JP2023139733A (ja) | 2022-03-22 | 2022-03-22 | スイッチ装置およびスイッチ装置の制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023139733A (ja) |
-
2022
- 2022-03-22 JP JP2022045419A patent/JP2023139733A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9218290B2 (en) | Data caching in a network communications processor architecture | |
US9569366B2 (en) | System and method to provide non-coherent access to a coherent memory system | |
JP3935880B2 (ja) | ネットワーク・プロセッサおよびコンピュータ・システム用ハイブリッド・サーチ・メモリ | |
US9183145B2 (en) | Data caching in a network communications processor architecture | |
JP6676027B2 (ja) | ネットワークプロセッサにおけるマルチコア相互接続 | |
JP2018133086A (ja) | ハイブリッドメモリーモジュール及びその動作方法 | |
US6728839B1 (en) | Attribute based memory pre-fetching technique | |
JP2009026141A (ja) | キャッシュ方法及びキャッシュ装置 | |
JP2002278834A (ja) | キャッシュメモリ装置およびそれを含むデータ処理装置 | |
JP2009098934A (ja) | プロセッサ及びキャッシュメモリ | |
JP2000242545A (ja) | データ処理システムにおいてメモリ・アクセス要求を処理するための装置および方法 | |
US20110222540A1 (en) | Packet assembly module for multi-core, multi-thread network processors | |
KR20030024895A (ko) | 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
US6973547B2 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
EP3885918B1 (en) | System, apparatus and method for performing a remote atomic operation via an interface | |
EP0669579B1 (en) | Coherence index generation for use by an input/output adapter | |
US9086976B1 (en) | Method and apparatus for associating requests and responses with identification information | |
JP5265827B2 (ja) | ハイブリッドコヒーレンスプロトコル | |
US20090006777A1 (en) | Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor | |
US8539135B2 (en) | Route lookup method for reducing overall connection latencies in SAS expanders | |
US6820170B1 (en) | Context based cache indexing | |
JP4469911B2 (ja) | リクエスト生成装置、リクエスト処理システム及び制御方法 | |
JP2023139733A (ja) | スイッチ装置およびスイッチ装置の制御方法 | |
CN117194283A (zh) | 基于risc-v指令集的向量读写指令的处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20240906 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20240910 |