(57)【特許請求の範囲】
【請求項１】
宛先アドレスを有するフレームが出力される複数の出力ポートと、
前記宛先アドレスと前記出力ポートとの対応付けを記憶するテーブルに前記宛先アドレスが登録されていると判定された学習済フレームと、前記テーブルに前記宛先アドレスが登録されていないと判定された未学習フレームと、前記未学習フレームがコピーされたコピーフレームと、を格納するバッファと、
前記バッファから前記格納順にフレームを読み出し、所定の前記出力ポートに転送する転送部と、
前記学習済フレームのネットワークへの出力履歴として、前記学習済フレームの宛先アドレスに関する情報を記憶する記憶部と、
前記フレームが未学習フレームのとき、前記出力履歴に、前記未学習フレームの宛先アドレスと合致する情報が含まれている場合には、前記転送部による前記転送前に、前記未学習フレームを廃棄する制御部と、
を備えるフレーム処理装置。
【請求項２】
前記制御部は、前記学習済フレームの宛先アドレスに合致する情報が前記出力履歴に含まれていない場合に、該学習済フレームの宛先アドレスに関する情報を前記出力履歴に登録し、該登録から所定時間経過後に、該学習済フレームの宛先アドレスに関する情報を前記出力履歴から削除する、
請求項１に記載のフレーム処理装置。
【請求項３】
前記記憶部は、ＣＡＭ（Content Addressable Memory）である、
請求項１又は２に記載のフレーム処理装置。
【請求項４】
宛先アドレスを有するフレームが出力される複数の出力ポートと、
前記宛先アドレスと前記出力ポートとの対応付けを記憶するテーブルに前記宛先アドレスが登録されていると判定された学習済フレームと、前記テーブルに前記宛先アドレスが登録されていないと判定された未学習フレームと、前記未学習フレームがコピーされたコピーフレームと、を格納するバッファと、を備えるフレーム処理装置が、
前記バッファから前記格納順にフレームを読み出し、所定の前記出力ポートに転送し、
前記学習済フレームのネットワークへの出力履歴として、前記学習済フレームの宛先アドレスに関する情報を記憶部に記憶し、
前記フレームが未学習フレームのとき、前記出力履歴に、前記未学習フレームの宛先アドレスと合致する情報が含まれている場合には、前記転送前に、前記未学習フレームを廃棄する、
フレーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレーム処理装置及びフレーム処理方法に関する。
【背景技術】
【０００２】
イーサネット（登録商標）では、各装置はＭＡＣ（Media Access Control）アドレスによって識別される。ＭＡＣアドレスは、各装置に唯一のアドレスである。イーサネットにおいて、レイヤ２の転送処理を行うフレーム処理装置は、フレームに含まれるＭＡＣアドレスに基づいて、フレームの転送処理を行う。イーサネットにおいて、レイヤ２の転送処理を行うフレーム処理装置には、例えば、レイヤ２スイッチがある。
【０００３】
レイヤ２スイッチは、フレームを受信すると、該フレームの送信元ＭＡＣアドレスと該フレームの受信ポートとを対応付けて、アドレスを学習する。学習されたＭＡＣアドレスは、学習された際の受信ポートと対応付けられて、ＭＡＣアドレステーブルに登録される。フレームを転送する場合には、レイヤ２スイッチは、フレームの宛先ＭＡＣアドレスでＭＡＣアドレステーブルを検索し、宛先ＭＡＣアドレスの登録があれば、ＭＡＣアドレステーブルで対応付けられているポートから、該フレームを出力する。
【０００４】
以降、宛先ＭＡＣアドレスが学習済みである、すなわち、宛先ＭＡＣアドレスがＭＡＣアドレステーブルに登録されているフレームを、学習済フレームと称する。また、宛先ＭＡＣアドレスが未学習である、すなわち、宛先ＭＡＣアドレスがＭＡＣアドレスに登録されていないフレームを、未学習フレームと称する。
【０００５】
イーサネットのフレーム転送処理において、未学習フレームは、フラッディング処理される。フラッディング処理は、フレームをコピーして、受信ポート以外の全てのポートから出力する処理である。未学習フレームは、出力ポートが判明していないので、受信ポート以外の全てのポートから出力されることによって、宛先ＭＡＣアドレスの装置に該フレームが届くようになっている。
【０００６】
一方、学習済フレームは、出力ポートが判明しているので、フレームはコピーされず、出力ポートから出力される。
【０００７】
図１は、レイヤ２スイッチのフレーム転送処理の一例を示す図である。レイヤ２スイッチＰ１は、学習判定部Ｐ１１、フレームコピー処理部Ｐ１２、バッファＰ１３、ユニキャスト転送処理部Ｐ１４、ＭＡＣアドレステーブルＰ５１を備える。
【０００８】
学習判定部Ｐ１１は、フレームが入力されると、該フレームの宛先ＭＡＣアドレスでＭＡＣアドレステーブルＰ５１を検索し、該フレームが学習済フレームであるか未学習フレームであるかを判定する。入力フレームが学習済フレームである場合には、学習判定部Ｐ１１は、バッファＰ１３に入力フレームを出力する。入力フレームが未学習フレームである場合には、学習判定部Ｐ１１は、フレームコピー処理部Ｐ１２に入力フレームを出力する。
【０００９】
フレームコピー処理部Ｐ１２は、学習判定部Ｐ１１からフレームが入力されると、ポートの数分の該フレームのコピーフレームを生成し、コピーフレームをバッファＰ１３に出力する。なお、フレームコピー処理部Ｐ１２によってバッファＰ１３に出力されるフレームにはオリジナルフレームも含まれるが、便宜上、一括してコピーフレームと称する。
【００１０】
バッファＰ１３は、ＦＩＦＯ（First In First Out）キューである。ユニキャスト転送処理部Ｐ１４は、バッファＰ１３からフレームを読み出し、該フレームの出力ポートにフレームを出力する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１１−１２２３０３号公報
【特許文献２】特開２００６−２７９８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来のフレーム転送処理では、未学習フレームに対して学習が行われた場合には、フレームの入力と出力とで順序逆転が発生する、という問題がある。この順序逆転の問題は、先に転送された未学習フレームが、学習済フレームにより追い越された形になって現われるが、フレームの転送速度の高速化に伴い、その発生頻度が増加する。上記が発生するのは、具体的には、未学習フレームが入力されている状態で学習が行われた場合である。つまり、未学習フレームのＭＡＣアドレスが、学習によってＭＡＣアドレステーブルに登録されるため、同じＭＡＣアドレスを有しているフレームであるにも関わらず、登録前までは未学習フレームとして処理され、登録後は学習フレームとして処理されるようになる。このため、上記のようなフレームの順序逆転が発生する。
【００１３】
図２は、入力と出力とでフレームの順序逆転が発生する場合の一例を示す図である。図２では、入力順番が１〜４番のフレームが示されている。これらのフレームは、同一宛先ＭＡＣアドレス及び送信元ＭＡＣアドレスを有する、同一フローのフレームであるとする。
【００１４】
入力順番が１番と２番のフレームがレイヤ２スイッチに入力される際には、宛先ＭＡＣアドレスは未学習であり、入力順番が３番のフレームの入力時に、宛先ＭＡＣアドレスが学習されたとする。すなわち、入力順番が１番と２番のフレームは未学習フレームである。入力順番が３番以降のフレームは学習済フレームである。未学習フレームから学習済フレームへと変わる境界を、ＭＡＣ学習の境界面と称する。
【００１５】
入力順番が１番と２番のフレームは、未学習フレームのため、フレームコピー処理部Ｐ１２に出力される。フレームコピー処理部Ｐ１２は、入力順番が１番と２番のフレームをポートの数に応じてコピーし、バッファに出力する。図１では、未学習フレームがフラッディングによって出力されるポートは、ポート＃１〜４であるとする。フレームコピー処理部Ｐ１２は、入力順番が１番と２番のフレームについて、コピーを３つずつ生成し、オリジナルのフレームとコピーフレームを含む計４つずつのフレームをバッファＰ１３に出力する。
【００１６】
入力順番が３番と４番のフレームは、学習済みフレームであるため、フレームコピー処理部Ｐ１２を経由せずに、バッファＰ１３に出力される。フレームの入力間隔が短い場合には、入力順番が１番と２番の未学習フレームのコピーフレームの生成処理を、入力順番が３番と４番の学習済フレームの転送処理が追い越してしまい、入力順番が３番以降の学習済フレームが先にバッファＰ１３に格納される事象が発生する可能性がある。
【００１７】
図３は、図２におけるフレームの入力及び出力の順序の一例を示す図である。入力順番が１番及び２番のフレームは、未学習フレームのため、コピーが生成され、ポート＃１〜４を出力ポートとする４つの未学習フレームとなる。
【００１８】
図３に示される例では、入力順番が１番の未学習フレームのコピーがすべてバッファＰ１３に格納される前に、入力順番が３番と４番の学習済フレームがバッファＰ１３に格納される。そのため、図３では、ポート＃３を出力ポートとするフレームの出力順が、入力順番が３番のフレーム、１番のフレーム、４番のフレーム、２番のフレームとなっており、ポート＃３から出力されるフレームの入力と出力との順序が異なっている。
【００１９】
図４は、フレームの転送速度が低速の場合のフレームの入力及び出力の順序の一例を示す図である。図４では、図２の入力順番が１〜４番のフレームについて示されている。
【００２０】
フレームの転送速度が低速であることは、フレームの入力間隔が長いことを示す。フレームの転送速度が低速の場合には、フレーム入力間隔が長いため、次のフレームが入力されるまでの間に、１つの未学習フレームのフラッディング処理を完了することができる。そのため、図４に示される例では、入力順番が３番のフレームが入力されるまでの間に、入力順番が２番の未学習フレームのフラッディング処理が完了する。入力順番が２番の未学習フレームのコピーフレームがすべてバッファＰ１３に格納された後に、入力順番が３番のフレームが入力されるため、入力と出力とでフレームの順序逆転が発生していない。
【００２１】
したがって、フレームの転送速度が低速の場合には、ＭＡＣ学習の境界面付近で、フレームの入力順と出力順との逆転が発生する可能性は低い。
【００２２】
図５は、出力ポートの数が少ない場合のフレームの入力及び出力の順序の一例を示す図である。図５では、図２の入力順番が１〜４番のフレームについて示されている。
【００２３】
出力ポートの数が少ない場合には、フラッディング処理においてフレームをコピーする数が少ないことが示される。したがって、出力ポートの数が少ない場合には、フラッディング処理にかかる時間が短くなるため、次のフレームが入力されるまでの間に、１つの未学習フレームのフラッディング処理を完了することができる。そのため、図５に示される例では、入力順番が３番のフレームが入力されるまでに、入力順番が２番の未学習フレームのフラッディング処理が完了する。入力順番が２番の未学習フレームのコピーフレームがすべてバッファＰ１３に格納された後に、入力順番が３番のフレームが入力されるため、入力と出力とでフレームの順序逆転が発生していない。
【００２４】
したがって、出力ポート数が少ない場合には、ＭＡＣ学習の境界面付近で、フレームの入力順と出力順との逆転が発生する可能性は低い。
【００２５】
例えば、レイヤ２より上位レイヤのプロトコルであるＩＰ（Internet Protocol）では
、パケットの順序を修正する機能が備えられている。しかしながら、レイヤが上位になるほどソフトウェアによる処理になるため、処理に時間がかかるようになる。今後、ネットワークのデータ量が増えるとともに転送速度の向上が見込まれるため、上位レイヤでの対応では転送速度に追いつかなくなる可能性が高い。したがって、データ量の増大やフレーム転送の高速化に対応するためには、レイヤ２のレベルで、フレームの入力と出力とで順序逆転が発生しないように処理が行われることが望ましい。
【００２６】
しかしながら、フレーム転送速度が向上したり、データ量の増大に伴いレイヤ２スイッチのポート数が増えたりすると、フレームの入力と出力とで順序逆転が発生する可能性が高くなる。
【００２７】
本発明の一態様は、フレームの入力と出力とでの順序逆転の発生を抑制可能なフレーム処理装置及びフレーム処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２８】
本発明の態様の一つは、宛先アドレスを有するフレームが出力される複数の出力ポートと、バッファと、転送部と、記憶部と、制御部とを備えるパケット処理装置である。バッファは、宛先アドレスと出力ポートとの対応付けを記憶するテーブルに宛先アドレスが登録されていると判定された学習済フレームと、テーブルに宛先アドレスが登録されていないと判定された未学習フレームと、未学習フレームがコピーされたコピーフレームと、を格納する。転送部は、バッファから格納順にフレームを読み出し、所定の出力ポートに転送する。記憶部は、学習済フレームのネットワークへの出力履歴として、学習済フレームの宛先アドレスに関する情報を記憶する。制御部は、フレームが未学習フレームのとき、出力履歴に、未学習フレームの宛先アドレスと合致する情報が含まれている場合には、転送部による転送前に、該未学習フレームを廃棄する。
【発明の効果】
【００２９】
開示のパケット処理装置及びパケット処理方法によれば、フレームの入力と出力とでの順序逆転の発生を抑制することができる。
【図面の簡単な説明】
【００３０】
【図１】レイヤ２スイッチのフレーム転送処理の一例を示す図である。
【図２】入力と出力とでフレームの順序逆転が発生する場合の一例を示す図である。
【図３】図２におけるフレームの入力及び出力の順序の一例を示す図である。
【図４】フレームの転送速度が低速の場合のフレームの入力及び出力の順序の一例を示す図である。
【図５】出力ポートの数が少ない場合のフレームの入力及び出力の順序の一例を示す図である。
【図６】比較例におけるフレームの入力及び出力の順序の一例を示す図である。
【図７】第１実施形態に係るレイヤ２スイッチのフレーム転送処理の一例を示す図である。
【図８】第１実施形態におけるフレームの入力及び出力の順序の一例を示す図である。
【図９】フレーム処理装置の構成の一例を示す図である。
【図１０】ＩＦカードのハードウェア構成の一例を示す図である。
【図１１】ＩＦカードの機能構成の一例を示す図である。
【図１２】ユニキャスト転送処理部の構成の一例を示す図である。
【図１３】フレーム情報管理部による学習済フレーム通過情報の管理処理の一例を示す図である。
【図１４】フレーム情報管理部の学習済フレームの入力時の処理のフローチャートの一例である。
【図１５】フレーム情報管理部の学習済フレーム通過情報の管理処理のフローチャートの一例である。
【図１６】廃棄判定部の未学習フレームの入力時の処理のフローチャートの一例である。
【発明を実施するための形態】
【００３１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００３２】
＜比較例＞
図６は、比較例におけるフレームの入力及び出力の順序の一例を示す図である。図６では、図２の入力順番が１〜４番のフレームについて示されている。ＭＡＣ学習の境界面は、入力順番が２番のフレームと３番のフレームとの間である。
【００３３】
比較例では、フレームの入力と出力の順序を変えないために、レイヤ２スイッチは、未学習フレームのフラッディング処理が完了するまで、次に入力された学習済フレームの転送を遅延させる。すなわち、入力順番が１番と２番の未学習フレームとコピーフレームとのすべてが出力されるまで、入力順番が３番以降のフレームの出力が待機させられる。
【００３４】
図６の場合には、フレームの入力と出力とで順序逆転は発生しないが、入力順番が３番以降のフレームに遅延が発生し、フレームの転送速度に影響が及ぼされる。また、遅延は、フレームのコピーの数が多くなるほど、すなわち、出力ポート数が多くなるほど長くなり、学習済フレームを待機させるためのメモリのサイズも大きくなる。
【００３５】
また、図６に示される例では、入力順番が３番のフレームが入力された時点で宛先ＭＡＣアドレスが学習されているにもかかわらず、他の出力ポートに不要なフレームを転送してしまうことになる。図６に示される例の場合には、入力順番が１番でポート＃４に出力されるフレーム、入力順番が２番でポート＃１、２、４に出力されるフレームが転送不要なフレームである。
【００３６】
転送不要な出力ポートにフレームを転送することによって、該出力ポートの帯域を無駄に消費してしまうことになり、結果として、ネットワーク全体の帯域が劣化してしまうことになる。
【００３７】
＜第１実施形態＞
図７は、第１実施形態に係るレイヤ２スイッチのフレーム転送処理の一例を示す図である。第１実施形態に係るレイヤ２スイッチは、学習判定部１１、フレームコピー処理部１２、バッファ１３、ユニキャスト転送処理部１４に加え、学習済フレーム通過情報１５を備える。学習済フレーム通過情報１５は、ユニキャスト転送処理部１４を通過した学習済フレームの宛先ＭＡＣアドレスを、学習済フレームのネットワークへの出力処理の履歴として、保持する。
【００３８】
第１実施形態では、ユニキャスト転送処理部１４は、未学習フレーム又は該未学習フレームのコピーフレームが入力されると、学習済フレーム通過情報１５を該入力フレームの宛先ＭＡＣアドレスで検索する。学習済フレーム通過情報１５に該入力フレームの宛先ＭＡＣアドレスがない場合には、該入力フレームの宛先ＭＡＣアドレスはまだ学習されていないことが示される。ユニキャスト転送処理部１４は、学習済フレーム通過情報１５に未学習フレーム又は該未学習フレームのコピーフレームの宛先ＭＡＣアドレスがない場合には、該未学習フレーム又は該コピーフレームを通常通りに転送する。
【００３９】
未学習フレーム又は該未学習フレームのコピーフレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に含まれている場合には、同じ宛先ＭＡＣアドレスの学習済フレームがユニキャスト転送処理部１４をすでに通過していることが示される。すなわち、入力と出力とでフレームの順序逆転が発生していることが示される。そのため、ユニキャスト転送処理部１４は、未学習フレーム又は該未学習フレームのコピーフレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に含まれている場合には、該未学習フレーム又は該コピーフレームを廃棄する。
【００４０】
図８は、第１実施形態におけるフレームの入力及び出力の順序の一例を示す図である。図８に示される例では、入力順番が１〜４のフレームは同じ宛先ＭＡＣアドレスを有するものとする。また、入力順番が１〜４番のフレームのうち、ＭＡＣ学習の境界面は、入力順番が２番目のフレームと３番目のフレームとの間であるとする。また、出力ポートは、出力ポート＃１〜＃４の４つであるとする。
【００４１】
未学習フレームである入力順番が１番のフレームは、コピーされ、最終的にポート１〜４のそれぞれを宛先とする４つのフレームになる。以降、フレームコピー処理部１２から出力される未学習フレーム及び該未学習フレームのコピーフレームを区別することなく、総じて、未学習フレーム、と称する。図８に示される例では、入力順番が１番の未学習フレームすべてがバッファ１３に格納される前に、入力順番が３番と４番の学習済フレームが該未学習フレームの一部を追い越し、バッファ１３に格納される。
【００４２】
そのため、入力順番が１番で宛先ポートがポート２であるフレームの次に、入力順番が３番で宛先ポートがポート３である学習済フレームが出力される。入力順番が３番の学習済フレームの通過時に、ユニキャスト転送処理部１４は、該フレームの宛先ＭＡＣアドレスを学習済フレーム通過情報１５に記録する。
【００４３】
入力順番が１番で宛先ポートがポート＃３である未学習フレームは、入力順番が３番の学習済フレームの次にユニキャスト転送処理部１４に入力される。入力順番が１番で宛先ポートがポート＃３である未学習フレームの宛先ＭＡＣアドレスは、学習済フレーム通過情報１５にすでに登録されている。そのため、入力順番が１番で宛先ポートがポート＃３である未学習フレームは、ユニキャスト転送処理部１４によって廃棄される。以降、同様にして、入力順番が１番で宛先ポートがポート＃４の未学習フレーム、入力順番が２番の全ての未学習フレームは、未学習フレームで学習済フレーム通過情報１５に宛先ＭＡＣアドレスが登録されているので、ユニキャスト転送処理部１４によって廃棄される。
【００４４】
したがって、図８に示される例では、宛先ＭＡＣアドレスへの出力ポートであるポート３から出力されるフレームは、入力順番が３番と４番のフレームであって、入力と出力とでフレームの順序の逆転は発生していない。また、入力順番が３番と４番のフレームは、遅延を与えられていないため、高速に転送される。
【００４５】
なお、図８に示される例では、宛先の装置に、入力順番が１番と２番とのフレームは届かず、パケット損失として扱われることとなる。ただし、損失されたフレームは、誤り符号訂正や、再送等によって、宛先の装置において補てんされる。
【００４６】
＜装置構成＞
図９は、フレーム処理装置１００の構成の一例を示す図である。フレーム処理装置１００は、例えば、レイヤ２スイッチ、レイヤ３スイッチ等の装置である。ただし、これに限られず、フレーム処理装置１００は、レイヤ２スイッチ、レイヤ３スイッチ等に含まれるインタフェースカードであってもよい。第１実施形態では、フレーム処理装置１００は、シャーシ型のレイヤ２スイッチであるとして説明する。フレーム処理装置１００は、複数のＩＦカード１と、各ＩＦカード１間でパケットを中継するＳＷカード２と、パケット処理装置１００の各カードの制御を行う制御カード３とを含む。フレームコピー処理部１２、バッファ１３、ユニキャスト転送処理部１４は、ＩＦカード１に備えられる機能である。
【００４７】
図１０は、ＩＦカード１のハードウェア構成の一例を示す図である。ＩＦカード１は、ＰＨＹ／ＭＡＣ（PHYsical layer/MAC layer）回路１０１、メモリ１０２、フレーム処理部１０３、複数のポート１０５、ＣＡＭ（Content Addressable Memory）１０６を備える。複数のポート１０５は、ＰＨＹ／ＭＡＣ回路１０１に接続されている。ＰＨＹ／ＭＡＣ回路１０１と、メモリ１０２と、フレーム処理部１０３と、ＣＡＭ  １０６とは、バス１０７によって接続されている。
【００４８】
ＰＨＹ／ＭＡＣ回路１０１は、各ポート１０５から入力される受信フレームの物理レイ
ヤの終端処理とＭＡＣレイヤの終端処理とを行う。メモリ１０２は、例えば、ＳＲＡＭ(Static Random Access Memory)やＤＲＡＭ(Dynamic Random Access Memory)等の揮発性の
メモリと、ＰＲＯＭ(Programmable Read Only Memory)等の不揮発性のメモリと、が含ま
れる。メモリ１０２には、各種プログラムやデータが記憶されている。
【００４９】
フレーム処理部１０３は、例えば、ＮＰＵ（Network Processing Unit）等の通信に係
るデータの処理を行うプロセッサ、又は、ＦＰＧＡ（Field-Programmable Gate Array）
等の回路である。フレーム処理部１０３は、ＰＨＹ／ＭＡＣ回路１０１によって符号化されたフレーム、ＳＷカード２から転送されてきたフレームを処理する。
【００５０】
ＣＡＭ  １０６は、学習済フレーム通過情報１５を保持するメモリとして用いられる。なお、メモリ１０２、及び、ＣＡＭ  １０６は、１枚のＩＦカード１に内蔵されていることに限定されず、ＩＦカード１に外付けされているものを、フレーム処理部１０３が用いてもよい。
【００５１】
ＩＦカード１に含まれる、ＰＨＹ／ＭＡＣ回路１０１、メモリ１０２、フレーム処理部１０３、ＣＡＭ  １０６のそれぞれは、個別のデバイスまたはチップであってもよい。また、ＩＦカード１は、これら回路及びデバイスを有する１つ又は複数のＬＳＩ（Large Scale Integration）であってもよい。
【００５２】
また、ＩＦカード１のハードウェア構成は、図１０に示されるものに限られず、適宜、追加、削除、置換が行われてもよい。なお、第１実施形態では、シャーシ型のレイヤ２スイッチを想定して説明がなされるが、ピザボックス型のレイヤ２スイッチであってもよい。
【００５３】
図１１は、ＩＦカード１の機能構成の一例を示す図である。ＩＦカード１は、入力側ＩＦカード１Ａと、出力側ＩＦカード１Ｂとに分かれる。入力側ＩＦカード１Ａと出力側ＩＦカード１Ｂとは、機能構成における区別であって、両者が物理的に同一のＩＦカード１であってもよいし、物理的に異なるＩＦカード１であってもよい。
【００５４】
入力側ＩＦカード１Ａは、ネットワークからフレームを受信するポートを有するＩＦカードである。出力側ＩＦカード１Ｂは、ネットワークにフレームを出力するポートを有するＩＦカードである。
【００５５】
入力側ＩＦカード１Ａは、ＭＡＣアドレステーブル１６と出力ポート判定部１７とを備える。ＭＡＣアドレステーブル１６は、ＭＡＣアドレスと、該ＭＡＣアドレスを保持する装置が接続されているポートとの対応付けを保持するテーブルである。ＭＡＣアドレステーブル１６は、メモリ１０２内に保持される。ＭＡＣアドレステーブル１６は、「テーブル」の一例である。
【００５６】
出力ポート判定部１７は、入力フレームの出力ポートを判定する。出力ポート判定部１７は、宛先ＭＡＣアドレスでＭＡＣアドレステーブル１６を検索する。入力フレームの宛先ＭＡＣアドレスがＭＡＣアドレステーブル１６に登録されている場合には、出力ポート判定部１７は、ＭＡＣアドレステーブル１６において宛先ＭＡＣアドレスに対応付けられているポートを該入力フレームの出力ポートに判定する。出力ポート判定部１７は、出力ポートの識別情報を含む内部ヘッダＨＤ１を入力フレームに付与して、ＳＷカード２に出力する。入力フレームの宛先ＭＡＣアドレスがＭＡＣアドレステーブル１６に登録されていない場合には、出力ポート判定部１７は、内部ヘッダＨＤ１の出力ポートの識別情報を格納するフィールドを空のままにして入力フレームに付与する。
【００５７】
内部ヘッダＨＤ１には、学習済フレームであるか未学習フレームであるかを示す情報も格納される。学習済フレームであるか未学習フレームであるかを示す情報は、例えば、フラグとして表される。例えば、内部ヘッダＨＤ１内のフラグが１である場合には、フレームは学習済フレームであることが示される。例えば、内部ヘッダＨＤ１内のフラグが０である場合には、フレームが未学習フレームであることが示される。
【００５８】
したがって、出力ポート判定部１７は、内部ヘッダＨＤ１に、出力ポートの識別情報に加えて、学習済フレーム又は未学習フレームであることを示す情報を格納する。なお、出力ポート判定部１７は、ＭＡＣアドレステーブル１６に入力フレームの宛先ＭＡＣアドレスが登録されている場合には、該入力フレームの内部ヘッダＨＤ１に学習済フレームであることを示す情報を格納する。ＭＡＣアドレステーブル１６に入力フレームの宛先ＭＡＣアドレスが登録されていない場合には、出力ポート判定部１７は、該入力フレームの内部ヘッダＨＤ１に未学習フレームであることを示す情報を格納する。出力ポート判定部１７は、内部ヘッダＨＤ１を付与したフレームを、ＳＷカード２に出力する。出力ポート判定部１７は、フレーム処理部１０３によって達成される機能構成の一つである。
【００５９】
ＳＷカード２は、入力側ＩＦカード１Ａから入力されたフレームの内部ヘッダＨＤ１内の出力ポートの識別情報に従って、該出力ポートを有するＩＦカード１へフレームを転送する。
【００６０】
出力側ＩＦカード１Ｂは、学習判定部１１と、フレームコピー処理部１２と、バッファ１３と、ユニキャスト転送処理部１４と、学習済フレーム通過情報１５と、を含む。学習判定部１１、フレームコピー処理部１２、ユニキャスト転送処理部１４は、フレーム処理部１０３によって達成される機能構成である。
【００６１】
学習判定部１１は、出力側ＩＦカード１Ｂに入力されるフレームが学習済フレーム又は未学習フレームのいずれであるかを判定する。学習判定部１１は、入力側ＩＦカード１Ａによって付与されたフレームの内部ヘッダＨＤ１内の学習済フレーム又は未学習フレームであることを示す情報に基づいて、判定を行う。フレームが学習済フレームである場合には、学習判定部１１は、バッファ１３にフレームを出力する。フレームが未学習フレームである場合には、学習判定部１１は、フレームコピー処理部１２にフレームを出力する。
【００６２】
フレームコピー処理部１２は、学習判定部１１から未学習フレームが入力されると、未学習フレームを出力側ＩＦカード１Ｂが有するポートの数に応じてコピーする。例えば、入力側ＩＦカード１Ａと出力側ＩＦカード１Ｂとが物理的に異なるＩＦカード１である場合には、出力側ＩＦカード１Ｂには入力フレームの受信ポートは含まれていない。この場合には、フレームコピー処理部１２は、オリジナルの未学習フレームを含めて、未学習フレームの数が出力側ＩＦカード１Ｂに含まれるポートの数になるようにコピーフレームを生成する。
【００６３】
例えば、入力側ＩＦカード１Ａと出力側ＩＦカード１Ｂとが物理的に同じＩＦカード１である場合には、出力側ＩＦカード１Ｂに入力フレームの受信ポートが含まれている。この場合には、フレームコピー処理部１２は、オリジナルの未学習フレームを含めて、未学習フレームの数が、出力側ＩＦカード１Ｂに含まれるポートの数から１減じた値になるようにコピーフレームを生成する。
【００６４】
フレームコピー処理部１２は、オリジナルの未学習フレーム及びコピーフレームのそれぞれの内部ヘッダＨＤ１に、出力側ＩＦカード１Ｂが有する各ポートの識別情報を格納してバッファ１３に出力する。フレームコピー処理部１２が出力するフレームの内部ヘッダＨＤ１には、出力ポートの識別情報と、未学習フレームであることを示す情報とが含まれ
ることとなる。
【００６５】
バッファ１３は、ＦＩＦＯキューであり、バッファ１３への格納順でフレームを出力する。バッファ１３は、メモリ１０２の一部である。バッファ１３は「バッファ」の一例である。
【００６６】
ユニキャスト転送処理部１４は、所定のタイミングでバッファ１３からフレームを読み出し、該フレームに付与された内部ヘッダＨＤ１によって示される出力ポートに該フレームを出力する。ユニキャスト転送処理部１４の詳細は、後述される。
【００６７】
学習済フレーム通過情報１５は、ＣＡＭ  １０６に格納される。学習済フレーム通過情報１５は、ユニキャスト転送処理部１４を通過した学習済フレームの宛先アドレス等の情報を所定時間保持する。学習済フレーム通過情報１５の詳細は、後述される。学習済フレーム通過情報１５は、「記憶部」の一例である。
【００６８】
図１２は、ユニキャスト転送処理部１４の構成の一例を示す図である。ユニキャスト転送処理部１４は、フレーム判定部１４１、フレーム情報管理部１４２、廃棄判定部１４３、フレーム転送部１４４を含む。
【００６９】
フレーム判定部１４１は、バッファ１３から、バッファ１３への格納順でフレームを読み出し、読み出したフレームが学習済フレーム又は未学習フレームのいずれであるかを判定する。この判定は、フレームの内部ヘッダＨＤ１内に含まれる学習済フレーム又は未学習フレームのいずれであるかを示す情報に基づいて行われる。
【００７０】
フレーム判定部１４１は、フレームが学習済フレームである場合には、該フレームをフレーム情報管理部１４２に出力する。フレームが未学習フレームである場合には、フレーム判定部１４１は、該フレームを廃棄判定部１４３に出力する。
【００７１】
フレーム情報管理部１４２は、フレーム判定部１４１から学習済フレームが入力されると、例えば、該学習済フレームの宛先ＭＡＣアドレスで学習済フレーム通過情報１５を検索する。入力された学習済フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されていない場合には、フレーム情報管理部１４２は、該学習済フレームの宛先ＭＡＣアドレスを学習済フレーム通過情報１５に登録し、該学習済フレームをフレーム転送部１４４に出力する。
【００７２】
入力された学習済フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されている場合には、フレーム情報管理部１４２は、該学習済フレームをフレーム転送部１４４に出力する。フレーム情報管理部１４２による学習済フレーム通過情報１５の管理の詳細については、後述される。
【００７３】
廃棄判定部１４３は、フレーム判定部１４１から未学習フレームが入力されると、該未学習フレームの宛先ＭＡＣアドレスで学習済フレーム通過情報１５を検索する。入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されていない場合には、該未学習フレームと同じ宛先ＭＡＣアドレスを有する学習済フレームがユニキャスト転送処理部１４をまだ通過していないことが示される。すなわち、入力された未学習フレームと同じ宛先ＭＡＣアドレスを有するフレーム間で、入力と出力とで順序逆転は発生していないことが示される。したがって、この場合には、廃棄判定部１４３は、入力された未学習フレームをフレーム転送部１４４に出力する。
【００７４】
入力された未学習フレームの宛先アドレスが学習済フレーム通過情報１５に登録されて
いる場合には、該未学習フレームと同じ宛先ＭＡＣアドレスを有する学習済フレームがユニキャスト転送処理部１４を通過済みであることが示される。この場合には、同じ宛先アドレスを有するフレーム間で、フレーム処理装置１００への入力順と出力順との不整合が発生していることが示される。また、すでに未学習フレームの宛先ＭＡＣアドレスは学習されているので、該未学習フレームは、転送不要なポートに出力される可能性が高い。したがって、この場合には、廃棄判定部１４３は、入力された未学習フレームを廃棄する。廃棄判定部１４３は、「制御部」の一例である。
【００７５】
フレーム転送部１４４は、フレーム情報管理部１４２から入力される学習済フレーム、又は、廃棄判定部１４３から入力される未学習フレームの内部ヘッダＨＤ１を取り除いて、該内部ヘッダＨＤ１によって示される出力ポートに出力する。フレーム転送部１４４は、「転送部」の一例である。
【００７６】
図１３は、フレーム情報管理部１４２による学習済フレーム通過情報１５の管理処理の一例を示す図である。学習済フレーム通過情報１５は、ＣＡＭ  １０６に格納されている。ＣＡＭ  １０６は、学習済フレーム通過情報１５として、ユニキャスト転送処理部１４を通過した学習済フレームの宛先ＭＡＣアドレスを、エントリとして保持する。
【００７７】
ＣＡＭ  １０６のエントリは、所定時間経過すると削除される。ユニキャスト転送処理部１４を通過した学習フレームの宛先ＭＡＣアドレスがＣＡＭ  １０６に保持される期間は、例えば、該当する宛先ＭＡＣアドレスのコピーフレームである未学習フレームがすべて転送されるまで、である。より具体的には、フレーム情報管理部１４２は、経過時間管理メモリ１４２Ｍと自走カウンタ１４２Ｃとを備えており、経過時間管理メモリ１４２ＭでＣＡＭ  １０６内の学習済フレーム通過情報１５としての宛先ＭＡＣアドレスの保持期間を管理する。
【００７８】
経過時間管理メモリ１４２Ｍの各エントリは、ＣＡＭ  １０６の各エントリに対応付けられており、ＣＡＭ  １０６の対応するエントリが登録されてからの経過時間を保持する。自走カウンタ１４２Ｃは、所定の周期で、カウント値に１を加算するカウンタである。自走カウンタ１４２Ｃのカウント値は、経過時間管理メモリ１４２Ｍのエントリのポインタとしての役割を果たす。
【００７９】
具体的には、例えば、自走カウンタ１４２Ｃのカウント値が１である場合には、経過時間管理メモリ１４２Ｍの先頭のエントリが指し示される。自走カウンタ１４２Ｃのカウント値が２である場合には、経過時間管理メモリ１４２Ｍの２番目のエントリが指し示される。自走カウンタ１４２Ｃの値が、経過時間管理メモリ１４２Ｍの最後のエントリを示す場合に、自走カウンタ１４２Ｃの次の値は、経過時間管理メモリ１４２Ｍの先頭のエントリを示すこととする。すなわち、自走カウンタ１４２Ｃは、経過時間管理メモリ１４２Ｍのエントリを巡回する。第１実施形態では、経過時間管理メモリ１４２Ｍのエントリに格納されるＣＡＭ  １０６の対応するエントリが登録されてからの経過時間を、自走カウンタ１４２Ｃの該エントリの巡回回数によって管理する。
【００８０】
経過時間管理メモリ１４２Ｍの各エントリには、ＣＡＭ  １０６の対応するエントリに宛先ＭＡＣアドレスが登録されるまでの間は、０が保持される。経過時間管理メモリ１４２Ｍの各エントリには、ＣＡＭ  １０６の対応するエントリに宛先ＭＡＣアドレスが登録されことを契機に、自走カウンタ１４２Ｃの巡回回数のカウントが開始され、該カウントの値が格納される。
【００８１】
経過時間管理メモリ１４２Ｍのエントリに格納される値、すなわち、自走カウンタ１４２Ｃの巡回回数のカウントの値には、閾値が設定されている。経過時間管理メモリ１４２
Ｍのメモリに格納される値が該閾値以上になると、経過時間管理メモリ１４２Ｍの該当のエントリに格納される値は０にリセットされる。また、経過時間管理メモリ１４２Ｍの該当のエントリに対応するＣＡＭ  １０６のエントリに登録される宛先ＭＡＣアドレスは削除される。
【００８２】
図１３に示される例では、学習済フレーム通過情報１５には、宛先アドレス０のエントリに“１００”、宛先アドレス１のエントリに“１”が格納されている。なお、学習済フレーム通過情報１５のエントリに実際に格納されるのはＭＡＣアドレスであるが、図１３では、便宜上、ＭＡＣアドレスの代わりに簡易な数字が格納されている。学習済フレーム通過情報１５の宛先アドレス２のエントリは、未登録である。
【００８３】
図１３において、経過時間管理メモリ１４２Ｍの経過時間０、１、２、...のエントリ
は、それぞれ、学習済フレーム通過情報１５の宛先アドレス０、１、２、...のエントリ
に対応している。
【００８４】
例えば、フレーム情報管理部１４２に宛先ＭＡＣアドレス“１２５”の学習済フレームが入力されると、該宛先ＭＡＣアドレスは学習済フレーム通過情報１５に未登録であるため、フレーム情報管理部１４２は、宛先ＭＡＣアドレス“１２５”を学習済フレーム通過情報１５に登録する。図１３では、宛先ＭＡＣアドレス“１２５”は、学習済フレーム通過情報１５の宛先アドレス２のエントリに格納される。
【００８５】
フレーム情報管理部１４２は、宛先ＭＡＣアドレス“１２５”を学習済フレーム通過情報１５に登録するとともに、経過時間管理メモリ１４２Ｍの対応するエントリである経過時間２のエントリに、“１”をセットする。以降、自走カウンタ１４２Ｃの値が経過時間２のエントリを指し示す度に、経過時間２の値は１ずつ増える。
【００８６】
図１３に示される例において、経過時間管理メモリ１４２Ｍのエントリの値の閾値は５００であるとする。経過時間管理メモリ１４２Ｍの経過時間０のエントリの値は、５００であるので、フレーム情報管理部１４２は、経過時間０のエントリの値を０にリセットし、対応する学習済フレーム通過情報１５の宛先アドレス０のエントリに登録されているアドレスを削除する。
【００８７】
所定時間が経過した学習済フレーム通過情報１５のエントリを削除することによって、ＣＡＭ  １０６の容量を小さく抑えることができる。ＣＡＭ  １０６の容量は、バッファ１３の格納可能なフレーム数より大きければよい。バッファ１３に格納されるフレームの宛先ＭＡＣアドレスがすべて異なっている場合に対応可能にするためである。
【００８８】
＜処理の流れ＞
図１４は、フレーム情報管理部１４２の学習済フレームの入力時の処理のフローチャートの一例である。図１４に示される処理は、フレーム判定部１４１からフレーム情報管理部１４２に学習済フレームが入力された場合に開始される。
【００８９】
ＯＰ１では、フレーム情報管理部１４２は、入力された学習済フレームの宛先ＭＡＣアドレスで学習済フレーム通過情報１５を検索する。学習済フレーム通過情報１５からは、入力された学習済フレームの宛先ＭＡＣアドレスに合致するＭＡＣアドレスを保持するエントリがある場合には、検索結果としてフレーム情報管理部１４２に、“データ有”が返ってくる。入力された学習済フレームの宛先アドレスに合致するアドレスを保持するエントリがない場合には、学習済フレーム通過情報１５からは、検索結果としてフレーム情報管理部１４２に、“データ無”が返ってくる。
【００９０】
ＯＰ２では、フレーム情報管理部１４２は、入力された学習済フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されているか否かを判定する。入力された学習済フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されている場合には（ＯＰ２：ＹＥＳ）、処理がＯＰ５に進む。入力された学習済フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されていない場合には（ＯＰ２：ＮＯ）、処理がＯＰ３に進む。
【００９１】
ＯＰ３では、フレーム情報管理部１４２は、入力された学習済フレームの宛先ＭＡＣアドレスを学習済フレーム通過情報１５に登録する。例えば、フレーム情報管理部１４２は、ＣＡＭ  １０６の空いているエントリのうち一番上のエントリに、入力された学習済フレームの宛先ＭＡＣアドレスを登録する。
【００９２】
ＯＰ４では、フレーム情報管理部１４２は、ＯＰ３において学習済フレームの宛先ＭＡＣアドレスを登録した学習済フレーム通過情報１５のエントリに対応する経過時間管理メモリ１４２Ｍのエントリに、１をセットする。
【００９３】
ＯＰ５では、フレーム情報管理部１４２は、入力された学習済フレームをフレーム転送部１４４に出力する。その後、図１４に示される処理が終了する。
【００９４】
図１５は、フレーム情報管理部１４２の学習済フレーム通過情報１５の管理処理のフローチャートの一例である。図１５に示される処理は、自走カウンタ１４２Ｃが開始する、すなわち、ＩＦカード１の起動とともに開始される。
【００９５】
ＯＰ１１では、フレーム情報管理部１４２は、自走カウンタ１４２Ｃが指し示す経過時間管理メモリ１４２Ｍのエントリの値を読み出す。自走カウンタの初期値は１であり、自走カウンタが１の場合には、経過時間管理メモリ１４２Ｍの先頭のエントリが指し示される。
【００９６】
ＯＰ１２では、フレーム情報管理部１４２は、読み出した経過時間管理メモリ１４２Ｍのエントリの値が０であるか否かを判定する。読み出された経過時間管理メモリ１４２Ｍのエントリの値が０である場合には（ＯＰ１２：ＹＥＳ）、処理がＯＰ１７にすすむ。読み出された経過時間管理メモリ１４２Ｍのエントリの値が０でない場合には（ＯＰ１２：ＮＯ）、処理がＯＰ１３に進む。
【００９７】
ＯＰ１３では、フレーム情報管理部１４２は、読み出した経過時間管理メモリ１４２Ｍのエントリの値が閾値以上であるか否かを判定する。読み出された経過時間管理メモリ１４２Ｍのエントリの値が閾値以上である場合には（ＯＰ１３：ＹＥＳ）、処理がＯＰ１５に進む。読み出された経過時間管理メモリ１４２Ｍのエントリの値が閾値未満である場合には（ＯＰ１３：ＮＯ）、処理がＯＰ１４に進む。
【００９８】
ＯＰ１４では、フレーム情報管理部１４２は、読み出した経過時間管理メモリ１４２Ｍのエントリの値が閾値未満であるので、該エントリの値に１を加算する。
【００９９】
ＯＰ１５では、フレーム情報管理部１４２は、読み出した経過時間管理メモリ１４２Ｍのエントリの値が閾値以上であるので、該エントリの値を０に戻す。
【０１００】
ＯＰ１６では、フレーム情報管理部１４２は、読み出した経過時間管理メモリ１４２Ｍのエントリに対応する学習済フレーム通過情報１５のエントリの宛先ＭＡＣアドレスを削除する。
【０１０１】
ＯＰ１７では、フレーム情報管理部１４２は、自走カウンタの値を１加算する（カウントアップ）。これによって、経過時間管理メモリ１４２Ｍの参照エントリが次のエントリに進む。
【０１０２】
ＯＰ１８では、フレーム情報管理部１４２は、ＩＦカード１が稼働しているか否かを判定する。ＩＦカード１が稼働している場合には（ＯＰ１８：ＹＥＳ）、処理がＯＰ１１に進み、経過時間管理メモリ１４２Ｍの次のエントリについてＯＰ１１からの処理が行われる。ＩＦカード１が停止する場合には（ＯＰ１８：ＮＯ）、図１５に示される処理が終了する。
【０１０３】
図１６は、廃棄判定部１４３の未学習フレームの入力時の処理のフローチャートの一例である。図１６に示される処理は、フレーム判定部１４１から廃棄判定部１４３に未学習フレームが入力されると開始される。
【０１０４】
ＯＰ２１では、廃棄判定部１４３は、入力された未学習フレームの宛先ＭＡＣアドレスで学習済フレーム通過情報１５を検索する。学習済フレーム通過情報１５からは、入力された未学習フレームの宛先ＭＡＣアドレスに合致するＭＡＣアドレスを保持するエントリがある場合には、検索結果として、廃棄判定部１４３に、“データ有”が返ってくる。入力された未学習フレームの宛先ＭＡＣアドレスに合致するＭＡＣアドレスを保持するエントリがない場合には、学習済フレーム通過情報１５からは、検索結果として、廃棄判定部１４３に、“データ無”が返ってくる。
【０１０５】
ＯＰ２２では、廃棄判定部１４３は、入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されているか否かを判定する。入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されている場合には（ＯＰ２２：ＹＥＳ）、処理がＯＰ２３に進む。入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されていない場合には（ＯＰ２２：ＮＯ）、処理がＯＰ２４に進む。
【０１０６】
ＯＰ２３では、廃棄判定部１４３は、入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されているので、該未学習フレームを廃棄する。その後、図１６に示される処理が終了する。
【０１０７】
ＯＰ２４では、廃棄判定部１４３は、入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されてないので、該未学習フレームをフレーム転送部１４４に転送する。その後、図１６に示される処理が終了する。
【０１０８】
＜第１実施形態の作用効果＞
第１実施形態では、学習済フレームのネットワークへの出力処理の履歴を記録し、未学習フレームの転送の際に、同じ宛先ＭＡＣアドレスのフレームの出力処理の履歴の有無を確認することによって、フレームの入力と出力との順序逆転が検出される。未学習フレームと同じ宛先ＭＡＣアドレスの学習済フレームの出力処理の履歴がある場合には、該学習済フレームが該未学習フレームよりも先にネットワークに出力されていることが示され、入力と出力とで順序逆転が発生していることが示される。この場合には、該未学習フレームは廃棄される。これによって、フレームの入力順と逆転した順序でフレームをネットワークに出力することを抑制することができる。
【０１０９】
また、未学習フレームと同じ宛先ＭＡＣアドレスの学習済フレームの出力処理の履歴がある場合には、該未学習フレームは廃棄される。ユニキャスト転送処理部１４に入力される未学習フレームは、宛先ＭＡＣアドレスが接続するポート以外のポートから出力される
可能性のあるフレームである。したがって、第１実施形態によれば、アドレス学習後に、不要なフレームのネットワークへの出力を抑制することができ、結果的に、ネットワークの帯域を無駄に消費させることを抑制することができる。
【０１１０】
また、宛先ＭＡＣアドレスが未学習から学習済に切り替わった直後の該宛先ＭＡＣアドレスを有する学習済フレームは、遅延を付加されることなく転送されるため、第１実施形態によれば、ネットワーク転送速度を維持することができる。
【０１１１】
第１実施形態では、学習済フレームのネットワークへの出力処理の履歴である学習済フレーム通過情報１５の保持にはＣＡＭ  １０６が用いられる。ＣＡＭは高速なメモリであるため、第１実施形態によれば、フレームの転送速度を損なうことなく、フレームの入力と出力とでの順序逆転を検出することができる。
【０１１２】
また、ＣＡＭ  １０６に格納される学習済フレーム通過情報１５のエントリは所定時間が経過すると削除される。これによって、ＣＡＭ  １０６の容量を節約することができる。
【０１１３】
＜その他＞
第１実施形態では、フレーム処理部１０１は、ＮＰＵやＦＰＧＡであるとして説明されたが、フレーム処理部１０１は、ＣＰＵ（Central Processing Unit）であってもよい。
フレーム処理部１０１がＣＰＵである場合には、該ＣＰＵに、ユニキャスト転送処理部１４（フレーム判定部１４１、フレーム情報管理部１４２、廃棄判定部１４３、フレーム転送部１４４）の処理を実行させるためのプログラムがＩＦカード１に内蔵又は外付けの不揮発性メモリに格納される。
【０１１４】
第１実施形態を、例えば、以下のように変形することも可能である。学習済フレーム通過情報１５をフレームコピー処理部１２が検索できるように構成する。フレームコピー処理部１２に入力された未学習フレームの宛先ＭＡＣアドレスが学習済フレーム通過情報１５に登録されている場合には、フレームコピー処理部１２は、該未学習フレームをコピーせずに廃棄する。これによって、バッファ１３に転送不要なコピーフレームを格納することを抑制でき、宛先ＭＡＣアドレスの未学習から学習済への切り替えによって発生する、フレームの入力と出力との順序逆転を抑制することができる。上述のように変形した場合には、フレームコピー処理部１２が「制御部」の一例となり、ユニキャスト転送処理部１４が「転送部」の一例となる。
【０１１５】
なお、第１実施形態では、ＶＬＡＮ（Virtual Local Area Network）については考慮されていないが、ＶＬＡＮが設定されている場合にも、第１実施形態で説明された技術を適用することができる。ＶＬＡＮが設定されている場合には、ＭＡＣアドレステーブル１６のエントリは、ＭＡＣアドレスと、ポートと、ＶＬＡＮ  ＩＤとの対応付けとなる。また、学習済フレーム通過情報１５は、ユニキャスト転送処理部１４を通過した学習済フレームの宛先ＭＡＣアドレスに加えて、ＶＬＡＮ  ＩＤが登録されるようにしてもよい。この場合には、フレーム情報管理部１４２、廃棄判定部１４３は、学習済フレーム通過情報１５を、フレームの宛先ＭＡＣアドレス及びＶＬＡＮ  ＩＤで検索する。
【０１１６】
又は、学習済フレーム通過情報１５は、宛先ＭＡＣアドレスの代わりに、フレーム処理装置１００の内部で用いられるフローＩＤを格納するようにしてもよい。例えば、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮ  ＩＤ等が同じフレームには同じフローＩＤが付与される。フローＩＤは、例えば、入力側ＩＦカード１Ａの出力ポート判定部１７によって決定され、フレームの内部ヘッダＨＤ１内に格納される。
【０１１７】
第１実施形態では、イーサネットのネットワークを前提として説明されたが、第１実施形態で説明された技術はイーサネット以外のネットワークにも適用可能である。ＭＡＣアドレス、ＭＡＣアドレステーブル、フレームの構成等を、適宜、適用先のネットワークで用いられる同等のものに置き換えることによって、イーサネット以外のネットワークに第１実施形態で説明された技術を適用することができる。
【０１１８】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１１９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【０１２０】
＜付記＞
上記実施形態は、さらに以下の付記を開示する。
（付記１）
宛先アドレスを有するフレームが出力される複数の出力ポートと、
前記宛先アドレスと前記出力ポートとの対応付けを記憶するテーブルに前記宛先アドレスが登録されていると判定された学習済フレームと、前記テーブルに前記宛先アドレスが登録されていないと判定された未学習フレームと、前記未学習フレームがコピーされたコピーフレームと、を格納するバッファと、
前記バッファから前記格納順にフレームを読み出し、所定の前記出力ポートに転送する転送部と、
前記学習済フレームのネットワークへの出力履歴として、前記学習済フレームの宛先アドレスに関する情報を記憶する記憶部と、
前記フレームが未学習フレームのとき、前記出力履歴に、前記未学習フレームの宛先アドレスと合致する情報が含まれている場合には、前記転送部による前記転送前に、前記未学習フレームを廃棄する制御部と、
を備えるフレーム処理装置。
（付記２）
前記制御部は、前記学習済フレームの宛先アドレスと合致する情報が前記出力履歴に含まれていない場合に、該学習済フレームの宛先アドレスに関する情報を前記出力履歴に登録し、該登録から所定時間経過後に、該学習済フレームの宛先アドレスに関する情報を前記出力履歴から削除する、
付記１に記載のフレーム処理装置。
（付記３）
前記記憶部は、ＣＡＭ（Content Addressable Memory）である、
付記１又は２に記載のフレーム処理装置。
（付記４）
前記記憶部の容量は、前記バッファの容量と同じである、
付記３に記載のフレーム処理装置。
（付記５）
前記フレームが学習済フレームであるか、未学習フレームであるかを判定し、前記フレームが学習済フレームである場合に、前記バッファに格納する判定部と、
前記フレームが未学習フレームである場合に、前記未学習フレームのコピーフレームを生成し、該未学習フレームと、前記コピーフレームとを前記バッファに格納する複製部と、
をさらに備える付記１から４のいずれか１つに記載のフレーム処理装置。
（付記６）
宛先アドレスを有するフレームが出力される複数の出力ポートと、
前記宛先アドレスと前記出力ポートとの対応付けを記憶するテーブルに前記宛先アドレスが登録されていると判定された学習済フレームと、前記テーブルに前記宛先アドレスが登録されていないと判定された未学習フレームと、前記未学習フレームがコピーされたコピーフレームと、を格納するバッファと、を備えるフレーム処理装置が、
前記バッファから前記格納順にフレームを読み出し、所定の前記出力ポートに転送し、
前記学習済フレームのネットワークへの出力履歴として、前記学習済フレームの宛先アドレスに関する情報を記憶部に記憶し、
前記フレームが未学習フレームのとき、前記出力履歴に、前記未学習フレームの宛先アドレスと合致する情報が含まれている場合には、前記転送前に、前記未学習フレームを廃棄する、
フレーム処理方法。
【符号の説明】
【０１２１】
１        インタフェース（ＩＦ）カード
１１      学習判定部
１２      フレームコピー処理部
１３      バッファ
１４      ユニキャスト転送処理部
１５      学習済フレーム通過情報
１６      ＭＡＣアドレステーブル
１７      出力ポート判定部
１０２    メモリ
１０３    フレーム処理部
１０６    ＣＡＭ
１４１    フレーム判定部
１４２    フレーム情報管理部
１４３    廃棄判定部
１４４    フレーム転送部
【図１】
0006493059.tif 000002
【図２】
0006493059.tif 000003
【図３】
0006493059.tif 000004
【図４】
0006493059.tif 000005
【図５】
0006493059.tif 000006
【図６】
0006493059.tif 000007
【図７】
0006493059.tif 000008
【図８】
0006493059.tif 000009
【図９】
0006493059.tif 000010
【図１０】
0006493059.tif 000011
【図１１】
0006493059.tif 000012
【図１２】
0006493059.tif 000013
【図１３】
0006493059.tif 000014
【図１４】
0006493059.tif 000015
【図１５】
0006493059.tif 000016
【図１６】
0006493059.tif 000017