(57)【要約】【課題】スイッチ等においてソフトウエアによるアドレス学習を実施する。【解決手段】本スイッチは、第1ポートから受信したパケットを第2ポートへ出力するスイッチ部と、スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサとを有する。スイッチ部は、装置のアドレスと本アドレスを学習したか否かを表すフラグとポートの識別子とを含むエントリを格納するテーブルを有し、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが上記テーブルに登録されていない場合、送信元アドレスと学習中を表すフラグと特定のポートの識別子とを含むエントリを上記テーブルに登録すると共に、プロセッサに送信元アドレスの学習を要求し、上記プロセッサから特定のエントリのフラグを学習済みに変更する要求を受信すると、上記テーブルにおいて特定のエントリのフラグを学習済みに設定する。【選択図】図３
2010251928.tif 000002
【特許請求の範囲】
【請求項１】
複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、
前記スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサと、
を有し、
前記スイッチ部は、
前記ポートに接続されている装置のアドレスと、前記プロセッサが前記アドレスを学習したか否かを表す学習データと、前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルを有しており、
特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが前記テーブルに登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求し、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに前記送信元アドレスの学習を要求せず、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定する
ネットワーク接続装置。
【請求項２】
前記スイッチ部が、
前記特定のポートから特定の送信先アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の送信先アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記第２のパケットを、前記特定のポートを除く前記複数のポートに出力する
請求項１記載のネットワーク接続装置。
【請求項３】
前記テーブルにおいて前記学習データが学習中であることを表しているエントリの学習順番を管理するための機構をさらに有する請求項１又は２記載のネットワーク接続装置。
【請求項４】
前記機構において、
前記エントリ毎に、ポインタフィールドが設けられ、
前記ポインタフィールドに、前記学習データが学習中であることを表しているエントリに対応付けて、次に学習すべきエントリへのポインタが登録され、
さらに、最初に学習すべきエントリへのポインタ及び最後に学習すべきエントリへのポインタを別途保持する
請求項３記載のネットワーク接続装置。
【請求項５】
複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、前記スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサとを有するネットワーク接続装置により実行されるアドレス学習処理方法であって、
前記ポートに接続されている装置のアドレスと前記プロセッサが前記アドレスを学習したか否かを表す学習データと前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルに、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求する要求ステップと、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに対する前記送信元アドレスの学習の要求を抑制するステップと、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定するステップと、
を含むアドレス学習処理方法。
【請求項６】
前記スイッチ部において、
前記エントリ毎に、ポインタフィールドが設けられ、
前記ポインタフィールドには、前記学習データが学習中であることを表しているエントリに対応付けて、次に学習すべきエントリへのポインタが登録され、
さらに、最初に学習すべきエントリへのポインタ及び最後に学習すべきエントリへのポインタを別途保持し、
前記要求ステップにおいて、
前記最後に学習すべきエントリへのポインタが既に登録されている場合には、当該最後に学習すべきエントリについての前記ポインタフィールドに、前記要求ステップにおいて前記テーブルに新たに登録されたエントリのアドレスを登録し、
前記要求ステップにおいて前記テーブルに新たに登録されたエントリのアドレスを、前記最後に学習すべきエントリへのポインタとして登録し、
前記要求ステップの後に前記プロセッサからの先頭ポインタの要求に応じて、前記最初に学習すべきエントリへのポインタが示す先頭エントリのアドレスを前記プロセッサに出力するステップと、
前記プロセッサからの前記先頭エントリのアドレスを指定した先頭エントリ取得要求に応じて、前記テーブルから前記先頭エントリのデータ及び当該先頭エントリに対応付けられている前記ポインタフィールドに格納されているアドレスを読み出して前記プロセッサに出力するステップと、
前記プロセッサからの前記先頭エントリに対応付けられている前記ポインタフィールドに格納されているアドレスの設定要求に応じて、前記最初に学習すべきエントリへのポインタとして前記アドレスの設定要求に含まれるアドレスを登録するステップと、
をさらに含む請求項５記載のアドレス学習処理方法。
【請求項７】
複数のポートのうちあるポートに接続されている装置のアドレスと、特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサが前記特定のアドレスを学習したか否かを表す学習データと、前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルと、
管理部とを有しており、
前記管理部が、
特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが前記テーブルに登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求し、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに前記送信元アドレスの学習を要求せず、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定する、
ネットワーク接続装置用のスイッチング回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、スイッチなどのネットワーク接続装置におけるアドレス学習に関連する技術に関する。
【背景技術】
【０００２】
従来、レイヤ２（Ｌ２）スイッチにおいて、ＦＤＢ（Forwarding DataBase）に送信元アドレス（ＳＡ：Source Address）を登録するためのアドレス学習は、スイッチハードウエアで行われてきた。例えば図１に示すように、スイッチハードウエアであるスイッチＬＳＩ（Large Scale Integrated circuit）は、ポートと、ＦＤＢと、管理部とを有している。そして、ポートで受信したパケットの送信元アドレス（ＳＡ）によりＦＤＢを検索して（ステップ（１００１））、このＳＡ検索結果を管理部に通知する（ステップ（１００２））。管理部は、ＳＡがＦＤＢに登録されていなければ、ＦＤＢにＳＡを登録する（ステップ（１００３））。しかし、このようなスイッチＬＳＩに含まれる管理部では、単純なＳＡ登録しか行うことができず、認証など高度な処理によるフィルタリングが必要なケースには対処できない。高度な処理によるフィルタリングが必要なケースとしては、例えば、受信パケットのＶＬＡＮ（Virtual Local Area Network）と登録すべきアドレスのＶＬＡＮ  ＩＤが異なるケース、受信パケットのＳＡを登録する際、ＶＬＡＮ  ＩＤが異なる複数のエントリを登録したいケース、ドメインの異なるポートに対してアドレス変換を行うケースなどが挙げられる。
【０００３】
なお、このようなハードウエアでアドレス学習を行う技術には、以下のようなものもある。すなわち、パケット長から当該パケットの転送処理所要時間を求めるとともに転送先判定処理の実実行時間を測定し、転送処理所要時間と測定された転送先判定処理の実実行時間との差時間に応じてＭＡＣアドレス学習などの付加処理を実行するか否かを決定するようにしている。これによると、必ずＭＡＣアドレス学習などの付加処理を実施する場合に比べ、パケットの廃棄が少なくなるとともに、安価なコストパフォーマンスの良いシステムが構成できる。さらに、特定のアドレスについての学習ばかりを行うことにならず、効率的にアドレス学習を行うことができる、というものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２９５５５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上で述べたように、ハードウエアのみによるアドレス学習では、多様なアドレス学習に対応できない。そこで、ソフトウエアによるアドレス学習を導入するとしても、単純には全ての問題が解決するわけではない。
【０００６】
従って、本技術の目的は、スイッチなどのネットワーク接続装置においてソフトウエアによるアドレス学習を適切に実施できるようにすることである。
【課題を解決するための手段】
【０００７】
本ネットワーク接続装置は、複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサとを有する。そして、上で述べたスイッチ部は、ポートに接続されている装置のアドレスと、プロセッサがアドレスを学習したか否かを表す学習データと、上記装置が接続されているポートの識別子とを含むエントリを格納するテーブルを有している。そして、スイッチ部は、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが上記テーブルに登録されていない場合、送信元アドレスと送信元アドレスを学習中であることを表す学習データと特定のポートの識別子とを含むエントリを上記テーブルに登録すると共に、プロセッサに送信元アドレスの学習を要求し、特定のポートから特定の装置の送信元アドレスを含む第２のパケットを受信した際に上記テーブルに特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、上記プロセッサに送信元アドレスの学習を要求しない。さらに、上記プロセッサからテーブルにおける特定のエントリの学習データを学習済みに変更する要求を受信した場合、上記テーブルにおいて特定のエントリの学習データを学習済みに設定する。
【発明の効果】
【０００８】
ネットワーク接続装置においてソフトウエアによるアドレス学習を適切に実施できるようになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、従来技術を説明するための図である。
【図２】図２は、本技術の実施の形態の前提となる技術を説明する図である。
【図３】図３は、本実施の形態に係るＬ２スイッチの機能ブロック図である。
【図４】図４は、ＦＤＢの構成例を示す図である。
【図５】図５は、本実施の形態におけるキューの構造を説明するための図である。
【図６】図６は、本実施の形態のメインの処理フローを示す図である。
【図７Ａ】図７Ａは、ＳＡ処理の処理フローを示す図である。
【図７Ｂ】図７Ｂは、ＳＡ処理を説明するためのＦＤＢ等の状態を表す図である。
【図８】図８は、ＳＡ処理を説明するための先頭ポインタ格納部及び末尾ポインタ格納部の状態を表す図である。
【図９】図９は、ＳＡ処理を説明するためのＦＤＢ等の状態を表す図である。
【図１０】図１０は、ＳＡ処理を説明するための先頭ポインタ格納部及び末尾ポインタ格納部の状態を表す図である。
【図１１】図１１は、割り込み発生処理の処理フローを示す図である。
【図１２】図１２は、プロセッサからの内部資源アクセス処理の処理フローを示す図である。
【図１３】図１３は、アドレス登録割り込み処理の処理フローを示す図である。
【図１４】図１４は、アドレス登録割り込み処理の処理フローを示す図である。
【図１５】図１５は、アドレス登録割り込み処理を説明するためのＦＤＢ等の状態を表す図である。
【図１６】図１６は、アドレス登録割り込み処理を説明するための先頭ポインタ格納部及び末尾ポインタ格納部の状態を表す図である。
【図１７】図１７は、アドレス登録割り込み処理を説明するためのＦＤＢ等の状態を表す図である。
【図１８】図１８は、アドレス登録割り込み処理を説明するための先頭ポインタ格納部及び末尾ポインタ格納部の状態を表す図である。
【図１９】図１９は、ＤＡ処理の処理フローを示す図である。
【発明を実施するための形態】
【００１０】
［本技術の実施の形態の前提］
背景技術で述べたように、Ｌ２スイッチにおけるハードウエアのみによるアドレス学習では、ＭＡＣ ＶＬＡＮ認証など高度な、そして学習の有無を切り替えたり学習内容を変更したりする柔軟なアドレス学習パターンに対応できない。そこで、スイッチＬＳＩとは別にスイッチ管理プロセッサを導入して、当該スイッチ管理プロセッサで各種アドレス学習を実施するための管理プログラムを実行するような構成が考えられる。
【００１１】
このようなケースの一例を図２に示す。図２の例では、スイッチＬＳＩは、複数のポートと、ＦＤＢと、管理部とを有する。そして、スイッチＬＳＩは通信路（バス又はネットワーク）によってスイッチ管理プロセッサと接続しており、スイッチ管理プロセッサでは、オペレーティング・システム（ＯＳ）及び当該ＯＳ上で管理プログラムが実行されている。このような構成では、ポートで受信したパケットの送信元アドレス（ＳＡ）によりＦＤＢを検索して（ステップ（１１０１））、このＳＡ検索結果を管理部に通知する（ステップ（１１０２））。ＳＡがＦＤＢに登録されていなければ、管理部は、プロセッサに対して学習要求割り込みを行う（ステップ（１１０３））。
【００１２】
この後、ＳＡ等の情報をスイッチＬＳＩの管理部からスイッチ管理プロセッサで実行されている管理プログラムに受け渡したり、ＦＤＢの内容を管理プログラムからの要求に応じてスイッチ管理プロセッサ及び管理部を介して受け渡したりする。このように受け渡されたデータを用いて管理プログラムでアドレス学習を実施して結果としてＳＡをＦＤＢに登録する又は破棄するかを指示する要求をスイッチ管理プロセッサからスイッチＬＳＩの管理部に出力する（ステップ（１１０４））。そして、スイッチＬＳＩの管理部は、スイッチ管理プロセッサからの要求に応じて、ＦＤＢにＳＡを登録するか又はＳＡを破棄する（ステップ（１１０５））。
【００１３】
このような管理プログラムを用いたアドレス学習では、ステップ（１１０２）乃至（１１０５）のレイテンシが大きく、学習スループットが低くなってしまう。そして、ＦＤＢに登録されていないＳＡを含むパケットが連続すると、学習が間に合わなくなって学習の取りこぼしが発生する。これに対処するためには、後続のＳＡ検索結果をマスクするか、キューイングする必要がある。しかし、マスクする場合には、当然マスク中は新規の学習要求は破棄されるので取りこぼしが発生し、単純にキューイングする場合には、同じＳＡについての学習要求が連続してキューに追加される事態が生じうる。この場合、スイッチＬＳＩとスイッチ管理プロセッサとの間の帯域を含む資源が無駄に消費され、ますますスループットが低下するという問題が生じてしまう。
【００１４】
このように、単純にスイッチＬＳＩとは別にスイッチ管理プロセッサにアドレス学習を実施する管理プログラムを実行させるだけでは、アドレス学習が適切に実施できない。
【００１５】
本実施の形態では、このような具体的な問題を解決するような構成を導入する。
【００１６】
［本実施の形態の具体的内容］
図３に、本実施の形態におけるＬ２スイッチ１００の構成例を示す。Ｌ２スイッチ１００は、スイッチＬＳＩ１１０と、当該スイッチＬＳＩ１１０と通信路１３１及び割り込み信号線１３２で接続されたスイッチ管理プロセッサ１２０とを有する。スイッチＬＳＩ１１０は、端末装置等（図３では端末１０１乃至１０３）に接続されるポート部（図３ではポート１乃至３）と、ポート部に接続されるＦＤＢ１１１と、ＦＤＢ１１１に接続されている管理部１１２と、管理部１１２と接続されており且つアドレス学習の順番を管理するためのキューとして機能するタグ格納部１１３とを有する。以下でも述べるが、図３で点線で示されるようにＦＤＢ１１１とタグ格納部１１３とは一体化される場合もある。また、ＦＤＢ１１１には、以下で説明するようにアドレス学習中であるか否かを表す学習状態フラグ１１１１が新たに追加されている。また、管理部１１２は、タグ格納部１１３と共にアドレス学習の順番を管理するためのキューとして機能する先頭ポインタを格納する先頭ポインタ格納部１１２１及び末尾ポインタを格納する末尾ポインタ格納部１１２２を有する。また、スイッチ管理プロセッサ１２０は、ＯＳ上で管理プログラム１２１を実行している。
【００１７】
図４に、ＦＤＢ１１１のデータ構成例を示す。図４に示すように、検索キーであるＭＡＣアドレスに対応付けて、当該ＭＡＣアドレスの機器が接続されているポートの識別子が登録される出力ポート情報と、当該ＭＡＣアドレスを学習中であるか学習済みであるかを表す学習状態フラグ１１１１とが登録されている。このようなテーブルの各行を以下ではエントリと呼び、以下ではその格納位置をインデックスと呼ぶ。
【００１８】
このようなＦＤＢ１１１を用いることによって、以下で述べるように重複するアドレス学習要求をフィルタすることができる。新たなＳＡを受信した場合には、ＦＤＢ１１１に新たなエントリを登録すると共に、学習状態フラグ１１１１を「学習中」に設定する。管理プログラム１２１によるアドレス学習の結果スイッチ管理プロセッサ１２０からエントリ更新要求を受信すれば、学習状態フラグ１１１１を「学習済」に変更し、当該エントリに基づくパケットの転送が開始される。一方、スイッチ管理プロセッサ１２０からエントリ削除要求を受信すれば、該当エントリを削除する。
【００１９】
具体的には、ポート部からパケット（＝ＭＡＣフレーム）を受信すると、当該パケットのＳＡ（＝送信元ＭＡＣアドレス）でＦＤＢ１１１に対してＳＡ検索を実施する。その際、ＦＤＢ１１１に対応エントリが存在しなければ、学習状態フラグ１１１１が「学習中」を表す新規エントリをＦＤＢ１１１に追加し、アドレス学習を実施する。一方、対応エントリが存在し、学習状態フラグ１１１１が「学習中」であればこれ以上アドレス学習を行う必要がないので、アドレス学習要求を抑制する。これによって重複するアドレス学習をフィルタリングし、アドレス学習のスループットを向上させることができる。一方、学習状態フラグ１１１１が「学習済」であれば特にアドレス学習は必要なく、通常のとおりに処理する。
【００２０】
また、ポート部からパケットを受信すると、当該パケットの送信先アドレス（ＤＡ：Destination address。＝送信先ＭＡＣアドレス）でもＦＤＢ１１１に対してＤＡ検索を実施する。この際対応エントリが存在しなければ、全ポートに対してパケットをブロードキャストする。また、対応エントリが存在して学習状態フラグ１１１１が「学習中」であれば、対応エントリが存在していないのと同様の状態として全ポートに対してパケットをブロードキャストする。すなわち、各ポートに接続されている各装置に自分宛のパケットであるかを判断させる。一方、対応エントリが存在して学習状態フラグ１１１１が「学習済」であれば、通常どおり該当ポートにパケットを転送する。
【００２１】
次に、図５を用いて、アドレス学習の順番を管理するためのキューについて説明する。タグ格納部１１３においては、ＦＤＢ１１１の対応エントリについてのポインタが格納される。このポインタは、次にアドレス学習を実施すべきＳＡについてのエントリを指している。図５の例では、Ｎｅｘｔ０というインデックスのエントリについてのポインタは、次にアドレス学習を実施すべきＳＡについてのエントリのインデックスＮｅｘｔ１となっている。インデックスＮｅｘｔ１のエントリのポインタは、さらに次にアドレス学習を実施すべきＳＡについてのエントリのインデックスＮｅｘｔ２となっている。インデックスＮｅｘｔ２のエントリのポインタは、次にアドレス学習を実施すべきＳＡが存在していないのでＮＵＬＬとなっている。なお、図５では明示していないが、学習状態フラグ１１１１が「学習済」であるエントリについてのポインタは、使用されない（すなわちDon't careとして扱う）。
【００２２】
さらに、管理部１１２は、最初にアドレス学習を実施すべきＦＤＢ１１１のエントリを指す先頭ポインタ（図５ではＮｅｘｔ０）を保持しており、さらに最後にアドレス学習を実施すべきＦＤＢ１１１のエントリを指す末尾ポインタ（図５ではＮｅｘｔ２）を保持している。
【００２３】
このようにＦＤＢ１１１における学習中のエントリをキュー構造で管理して、スイッチ管理プロセッサ１２０のアクセスを効率化する。すなわち、スイッチ管理プロセッサ１２０からのアクセスは、キュー構造における学習中の先頭エントリに限定されるので、アクセスについてのオーバーヘッドが削減され、処理性能の向上が図られる。
【００２４】
また、本来学習できるアドレス数はＦＤＢ１１１のサイズが上限となる（すなわち学習済エントリ数＋学習中エントリ数≦ＦＤＢエントリ総数）ので、ＦＤＢ１１１の各エントリに対応付けてタグ（ポインタ領域）を設けるのが効率的である。また、タグ格納部１１３をＦＤＢ１１１に設ければさらにＦＤＢ１１１の空き領域を効率利用できるようになる。
【００２５】
次に、図３に示した本実施の形態に係るＬ２スイッチ１００の動作の概要を説明する。例えばポート１には端末１０１が接続されて、ポート１が端末１０１から送信元アドレスＳＡ（ＭＡＣアドレス＝Ａ１）のパケットを受信すると、このＳＡ（ＭＡＣアドレス＝Ａ１）でＦＤＢ１１１を検索する（ステップ（１））。そして、ＳＡ検索結果を管理部１１２に通知する（ステップ（２））。ここでＳＡ検索結果が当該ＳＡがＦＤＢ１１１に登録されていないことを示していれば、管理部１１２は、ＦＤＢ１１１に当該ＳＡのためのエントリを追加する（ステップ（３））。追加エントリの学習状態フラグ１１１１は「学習中」となる。また、管理部１１２における先頭ポインタ格納部１１２１及び末尾ポインタ格納部１１２２並びにタグ格納部１１３により追加エントリをキューに登録するための必要な処理を行う。
【００２６】
さらに、キューのサイズが１以上になると、管理部１１２から、スイッチ管理プロセッサ１２０に対して割り込み信号線１３２を介して割り込みを行う（ステップ（４））。割り込みを受けたスイッチ管理プロセッサ１２０の管理プログラム１２１により、スイッチＬＳＩ１１０の管理部１１２にアクセスし、キューの先頭エントリを特定すると共に当該キューの先頭エントリのデータを通信路１３１を介して取得し、アドレス学習のための所定の処理を実施する（ステップ（５））。このスイッチ管理プロセッサ１２０の管理プログラム１２１による所定のアドレス学習の結果、キューの先頭エントリのＳＡを登録しても良い場合にはエントリ更新要求を、登録してはならない場合にはエントリ削除要求を、スイッチ管理プロセッサ１２０の管理部１１２に出力する（ステップ（６））。
【００２７】
管理部１１２は、スイッチ管理プロセッサ１２０からの要求がエントリ更新要求であれば、該当エントリの学習状態フラグ１１１１を「学習済」に変更し、エントリ削除要求であれば、ＦＤＢ１１１において該当エントリを削除する（ステップ（７））。
【００２８】
ステップ（５）乃至（７）については、キューが空になるまでスイッチ管理プロセッサ１２０は処理を繰り返す。
【００２９】
このような処理を実施することにより、アドレス学習を無駄なく且つ漏れなく実施することができるようになる。
【００３０】
以下、Ｌ２スイッチ１００の処理の詳細について図６乃至図１９を用いて説明する。まず、例えばポート１乃至３のいずれかで端末１０１乃至１０３のいずれかからパケットを受信する（図６：ステップＳ１）。そして、受信したパケットのＳＡによるＳＡ処理を実施する（ステップＳ３）。この処理については、以下で詳細に述べる。また、受信したパケットのＤＡによるＤＡ処理も実施する（ステップＳ５）。ＤＡ処理は、受信したパケットをどのように転送するのかを決定するための処理であり、以下で詳細に述べる。このような処理をパケットを受信する毎に実施する。
【００３１】
次に、図７Ａを用いてＳＡ処理について説明する。まず、受信パケットのＳＡでＦＤＢ１１１を検索する（ステップＳ１１）。このステップは、図３のステップ（１）に対応するので、図７Ａでも「＊（１）」で示している。
【００３２】
そして、受信パケットのＳＡがＦＤＢ１１１に未登録であるか判断する（ステップＳ１３）。このステップは、図７のステップ（２）に対応する。ＳＡが既にＦＤＢ１１１に登録されていれば、当該ＳＡのエントリの学習状態フラグ１１１１が「学習中」であっても「学習済」であっても、ＳＡに対するアドレス学習を行わない（ステップＳ２５）。「学習中」であれば重複したアドレス学習を避け、「学習済」であれば元来学習は不要であるので、このように何も行わず（図７では点線ブロックで表示）、元の処理に戻る。
【００３３】
一方、ＦＤＢ１１１に受信パケットのＳＡが未登録であるとすると、管理部１１２は、ＦＤＢ１１１において、新規エントリ（ＭＡＣアドレス＝ＳＡ、学習状態フラグ１１１１＝学習中、タグ格納部１１３の該当エントリについてのポインタ＝ＮＵＬＬ）をインデックス＝Ｎｅｗ１に追加する（ステップＳ１５）。このステップは、図３のステップ（３）に該当する。また、ＦＤＢ１１１は、図７Ｂに示すような状態になる。
【００３４】
そして、管理部１１２は、末尾ポインタがＮＵＬＬであるか判断する（ステップＳ１７）。末尾ポインタがＮＵＬＬということは、キューの中にアドレス学習すべきエントリが無かったということで、今回追加された新規エントリが先頭エントリとなる。末尾ポインタがＮＵＬＬであれば、管理部１１２は、先頭ポインタに追加エントリのインデックス（Ｎｅｗ１）を設定する（ステップＳ１９）。そしてステップＳ２３に移行する。一方、末尾ポインタがＮＵＬＬでない場合には、既に学習中のエントリが存在するということで末尾に新規エントリを設定しなければならない。従って、末尾ポインタが指すエントリのポインタフィールド（すなわちタグ格納部１１３の該当フィールド）に追加エントリのインデックス（Ｎｅｗ１）を設定する（ステップＳ２１）。これによって、追加エントリをキューの最後尾に登録できたことになる。そしてステップＳ２３に移行する。
【００３５】
ステップＳ２３では、管理部１１２は、末尾ポインタに追加エントリのインデックス（Ｎｅｗ１）を設定する（ステップＳ２３）。そして元の処理に戻る。
【００３６】
ステップＳ１９及びＳ２３を実行する場合には、図８に示すように、先頭ポインタ格納部１１２１及び末尾ポインタ格納部１１２２にインデックスＮｅｗ１が登録される。一方ステップＳ２１及びＳ２３が実行された場合には、図９に示すように、ＦＤＢ１１１については、これまで末尾エントリであってインデックスがＮｅｗ０のエントリについてのポインタフィールド（タグ格納部１１３の該当フィールド）に、今回追加されたエントリのインデックスＮｅｗ１を登録する。また、図１０に示すように、先頭ポインタ格納部１１２１には、先頭エントリのインデックスＨｅａｄ０が格納されており、末尾ポインタ格納部１１２２には、今回追加されたエントリのインデックスＮｅｗ１が登録される。
【００３７】
このように、未登録のＳＡを含むパケットを受信した場合には、ＦＤＢ１１１に新規エントリを登録すると共に、キューの末尾に当該新規エントリを設定する。
【００３８】
次に、末尾ポインタ格納部１１２２を監視している管理部１１２の処理について図１１を用いて説明する。管理部１１２は、末尾ポインタ格納部１１２２を監視しており、末尾ポインタがＮＵＬＬであるか判断する（図１１：ステップＳ３１）。ＮＵＬＬであれば、学習すべきアドレスがないので、末尾ポインタが登録されるまで待つ。一方、末尾ポインタが登録されていれば、管理部１１２は、スイッチ管理プロセッサ１２０に対してアドレス登録要求割り込みをアサートする（ステップＳ３３）。このステップは、図３のステップ（４）に対応する。そしてステップＳ３１に戻る。
【００３９】
このようにして、末尾ポインタが設定されると、スイッチ管理プロセッサ１２０に対してアドレス登録要求割り込みがアサートされるようになり、アドレス学習が開始される。
【００４０】
また、管理部１１２は、スイッチ管理プロセッサ１２０からの要求に応じて以下のような処理を実施する。具体的には、管理部１１２は、スイッチ管理プロセッサ１２０から何らかの処理要求を受信したか判断し（図１２：ステップＳ４１）、受信していない場合には受信するまで待機する。一方、スイッチ管理プロセッサ１２０から何らかの処理要求を受信した場合には、管理部１１２内ポインタ（具体的には先頭ポインタ又は末尾ポインタ）へのアクセス要求か判断する（ステップＳ４３）。管理部１１２内ポインタへのアクセス要求（読み出し／書き込み）であれば、管理部１１２が、要求先のポインタにアクセスして、結果をスイッチ管理プロセッサ１２０へ出力する（ステップＳ４５）。このステップは、例えば図３のステップ（５）の一部である。そしてステップＳ４１に戻る。
【００４１】
一方、管理部内ポインタへのアクセス要求でない場合には、管理部１１２は、ＦＤＢ１１１へのアクセス要求であるか判断する（ステップＳ４７）。ＦＤＢ１１１へのアクセス要求であれば、管理部１１２は、要求に従ってＦＤＢ１１１にアクセスし、結果をスイッチ管理プロセッサ１２０へ出力する（ステップＳ４９）。例えば、エントリの内容を読み出すような要求に応じてエントリの内容を読み出してスイッチ管理プロセッサ１２０へ出力したりする場合もあれば、要求に応じてエントリの学習状態フラグ１１１１を変更したり、エントリを削除したりする。このステップは、図３のステップ（７）の一部である。ステップＳ４９の後にはステップＳ４１に戻る。また、ＦＤＢ１１１へのアクセス要求でなければステップＳ４１に戻る。
【００４２】
管理部１１２は、このようにスイッチ管理プロセッサ１２０とのインターフェースとしても動作する。
【００４３】
次に、スイッチ管理プロセッサ１２０の管理プログラム１２１の処理について図１３乃至図１８を用いて説明する。まず、スイッチ管理プロセッサ１２０は、スイッチＬＳＩ１１０からアドレス登録割り込みを割り込み信号線１３２を介して受信する（ステップＳ５１）。このステップは、図３のステップ（４）に対応する。そして、スイッチ管理プロセッサ１２０で実行されている管理プログラム１２１は、先頭ポインタの取得をスイッチＬＳＩ１１０の管理部１１２に指示し、スイッチＬＳＩ１１０の管理部１１２から先頭ポインタを取得する（ステップＳ５３）。このステップは、図３のステップ（５）に対応し、図１２のステップＳ４５と関連する。そして、先頭ポインタがＮＵＬＬであるか判断する（ステップＳ５５）。このステップは、処理の終了確認であって後続の処理から戻ってきた際に有効となる。すなわち、最初は当然ＮＵＬＬではない。先頭ポインタがＮＵＬＬである場合には、処理を終了する。
【００４４】
先頭ポインタがＮＵＬＬでない場合には、管理プログラム１２１は、先頭ポインタが指すエントリ（例えばインデックス「Ｈｅａｄ１」）の取得を管理部１１２に指示し、スイッチＬＳＩ１１０の管理部１１２から先頭ポインタが指すエントリのデータを取得する（ステップＳ５７）。ここでは、タグ格納部１１３の対応するフィールドに格納されているポインタについても同時に取得する。このステップは、図３のステップ（５）の一部に対応しており、図１２のステップＳ４９に関連する。例えば、図１５に示すように、インデックス「Ｈｅａｄ１」のエントリについては、ＭＡＣアドレスがＳＢで、出力ポート情報はポート２で、学習状態フラグ１１１１が学習中で、タグ格納部１１３の対応フィールドのポインタがＮｅｗ２であるとする。
【００４５】
その後、管理プログラム１２１は、先頭ポインタ格納部１１２１に対して、取得エントリ（例えばインデックスが「Ｈｅａｄ１」のエントリ）のポインタフィールド値（タグ格納部１１３の対応フィールドの値。上の例では「Ｎｅｗ２」）を設定するようにスイッチＬＳＩ１１０の管理部１１２に指示する（ステップＳ５９）。これによって、先頭エントリを次のエントリに入れ替えている。図１６に示すように、先頭ポインタ格納部１１２１には、「Ｎｅｗ２」が登録される。但し、図１５のインデックス「Ｎｅｗ２」のエントリのように、取得エントリのポインタフィールド値が「ＮＵＬＬ」であれば、「ＮＵＬＬ」を設定するように指示する。また、このステップは、図３のステップ（５）の一部に対応し、図１２のステップＳ４３に関連する。そして処理は端子Ｂを介して図１４の処理に移行する。
【００４６】
図１４の処理の説明に移行して、取得エントリの内容を用いて、所定の判断処理（すなわちアドレス学習処理）を実施する（ステップＳ６１）。例えば、特定のアドレス、ＶＬＡＮの組み合わせに一致するか判断し、該当する場合には登録を拒否する。また、ＦＤＢ１１１のエントリだけではなくＩＰパケットの情報を取得して、登録の是非を判断するなど、様々なバリエーションがある。但し、このような処理自体は本実施の形態の主旨ではなく、従来から知られている処理であるのでこれ以上述べない。
【００４７】
そして、管理プログラム１２１は、ステップＳ６１の判断結果ＳＡ（図１５の例では「ＳＢ」）を登録するか判断し（ステップＳ６３）、ＳＡを登録する場合には、取得エントリ（インデックス「Ｈｅａｄ１」のエントリ）の学習状態フラグ１１１１を学習済に変更するようにエントリ更新要求を、スイッチＬＳＩ１１０の管理部１１２に出力する（ステップＳ６５）。このステップは、図３のステップ（７）に対応し、図１２のステップＳ４９に関連する。そして処理はステップＳ６９に移行する。このような処理を実施すれば、図１５の状態から図１７の状態に、ＦＤＢ１１１等は変化する。
【００４８】
一方、ＳＡを登録しない場合、管理プログラム１２１は、取得エントリ（インデックス「Ｈｅａｄ１」のエントリ）を削除するようにエントリ削除要求を、スイッチＬＳＩ１１０の管理部１１２に出力する（ステップＳ６７）。このステップは、図３のステップ（７）に対応する。そして処理はステップＳ６９に移行する。
【００４９】
ステップＳ６９では、管理プログラム１２１は、先頭ポインタがＮＵＬＬになっているか判断する。ステップＳ５９でＮＵＬＬを先頭ポインタに設定するようにスイッチＬＳＩ１１０の管理部１１２に指示したか否かで判断する。先頭ポインタがＮＵＬＬになっていなければ端子Ｃを介して図１３のステップＳ５１に戻る。
【００５０】
一方、先頭ポインタがＮＵＬＬであれば、管理プログラム１２１は、末尾ポインタにＮＵＬＬを設定するようにスイッチＬＳＩ１１０の管理部１１２に指示する（ステップＳ７１）。これによって、スイッチＬＳＩ１１０のキューにアドレス学習すべきエントリが存在しない状態が確定する。すなわち、図１６に示すように、管理部１１２内の先頭ポインタ格納部１１２１及び末尾ポインタ格納部１１２２には共にＮＵＬＬが登録されることになる。このステップは、図１２のステップＳ４５に関連する。そして端子Ｃを介して図１３のステップＳ５１に戻る。
【００５１】
このような処理を実施することによって、スイッチＬＳＩ１１０のキューの先頭エントリから適切にアドレス学習が実施されるようになる。さらに、キューを適切に更新して、存在する場合には順番に学習すべきエントリについてアドレス学習を行うようになっている。
【００５２】
次に、図１９を用いて、ＤＡ処理について説明する。まず、受信したパケットのＤＡでＦＤＢ１１１を検索する（ステップＳ８１）。そしてＤＡがＦＤＢ１１１に未登録であるか判断する（ステップＳ８３）。ＤＡがＦＤＢ１１１に未登録の場合には、いずれのポートにＤＡに係る装置が接続されているか分からないということになるので、パケットを受信したポートを除き全ポートに対してパケットを転送する（ステップＳ８９）。そして元の処理に戻る。
【００５３】
一方、ＤＡがＦＤＢ１１１に登録済みであれば、本実施の形態では、学習状態フラグ１１１１が設定されているのでこれを確認する。そして、学習状態フラグ１１１１が学習中を示している場合には、まだこのアドレスについては登録すべきか否かを決定しておらず、他のポートにこのパケットを処理すべき装置がいるかもしれないので、ステップＳ８９に移行して、パケットを受信したポートを除き全ポートにパケットを転送する。
【００５４】
一方、学習状態フラグ１１１１が学習済を示している場合には、当該エントリに含まれる出力ポートにパケットを出力する（ステップＳ８７）。学習済みであれば該当エントリを使用しても良いので、このようにパケットを出力する。そして元の処理に戻る。
【００５５】
以上のような処理を実施することによって、ＤＡが学習済としてＦＤＢ１１１に登録されていない場合には、全ポートに転送してそれらのポートに接続されている装置等に受信すべきパケットかを判断させるようになっている。
【００５６】
以上述べたように学習状態フラグ１１１１を適切に管理することにより、重複するアドレス学習を効率的にフィルタすることができ、キューを適切に管理することによってスイッチ管理プロセッサ１２０の処理速度が遅い場合においてもアドレス学習要求の取りこぼしがなくなる。すなわち、学習状態フラグ１１１１及びタグ格納部１１３という最小限のリソース追加で、アドレス学習の効率化が図られ、取りこぼしもなくなる。これにより、スイッチ管理プロセッサ１２０で高度なアドレス学習を実施しても、それによる性能インパクトを非常に小さなものに抑えることができる。
【００５７】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図３に示した機能ブロック図は一例であって、場合によってはスイッチＬＳＩ１１０とスイッチ管理プロセッサ１２０が一体化される場合もある。そのような場合においても本実施の形態は動作する。
【００５８】
また、処理フローについても、処理結果が変わらない限りにおいて、処理順番を入れ替えたり、並列に実行したりしても良い場合がある。
【００５９】
以上本実施の形態をまとめると以下のようになる。
【００６０】
本技術の第１の態様に係るネットワーク接続装置は、複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサとを有する。そして、上で述べたスイッチ部は、ポートに接続されている装置のアドレスと、プロセッサがアドレスを学習したか否かを表す学習データと、装置が接続されているポートの識別子とを含むエントリを格納するテーブルを有している。そして、スイッチ部は、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが上記テーブルに登録されていない場合、送信元アドレスと送信元アドレスを学習中であることを表す学習データと特定のポートの識別子とを含むエントリを上記テーブルに登録すると共に、プロセッサに送信元アドレスの学習を要求し、特定のポートから特定の装置の送信元アドレスを含む第２のパケットを受信した際に上記テーブルに特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、上記プロセッサに送信元アドレスの学習を要求しない。さらに、上記プロセッサから上記テーブルにおける特定のエントリの学習データを学習済みに変更する要求を受信した場合、上記テーブルにおいて特定のエントリの学習データを学習済みに設定する。
【００６１】
このように学習データを上で述べたようなテーブルにおいて管理することによって、重複するアドレス学習を適切にフィルタリングすることができるようになり、効率的なアドレス学習がプロセッサで実施できるようになる。
【００６２】
なお、上で述べたスイッチ部とプロセッサとは別のハードウエア・モジュールである場合もある。このような場合には、レイテンシの問題から、上で述べたような構成が特に有効である。
【００６３】
また、上で述べたスイッチ部が、特定のポートから特定の送信先アドレスを含む第２のパケットを受信した際に上記テーブルに特定の送信先アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、第２のパケットを、特定のポートを除く複数のポートに出力するようにしてもよい。このように学習中においては、送信先アドレスが本当に登録しても良いものであるか未確定であるので、パケットをブロードキャストすることによって各ポートに接続されている装置において自らが該当する装置であるか否かを判断させるものである。
【００６４】
さらに、上で述べたテーブルにおいて学習データが学習中であることを表しているエントリの学習順番を管理するための機構をさらに有するようにしてもよい。このような構成を保持することによって、プロセッサの処理速度が低い場合においても、正しい順番で取りこぼしなくアドレスの学習を行うことができるようになる。
【００６５】
また、上で述べた機構において、エントリ毎に、ポインタフィールドが設けられ、ポインタフィールドに、学習データが学習中であることを表しているエントリに対応付けて、次に学習すべきエントリへのポインタが登録されるようにしてもよい。さらに、最初に学習すべきエントリへのポインタ及び最後に学習すべきエントリへのポインタを別途保持するようにしてもよい。このようにすれば、簡単な構成で上で述べた機構を実現でき、上記テーブルがアドレス学習のリクエストキューとしても機能することとなる。なお、ポインタフィールドが上で述べたテーブルと一体化される場合もあれば、異なるメモリ又は記録領域に保持される場合もある。一体化された場合の方が、処理が簡単でメモリ利用効率も高くなる。
【００６６】
なお、このようなポインタフィールド等を用いる場合には、上で述べたスイッチ部は、最後に学習すべきエントリへのポインタが既に登録されている場合には、当該最後に学習すべきエントリについてのポインタフィールドに、上記テーブルに新たに登録されたエントリのアドレスを登録し、上記テーブルに新たに登録されたエントリのアドレスを、最後に学習すべきエントリへのポインタとして登録するようにしてもよい。そして、上記プロセッサに送信元アドレスの学習を要求した後に上記プロセッサからの先頭ポインタの要求に応じて、最初に学習すべきエントリへのポインタが示す先頭エントリのアドレスを上記プロセッサに出力し、上記プロセッサからの先頭エントリのアドレスを指定した先頭エントリ取得要求に応じて、上記テーブルから先頭エントリのデータ及び当該先頭エントリに対応付けられているポインタフィールドに格納されているアドレスを読み出してプロセッサに出力し、さらにプロセッサからの先頭エントリに対応付けられているポインタフィールドに格納されているアドレスの設定要求に応じて、最初に学習すべきエントリへのポインタとして上記アドレスの設定要求に含まれるアドレスを登録するようにしてもよい。このようにすれば、適切に学習の順番が管理されるようになる。
【００６７】
また、本技術の第２の態様に係る、ネットワーク接続装置用のスイッチング回路装置は、複数のポートのうちあるポートに接続されている装置のアドレスと、特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサが特定のアドレスを学習したか否かを表す学習データと、上記装置が接続されているポートの識別子とを含むエントリを格納するテーブルと、管理部とを有している。そして、管理部は、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが上記テーブルに登録されていない場合、送信元アドレスと送信元アドレスを学習中であることを表す学習データと特定のポートの識別子とを含むエントリを上記テーブルに登録すると共に、上記プロセッサに送信元アドレスの学習を要求する。また、特定のポートから特定の装置の送信元アドレスを含む第２のパケットを受信した際に上記テーブルに特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、上記プロセッサに送信元アドレスの学習を要求しない。さらに、上記プロセッサから上記テーブルにおける特定のエントリの学習データを学習済みに変更する要求を受信した場合、上記テーブルにおいて特定のエントリの学習データを学習済みに設定する。
【００６８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６９】
（付記１）
複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、
前記スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサと、
を有し、
前記スイッチ部は、
前記ポートに接続されている装置のアドレスと、前記プロセッサが前記アドレスを学習したか否かを表す学習データと、前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルを有しており、
特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが前記テーブルに登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求し、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに前記送信元アドレスの学習を要求せず、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定する
ネットワーク接続装置。
【００７０】
（付記２）
前記スイッチ部が、
前記特定のポートから特定の送信先アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の送信先アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記第２のパケットを、前記特定のポートを除く前記複数のポートに出力する
付記１記載のネットワーク接続装置。
【００７１】
（付記３）
前記テーブルにおいて前記学習データが学習中であることを表しているエントリの学習順番を管理するための機構をさらに有する付記１又は２記載のネットワーク接続装置。
【００７２】
（付記４）
前記機構において、
前記エントリ毎に、ポインタフィールドが設けられ、
前記ポインタフィールドに、前記学習データが学習中であることを表しているエントリに対応付けて、次に学習すべきエントリへのポインタが登録され、
さらに、最初に学習すべきエントリへのポインタ及び最後に学習すべきエントリへのポインタを別途保持する
付記３記載のネットワーク接続装置。
【００７３】
（付記５）
複数のポートのうち第１のポートから受信したパケットを第２のポートへ出力するスイッチ部と、前記スイッチ部からの要求に応答して特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサとを有するネットワーク接続装置により実行されるアドレス学習処理方法であって、
前記ポートに接続されている装置のアドレスと前記プロセッサが前記アドレスを学習したか否かを表す学習データと前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルに、特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求する要求ステップと、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに対する前記送信元アドレスの学習の要求を抑制するステップと、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定するステップと、
を含むアドレス学習処理方法。
【００７４】
（付記６）
前記スイッチ部において、
前記エントリ毎に、ポインタフィールドが設けられ、
前記ポインタフィールドには、前記学習データが学習中であることを表しているエントリに対応付けて、次に学習すべきエントリへのポインタが登録され、
さらに、最初に学習すべきエントリへのポインタ及び最後に学習すべきエントリへのポインタを別途保持し、
前記要求ステップにおいて、
前記最後に学習すべきエントリへのポインタが既に登録されている場合には、当該最後に学習すべきエントリについての前記ポインタフィールドに、前記要求ステップにおいて前記テーブルに新たに登録されたエントリのアドレスを登録し、
前記要求ステップにおいて前記テーブルに新たに登録されたエントリのアドレスを、前記最後に学習すべきエントリへのポインタとして登録し、
前記要求ステップの後に前記プロセッサからの先頭ポインタの要求に応じて、前記最初に学習すべきエントリへのポインタが示す先頭エントリのアドレスを前記プロセッサに出力するステップと、
前記プロセッサからの前記先頭エントリのアドレスを指定した先頭エントリ取得要求に応じて、前記テーブルから前記先頭エントリのデータ及び当該先頭エントリに対応付けられている前記ポインタフィールドに格納されているアドレスを読み出して前記プロセッサに出力するステップと、
前記プロセッサからの前記先頭エントリに対応付けられている前記ポインタフィールドに格納されているアドレスの設定要求に応じて、前記最初に学習すべきエントリへのポインタとして前記アドレスの設定要求に含まれるアドレスを登録するステップと、
をさらに含む付記５記載のアドレス学習処理方法。
【００７５】
（付記７）
複数のポートのうちあるポートに接続されている装置のアドレスと、特定のアドレスについて所定の学習処理を実施する管理プログラムを実行するプロセッサが前記特定のアドレスを学習したか否かを表す学習データと、前記装置が接続されているポートの識別子とを含むエントリを格納するテーブルと、
管理部とを有しており、
前記管理部が、
特定のポートから受信したパケットに含まれる特定の装置の送信元アドレスが前記テーブルに登録されていない場合、前記送信元アドレスと前記送信元アドレスを学習中であることを表す学習データと前記特定のポートの識別子とを含むエントリを前記テーブルに登録すると共に、前記プロセッサに前記送信元アドレスの学習を要求し、
前記特定のポートから前記特定の装置の送信元アドレスを含む第２のパケットを受信した際に前記テーブルに前記特定の装置の送信元アドレスと学習中であることを表す学習データとを含むエントリが登録済みである場合には、前記プロセッサに前記送信元アドレスの学習を要求せず、
前記プロセッサから前記テーブルにおける特定のエントリの前記学習データを学習済みに変更する要求を受信した場合、前記テーブルにおいて前記特定のエントリの前記学習データを学習済みに設定する、
ネットワーク接続装置用のスイッチング回路装置。
【符号の説明】
【００７６】
１００  Ｌ２スイッチ    １１０  スイッチＬＳＩ
１２０  スイッチ管理プロセッサ
１１１  ＦＤＢ    １１２  管理部
１１３  タグ格納部
１１１１  学習状態フラグ
１１２１  先頭ポインタ格納部
１１２２  末尾ポインタ格納部
１２１  管理プログラム
【図１】
2010251928.tif 000003
【図２】
2010251928.tif 000004
【図３】
2010251928.tif 000005
【図４】
2010251928.tif 000006
【図５】
2010251928.tif 000007
【図６】
2010251928.tif 000008
【図７Ａ】
2010251928.tif 000009
【図７Ｂ】
2010251928.tif 000010
【図８】
2010251928.tif 000011
【図９】
2010251928.tif 000012
【図１０】
2010251928.tif 000013
【図１１】
2010251928.tif 000014
【図１２】
2010251928.tif 000015
【図１３】
2010251928.tif 000016
【図１４】
2010251928.tif 000017
【図１５】
2010251928.tif 000018
【図１６】
2010251928.tif 000019
【図１７】
2010251928.tif 000020
【図１８】
2010251928.tif 000021
【図１９】
2010251928.tif 000022