(57)【要約】【課題】アドレス学習に基づいてフレームを転送するネットワークの輻輳を抑制する。【解決手段】通信装置は、テーブル、学習制御部、および格納部を有する。テーブルは、フレーム転送を制御するための転送情報を格納する。学習制御部は、受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルに登録することにより受信フレームの送信元アドレスを学習する。格納部は、指定されたグループ毎に学習可能なアドレスの上限数を格納する。学習制御部は、受信フレームに対応するグループにおけるアドレスの学習数と、受信フレームに対応するグループに対して与えられている上限数との比較に基づいて、受信フレームの送信元アドレスを学習できるか否かを判定する。【選択図】図４
2014072581.tif 000002
【特許請求の範囲】
【請求項１】
フレーム転送を制御するための転送情報を格納するテーブルと、
受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルに登録することにより前記受信フレームの送信元アドレスを学習する学習制御部と、
指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部と、を有し、
前記学習制御部は、受信フレームに対応するグループにおけるアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする通信装置。
【請求項２】
前記格納部は、前記グループ毎に、前記テーブルへのアドレスの登録の優先度を表す複数の学習優先度に対してそれぞれ学習可能なアドレスの上限数を格納する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記格納部は、前記グループ毎に、第１の学習優先度で学習可能なアドレスの上限数を表す第１の上限数、および前記第１の学習優先度よりも低い第２の学習優先度で学習可能なアドレスの上限数を表す第２の上限数を格納し、
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスを学習できると判定し、
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数に達しているときは、前記学習制御部は、受信フレームに対応するグループにおける前記第２の学習優先度でのアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている前記第２の上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルの空きエントリに格納する
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を、前記第２の学習優先度でアドレスが登録されているエントリの１つに格納する
ことを特徴とする請求項３に記載の通信装置。
【請求項６】
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数に達しているときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を、前記第１の学習優先度でアドレスが登録されているエントリの１つに格納する
ことを特徴とする請求項３に記載の通信装置。
【請求項７】
受信フレームに対応するグループおよび前記受信フレームに付与されているフレーム優先度に基づいて、学習優先度を選択する学習優先度選択部をさらに有し、
前記学習制御部は、受信フレームに対応するグループにおける前記学習優先度選択部により選択された学習優先度でのアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている、前記学習優先度選択部により選択された学習優先度に対応する上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする請求項３に記載の通信装置。
【請求項８】
前記格納部は、前記グループ毎に、前記第１の学習優先度で学習されたアドレスを前記テーブルに保持しておく時間を表す第１のエージング時間、および前記第２の学習優先度で学習されたアドレスを前記テーブル保持しておく時間を表す第２のエージング時間を格納し、
前記学習制御部は、前記第１の学習優先度で前記テーブルに登録されているアドレスに対して前記第１のエージング時間でエージング処理を行い、前記第２の学習優先度で前記テーブルに登録されているアドレスに対して前記第２のエージング時間でエージング処理を行う
ことを特徴とする請求項３に記載の通信装置。
【請求項９】
フレーム転送を制御するための転送情報を格納するテーブルに、受信フレームの送信元アドレスおよび対応する転送情報を登録することにより、前記受信フレームの送信元アドレスを学習するアドレス学習方法であって、
ネットワーク毎に学習可能なアドレスの上限数を格納する格納部から、受信フレームが属するネットワークに対応する上限数を取得し、
前記受信フレームが属するネットワークのアドレスの学習数と、前記受信フレームが属するネットワークに対応する上限数との比較の結果に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とするアドレス学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレーム転送を制御する通信装置に係わる。
【背景技術】
【０００２】
インターネットおよびモバイル通信の普及などにより、通信事業者が提供するキャリアネットワークは、ＳＯＮＥＴ／ＳＤＨ（Synchronous Optical NETwork/Synchronous Digital Hierarchy）等のＴＤＭネットワークから、Ethernet（登録商標）技術およびＩＰ技術を利用するパケットネットワークへ移行しつつある。広域Ethernetサービスまたはモバイルネットワークのようなパケットネットワークにおいて、フレーム転送処理は、フレームのＭＡＣ（Media Access Control）アドレスを学習することで行われる。
【０００３】
ＭＡＣアドレスの学習は、フレーム転送装置などの通信装置において、受信フレームの送信元ＭＡＣアドレスおよびその受信フレームの入力ポート情報をＭＡＣアドレステーブルに登録することにより実現される。入力ポート情報は、例えば、インタフェースカードを識別するカード番号および物理的な通信ポートを識別するポート番号を含む。例えば、フレーム転送装置において、ある１つのインタフェースカードのある１つの物理的な通信ポートにフレームが到着したときは、そのインタフェースカードを識別するカード番号およびその通信ポートを識別するポート番号が、受信フレームの送信元ＭＡＣアドレスと共にＭＡＣアドレステーブルに登録される。
【０００４】
フレーム転送装置は、上述のＭＡＣアドレステーブルを利用して受信フレームを転送する。すなわち、フレーム転送装置は、受信フレームの宛先ＭＡＣアドレスでＭＡＣアドレステーブルを検索することにより、宛先に対応するカード番号およびポート番号を特定する。そして、フレーム転送装置は、特定したインタフェースカードの通信ポートを介してフレームを送信する。
【０００５】
なお、受信フレームの宛先ＭＡＣアドレスが学習されていないとき（すなわち、受信フレームの宛先ＭＡＣアドレスがＭＡＣアドレステーブルに登録いないとき）は、フレーム転送装置は、すべての通信ポートを介してそのフレームをブロードキャスト転送する。このようなブロードキャスト転送は、フラッディングと呼ばれることがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１１４７２４号公報
【非特許文献】
【０００７】
【非特許文献１】IEEE Std 802.1D-2004
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来技術のＭＡＣアドレス学習においては、新規のＭＡＣアドレスが検出されると、その新規のＭＡＣアドレスは、単に、ＭＡＣアドレステーブル内の空きエントリに登録される。このため、たとえば、特定のユーザに係わる大量のＭＡＣアドレスの学習が行われると、ＭＡＣアドレステーブルの多くのエントリがその特定のユーザによって占有されてしまい、他のユーザに係わるＭＡＣアドレスの学習が行えなくなってしまう。この場合、他のユーザのトラヒックに対して大量のフラッディングが発生し、ネットワークが輻輳してしまう。このように、従来技術においては、各ユーザに対してネットワーク資源（ここでは、ＭＡＣアドレステーブルのエントリ）が公平に割り当てられないことがある。
【０００９】
なお、上述の問題は、ＭＡＣアドレスの学習のみに係わるものではなく、フレームの転送先を制御するための情報をメモリに格納する通信装置において発生し得る。
本発明の目的は、アドレス学習に基づいてフレームを転送するネットワークの輻輳を抑制することである。
【課題を解決するための手段】
【００１０】
本発明の１つの態様の通信装置は、フレーム転送を制御するための転送情報を格納するテーブルと、受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルに登録することにより前記受信フレームの送信元アドレスを学習する学習制御部と、指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部と、を有する。前記学習制御部は、受信フレームに対応するグループにおけるアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する。
【発明の効果】
【００１１】
上述の態様によれば、アドレス学習に基づいてフレームを転送するネットワークの輻輳が抑制される。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態の通信装置が使用されるネットワークの一例を示す図である。
【図２】通信装置の構成を示す図である。
【図３】通信装置により転送されるフレームのフォーマットの例を示す図である。
【図４】第１の実施形態に係る通信装置の構成を示す図である。
【図５】通信装置内で伝送されるフレームのフォーマットの例を示す図である。
【図６】第１の実施形態において管理されるテーブルの例を示す図である。
【図７】第１の実施形態のアドレス学習を示すフローチャートである。
【図８】第２の実施形態に係る通信装置の構成を示す図である。
【図９】第２の実施形態において管理されるテーブルの例を示す図である。
【図１０】第２の実施形態のアドレス学習を示すフローチャートである。
【図１１】第３の実施形態に係る通信装置の構成を示す図である。
【図１２】第３の実施形態において管理されるテーブルの例を示す図である。
【図１３】第３の実施形態のアドレス学習を示すフローチャートである。
【図１４】図１３の学習処理Ａを示すフローチャートである。
【図１５】図１３の学習処理Ｂを示すフローチャートである。
【図１６】図１３の学習処理Ｃを示すフローチャートである。
【図１７】図１３の学習処理Ｄを示すフローチャートである。
【図１８】図１３の学習処理Ｅを示すフローチャートである。
【図１９】図１３の学習処理Ｆを示すフローチャートである。
【図２０】学習上限数の設定例を示す図である。
【図２１】エージング処理の一例を示すフローチャートである。
【図２２】第５の実施形態に係る通信装置の構成を示す図である。
【図２３】第５の実施形態において管理されるテーブルの例を示す図である。
【図２４】第５の実施形態のアドレス学習を示すフローチャートである。
【図２５】第６の実施形態のアドレス学習を示すフローチャートである。
【発明を実施するための形態】
【００１３】
図１は、本発明の実施形態の通信装置が使用されるネットワークの一例を示す。このネットワークは、図１に示すように、複数の通信装置１（１ａ〜１ｆ）によって構築されている。各通信装置１は、例えば光ファイバにより、１または複数の他の通信装置１と接続されている。例えば、通信装置１ａは、通信装置１ｂ、１ｄ、１ｅと接続されており、通信装置１ｂは、通信装置１ａ、１ｃ、１ｄ、１ｅ、１ｆと接続されている。また、各通信装置１は、１または複数のユーザ端末２を収容することができる。図１に示す例では、通信装置１ａ、１ｃ、１ｄ、１ｆが、それぞれ複数のユーザ端末２を収容している。
【００１４】
通信装置１は、ユーザ端末２または他の通信装置１から受信するフレームを、宛先へ向かって転送する。すなわち、通信装置１は、受信フレームの宛先アドレスに基づいてそのフレームを転送することができる。例えば、ユーザ端末２からEthernetフレームまたはＩＰフレームが送信される場合、通信装置１は、受信フレーム内に格納されているＭＡＣアドレスまたはＩＰアドレス等に基づいて、そのフレームの転送処理を行う。なお、この明細書では、フレームおよびパケットを互いに区別しないことにする。したがって、「フレーム」は、パケットを含むものとする。
【００１５】
図２は、通信装置１の構成を示す。通信装置１は、図２に示すように、複数のインタフェース部１１、スイッチ部１２、制御部１３を有する。また、通信装置１には、制御端末１４が接続されている。
【００１６】
各インタフェース部１１は、複数のポートを有する。この実施例では、通信装置１は、１つの対向装置（他の通信装置１またはユーザ端末２）に対して１組の入力ポートおよび出力ポートを有する。すなわち、通信装置１は、対向装置から送信されるフレームを入力ポートを介して受信し、出力ポートを介して対向装置へフレームを送信する。
【００１７】
インタフェース部１１は、ポートを介して受信するフレームを終端し、そのフレームをスイッチ部１２へ送る。また、インタフェース部１１は、スイッチ部１２から導かれてくるフレームを、そのパケットの宛先に対応するポートを介して出力する。なお、インタフェース部１１は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００１８】
スイッチ部１２は、複数のインタフェース部１１に接続されている。そして、スイッチ部１２は、インタフェース部１１から入力されるフレームを、その宛先に対応するインタフェース部１１へ導く。なお、スイッチ部１２は、フレーム転送を制御するためのプロセッサ、メモリ、およびハードウェア回路を含む。また、スイッチ部１２は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００１９】
制御部１３は、ＣＰＵおよびメモリを含み、インタフェース部１１およびスイッチ部１２の動作を制御する。また、制御部１３は、アラーム情報および／または統計情報を収集することもできる。なお、制御部１３は、例えば、着脱可能なモジュール、ボード、またはカードで実現される。
【００２０】
制御端末１４は、制御部１３に接続されるコンピュータであり、ユーザまたはネットワーク管理者の指示を通信装置１に与える。なお、制御端末１４は、通信装置１の一部であってもよい。
【００２１】
インタフェース部１１、スイッチ部１２、制御部１３は、個々に着脱可能である必要はなく、例えば、マザーボードによって一体化されていてもよい。また、通信装置１は、インタフェース部１１、スイッチ部１２、制御部１３に加えて、他の要素を含んでいてもよい。
【００２２】
図３は、通信装置１により伝送されるフレームのフォーマットの例を示す。ここでは、通信装置１は、Ethernetフレームを伝送するものとする。なお、図３に示す括弧付きの数字は、ビット数を表す。
【００２３】
Ethernetフレームは、図３（ａ）に示すように、宛先ＭＡＣアドレス（MAC DA）、送信元ＭＡＣアドレス（MAC SA）、イーサネット（登録商標）タイプ（E-TYPE）、プロトコルデータユニット（PDU）、フレームチェックシーケンス（FCS）を有する。イーサネットタイプは、プロトコルデータユニットに格納されるメッセージのタイプを識別する。一例としては、0x0800は、ＩＰｖ４フレームを表す。なお、イーサネットタイプは、例えば、ＩＡＮＡにより規定される。プロトコルデータユニットは、上位レイヤのメッセージを格納する。フレームチェックシーケンスは、フレーム誤り検出のために使用され、例えば、ＣＲＣ３２符号により実現される。
【００２４】
図３（ｂ）は、ＶＬＡＮタグが付与されたEthernetフレームのフォーマットを示す。ＶＬＡＮタグは、タグプロトコル識別子（TPID）、優先度（Priority）、ＤＥＩ（Drop Eligible Indicator）、仮想ＬＡＮ識別子（VLAN ID）を含む。タグプロトコル識別子には、フレーム内に仮想ＬＡＮ識別子が格納されていることを表す値が設定される。たとえば、タグプロトコル識別子として、IEEE802.1Qで規定される0x8100が設定される。優先度は、フレーム自体の優先度を表す。図３（ｂ）に示す例では、優先度は、３ビットであり、８クラスの優先度を表示できる。ＤＥＩは、廃棄優先度を表す。ネットワークが輻輳しているときは、ＤＥＩ＝１が設定されているフレームが優先的に廃棄される。仮想ＬＡＮ識別子は、ユーザを識別することができる。なお、タグプロトコル識別子および仮想ＬＡＮ識別子の組合せがＶＬＡＮタグと呼ばれることがある。
【００２５】
＜第１の実施形態＞
図４は、第１の実施形態に係る通信装置の構成を示す。図４においては、スイッチ部１２および２つのインタフェース部１１のみが示されている。各インタフェース部１１は、着脱可能なカードにより実現され、ＩＦカード番号（＃０、＃１、．．．）で識別されるものとする。
【００２６】
インタフェース部１１には、複数のポートが実装されている。図４に示す例では、各インタフェース部１１に１０個のポートが実装されている。各ポートは、ポート番号（＃０〜＃９）により識別される。
【００２７】
インタフェース部１１は、ＰＨＹ／ＭＡＣ回路２１を有する。ＰＨＹ／ＭＡＣ回路２１は、物理レイヤおよびＭＡＣレイヤを制御する機能を有し、Ethernetフレームを終端する。すなわち、ＰＨＹ／ＭＡＣ回路２１は、ネットワークからポートを介して入力されるフレームを終端し、スイッチ部１２へ送る。また、ＰＨＹ／ＭＡＣ回路２１は、スイッチ部１２から導かれてくるフレームを、ヘッダ情報が指定するポートを介してネットワークへ送信する。
【００２８】
図５は、通信装置内で伝送されるフレームのフォーマットの例を示す。通信装置１の内部では、Ethernetフレームに装置内フレームヘッダが付与される。装置内フレームヘッダは、宛先ＩＦカード番号、宛先ポート番号、送信元ＩＦカード番号、送信元ポート番号を含む。
【００２９】
ネットワークからフレームを受信したインタフェース部１１（以下、入力ＩＦカード）は、受信フレームに装置内フレームヘッダを付与する。送信元ＩＦカード番号には、入力ＩＦカードを識別するカード番号（図４に示す例では、カード番号＃０）が設定される。また、送信元ポート番号には、受信フレームが到着したポートを識別するポート番号（図４に示す例では、ポート番号＃０）が設定される。なお、この時点では、宛先ＩＦカード番号および宛先ポート番号は特定されていないので、これらの領域には、例えば、デフォルト値が設定される。
【００３０】
宛先ＩＦカード番号および宛先ポート番号は、後で説明するが、スイッチ部１２においてＭＡＣアドレステーブルを参照することによって特定される。すなわち、宛先ＩＦカード番号および宛先ポート番号は、スイッチ部１２において設定される。宛先ＩＦカード番号は、フレームの宛先に接続されるインタフェース部１１（以下、出力ＩＦカード）を識別する。また、宛先ポート番号は、フレームの宛先に接続されるポートを識別する。
【００３１】
このように、入力ＩＦカードは、受信フレームに装置内フレームヘッダを付与してスイッチ部１２に送る。スイッチ部１２は、ＭＡＣアドレステーブルを検索することにより、宛先ＩＦカード番号および宛先ポート番号を取得する。そして、スイッチ部１２は、宛先ＩＦカード番号により識別される出力ＩＦカードへそのフレームを導く。そして、出力ＩＦカードは、宛先ポート番号により識別されるポートを介してそのフレームを出力する。このとき、出力ＩＦカードのＰＨＹ／ＭＡＣ回路２１は、送信フレームから装置内フレームヘッダを削除する。
【００３２】
スイッチ部１２は、宛先ＭＡＣアドレスに基づいて受信フレームを転送する機能を有する。また、スイッチ部１２は、効率的なフレーム転送を実現するために、ＭＡＣアドレスを学習する機能を有する。そして、スイッチ部１２は、これらの機能を実現するために、ＭＡＣアドレステーブル３１、スイッチ回路３２、テーブル制御部３３、ポートテーブル３４、ポート学習カウンタ３５を有する。
【００３３】
ＭＡＣアドレステーブル３１は、図６（ｃ）に示すように、ＭＡＣアドレスをインデックスとして、有効ビット（Ｖ）、ポートＩＤ、ＩＦカード番号、ポート番号、エージング時間を格納する。有効ビットは、対応するエントリが有効であるか否かを表す。ＩＦカード番号は、受信フレームの転送先のインタフェース部１１（すなわち、出力ＩＦカード）を表す。ポート番号は、受信フレームの転送先のポート番号を表す。ポートＩＤおよびエージング時間については、後で説明する。
【００３４】
インデックスとして使用されるＭＡＣアドレスは、ハッシュ演算などにより、本来のビット数（例えば、４８ビット）よりも少ないビット数へ縮退されていてもよい。また、ＭＡＣアドレステーブル３１は、たとえば、ＳＲＡＭメモリで実現してもよいし、連想メモリ（ＣＡＭ：Content Addressable Memory）で実現してもよい。ＭＡＣアドレステーブル３１を連想メモリで実現する場合は、ＭＡＣアドレスに基づく検索キーが、メモリインデックスとして使用される。
【００３５】
スイッチ回路３２は、受信フレームをいったんバッファに格納する。また、スイッチ回路３２は、その受信フレームの宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、および装置内フレームヘッダをテーブル制御部３３に渡す。そうすると、テーブル制御部３３は、宛先ＭＡＣアドレスに対応する宛先ＩＦカード番号および宛先ポート番号を特定する。スイッチ回路３２は、宛先ＩＦカード番号および宛先ポート番号が設定された装置内フレームヘッダをテーブル制御部３３から受け取る。そして、スイッチ回路３２は、バッファに格納されている受信フレームを、宛先ＩＦカード番号によって識別されるインタフェース部１１へ転送する。なお、スイッチ回路３２は、受信フレームの装置内フレームヘッダに格納されている送信元カード番号および送信元ポート番号で、後述するポートテーブル３４にアクセスすることができる。
【００３６】
テーブル制御部３３は、受信フレームの宛先ＭＡＣアドレスでＭＡＣアドレステーブル３１を検索する。このＭＡＣアドレスがＭＡＣアドレステーブル３１に登録されていれば（すなわち、ＭＡＣアドレスが既に学習されていれば）、テーブル制御部３３は、対応する宛先カード番号および宛先ポート番号を取得する。そして、テーブル制御部３３は、検索により取得した宛先カード番号および宛先ポート番号を、受信パケットの装置内フレームヘッダに設定する。この場合、スイッチ回路３２は、上述したように、宛先ＩＦカード番号によって識別されるインタフェース部１１へ、受信フレームを転送する。
【００３７】
受信フレームの宛先ＭＡＣアドレスがＭＡＣアドレステーブル３１に登録されていなければ（すなわち、ＭＡＣアドレスが学習されていなければ）、テーブル制御部３３は、受信フレームのＭＡＣアドレスが未学習であることをスイッチ回路３２に通知する。そうすると、スイッチ回路３２は、受信フレームが到着したポートを除くすべてのポートに対して、その受信フレームをブロードキャスト転送（すなわち、フラッディング）する。ブロードキャスト転送においては、スイッチ回路３２が受信フレームをコピーして複数の同じフレームを生成する。
【００３８】
テーブル制御部３３は、受信フレームの宛先ＭＡＣアドレスに基づいて宛先カード番号および宛先ポート番号を特定する機能に加えて、受信フレームの送信元ＭＡＣアドレスを学習する機能を有する。すなわち、テーブル制御部３３は、受信フレームの送信元アドレスを学習する学習制御部の一例である。或いは、テーブル制御部３３は、受信フレームの送信元アドレスおよび対応する転送情報をＭＡＣアドレステーブルに登録することにより受信フレームの送信元アドレスを学習する機能を有する。テーブル制御部３３は、ＭＡＣアドレス学習において、以下の処理を行う。
【００３９】
（１）受信フレームの送信元ＭＡＣアドレスがＭＡＣアドレステーブル３１に登録されておらず、且つ、ＭＡＣアドレステーブル３１に空きエントリがあるときは、テーブル制御部３３は、その送信元ＭＡＣアドレスを学習する。このとき、対応する転送情報として、受信フレームの送信元カード番号および送信元ポート番号がＭＡＣアドレステーブル３１に登録される。また、予め指定されているエージング時間の初期値が設定される。
【００４０】
（２）受信フレームの送信元ＭＡＣアドレスが既にＭＡＣアドレステーブル３１に登録されており、且つ、受信フレームの送信元カード番号および送信元ポート番号と、ＭＡＣアドレステーブル３１に登録されている送信元カード番号および送信元ポート番号とが互いに一致するときは、テーブル制御部３３は、対応するエントリのエージング時間を初期値に更新する。
【００４１】
（３）受信フレームの送信元ＭＡＣアドレスが既にＭＡＣアドレステーブル３１に登録されており、且つ、受信フレームの送信元カード番号および送信元ポート番号が、ＭＡＣアドレステーブル３１に登録されている送信元カード番号および送信元ポート番号と異なるときは、テーブル制御部３３は、ＭＡＣアドレステーブル３１に登録されている送信元カード番号および送信元ポート番号を更新する。また、エージング時間は、初期値に更新される。なお、このような状態は、例えば、端末装置が移動して異なるポートに接続された場合などに起り得る。
【００４２】
なお、第１の実施形態においては、後述するように、ポートＩＤ毎に、学習録可能なアドレスの上限数が決められている。よって、第１の実施形態では、上述のケース（１）であっても、ＭＡＣアドレス学習が行われないことがある。
【００４３】
テーブル制御部３３は、古いＭＡＣアドレスをＭＡＣアドレステーブル３１から削除するエージング処理を実行する。すなわち、ＭＡＣアドレステーブル３１にＭＡＣアドレスが登録されたときに、対応するエントリの「エージング時間」として所定の初期値が設定される。初期値は、例えば、５分である。テーブル制御部３３は、定期的に（例えば、１秒間隔）、各エントリのエージング時間をデクリメントする。そして、エージング時間がゼロになったエントリにおいて、有効ビットが「１：有効」から「０：無効」に書き換えられる。この結果、このエントリは、空きエントリとなる。
【００４４】
なお、あるエントリのエージング時間がゼロになる前に、そのエントリに対応する送信元ＭＡＣアドレスを有するフレームがスイッチ部１２に入力されると、エージング時間は初期値（例えば、５分）に戻る。したがって、同じ送信元ＭＡＣアドレスを有するフレームが繰り返し通信装置１に到着している期間は、そのＭＡＣアドレスに対応するエントリがＭＡＣアドレステーブル３１から削除されることはない。
【００４５】
スイッチ回路３２およびテーブル制御部３３は、例えば、プロセッサシステム３０により実現される。プロセッサシステム３０は、プロセッサおよびメモリを含む。この場合、プロセッサシステム３０は、ソフトウェアプログラムを実行することで、アドレス学習機能を提供してもよい。ただし、スイッチ回路３２およびテーブル制御部３３は、ハードウェア回路を含んでもよい。また、スイッチ回路３２およびテーブル制御部３３は、ＡＳＩＣ（Application Specific IC）、ＦＰＧＡ（Field Programmable gate array）等で実現されるようにしてもよい。
【００４６】
ポートテーブル３４は、図６（ａ）に示すように、カード番号およびポート番号をインデックスとして、有効ビット（Ｖ）、ポートＩＤ、学数上限数、エージング時間、フレームコピー情報を格納する。ポートテーブル３４は、スイッチ回路３２がアクセス可能なメモリ領域に作成される。なお、ポートテーブル３４は、指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部の一例である。
【００４７】
有効ビットは、対応するエントリが有効であるか否かを表す。ポートＩＤは、通信装置内で使用される識別情報であり、論理的に定義されるポート（以下、論理ポート）を識別する。論理ポートは、１または複数の物理ポートに対応して生成される。図６（ａ）に示す例では、論理ポート１には、２つの物理ポート（カード＃０のポート＃０およびカード＃０のポート＃１）が対応付けられている。論理ポート２には、１つの物理ポート（カード＃０のポート＃２）が対応付けられている。なお、第１の実施形態では、１つの物理ポートには１つのユーザのみが収容されるものとする。この場合、ポートＩＤは、実質的にユーザを識別することができる。
【００４８】
このように、ポートＩＤを用いることにより、複数の物理ポートを１つの論理ポートとして管理することが可能になる。したがって、ポートＩＤを用いる構成は、リンクアグリゲーションのようなポートの冗長構成を有するシステムにおいて有用である。
【００４９】
学習上限数は、ＭＡＣアドレステーブル３１に登録可能なＭＡＣアドレスの最大数（或いは、ＭＡＣアドレステーブル３１にＭＡＣアドレスを登録するために使用可能なエントリの最大数）を表す。図６（ａ）に示す例では、論理ポート１に対して「学習上限数＝１００」が設定され、論理ポート２に対して「学習上限数＝３００」が設定されている。なお、学習上限数は、例えば、論理ポートに対応するユーザと通信サービスの提供者との間の契約等に基づいて決定される。
【００５０】
エージング時間は、ＭＡＣアドレステーブル３１の対応するエントリが削除されるまでの期間を表す。図６（ａ）に示す例では、論理ポート１に対して「エントリ時間＝５分」が設定され、論理ポート２に対して「エントリ時間＝３分」が設定されている。なお、エントリ時間も、例えば、論理ポートに対応するユーザと通信サービスの提供者との間の契約等に基づいて決定される。
【００５１】
フレームコピー情報は、ブロードキャスト転送時（すなわち、フラッディング時）に、受信フレームが転送される宛先物理ポートを表す。例えば、「C0P0」は、ＩＦカード＃０のポート＃０を表し、「CmPn」は、ＩＦカード＃ｍのポート＃ｎを表す。そして、スイッチ回路３２は、ブロードキャスト転送時には、「１」が設定されているポートへ受信フレームを転送する。
【００５２】
ポート学習カウンタ３５は、図６（ｂ）に示すように、ポートＩＤをインデックスとして、現在の学習数を格納する。学習数は、ＭＡＣアドレステーブル３１に登録されているＭＡＣアドレスの数（或いは、ＭＡＣアドレステーブル３１にＭＡＣアドレスを登録するために使用されているエントリの数）を表す。したがって、ＭＡＣアドレステーブル３１に新たなＭＡＣアドレスが登録されると、学習数はインクリメントされる。また、エージング処理等によってＭＡＣアドレステーブル３１からＭＡＣアドレスが削除されると、学習数はデクリメントされる。
【００５３】
次に、ネットワークからフレームを受信したときの通信装置１の動作を説明する。ここでは、カードＩＤ＃０で識別されるインタフェース部１１のポート＃０を介してフレームが入力されるものとする。以下、このインタフェース部１１を「ＩＦカード＃０」と呼ぶことがある。
【００５４】
ＩＦカード＃０のＰＨＹ／ＭＡＣ回路２１は、受信フレームに装置内フレームヘッダを付与する。装置内フレームヘッダには、以下の情報が書き込まれる。
送信元カード番号：＃０
送信元ポート番号：＃０
そして、ＩＦカード＃０は、装置内フレームヘッダが付与された受信フレームをスイッチ部１２に導く。そうすると、スイッチ部１２は、フレーム転送処理およびアドレス学習処理を行う。
【００５５】
フレーム転送処理において、テーブル制御部３３は、受信フレームの宛先ＭＡＣアドレスでＭＡＣアドレステーブル３１を検索する。検索がヒットしたときは（すなわち、宛先ＭＡＣアドレスが既に学習されているときは）、テーブル制御部３３は、図６（ｃ）に示すＭＡＣアドレステーブル３１から、宛先ＭＡＣアドレスに対応する宛先カード番号および宛先ポート番号を取得する。そして、テーブル制御部３３は、取得した宛先カード番号および宛先ポート番号を図５に示す装置内フレームヘッダに格納する。そうすると、スイッチ回路３２は、受信フレームを、この宛先カード番号により指定されるインタフェース部１１（ここでは、ＩＦカード＃１）へ転送する。また、ＩＦカード＃１は、装置内フレームヘッダ内の宛先ポート番号で識別される物理ポートを介して、そのフレームを送信する。
【００５６】
なお、上記検索がヒットしなかったときは（すなわち、宛先ＭＡＣアドレスが学習されていないときは）、スイッチ回路３２は、受信フレームのブロードキャスト転送を行う。この場合、スイッチ回路３２は、受信フレームが到着したポート（ここでは、ＩＦカード＃０のポート＃０）以外のすべてのポートへ、受信フレームを転送してもよい。ただし、この実施例では、スイッチ回路３２は、ポートテーブル３４に格納されているフレームコピー情報に従って受信フレームを転送する。
【００５７】
図７は、第１の実施形態のアドレス学習を示すフローチャートである。このフローチャートの処理は、スイッチ部１２にフレームが入力されたときに実行される。
【００５８】
Ｓ１において、スイッチ回路３２は、ポートテーブル３４をリードする。すなわち、スイッチ回路３２は、受信フレームの装置内フレームヘッダに格納されている送信元カード番号および送信元ポート番号で、ポートテーブル３４を検索する。この検索において、対応するエントリが存在しないとき、または対応するエントリの有効ビットが「０」であったときは、スイッチ回路３２は、受信フレームを廃棄する。一方、対応するエントリの有効ビットが「１」であったときは、スイッチ回路３２は、そのエントリからポートＩＤ、学習上限数、エージング時間、フレームコピー情報を取得する。なお、フレームコピー情報は、上述したように、フレーム転送処理においてブロードキャスト転送を行うときに使用される。
【００５９】
Ｓ２において、テーブル制御部３３は、ポート学習カウンタ３５をリードする。すなわち、テーブル制御部３３は、ポートテーブル３４から取得したポートＩＤでポート学習カウンタ３５を検索し、このポートＩＤに対応する学習数を取得する。
【００６０】
Ｓ３において、テーブル制御部３３は、ポートテーブル３４から取得した学習上限数とポート学習カウンタ３５から取得した学習数とを比較する。ポート学習カウンタ３５の学習数が学習上限数よりも小さいときは、テーブル制御部３３の処理はＳ４へ移行する。一方、ポート学習カウンタ３５の学習数が学習上限数に達していたときは、テーブル制御部３３は、ＭＡＣアドレステーブル３１へのアクセスを行うことなく、アドレス学習処理を終了する。
【００６１】
Ｓ４において、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスがＭＡＣアドレステーブル３１に登録されているか否かを判定する。すなわち、受信フレームの送信元ＭＡＣアドレスが学習されているか否かが判定される。また、Ｓ５において、テーブル制御部３３は、ＭＡＣアドレステーブル３１に空きエントリが有るか判定する。
【００６２】
送信元ＭＡＣアドレスが未学習であり、且つ、ＭＡＣアドレステーブル３１に空きエントリが有るときは、テーブル制御部３３は、Ｓ６において、その送信元ＭＡＣアドレスをＭＡＣアドレステーブル３１の空きエントリに格納する。このとき、テーブル制御部３３は、以下の処理を実行する。
（１）送信元ＭＡＣアドレスを格納するエントリの有効ビットを「１」に更新する。
（２）ポートテーブル３４から取得したポートＩＤをエントリ内に格納する。
（３）受信フレームの装置内フレームヘッダから取得した送信元カード番号および送信元ポート番号をエントリ内に格納する。
（４）ポートテーブル３４から取得したエージング時間をエントリ内に設定する。
【００６３】
Ｓ７において、テーブル制御部３３は、ポートテーブル３４から取得したポートＩＤでポート学習カウンタ３５にアクセスする。そして、テーブル制御部３３は、ポート学習カウンタ３５の対応する学習数をインクリメントする。
【００６４】
受信フレームの送信元ＭＡＣアドレスがＭＡＣアドレステーブル３１に登録されているときは（Ｓ４：Ｎｏ）、テーブル制御部３３は、エージング時間を初期値に更新する。また、ＭＡＣアドレステーブル３１に空きエントリが無いときは（Ｓ５：Ｎｏ）、テーブル制御部３３の処理は終了する。
【００６５】
なお、ポート学習カウンタ３５は、ポートＩＤ毎に、ＭＡＣアドレステーブル３１に登録されているＭＡＣアドレスの数を示す。カウンタ値は、累積学習数を表すのではなく、現在の学習数を表す。すなわち、あるポートＩＤに属するＭＡＣアドレスが学習されたときは、そのポートＩＤに対応するカウンタ値に「１」が加算される。また、エージング処理によってＭＡＣアドレステーブル３１のエントリが削除されると、その削除エントリに格納されていたポートＩＤに対応するカウンタ値から「１」が減算される。
【００６６】
テーブル制御部３３は、ＭＡＣアドレスを学習するときに、ポートＩＤも学習する。すなわち、テーブル制御部３３は、学習したＭＡＣアドレスに対応するポートＩＤを、ＭＡＣアドレステーブル３１に書き込む。このため、エージング処理によってＭＡＣアドレステーブル３１のエントリが削除されるときに、テーブル制御部３３は、どのポートＩＤに係わるエントリが削除されたのかを検出できる。したがって、テーブル制御部３３は、エージング処理でエントリを削除したときに、そのエントリに対応するポートＩＤの学習数をデクリメントできる。
【００６７】
図７に示すフローチャートにおいて、処理ステップの実行順序は、変更可能である。例えば、ポート学習カウンタ３５によりカウントされている学習数と学習上限数との比較の前に、送信元ＭＡＣアドレスが学習されているか否かを判定する処理および／または空きエントリが有るか否かを判定する処理を実行してもよい。
【００６８】
このように、第１の実施形態においては、ポートＩＤ毎に、ＭＡＣアドレステーブル３１の学習上限数が設定される。ここで、第１の実施形態では、１つの物理ポートに１つのユーザが収容される。また、各物理ポートと論理ポートを識別するポートＩＤとの対応関係が予め決められている。よって、ポートＩＤは、実質的に、ユーザを識別する。すなわち、第１の実施形態においては、ユーザ毎に、ＭＡＣアドレステーブル３１の学習上限数が設定される。したがって、特定のユーザによってＭＡＣアドレステーブル３１の多くのエントリが占有されることはない。
【００６９】
この結果、各ユーザに対してネットワーク資源（ここでは、ＭＡＣアドレステーブル３１のエントリ）が公平に割り当てられ、ＭＡＣアドレスの未学習に起因するフラッディングが抑制される。これにより、ネットワークの輻輳が抑制される。
【００７０】
また、上述の例では、１つのポートＩＤに対して複数の物理ポートを対応付けることができる。したがって、１つのユーザが複数の物理ポートを使用する場合であっても、ユーザ毎に、ＭＡＣアドレステーブル３１の学習上限数が管理される。
【００７１】
＜第２の実施形態＞
図８は、第２の実施形態に係る通信装置の構成を示す。第１の実施形態では、ポート毎にＭＡＣアドレスの学習数が管理されるが、第２の実施形態では、ＶＬＡＮ毎にＭＡＣアドレスの学習数が管理される。このため、第２の実施形態の通信装置は、第１の実施形態のポートテーブル３４、ポート学習カウンタ３５、ＭＡＣアドレステーブル３１の代わりに、ＶＬＡＮテーブル４１、ＶＬＡＮ学習カウンタ４２、ＭＡＣアドレステーブル４３を有する。
【００７２】
ＶＬＡＮテーブル４１は、図９（ａ）に示すように、ＶＩＤをインデックスとして、有効ビット（Ｖ）、サービスＩＤ、学数上限数、エージング時間、フレームコピー情報を格納する。なお、ＶＬＡＮテーブル４１は、指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部の一例である。
【００７３】
ＶＩＤは、図３（ｂ）に示すように、各フレームのＶＬＡＮタグ内に格納されており、仮想ＬＡＮを識別する。したがって、スイッチ部１２は、受信フレームのＶＩＤでＶＬＡＮテーブル４１にアクセスすることができる。なお、図３（ｂ）では、ＶＩＤは、ＶＬＡＮＩＤと表記されている。
【００７４】
なお、ＶＬＡＮテーブル４１のインデックスは、複数段のＶＬＡＮタグのＶＩＤに対応するように構成してもよい。例えば、ＶＬＡＮテーブル４１がＳＲＡＭまたはＤＲＡＭで形成される場合、１段目のＶＩＤおよび２段目のＶＩＤをテーブルのインデックスとしてもよい。また、ＶＬＡＮテーブル４１が連想メモリを利用して実現される場合、１段目のＶＩＤおよび２段目のＶＩＤを連想メモリの検索キーとして使用してもよい。
【００７５】
サービスＩＤは、通信装置内で使用される識別情報であり、ユーザに提供されるサービスを識別する。すなわち、サービスＩＤは、実質的に、ユーザを識別する。また、各ＶＩＤに対して、所望のサービスＩＤを割り当てることが可能である。図９（ａ）に示す例では、サービス１には、２つの仮想ＬＡＮ（ＶＩＤ＃０およびＶＩＤ＃１）が対応付けられている。サービス２には、１つの仮想ＬＡＮ（ＶＩＤ＃２）が対応付けられている。
【００７６】
学習上限数は、第２の実施形態では、サービスＩＤ毎に設定される。すなわち、ユーザ毎にＭＡＣアドレステーブル４３の学習上限数が設定される。図９（ａ）に示す例では、サービス１に対して「学習上限数＝１００」が設定され、サービス２に対して「学習上限数＝３００」が設定されている。なお、学習上限数は、例えば、サービスＩＤに対応するユーザと通信サービスの提供者との間の契約等に基づいて決定される。
【００７７】
エージング時間は、第２の実施形態では、サービスＩＤ毎に設定される。また、フレームコピー情報は、ＶＩＤ毎に設定される。
【００７８】
ＶＬＡＮ学習カウンタ４２は、図９（ｂ）に示すように、サービスＩＤをインデックスとして、現在の学習数を格納する。なお、第１の実施形態と同様に、ＭＡＣアドレスが新たに学習されると、学習数がインクリメントされる。また、エージング処理によりＭＡＣアドレスが削除されると、学習数はデクリメントされる。
【００７９】
ＭＡＣアドレステーブル４３の構成は、第１および第２の実施形態において実質的に互いに同じである。ただし、第２の実施形態のＭＡＣアドレステーブル４３は、図９（ｃ）に示すように、第１の実施形態のポートＩＤの代わりに、サービスＩＤを管理する。
【００８０】
図１０は、第２の実施形態のアドレス学習を示すフローチャートである。このフローチャートの処理は、スイッチ部１２にフレームが入力されたときに実行される。
【００８１】
Ｓ１１において、スイッチ回路３２は、ＶＬＡＮテーブル４１をリードする。すなわち、スイッチ回路３２は、受信フレームのＶＩＤでＶＬＡＮテーブル４１を検索する。この検索において、対応するエントリが存在しないとき、または対応するエントリの有効ビットが「０」であったときは、スイッチ回路３２は、受信フレームを廃棄する。一方、対応するエントリの有効ビットが「１」であったときは、スイッチ回路３２は、そのエントリからサービスＩＤ、学習上限数、エージング時間、フレームコピー情報を取得する。
【００８２】
Ｓ１２において、テーブル制御部３３は、ＶＬＡＮ学習カウンタ４２をリードする。すなわち、テーブル制御部３３は、ＶＬＡＮテーブル４１から取得したサービスＩＤでＶＬＡＮ学習カウンタ４２を検索し、このサービスＩＤに対応する現在の学習数を取得する。
【００８３】
Ｓ１３において、テーブル制御部３３は、ＶＬＡＮテーブル４１から取得した学習上限数とＶＬＡＮ学習カウンタ４２から取得した学習数とを比較する。ＶＬＡＮ学習カウンタ４２の学習数が学習上限数よりも小さいときは、テーブル制御部３３の処理はＳ１４へ移行する。一方、ＶＬＡＮ学習カウンタ４２の学習数が学習上限数に達していたときは、テーブル制御部３３は、ＭＡＣアドレステーブル４３へのアクセスを行うことなく、アドレス学習処理を終了する。
【００８４】
Ｓ１４およびＳ１５の処理は、図７のＳ４およびＳ５と実質的に同じである。即ち、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスが学習されているか否かを判定し、また、ＭＡＣアドレステーブル４３に空きエントリが有るか判定する。
【００８５】
送信元ＭＡＣアドレスが未学習であり、且つ、ＭＡＣアドレステーブル４３に空きエントリが有るときは、テーブル制御部３３は、Ｓ１６において、その送信元ＭＡＣアドレスをＭＡＣアドレステーブル３１の空きエントリに格納する。このとき、テーブル制御部３３は、以下の処理を実行する。
（１）送信元ＭＡＣアドレスを格納するエントリの有効ビットを「１」に更新する。
（２）ＶＬＡＮテーブル４１から取得したサービスＩＤをエントリ内に格納する。
（３）受信フレームの装置内フレームヘッダから取得した送信元カード番号および送信元ポート番号をエントリ内に格納する。
（４）ＶＬＡＮテーブル４１から取得したエージング時間をエントリ内に設定する。
【００８６】
Ｓ１７において、テーブル制御部３３は、ＶＬＡＮテーブル４１から取得したサービスＩＤでＶＬＡＮ学習カウンタ４２にアクセスする。そして、テーブル制御部３３は、ＶＬＡＮ学習カウンタ４２の対応する学習数をインクリメントする。
【００８７】
受信フレームの送信元ＭＡＣアドレスがＭＡＣアドレステーブル４３に登録されているときは（Ｓ１４：Ｎｏ）、テーブル制御部３３は、エージング時間を初期値に更新する。また、ＭＡＣアドレステーブル４３に空きエントリが無いときは（Ｓ１５：Ｎｏ）、テーブル制御部３３の処理は終了する。
【００８８】
なお、ＶＬＡＮ学習カウンタ４２は、サービスＩＤ毎に、ＭＡＣアドレステーブル４３に登録されているＭＡＣアドレスの数を示す。すなわち、あるサービスＩＤに属するＭＡＣアドレスが学習されたときは、そのサービスＩＤに対応するカウンタ値に「１」が加算される。また、エージング処理によりＭＡＣアドレステーブル４３のエントリが削除されると、その削除エントリに格納されていたサービスＩＤに対応するカウンタ値から「１」が減算される。
【００８９】
テーブル制御部３３は、ＭＡＣアドレスを学習したときに、サービスＩＤも学習する。このため、エージング処理によってＭＡＣアドレステーブル４３のエントリが削除されるときに、テーブル制御部３３は、どのサービスＩＤに係わるエントリが削除されたのかを検出できる。したがって、テーブル制御部３３は、エージング処理でエントリを削除したときに、対応するサービスＩＤの学習数をデクリメントできる。
【００９０】
図１０に示すフローチャートにおいて、処理ステップの実行順序は、変更可能である。例えば、ＶＬＡＮ学習カウンタ４２によりカウントされている学習数と学習上限数との比較の前に、送信元ＭＡＣアドレスが学習されているか否かを判定する処理および／または空きエントリが有るか否かを判定する処理を実行してもよい。
【００９１】
このように、第２の実施形態においては、仮想ＬＡＮのユーザ毎に、ＭＡＣアドレスの学習上限数を決めることができる。したがって、第２の実施形態においても、特定のユーザによってＭＡＣアドレステーブル４３の多くのエントリが占有されることはない。この結果、ネットワークの輻輳が抑制される。
【００９２】
第２の実施形態では、１つのサービスＩＤに対して複数の仮想ＬＡＮを対応付けることができる。したがって、同一のユーザが複数の仮想ＬＡＮを使用する場合、そのユーザのアドレス学習数の上限を管理できる。また、ベストエフォート（低優先）サービスが適用される複数の仮想ＬＡＮに対して１つの学習上限数を設定してもよい。
【００９３】
＜第３の実施形態＞
第１の実施形態では、各ポートに対して１つの学習上限数が与えられる。第２の実施形態では、各サービスＩＤ（または、各仮想ＬＡＮ）に対して１つの学習上限数が与えられる。これに対して、第３の実施形態では、各サービスＩＤ（または、各ＶＬＡＮ）に対して複数の学習上限数が与えられる。
【００９４】
図１１は、第３の実施形態に係る通信装置の構成を示す。第３の実施形態では、スイッチ部１２は、スイッチ回路３２、テーブル制御部３３、ＶＬＡＮテーブル５１、ＶＬＡＮ学習カウンタ５２、全体学習カウンタ５３、ＭＡＣアドレステーブル５４を有する。
【００９５】
ＶＬＡＮテーブル５１は、図１２（ａ）に示すように、ＶＩＤをインデックスとして、有効ビット（Ｖ）、サービスＩＤ、学数上限数、エージング時間を格納する。ＶＬＡＮテーブル５１は、指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部の一例である。なお、ＶＬＡＮテーブル５１も、第２の実施形態のＶＬＡＮテーブル４１と同様に、フレームコピー情報を格納する。ただし、フレームコピー情報は、第２および第３の実施形態において同じなので、記載を省略する。
【００９６】
第３の実施形態においては、学習優先度が定義される。この実施例では、３つの学習優先度（高優先、中優先、低優先）が用意されている。なお、学習優先度は、フレームに付与されている優先度（Priority）とは異なる。また、通信装置が提供する学習優先度の数は、３に限定されるものではなく、所望の数（例えば、４、８）でよい。
【００９７】
学習上限数は、第２の実施形態と同様に、サービスＩＤ毎に設定される。ただし、第３の実施形態では、各学習優先度に対して学習上限数が設定される。図１２（ａ）に示す例では、例えば、サービス１（ＶＩＤ＃０）において、高優先度、中優先度、低優先度でＭＡＣアドレスを学習できる上限数として、それぞれ４００、３００、１００が設定されている。また、サービス２（ＶＩＤ＃１）においては、高優先度、中優先度、低優先度でＭＡＣアドレスを学習できる上限数として、それぞれ５００、４００、１００が設定されている。
【００９８】
エージング時間も、第２の実施形態と同様に、サービスＩＤ毎に設定される。ただし、第３の実施形態では、各学習優先度に対してエージング時間が設定される。図１２（ａ）に示す例では、例えば、サービス１（ＶＩＤ＃０）において、高優先度、中優先度、低優先度で学習されたＭＡＣアドレスのエージング時間として、それぞれ５分、３分、１分が設定されている。また、サービス２（ＶＩＤ＃１）においては、高優先度、中優先度、低優先度で学習されたＭＡＣアドレスのエージング時間として、それぞれ５分、５分、５分が設定されている。
【００９９】
ＶＬＡＮ学習カウンタ５２は、図１２（ｂ）に示すように、サービスＩＤをインデックスとして、現在の学習数をカウントする。ただし、第３の実施形態では、各学習優先度に対して学習数が管理される。すなわち、ＶＬＡＮ学習カウンタ５２により、各サービスＩＤに対して、且つ、各学習優先度に対して、ＭＡＣアドレステーブル５４に登録されているＭＡＣアドレスの数が管理される。
【０１００】
全体学習カウンタ５３は、図１２（ｃ）に示すように、各学習優先度について、それぞれ総学習数を管理する。すなわち、全体学習カウンタ５３により、学習優先度毎に、ＭＡＣアドレステーブル５４に登録されているＭＡＣアドレスの総数が管理される。なお、全体学習カウンタ５３のエントリ数は、１つである。
【０１０１】
ＭＡＣアドレステーブル５４の各エントリには、有効ビット（Ｖ）、サービスＩＤ、ＩＦカード番号、ポート番号、エージング時間に加えて、学習優先度が格納される。ＭＡＣアドレステーブル５４に格納される学習優先度は、どの優先度でＭＡＣアドレスが学習されたのかを表す。たとえば、ある受信フレームの送信元ＭＡＣアドレスが高優先度で学習されたときは、そのＭＡＣアドレスに対応するエントリに「学習優先度＝高」が書き込まれる。
【０１０２】
図１３は、第３の実施形態のアドレス学習を示すフローチャートである。このフローチャートの処理は、スイッチ部１２にフレームが入力されたときに実行される。
【０１０３】
Ｓ２１において、スイッチ回路３２は、図１２（ａ）に示すＶＬＡＮテーブル５１をリードする。すなわち、スイッチ回路３２は、受信フレームのＶＩＤでＶＬＡＮテーブル５１を検索し、受信フレームのＶＩＤに対応するサービスＩＤ、学習上限数、エージング時間、フレームコピー情報を取得する。この検索により、スイッチ回路３２は、受信フレームのＶＩＤに対して、高優先度でＭＡＣアドレスを学習できる上限数（以下、「学習上限数（高）」）、中優先度でＭＡＣアドレスを学習できる上限数（以下、「学習上限数（中）」）、低優先度でＭＡＣアドレスを学習できる上限数（以下、「学習上限数（低）」）を取得する。
【０１０４】
Ｓ２２において、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２をリードする。すなわち、テーブル制御部３３は、ＶＬＡＮテーブル５１から取得したサービスＩＤでＶＬＡＮ学習カウンタ５２を検索し、このサービスＩＤに対応する学習数を取得する。この検索により、スイッチ回路３２は、受信フレームのＶＩＤに対して、高優先度で学習しているＭＡＣアドレスの数（以下、「学習数（高）」）、中優先度で学習しているＭＡＣアドレスの数（以下、「学習数（中）」）、および低優先度で学習しているＭＡＣアドレスの数（以下、「学習数（低）」）を取得する。
【０１０５】
Ｓ２３において、テーブル制御部３３は、全体学習カウンタ５３をリードする。すなわち、テーブル制御部３３は、全体学習カウンタ５３から、各学習優先度について、総学習数を取得する。この検索により、スイッチ回路３２は、高優先度で学習しているＭＡＣアドレスの総数（以下、「総学習数（高）」）、中優先度で学習しているＭＡＣアドレスの総数（以下、「総学習数（中）」）、および低優先度で学習しているＭＡＣアドレスの総数（以下、「総学習数（低）」）を取得する。
【０１０６】
Ｓ２４において、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスがＭＡＣアドレステーブル５４に登録されているか否かを判定する。すなわち、受信フレームの送信元ＭＡＣアドレスが学習されているか否かが判定される。そして、送信元ＭＡＣアドレスが学習されていなければ、テーブル制御部３３の処理はＳ２５へ移行する。一方、送信元ＭＡＣアドレスが既に学習されていれば、テーブル制御部３３は、Ｓ２５〜Ｓ３６を実行することなく、エージング時間を初期値に更新して処理を終了する。
【０１０７】
Ｓ２５、Ｓ２９、Ｓ３３は、どの学習優先度でＭＡＣアドレスを学習するのかを判定するために設けられている。
【０１０８】
Ｓ２５において、テーブル制御部３３は、ＶＬＡＮテーブル５１から取得した学習上限数（高）とＶＬＡＮ学習カウンタ５２から取得した学習数（高）とを比較する。そして、学習数（高）が学習上限数（高）よりも小さいときは、テーブル制御部３３の処理はＳ２６へ移行する。一方、学習数（高）が学習上限数（高）に達していれば、テーブル制御部３３の処理はＳ２９へ移行する。
【０１０９】
Ｓ２９において、テーブル制御部３３は、学習数（中）と学習上限数（中）とを比較する。そして、学習数（中）が学習上限数（中）よりも小さいときは、テーブル制御部３３の処理はＳ３０へ移行する。一方、学習数（中）が学習上限数（中）に達していれば、テーブル制御部３３の処理はＳ３３へ移行する。
【０１１０】
Ｓ３３において、テーブル制御部３３は、学習数（低）と学習上限数（低）とを比較する。そして、学習数（低）が学習上限数（低）よりも小さいときは、テーブル制御部３３の処理はＳ３４へ移行する。一方、学習数（低）が学習上限数（低）に達していれば、テーブル制御部３３の処理は終了する。
【０１１１】
Ｓ２６〜Ｓ２８において、受信フレームの送信元ＭＡＣアドレスは、高優先度で学習される。Ｓ２６において、テーブル制御部３３は、全体学習カウンタ５３から取得した総学習数（高）と、ＭＡＣアドレステーブル５４の最大エントリ数とを比較する。そして、総学習数（高）が最大エントリ数よりも小さいときは、テーブル制御部３３は、Ｓ２７において学習処理Ａを実行する。一方、総学習数（高）が最大エントリ数に達していれば、テーブル制御部３３は、Ｓ２８において学習処理Ｂを実行する。
【０１１２】
図１４は、図１３の学習処理Ａを示すフローチャートである。学習処理Ａは、受信フレームの送信元ＭＡＣアドレスを高優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）よりも小さい。
（２）総学習数（高）がＭＡＣアドレステーブル５４の最大エントリ数よりも小さい。
【０１１３】
Ｓ４１において、テーブル制御部３３は、ＭＡＣアドレステーブル５４に空きエントリが有るか否かを判定する。空きエントリが有るときは、テーブル制御部３３は、Ｓ４２において、受信フレームの送信元ＭＡＣアドレスを、その空きエントリに格納する。なお、「ＭＡＣアドレステーブル５４にＭＡＣアドレスを格納する」は、ＭＡＣアドレスをインデックスとするエントリに、図１２（ｄ）に示すように、サービスＩＤ、学習優先度、ＩＦカード番号、ポート番号、エージング時間を格納する処理に相当する。このとき、このエントリには「学習優先度＝高」が設定される。なお、ＭＡＣアドレステーブル５４に格納されるＩＦカード番号およびポート番号は、フレーム転送を制御するための転送情報の一例である。
【０１１４】
Ｓ４３において、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（高）をインクリメントする。また、テーブル制御部３３は、全体学習カウンタ５３において、総学習数（高）をインクリメントする。
【０１１５】
ＭＡＣアドレステーブル５４に空きエントリが無いときは（Ｓ４１：Ｎｏ）、テーブル制御部３３は、Ｓ４４において、中優先度または低優先度でＭＡＣアドレスが格納されているエントリを１つ選択し、受信フレームの送信元ＭＡＣアドレスを、その選択したエントリに格納する。このとき、このエントリには「学習優先度＝高」が設定される。また、選択されたエントリは、受信フレームの送信元ＭＡＣアドレスによって上書きされる。なお、テーブル制御部３３は、例えば、中優先度または低優先度でＭＡＣアドレスが格納されているエントリの中で、最も古い（または、所定の閾値よりも古い）エントリを選択する。また、テーブル制御部３３は、好ましくは、低優先度でＭＡＣアドレスが格納されているエントリを１つ選択する。
【０１１６】
Ｓ４５において、テーブル制御部３３は、Ｓ４４で上書きされたエントリに対応する学習集および総学習数をそれぞれデクリメントする。たとえば、Ｓ４４で上書きされたエントリに「サービスＩＤ＝＃２」および「学習優先度＝低」が格納されていたものとする。このケースでは、ＶＬＡＮ学習カウンタ５２において、サービスＩＤ＝＃２に対応する学習数（低）がデクリメントされ、全体学習カウンタ５３において、総学習数（低）がデクリメントされる。
【０１１７】
図１５は、図１３の学習処理Ｂを示すフローチャートである。学習処理Ｂは、受信フレームの送信元ＭＡＣアドレスを高優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）よりも小さい。
（２）総学習数（高）がＭＡＣアドレステーブル５４の最大エントリ数に達している。
【０１１８】
Ｓ５１において、テーブル制御部３３は、高優先度でＭＡＣアドレスが格納されているエントリを１つ選択し、受信フレームの送信元ＭＡＣアドレスを、その選択したエントリに格納する。このとき、このエントリには「学習優先度＝高」が設定される。また、選択されたエントリは、受信フレームの送信元ＭＡＣアドレスによって上書きされる。なお、テーブル制御部３３は、例えば、高優先度でＭＡＣアドレスが格納されているエントリの中で、最も古い（または、所定の閾値よりも古い）エントリを選択する。
【０１１９】
Ｓ５２において、テーブル制御部３３は、Ｓ５１で上書きされたエントリに対応する学習集および総学習数をそれぞれデクリメントする。例えば、Ｓ５１で上書きされたエントリに「サービスＩＤ＝＃１」が格納されていたものとする。この場合、ＶＬＡＮ学習カウンタ５２において、サービスＩＤ＝＃１に対応する学習数（高）がデクリメントされ、全体学習カウンタ５３において、総学習数（高）がデクリメントされる。
【０１２０】
Ｓ５３において、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（高）をインクリメントする。また、テーブル制御部３３は、全体学習カウンタ５３において、総学習数（高）をインクリメントする。
【０１２１】
図１３に戻る。Ｓ３０〜Ｓ３２において、受信フレームの送信元ＭＡＣアドレスは、中優先度で学習される。Ｓ３０において、テーブル制御部３３は、全体学習カウンタ５３から取得した総学習数（高）と総学習数（中）との和と、ＭＡＣアドレステーブル５４の最大エントリ数とを比較する。以下、全体学習カウンタ５３から取得した総学習数（高）と総学習数（中）との和を「総学習数（高＋中）」と呼ぶことがある。そして、総学習数（高＋中）が最大エントリ数よりも小さいときは、テーブル制御部３３は、Ｓ３１において学習処理Ｃを実行する。一方、総学習数（高＋中）が最大エントリ数に達していれば、テーブル制御部３３は、Ｓ３２において学習処理Ｄを実行する。
【０１２２】
図１６は、図１３の学習処理Ｃを示すフローチャートである。学習処理Ｃは、受信フレームの送信元ＭＡＣアドレスを中優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）に達している。
（２）受信フレームに対応するサービスＩＤにおいて、学習数（中）が学習上限数（中）よりも小さい。
（３）総学習数（高＋中）は、ＭＡＣアドレステーブル５４の最大エントリ数よりも小さい。
【０１２３】
学習処理ＣのＳ６１〜Ｓ６５は、図１４に示す学習処理ＡのＳ４１〜Ｓ４５と類似している。ただし、学習処理Ｃでは、受信フレームの送信元ＭＡＣアドレスは中優先度で学習される。よって、学習処理Ａと学習処理Ｃとでは、以下の処理が異なる。
【０１２４】
Ｓ６２において、受信フレームの送信元ＭＡＣアドレスが格納されるときに、「学習優先度＝中」が設定される。Ｓ６３では、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（中）をインクリメントし、全体学習カウンタ５３において、総学習数（中）をインクリメントする。Ｓ６４では、テーブル制御部３３は、低優先度でＭＡＣアドレスが格納されているエントリを１つ選択し、受信フレームの送信元ＭＡＣアドレスを、その選択したエントリに格納する。また、Ｓ６４において、「学習優先度＝中」が設定される。
【０１２５】
図１７は、図１３の学習処理Ｄを示すフローチャートである。学習処理Ｄは、受信フレームの送信元ＭＡＣアドレスを中優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）に達している。
（２）受信フレームに対応するサービスＩＤにおいて、学習数（中）が学習上限数（中）より小さい。
（３）総学習数（高＋中）は、ＭＡＣアドレステーブル５４の最大エントリ数に達している。
【０１２６】
学習処理ＤのＳ７１〜Ｓ７３は、図１５に示す学習処理ＢのＳ５１〜Ｓ５３と類似している。ただし、学習処理Ｄでは、受信フレームの送信元ＭＡＣアドレスは中優先度で学習される。よって、学習処理Ｂと学習処理Ｄとでは、以下の処理が異なる。
【０１２７】
Ｓ７１において、テーブル制御部３３は、中優先度でＭＡＣアドレスが格納されているエントリを１つ選択し、受信フレームの送信元ＭＡＣアドレスを、その選択したエントリに格納する。このとき、新たなＭＡＣアドレスのためのエントリに対して「学習優先度＝中」が設定される。また、Ｓ７３では、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（中）をインクリメントし、全体学習カウンタ５３において、総学習数（中）をインクリメントする。
【０１２８】
図１３に戻る。Ｓ３４〜Ｓ３６において、受信フレームの送信元ＭＡＣアドレスは、低優先度で学習される。Ｓ３４において、テーブル制御部３３は、全体学習カウンタ５３から取得した総学習数（高）、総学習数（中）、総学習数（低）の和と、ＭＡＣアドレステーブル５４の最大エントリ数とを比較する。以下、全体学習カウンタ５３から取得した総学習数（高）、総学習数（中）、総学習数（低）の和を「総学習数（高＋中＋低）」と呼ぶことがある。そして、総学習数（高＋中＋低）が最大エントリ数よりも小さいときは、テーブル制御部３３は、Ｓ３５において学習処理Ｅを実行する。一方、総学習数（高＋中＋低）が最大エントリ数に達していれば、テーブル制御部３３は、Ｓ３６において学習処理Ｆを実行する。
【０１２９】
図１８は、図１３の学習処理Ｅを示すフローチャートである。学習処理Ｅは、受信フレームの送信元ＭＡＣアドレスを低優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）に達している。
（２）受信フレームに対応するサービスＩＤにおいて、学習数（中）が学習上限数（中）に達している。
（３）受信フレームに対応するサービスＩＤにおいて、学習数（低）が学習上限数（低）よりも小さい。
（４）総学習数（高＋中＋低）は、ＭＡＣアドレステーブル５４の最大エントリ数よりも小さい。
【０１３０】
学習処理ＥのＳ８１、Ｓ８２は、図１４に示す学習処理ＡのＳ４２、Ｓ４３と類似している。ただし、学習処理Ｅでは、受信フレームの送信元ＭＡＣアドレスは低優先度で学習される。よって、学習処理ＡのＳ４２、Ｓ４３と学習処理ＥのＳ８１、Ｓ８２とでは、以下の処理が異なる。
【０１３１】
Ｓ８１において、受信フレームの送信元ＭＡＣアドレスが格納されるときに、対応するエントリに「学習優先度＝低」が設定される。Ｓ８２では、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（低）をインクリメントし、全体学習カウンタ５３において、総学習数（低）をインクリメントする。
【０１３２】
図１９は、図１３の学習処理Ｆを示すフローチャートである。学習処理Ｆは、受信フレームの送信元ＭＡＣアドレスを低優先度で学習するために、以下の条件が満たされたときに実行される。
（１）受信フレームに対応するサービスＩＤにおいて、学習数（高）が学習上限数（高）に達している。
（２）受信フレームに対応するサービスＩＤにおいて、学習数（中）が学習上限数（中）に達している。
（３）受信フレームに対応するサービスＩＤにおいて、学習数（低）が学習上限数（低）よりも小さい。
（４）総学習数（高＋中＋低）は、ＭＡＣアドレステーブル５４の最大エントリ数に達している。
【０１３３】
Ｓ９０において、テーブル制御部３３は、低優先度でＭＡＣアドレスが格納されているエントリが有るか判定する。低優先度でＭＡＣアドレスが格納されているエントリが有れば、テーブル制御部３３の処理は、Ｓ９１へ移行する。一方、ＭＡＣアドレステーブル５４のすべてのエントリが、高優先度または中優先度で学習されたＭＡＣアドレスを格納しているときは、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスを学習することなく処理を終了する。
【０１３４】
学習処理ＦのＳ９１〜Ｓ９３は、図１５に示す学習処理ＢのＳ５１〜Ｓ５３と類似している。ただし、学習処理Ｆでは、受信フレームの送信元ＭＡＣアドレスは低優先度で学習される。よって、学習処理Ｂと学習処理Ｆとでは、以下の処理が異なる。
【０１３５】
Ｓ９１において、テーブル制御部３３は、低優先度でＭＡＣアドレスが格納されているエントリを１つ選択し、受信フレームの送信元ＭＡＣアドレスを、その選択したエントリに格納する。このとき、新たなＭＡＣアドレスのためのエントリに「学習優先度＝低」が設定される。また、Ｓ９３では、テーブル制御部３３は、ＶＬＡＮ学習カウンタ５２において、受信フレームのサービスＩＤに対応する学習数（低）をインクリメントし、全体学習カウンタ５３において、総学習数（低）をインクリメントする。
【０１３６】
なお、Ｓ２５、Ｓ２９、Ｓ３３のすべてにおいて「Ｎｏ」と判定されたときは、受信フレームの送信元ＭＡＣアドレスの学習は行われない。すなわち、受信フレームに対応するサービスＩＤに対して、各優先度の学習数がいずれも対応する学習上限数に達していたときは、テーブル制御部３３は、その受信フレームの送信元ＭＡＣアドレスを学習しない。
【０１３７】
このように、第３の実施形態では、学習数が学習上限数よりも小さい学習優先度のうちの最も高い学習優先度で、受信フレームの送信元ＭＡＣアドレスが学習される。例えば、受信フレームに対応する仮想ＬＡＮにおいて、学習数（高）が学習上限数（高）よりも小さければ、スイッチ部１２は、その受信フレームの送信元ＭＡＣアドレスを高優先度で学習する。また、学習数（高）が学習上限数（高）に達しており、且つ、学習数（中）が学習上限数（中）よりも小さいときは、スイッチ部１２は、その受信フレームの送信元ＭＡＣアドレスを中優先度で学習する。さらに、学習数（高）および学習数（中）がそれぞれ学習上限数（高）および学習上限数（中）に達しており、且つ、学習数（低）が学習上限数（低）よりも小さいときは、スイッチ部１２は、その受信フレームの送信元ＭＡＣアドレスを低優先度で学習する。
【０１３８】
また、第１および第２の実施形態では、あるユーザの学習数が学習上限数に達しているときは、ＭＡＣアドレステーブルに空きアントリが有る場合であっても、スイッチ部１２は、そのユーザのＭＡＣアドレスを学習しない。これに対して、第３の実施形態では、例えば、あるユーザについての高優先度での学習数が学習上限数に達していても、スイッチ部１２は、他の優先度でそのユーザのＭＡＣアドレスを学習することができる。したがって、ユーザ毎に各優先度の学習上限数を適切に決定することにより、ＭＡＣアドレステーブルを効率的に利用しながら、ネットワークの輻輳を抑制することができる。
【０１３９】
次に、図２０に示す学習上限数の設定例を参照しながら、第３の実施形態のアドレス学習方法を説明する。図２０に示す例では、５ユーザに対して仮想ＬＡＮ（ＶＩＤ＝＃１、＃３、＃５、＃７、＃９）が提供されている。また、ＭＡＣアドレステーブル５４の最大エントリ数は１００００である。
【０１４０】
図２０に示す例では、高優先度の学習上限数の合計は、８０００であり、ＭＡＣアドレステーブル５４の最大エントリ数より少ない。この場合、高優先度でのアドレス学習は、ＭＡＣアドレステーブル５４の状態にかかわらず、常に実行可能である。すなわち、高優先度の学習上限数の合計がＭＡＣアドレステーブル５４の最大エントリ数よりも少ないときは、高優先度でのアドレス学習は保証される。たとえば、仮想ＬＡＮ＃１、＃３に対して、それぞれ、４０００個のＭＡＣアドレスの学習が保証される。このように、仮想ＬＡＮ＃１、＃３のＭＡＣアドレスは、他の仮想ＬＡＮと比較して優先的に学習される。すなわち、仮想ＬＡＮ＃１、＃３のユーザに対して提供されるサービスのレベルは、他のユーザと比較して高い。
【０１４１】
多数のＭＡＣアドレスが高優先度で学習されているときは、中優先度または低優先度で学習可能なＭＡＣアドレスの個数は少なくなる。たとえば、仮想ＬＡＮ＃１、＃３に対して合計８０００個のＭＡＣアドレスが高優先度で学習されているときは、中優先度または低優先度で学習可能なＭＡＣアドレスの個数は２０００である。この場合、仮想ＬＡＮ＃５、＃７のアドレス学習数は、学習上限数よりもさらに少ない値に制限されてしまう。すなわち、仮想ＬＡＮ＃５、＃７のユーザに対して提供されるサービスのレベルは、仮想ＬＡＮ＃１、＃３と比較して低い。
【０１４２】
仮想ＬＡＮ＃９に対しては、低優先度でのアドレス学習のみが可能である。このため、高優先度および中優先度でのアドレス学習の総数がＭＡＣアドレステーブル５４の最大エントリ数に達しているときは、仮想ＬＡＮ＃９のＭＡＣアドレスの学習は拒絶されることになる。この場合、図１９に示すフローチャートにおいて、Ｓ９０で「Ｎｏ」と判定される。このように、仮想ＬＡＮ＃９のユーザに対して提供されるサービスのレベルは、仮想ＬＡＮ＃１、＃３、＃５、＃７と比較して低い。なお、低優先度でのアドレス学習のみが可能なユーザには、例えば、ベストエフォート型のサービスが適用される。この場合、通信事業者は、このユーザと低料金で契約することができる。
【０１４３】
中優先度および低優先度の学習上限数の合計は、それぞれ、ＭＡＣアドレステーブル５４の最大エントリ数より多くてもよい。この場合、各仮想ＬＡＮ（または、各ユーザ）がＭＡＣアドレステーブル５４を共有しながらＭＡＣアドレスの学習が行われる。
【０１４４】
各仮想ＬＡＮ（または、各ユーザ）に対して設定される高優先度、中優先度、低優先度の学習上限数の和は、ＭＡＣアドレステーブル５４の最大エントリ数と同じであってもよい。この場合、他のユーザが通信を行っていないときは、１つのユーザがＭＡＣアドレステーブル５４のすべてのエントリを利用できる。
【０１４５】
＜第４の実施形態＞
第４の実施形態は、ＭＡＣアドレステーブルに登録されているＭＡＣアドレスに対するエージング処理に係わる。第４の実施形態に係るエージング処理は、例えば、図１１に示す通信装置において実行される。
【０１４６】
第４の実施形態においては、図１２（ａ）に示すように、各仮想ＬＡＮに対してそれぞれ複数のエージング時間が設定される。各仮想ＬＡＮに対して設定される複数のエージング時間は、それぞれ、上述した複数の学習優先度に対応する。なお、以下の説明においては、各仮想ＬＡＮに対して学習優先度に応じて設定される３つのエージング時間を、「エージング時間（高）」「エージング時間（中）」「エージング時間（低）」と呼ぶことがある。
【０１４７】
ＭＡＣアドレステーブル５４に高優先度で登録されたＭＡＣアドレスは、登録時または更新時から対応するエージング時間（高）が経過した時点で削除される。同様に、ＭＡＣアドレステーブル５４に中優先度で登録されたＭＡＣアドレスは、登録時または更新時から対応するエージング時間（中）が経過した時点で削除される。また、ＭＡＣアドレステーブル５４に低優先度で登録されたＭＡＣアドレスは、登録時または更新時から対応するエージング時間（低）が経過した時点で削除される。
【０１４８】
エージング時間は、学習優先度に依存することが好ましい。例えば、学習優先度が高いほどエージング時間が長く、学習優先度が低いほどエージング時間は短い。この場合、上位の優先度で学習されたＭＡＣアドレスは、ＭＡＣアドレステーブル５４から削除されにくい。したがって、上位の優先度で学習されたＭＡＣアドレスへのフレーム転送は、フラッディングが発生しにくくなる。反対に、下位の優先度で学習されたＭＡＣアドレスは、ＭＡＣアドレステーブル５４から削除されやすい。このように、学習優先度に応じてエージング時間を設定することによって、ＭＡＣアドレステーブル５４をさらに効率的に利用することが可能となる。
【０１４９】
図２１は、エージング処理の一例を示すフローチャートである。このフローチャートの処理は、テーブル制御部３３によって実行されるものとする。また、このフローチャートの処理は、定期的（例えば、１秒間隔）に実行される。すなわち、このフローチャートの処理は、フレームの入力とは無関係に実行される。なお、図２１を参照する説明では、エージング時間は、「秒」を単位として表されているものとする。
【０１５０】
Ｓ１０１において、テーブル制御部３３は、ＭＡＣアドレステーブル５４のリードポインタをゼロにセットする。Ｓ１０２において、テーブル制御部３３は、リードポインタをリードアドレスとして、ＭＡＣアドレステーブル５４の対応するエントリをリードする。Ｓ１０３において、テーブル制御部３３は、リードしたエントリの有効ビット（Ｖ）の値をチェックする。
【０１５１】
有効ビットが「１」でなないときには、テーブル制御部３３の処理はＳ１０８へ移行する。一方、有効ビットが「１」であれば、テーブル制御部３３は、Ｓ１０４において、リードしたエージング時間から「１」を減算する。そして、Ｓ１０５において、テーブル制御部３３は、減算演算後のエージング時間が「０」であるか判定する。
【０１５２】
エージング時間が「０」であれば、テーブル制御部３３は、Ｓ１０６において、当該エントリの有効ビットを「０」に更新する。これにより、当該エントリに登録されていたＭＡＣアドレスは削除される。一方、エージング時間が「０」でなければ、テーブル制御部３３は、Ｓ１０７において、当該エントリのエージング時間を更新する。このとき、このエントリには、Ｓ１０４の減算演算の結果が書き込まれる（上書き）。
【０１５３】
Ｓ１０８において、テーブル制御部３３は、リードポインタがＭＡＣアドレステーブル５４の最終アドレスか否かを判定する。そして、リードポインタがＭＡＣアドレステーブル５４の最終アドレスでなければ、テーブル制御部３３は、Ｓ１０９において、リードポインタをインクリメントする。この後、テーブル制御部３３の処理は、Ｓ１０２に戻る。したがって、ＭＡＣアドレステーブル５４の各エントリに対してＳ１０３〜Ｓ１０７の処理が実行される。
【０１５４】
このように、テーブル制御部３３は、ＭＡＣアドレステーブル５４の各エントリのエージング時間を定期的にデクリメントする。この結果、エージング時間がゼロになったエントリに登録されていたＭＡＣアドレスが削除される。
【０１５５】
＜第５の実施形態＞
第１〜第３の実施形態では、ユーザ毎（ポート毎または仮想ＬＡＮ毎）にＭＡＣアドレスの学習上限数が設定される。第５の実施形態では、ユーザ毎にＭＡＣアドレスの学習上限数が設定される構成を前提として、ＭＡＣアドレス学習においてさらにフレーム自体の優先度が考慮される。各フレームの優先度は、図３（ｂ）に示すＶＬＡＮタグの中に格納されている「優先度（Priority）」により特定される。なお、以下の説明では、フレームの優先度と学習優先度とを区別するために、フレームの優先度を「フレーム優先度」を呼ぶことがある。
【０１５６】
図２２は、第５の実施形態に係る通信装置の構成を示す。第５の実施形態の通信装置の構成は、図１１に示す第３の実施形態とほぼ同じである。ただし、第５の実施形態のスイッチ部１２は、スイッチ回路３２、テーブル制御部３３、ＶＬＡＮテーブル６１、ＶＬＡＮ学習カウンタ５２、全体学習カウンタ５３、ＭＡＣアドレステーブル５４、クラステーブル６２を有する。ＶＬＡＮ学習カウンタ５２、全体学習カウンタ５３、ＭＡＣアドレステーブル５４は、第３および第５の実施形態において実質的に互いに同じである。
【０１５７】
ＶＬＡＮテーブル６１は、図２３（ａ）に示すように、ＶＩＤをインデックスとして、有効ビット（Ｖ）、サービスＩＤ、クラスＩＤ、学数上限数、エージング時間を格納する。有効ビット（Ｖ）、サービスＩＤ、学数上限数、エージング時間は、実質的に第３の実施形態と同じなので、説明を省略する。また、ＶＬＡＮテーブル６１も、第２の実施形態のＶＬＡＮテーブル４１と同様にフレームコピー情報を格納するが、記載を省略する。
【０１５８】
クラスＩＤは、例えば、仮想ＬＡＮのユーザと通信事業者との間の契約等により、各仮想ＬＡＮに対して決定される。図２３（ａ）に示す例では、仮想ＬＡＮ＃０に対してクラス０が設定され、仮想ＬＡＮ＃２に対してクラス１が設定されている。なお、この実施例では、通信装置によって４つのクラスが提供される。
【０１５９】
クラステーブル６２は、図２３（ｂ）に示すように、クラスＩＤおよびフレーム優先度をインデックスとして、学習優先度を管理する。学習優先度は、上述したように、高優先度、中優先度、低優先度を含む。
【０１６０】
スイッチ部１２は、受信フレームが属する仮想ＬＡＮおよびその受信フレームのフレーム優先度に基づいて、受信フレームのＭＡＣアドレスを学習する際の学習優先度を決定する。例えば、受信フレームのＶＬＡＮタグに「ＶＩＤ＝＃０」「フレーム優先度＝７」が格納されているものとする。この場合、スイッチ部１２は、「ＶＩＤ＝＃０」でＶＬＡＮテーブル６１を検索することにより「クラスＩＤ＝０」を得る。そうすると、スイッチ部１２は、「クラスＩＤ＝０」および「フレーム優先度＝７」でクラステーブル６２を検索することにより、「学習優先度＝高」を得る。このように、スイッチ部１２は、クラステーブル６２を参照することにより、受信フレームの送信元ＭＡＣアドレスを学習する際の学習優先度を決定する。
【０１６１】
図２４は、第５の実施形態のアドレス学習を示すフローチャートである。このフローチャートの処理は、スイッチ部１２にフレームが入力されたときに実行される。
第５の実施形態において実行されるＳ２１〜Ｓ３６は、第３の実施形態と実質的に同じである。ただし、第５の実施形態のフローチャートは、Ｓ２１〜Ｓ３６に加えて、Ｓ１１１〜Ｓ１１３を有する。
【０１６２】
Ｓ１１１において、テーブル制御部３３は、クラステーブル６２をリードする。すなわち、テーブル制御部３３は、クラスＩＤおよびフレーム優先度でクラステーブル６２を検索する。クラスＩＤは、Ｓ２１において、受信フレームのＶＩＤでＶＬＡＮテーブル６１を検索することによって得られる。また、フレーム優先度は、受信フレームのＶＬＡＮタグから得られる。そして、テーブル制御部３３は、この検索により、受信フレームの送信元ＭＡＣアドレスを学習するための学習優先度を特定する。
【０１６３】
受信フレームの送信元ＭＡＣアドレスが学習されていないときは（Ｓ２４：Ｙｅｓ）、テーブル制御部３３は、Ｓ１１２〜Ｓ１１３において、学習優先度に応じて実行すべき処理を決定する。すなわち、学習優先度が「高」であれば、テーブル制御部３３の処理はＳ２５へ移行する。学習優先度が「中」であれば、テーブル制御部３３の処理はＳ２９へ移行する。学習優先度が「高」または「中」のいずれでもないときは、テーブル制御部３３の処理はＳ３３へ移行する。
【０１６４】
学習優先度が「高」であるときは、テーブル制御部３３は、図１４に示す学習処理Ａまたは図１５に示す学習処理Ｂで、受信フレームの送信元ＭＡＣアドレスを学習する。この場合、ＭＡＣアドレスは、高優先度で学習される。ただし、Ｓ２５において、現在の学習数（高）が学習上限数（高）に達していたときは、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスを学習することなく、処理を終了する。
【０１６５】
学習優先度が「中」であるときは、テーブル制御部３３は、図１６に示す学習処理Ｃまたは図１７に示す学習処理Ｄで、受信フレームの送信元ＭＡＣアドレスを学習する。この場合、ＭＡＣアドレスは、中優先度で学習される。ただし、Ｓ２９において、現在の学習数（中）が学習上限数（中）に達していたときは、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスを学習することなく、処理を終了する。
【０１６６】
学習優先度が「低」であるときは、テーブル制御部３３は、図１８に示す学習処理Ｅまたは図１９に示す学習処理Ｆで、受信フレームの送信元ＭＡＣアドレスを学習する。この場合、ＭＡＣアドレスは、低優先度で学習される。ただし、Ｓ３３において、現在の学習数（低）が学習上限数（低）に達していたときは、テーブル制御部３３は、受信フレームの送信元ＭＡＣアドレスを学習することなく、処理を終了する。
【０１６７】
なお、受信フレームがＶＬＡＮタグを有していないときは、スイッチ部１２は、その受信フレームに対して所定のフレーム優先度（例えば、ゼロ）を与えてアドレス学習処理を実行する。この方式を採用すれば、スイッチ部１２は、ＶＬＡＮタグを有していないフレームを受信したときであっても、図２４に示すフローチャートに従って学習優先度を決定してアドレス学習を行うことができる。
【０１６８】
上述のように、第３の実施形態では、フレーム自体の優先度とは無関係に学習優先度が決定される。この方式は、フレーム優先度が高いフレームに対して、必ずしも高い学習優先度を与える必要はない、というポリシに基づいている。第３の実施形態では、通信頻度の高い端末またはサーバのアドレスが、高優先度で学習されて、ＭＡＣアドレステーブル５４に保持されやすくなる。
【０１６９】
第５の実施形態では、フレーム自体の優先度を考慮して学習優先度が決定される。この方式は、フレーム優先度が高いフレームに対して、高い学習優先度を与える、というポリシに基づいている。なお、第３の実施形態または第５の実施形態の選択は、例えば、通信事業者が提供するサービスのポリシ、およびユーザの要求などに応じて行われることが好ましい。
【０１７０】
＜第６の実施形態＞
第５の実施形態では、フレーム優先度に基づいて学習優先度が決定され、その学習優先度でＭＡＣアドレスが学習される。このとき、決定された学習優先度の学習数が学習上限数に達していたときは、ＭＡＣアドレスの学習は行われない。
【０１７１】
第６の実施形態でも、第５の実施形態と同様に、フレーム優先度に基づいて学習優先度が決定され、その学習優先度でＭＡＣアドレスが学習される。ただし、第６の実施形態では、決定された学習優先度の学習数が対応する学習上限数に達していた場合であっても、下位の学習優先度の学習数が対応する学習上限数に達していなければ、ＭＡＣアドレスの学習が行われる。なお、通信装置の構成は、第５および第６の実施形態において実質的に互いに同じである。
【０１７２】
図２５は、第６の実施形態のアドレス学習を示すフローチャートである。このフローチャートの処理は、スイッチ部１２にフレームが入力されたときに実行される。
【０１７３】
第６の実施形態においては、図２５に示すように、学習数（高）が学習上限数（高）に達しているときは（Ｓ２５：Ｎｏ）、テーブル制御部３３の処理はＳ２９へ移行する。また、学習数（中）が学習上限数（中）に達しているときは（Ｓ２９：Ｎｏ）、テーブル制御部３３の処理はＳ３３へ移行する。その他の処理は、第５および第６の実施形態において実質的に互いに同じである。
【０１７４】
このように、第６の実施形態では、ＭＡＣアドレスの学習が可能か否かが柔軟に判定される。よって、ＭＡＣアドレステーブル５４をさらに効率的に使用することができる。
【０１７５】
＜他の実施形態＞
図１１〜図２５に示す例では、第３〜第６の実施形態において仮想ＬＡＮに対して学習上限数が設定されるが、第３〜第６の実施形態において物理ポートまたは論理ポートに対して学習上限数を設定してもよい。
【０１７６】
図６に示す例では、各論理ポート（ポートＩＤ）に対して１または複数の物理ポートが対応付けられ、論理ポート毎に学習上限数が設定されるが、本発明はこの構成に限定されるものではない。すなわち、本発明は、物理ポート毎に学習上限数が設定される構成を含む。この場合、１つの物理ポートに１つのユーザのみが収容されるようにネットワークを構築すれば、ユーザ毎にＭＡＣアドレスの学習数が制限される。
【０１７７】
図９、図１２、図２３に示す例では、各サービスＩＤに対して１または複数の仮想ＬＡＮが対応付けられ、サービスＩＤ毎に学習上限数が設定されるが、本発明はこの構成に限定されるものではない。すなわち、本発明は、仮想ＬＡＮ毎に学習上限数が設定される構成を含む。
【０１７８】
上述の実施例では、フレームを転送する通信装置においてＭＡＣアドレスが学習されるが、本発明はこの構成に限定されるものではない。すなわち、本発明は、フレームに格納されている他のアドレスを学習する通信装置にも適用可能である。
【０１７９】
以上記載した各実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
フレーム転送を制御するための転送情報を格納するテーブルと、
受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルに登録することにより前記受信フレームの送信元アドレスを学習する学習制御部と、
指定されたグループ毎に学習可能なアドレスの上限数を格納する格納部と、を有し、
前記学習制御部は、受信フレームに対応するグループにおけるアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする通信装置。
（付記２）
受信フレームに対応するグループにおけるアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている上限数に達しているときは、前記学習制御部は、前記受信フレームの送信元アドレスを学習できないと判定する
ことを特徴とする付記１に記載の通信装置。
（付記３）
前記格納部は、前記グループ毎に、前記テーブルへのアドレスの登録の優先度を表す複数の学習優先度に対してそれぞれ学習可能なアドレスの上限数を格納する
ことを特徴とする付記１に記載の通信装置。
（付記４）
前記学習制御部は、アドレスの学習数が対応する上限数よりも少ない学習優先度の中の最も高い学習優先度で、前記受信フレームの送信元アドレスを学習する
ことを特徴とする付記３に記載の通信装置。
（付記５）
前記格納部は、前記グループ毎に、第１の学習優先度で学習可能なアドレスの上限数を表す第１の上限数、および前記第１の学習優先度よりも低い第２の学習優先度で学習可能なアドレスの上限数を表す第２の上限数を格納し、
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスを学習できると判定し、
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数に達しているときは、前記学習制御部は、受信フレームに対応するグループにおける前記第２の学習優先度でのアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている前記第２の上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする付記１に記載の通信装置。
（付記６）
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を前記テーブルの空きエントリに格納する
ことを特徴とする付記５に記載の通信装置。
（付記７）
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数よりも少ないときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を、前記第２の学習優先度でアドレスが登録されているエントリの１つに格納する
ことを特徴とする付記５に記載の通信装置。
（付記８）
受信フレームに対応するグループにおける前記第１の学習優先度でのアドレスの学習数が、前記受信フレームに対応するグループに対して与えられている前記第１の上限数よりも少なく、且つ、各グループにおける前記第１の学習優先度でのアドレスの学習数の合計が、前記テーブルの最大エントリ数に達しているときは、前記学習制御部は、前記受信フレームの送信元アドレスおよび対応する転送情報を、前記第１の学習優先度でアドレスが登録されているエントリの１つに格納する
ことを特徴とする付記５に記載の通信装置。
（付記９）
受信フレームに対応するグループおよび前記受信フレームに付与されているフレーム優先度に基づいて、学習優先度を選択する学習優先度選択部をさらに有し、
前記学習制御部は、受信フレームに対応するグループにおける前記学習優先度選択部により選択された学習優先度でのアドレスの学習数と、前記受信フレームに対応するグループに対して与えられている、前記学習優先度選択部により選択された学習優先度に対応する上限数との比較に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とする付記５に記載の通信装置。
（付記１０）
前記学習優先度選択部は、前記受信フレームに付与されているフレーム優先度を対応する学習優先度に変換する
ことを特徴とする付記９に記載の通信装置。
（付記１１）
前記格納部は、前記グループ毎に、前記第１の学習優先度で学習されたアドレスを前記テーブルに保持しておく時間を表す第１のエージング時間、および前記第２の学習優先度で学習されたアドレスを前記テーブル保持しておく時間を表す第２のエージング時間を格納し、
前記学習制御部は、前記第１の学習優先度で前記テーブルに登録されているアドレスに対して前記第１のエージング時間でエージング処理を行い、前記第２の学習優先度で前記テーブルに登録されているアドレスに対して前記第２のエージング時間でエージング処理を行う
ことを特徴とする付記５に記載の通信装置。
（付記１２）
それぞれフレームを受信および送信するための複数の通信ポートをさらに有し、
前記グループは、各通信ポートを識別する識別情報に基づいて指定される
ことを特徴とする付記１〜１１のいずれか１つに記載の通信装置。
（付記１３）
前記グループは、各フレームに格納されている、ユーザまたはネットワークを識別するための識別情報に基づいて指定される
ことを特徴とする付記１〜１１のいずれか１つに記載の通信装置。
（付記１４）
フレーム転送を制御するための転送情報を格納するテーブルに、受信フレームの送信元アドレスおよび対応する転送情報を登録することにより、前記受信フレームの送信元アドレスを学習するアドレス学習方法であって、
ネットワーク毎に学習可能なアドレスの上限数を格納する格納部から、受信フレームが属するネットワークに対応する上限数を取得し、
前記受信フレームが属するネットワークのアドレスの学習数と、前記受信フレームが属するネットワークに対応する上限数との比較の結果に基づいて、前記受信フレームの送信元アドレスを学習できるか否かを判定する
ことを特徴とするアドレス学習方法。
【符号の説明】
【０１８０】
１      通信装置
１１      インタフェース部
１２      スイッチ部
１３      制御部
３１、４３、５４      ＭＡＣアドレステーブル
３２      スイッチ回路
３３      テーブル制御部
３４      ポートテーブル
３５      ポート学習カウンタ
４１、５１、６１      ＶＬＡＮテーブル
４２、５２      ＶＬＡＮ学習カウンタ
５３      全体学習カウンタ
６２      クラステーブル
【図１】
2014072581.tif 000003
【図２】
2014072581.tif 000004
【図３】
2014072581.tif 000005
【図４】
2014072581.tif 000006
【図５】
2014072581.tif 000007
【図６】
2014072581.tif 000008
【図７】
2014072581.tif 000009
【図８】
2014072581.tif 000010
【図９】
2014072581.tif 000011
【図１０】
2014072581.tif 000012
【図１１】
2014072581.tif 000013
【図１２】
2014072581.tif 000014
【図１３】
2014072581.tif 000015
【図１４】
2014072581.tif 000016
【図１５】
2014072581.tif 000017
【図１６】
2014072581.tif 000018
【図１７】
2014072581.tif 000019
【図１８】
2014072581.tif 000020
【図１９】
2014072581.tif 000021
【図２０】
2014072581.tif 000022
【図２１】
2014072581.tif 000023
【図２２】
2014072581.tif 000024
【図２３】
2014072581.tif 000025
【図２４】
2014072581.tif 000026
【図２５】
2014072581.tif 000027