以下、実施の形態について、図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態を示す図である。図1に示す通信装置1は、フラグ生成部11、検索キー生成部12、検索制御部13、エントリ検索情報記憶部14を有する。また、通信装置1は、検索制御部13による検索結果に応じて受信したフレームの転送先を判定する受信フレーム判定部15を有する。
通信装置1は、ユーザが使用する端末装置(図示省略)から送信されるフレームやパケット等のデータを受信し、データ内に格納されたアドレス情報等の制御情報に基づいて転送する処理を行う。例えば、端末装置から送信されたEthernetフレームやIPフレームを転送する場合、通信装置1は、Ethernetフレーム内に格納されたMACアドレス(Media Access Control address)やIPフレーム内に格納された IPアドレス(Internet Protocol address)等に基づいて転送する処理を行う。このデータは、通信装置1が接続されているネットワークにおいて分割されて転送される。具体的には、通信装置1がL2(Layer 2)スイッチであれば、分割されたデータはフレーム(frame)である。通信装置1がL3(Layer 3)スイッチであれば、分割されたデータはパケット(packet)である。本実施の形態では、転送されるデータとしてフレームを例示して説明する。しかし、これに制限されず、転送されるデータとしてはパケットであってもよく、分割されないデータであってもよい。
フラグ生成部11は、受信したフレームが有するフレーム制御情報に基づいて受信したフレームの種別を示すフレームフラグ情報を生成する。
検索キー生成部12は、フラグ生成部11によって生成されたフレームフラグ情報と受信したフレームが有するフレーム制御情報の全部または一部とを有する検索キー情報を生成する。
検索制御部13は、エントリ検索情報記憶部14を制御して、検索キー情報が有するフレームフラグ情報とエントリ検索情報が有するエントリフラグ情報とを比較して、比較結果が一致したエントリ検索情報について、検索キー情報が有するフレーム制御情報で検索する。
エントリ検索情報記憶部14は、エントリしたフレームの種別を示すエントリフラグ情報と、エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶する。
このようにして、受信したフレームの種別をチェックし、種別に応じたフレームフラグ情報を生成する。そして、そのフレームフラグ情報を、エントリの検索を行う検索キーに含ませる。また、エントリには、フレームの種別を示すエントリフラグ情報を含ませ、これらを用いて検索を行う。これにより、エントリフラグ情報およびフレームフラグ情報により、検索するエントリを特定することが可能になるので、エントリのアドレス順序性を意識する必要が無くなり、任意のアドレスに任意のエントリを設定することが可能になるので、エントリのソートが不要になる。
次に、上記の通信装置のさらに具体的な実施の態様について説明する。
なお、以下の実施の形態では通信装置をスイッチとして、特にMACアドレスに基づいてデータリンク層のフレームを中継するL2スイッチを例示しして説明する。なお、これに制限されず、本実施形態は、通信装置として、例えばIPアドレスに基づいてネットワーク層のパケットを中継するIPルータやL3スイッチにも適用することができる。また、OSI(Open Systems Interconnection)参照モデルにおけるL2のデータの単位を、パケットと呼ぶこともあるが、以下の実施の形態では、説明の便宜上、すべてフレームに統一して表現する。
[第2の実施の形態]
次に、第2の実施の形態について説明する。
図2は、第2の実施の形態の通信システムの全体構成を示す図である。本実施の形態の通信システムは、端末装置間でデータの送受信を行えるように、複数のL2スイッチがデータリンク層のフレームを中継するものである。
図2に示す通信システムは、スイッチ100,100a,100b,100c,100d,100e,100f,100gと端末装置61,62,63,64,65,66,67,68とで構成される。スイッチ100,100a,100b,100c,100d,100e,100f,100gは、L2スイッチである。端末装置61,62,63,64,65,66,67,68は、ユーザが使用する端末装置である。スイッチ100a,100b,100c,100d,100e,100f,100gは、スイッチ100と同様に構成されており、同等の機能を有する。
スイッチ100は、スイッチ100a,100b,100cと接続されている。スイッチ100aは、スイッチ100,100b,100cと接続されている。スイッチ100bは、スイッチ100,100a,100c,100d,100eと接続されている。スイッチ100cは、スイッチ100,100a,100b,100d,100eと接続されている。スイッチ100dは、スイッチ100b,100c,100e,100f,100gと接続されている。スイッチ100eは、スイッチ100b,100c,100d,100f,100gと接続されている。スイッチ100fは、スイッチ100d,100e,100gと接続されている。スイッチ100gは、スイッチ100d,100e,100fと接続されている。
端末装置61,62は、スイッチ100と接続されている。端末装置63,64は、スイッチ100aと接続されている。端末装置65,66は、スイッチ100fと接続されている。端末装置67,68は、スイッチ100gと接続されている。2つのスイッチ間またはスイッチと端末装置の間は、1つ以上の物理リンク(ネットワークケーブル)で接続されている。
スイッチ100,100a,100b,100c,100d,100e,100f,100gは、フレームに含まれるアドレスに従って、送信元の端末装置から宛て先の端末装置まで、フレームを中継する。具体的には、端末装置61が端末装置68へフレームを送信する場合、例えば、スイッチ100、スイッチ100c、スイッチ100d、スイッチ100gの順にフレームが中継される。
図3は、第2の実施の形態のスイッチのハードウェア構成を示す図である。図3は、スイッチ100の内部構成を示したものであるが、スイッチ100a,100b,100c,100d,100e,100f,100gも同様の構成で実現できる。スイッチ100は、CPU101、インタフェースカード102a,102b,102c,102d、スイッチカード103、テーブル記憶メモリ104、ポート監視部105、バス106を有している。
CPU101は、スイッチ100全体を制御している。CPU101は、プログラムによる処理を実行する。CPU101は、図示しないメモリに保持されたデータを用いて、同じくメモリに保持されたプログラムを実行する。CPU101は、図示しない通信インタフェースを介して、管理者が使用する図示しない管理用端末装置から送信されるコマンドを受信するとともに、コマンドに対する実行結果を管理用端末装置に応答する。
テーブル記憶メモリ104は、複数のテーブルを記憶している。テーブル記憶メモリ104に記憶されるテーブルには、論理リンクの構成を管理するテーブル、論理リンク内でのフレームの転送先を決定するためのテーブル、フレームの転送先を示す情報を格納するテーブルが含まれる。
バス106には、CPU101、インタフェースカード102a,102b,102c,102d、スイッチカード103、テーブル記憶メモリ104、ポート監視部105が接続されている。
インタフェースカード102a,102b,102c,102dは、それぞれ複数個(例えば、8個)の通信ポートを有している。それぞれの通信ポートには、1つの物理リンクを接続できる。インタフェースカード102a,102b,102c,102dは、それぞれの通信ポートを監視してフレームを取得する。なお、インタフェースカード102a,102b,102c,102dは、複数の通信ポートに同時にフレームが到来した場合に備えて、フレームを一時的に保持するバッファを内部に有している。そして、インタフェースカード102a,102b,102c,102dは、取得したフレームをスイッチカード103に送る。
スイッチカード103は、フレームの宛先を示すテーブルを有している。スイッチカード103は、テーブルに、受信したフレームの送信元アドレスと、そのフレームが到来した通信ポートまたは論理リンクの識別情報とを対応付けて記憶している。このテーブルの内容は、事前に静的に設定されたものである。
そして、スイッチカード103は、インタフェースカード102a,102b,102c,102dのいずれかからフレームを受け取ると、テーブルを参照して、そのフレームの転送先を決定する。ここで、決定した転送先が論理リンクである場合、スイッチカード103は、テーブル記憶メモリ104に記憶されたテーブルを参照して、転送に使用する具体的なインタフェースカード102a,102b,102c,102dおよび通信ポートを決定する。その後、スイッチカード103は、フレームを、決定したインタフェースカード102a,102b,102c,102dに送る。
フレームを受け取ったインタフェースカード102a,102b,102c,102dは、受け取ったフレームを、決定された通信ポートから送信先に送出する。
ポート監視部105は、インタフェースカード102a,102b,102c,102dの通信ポートを監視する。そして、ポート監視部105は、インタフェースカード102a,102b,102c,102dの通信ポートに接続された物理リンクの故障や復旧を検出すると、CPU101にその旨を通知する。
図4は、第2の実施の形態のフレームのデータ構造例を示す図である。図4に示すフレーム30,31,32が、インタフェースカード102a,102b,102c,102dの通信ポートを介して、スイッチ100等との間で送受信される。
フレーム30は、VLANタグを有さないタグ無しのフレームである。フレーム31は、1段のVLANタグを有する1段タグのフレームである。フレーム32は、2段のVLANタグを有する2段タグのフレームである。これらのフレーム30〜32は、スイッチ100における同一の物理ポート内に混在させて転送される場合がある。
フレーム30は、宛先MACアドレス(MAC DA:Media Access Control address Destination Address)、送信元MACアドレス、E−TYPE(EtherType)、ペイロードおよびFCS(Frame Check Sequence)を有する。フレーム31,32は、さらにそれぞれ1段または2段のVLANタグを有する。
宛先MACアドレスは、送信先の端末装置が有する通信インタフェースを一意に識別するアドレスである。送信元MACアドレスは、送信元の端末装置が有する通信インタフェースを一意に識別するアドレスである。VLANタグは、TPIDおよびVLAN IDを有している。図4のフレーム32に示すように、複数のVLANタグを連続してスタックすることも可能である。E−TYPEは、使用するプロトコルを指定するフィールドである。E−TYPEは、後段のペイロードに格納されるメッセージタイプが格納される。例えば、0x0800はIPv4フレームを示す。ペイロードは、IPv4フレーム等の上位レイヤのメッセージが格納される。ペイロードは、例えば、送受信するデータ本体であり、IPパケットを所定のデータ長に分割したものである。FCSは、受信したフレームの誤りを検出するために用いられる値である。
TPIDは、VLAN IDが後段に格納されていることを示すと共に、当該フレームの種類(例えば、VLANのフレームであるか通常のフレームであるか)を示す値である。TPIDは、一般的にIEEE802.1qで規定される0x8100が設定される。VLAN IDは、1つのネットワークを複数の論理的なネットワークに分割して運用する場合に、個々の論理的なネットワークに割り当てられる一意に定められた値である。VLAN IDには例えば、ユーザを特定するためのVLAN ID値が格納される。
図4に示す各種類のフレームが混在するスイッチ100のEthernetの物理ポートにおいて、一般的にタグ無しフレーム(フレーム30)は、特定のユーザ専用のフレームとして使用され、または、スイッチ間で送受信される制御フレームとして使用される。
VLANタグを有するフレーム(フレーム31,32)は、VLAN IDフィールドにユーザを識別するためのVLAN IDが格納される。例えば、ユーザAにはVLAN ID=100を割り当て、ユーザBにはVLAN ID=200を割り当てることができる。このように、異なるユーザに対して異なるVLAN IDを割り当てることにより、ネットワーク上でVLAN IDによるユーザの識別を行うことが可能になる。
また2段タグフレーム(フレーム32)は、下位ネットワークのフレームを上位ネットワークで転送するような場合において使用される。一般的に2段目のVLANタグは、下位ネットワークのユーザを識別するためのタグや管理用タグとして使用される。また、一般的に1段目のVLANタグは、上位ネットワークにおけるユーザを識別するためのタグや管理用タグとして使用される。
また、このような場合、下位ネットワークのフレームから上位ネットワークへの入り口において、外側タグとして、上位ネットワーク管理用のVLANタグ(例えば、フレーム32における2段目のVLANタグ)が新たに付与される。さらに、上位ネットワークから下位ネットワークへの出口において、上位ネットワーク管理用のVLANタグとして付与された、外側タグが削除される。
なお、フレームのデータ構造は、ネットワークの運用形態等に応じて、種々の変形例が考えられる。また、図4に示したもの以外のヘッダ情報が付加される場合もある。
図5は、第2の実施の形態のスイッチの機能を示すブロック図である。なお、図5ではスイッチ100を示しているが、他のスイッチ100a,100b,100c,100d,100e,100f,100gもスイッチ100と同様の機能を持たせることにより実現できる。
図5は、インタフェースカード102aによってフレームが受信され、スイッチカード103を介してインタフェースカード102b,102c,・・・が有するポート#1〜#Nによって転送される時のスイッチ100の動作を示す。
インタフェースカード102aは、フレーム受信部121、フラグ生成部122、検索キー生成部123、受信フレーム判定部124、連想メモリアクセス制御部125、連想メモリ126、アソシエイトメモリアクセス制御部127、アソシエイトメモリ128を有する。
インタフェースカード102aは、接続されている他の通信装置や端末装置等の通信機器と通信する回線ポート(例えば、ポート#1)を収容しており、通信機器とのインタフェース機能、受信フレーム処理、送信フレーム処理等を提供する。インタフェースカード102aは、スイッチ100に対して着脱可能としてもよく、スイッチ100やスイッチ100のマザーボードと一体化してもよい。
フレーム受信部121は、インタフェースカード102aが有する各受信ポート(例えば、ポート#1〜#N)の物理レイヤおよびMACレイヤの終端を行う。MACレイヤでは、受信したフレームのFCSチェック等を行い、FCSエラーが検出されたフレームは廃棄し、エラーが検出されなかったフレームは受信する。このフレームは、スイッチ100が接続されているネットワークを用いて統計多重化により転送されるユーザデータである。
フラグ生成部122は、受信したフレームが有するフレーム制御情報に基づいて、受信したフレームの種別を示すフラグ情報であるフレームフラグ情報を生成する。フレームフラグ情報は、受信したフレームのVLANタグの有無および個数を示す。フラグ生成部122は、受信したフレームのTPIDが設定される領域の値が所定の値と一致する場合には、受信したフレームはVLANタグを有すると判定してフレームフラグ情報を生成する。フラグ生成部122は、受信フレームのVLANタグのタグ段数をチェックし、タグ段数に応じてフレームフラグ情報の値を決定する。生成されたフレームフラグ情報は受信フレームと共に検索キー生成部123に送信される。
検索キー生成部123は、フラグ生成部122によって生成されたフレームフラグ情報と受信したフレームが有するフレーム制御情報の全部または一部とを有する検索キー情報を生成する。
検索キー生成部123は、受信したフレームから制御情報を取得する。このとき、検索キー生成部123は、受信したフレームの先頭から20バイト目までの、20バイト分のデータを切り出して制御情報を取得し、取得した制御情報をフラグ生成部122から受信したフレームフラグ情報および受信したポート番号と結合して、連想メモリアクセス制御部125に対して連想メモリ126の検索キーとして送信する。
受信フレーム判定部124は、フレーム受信部121で受信したフレームについて、上記検索の結果に基づいて、送信先の判定や廃棄の判定等、受信したフレームの制御を行う。受信フレーム判定部124は、アソシエイトメモリアクセス制御部127から送信された宛先情報に基づいて受信したフレームの宛先を判定する。また、受信フレーム判定部124は、宛先情報が有する受信有効フラグが受信を拒否することを示す場合には、受信したフレームを廃棄する。
連想メモリアクセス制御部125は、検索キー生成部123から送信された連想メモリ126に対する検索と、CPU101から連想メモリ126に対するアクセスとの調停制御を行う。
連想メモリアクセス制御部125は、連想メモリ126を制御して、検索キー情報が有するフレームフラグ情報とエントリ検索情報が有するエントリフラグ情報とを比較して、比較結果が一致したエントリ検索情報について、そのエントリ検索情報が有するエントリ制御情報と検索キー情報が有するフレーム制御情報とを比較して検索する。連想メモリアクセス制御部125は、検索制御部として機能する。
連想メモリ126は、エントリしたフレームの種別を示すフラグ情報であるエントリフラグ情報と、エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶する。エントリフラグ情報は、エントリしたフレームのVLANタグの有無および個数を示す。連想メモリ126は、連想メモリアクセス制御部125から送信された検索キーによる検索を実行して、一致するエントリがあった場合には、そのエントリが格納されているアドレスをアソシエイトメモリアクセス制御部127に送信する。この送信されたアドレスをインデックスとして、アソシエイトメモリ128のエントリを読み出すことが可能となる。連想メモリ126は、エントリ検索情報記憶部として機能する。なお、本実施の形態では連想メモリ126を用いているが、これに限らず、SRAM(Static Random Access Memory)等、他の方式の記憶装置を用いてもよい。
アソシエイトメモリアクセス制御部127は、連想メモリ126からのアクセスと、CPU101からアソシエイトメモリ128に対するアクセスとの調停制御を行う。また、アソシエイトメモリアクセス制御部127は、一連の検索処理により連想メモリ126から検索されたエントリ検索情報に応じて、アソシエイトメモリ128に記憶されている受信したフレームの宛先情報を受信フレーム判定部124に送信する。アソシエイトメモリアクセス制御部127は、宛先制御部として機能する。
アソシエイトメモリ128は、受信したフレームの宛先を示す宛先情報を記憶する。宛先情報は、受信したフレームについて受信を許可するかまたは受信を拒否するかを示す受信有効フラグを有する。アソシエイトメモリ128は、宛先情報記憶部として機能する。なお、アソシエイトメモリ128は、SRAMで構成されるが、これに限らず、DRAM(Dynamic Random Access Memory)等、他の方式の記憶装置を用いてもよい。
インタフェースカード102b,102c,・・・は、インタフェースカード102aと同様に構成され、同様の機能を有する。
スイッチカード103は、受信フレーム判定部124の判定結果に基づいて、ユーザフレームを受信したインタフェースカードから送信するインタフェースカードに転送する。これに基づいて、転送されたインタフェースカードのポートからフレームが出力される。
スイッチカード103は、スイッチ100においてインタフェースカード102a等とデータ信号で接続されており、インタフェースカード102a等の間のフレーム転送の切り替えを行う。スイッチカード103は、スイッチ100に対して着脱可能としてもよく、スイッチ100やスイッチ100のマザーボードと一体化してもよい。
図6は、第2の実施の形態のエントリ検索テーブルのデータ構造例を示す図である。図6に示すエントリ検索テーブル126aは、連想メモリ126に記憶されている、スイッチ100で受信したフレームのエントリの構成を示す。エントリ検索テーブル126aは、スイッチ100で受信するフレームの検索キーと比較される各エントリの検索条件を示すエントリ検索情報を記憶するテーブルである。エントリ検索テーブル126aには、“アドレス”、“タグ無しフラグ”フィールド、“1段タグフラグ”フィールド、“2段タグフラグ”フィールド、“受信ポート番号”フィールド、“宛先MACアドレス”フィールド、“送信元MACアドレス”フィールド、“TPID”フィールド(1段目)、“VLAN ID”フィールド(1段目)、“TPID”フィールド(2段目)、“VLAN ID”フィールド(2段目)が設けられている。各フィールドの横方向に並べられた情報同士がエントリ検索情報として互いに関連付けられている。
“アドレス”は、連想メモリ126における各エントリ検索情報が格納されているアドレスである。
“タグ無しフラグ”フィールド、“1段タグフラグ”フィールド、”2段タグフラグ”フィールドは、エントリの検索条件であるVLANタグの有無および段数を示すエントリフラグ情報が設定される各1ビットの領域である。エントリのフレームがタグ無しであれば、タグ無しフラグに“1”が設定される。エントリのフレームが1段タグであれば、1段タグフラグに“1”が設定される。エントリのフレームが2段タグであれば、2段タグフラグに“1”が設定される。
“受信ポート番号”フィールドは、エントリの検索条件であるフレームを受信した受信ポート番号を示す1バイトの領域である。
“宛先MACアドレス”フィールドは、エントリの検索条件であるスイッチ100で受信したフレームに示されている宛先MACアドレスを示す6バイトの領域である。“送信元MACアドレス”フィールドは、エントリの検索条件であるスイッチ100で受信したフレームに示されている送信元MACアドレスを示す6バイトの領域である。“TPID”フィールド(1段目)は、エントリの検索条件である1段目のVLANタグのTPIDの値を示す2バイトの領域である。“VLAN ID”フィールド(1段目)は、エントリの検索条件である1段目のVLANタグのVLAN IDの値を示す2バイトの領域である。“TPID”フィールド(2段目)は、エントリの検索条件である2段目のVLANタグのTPIDの値を示す2バイトの領域である。“VLAN ID”フィールド(2段目)は、エントリの検索条件である2段目のVLANタグのVLAN IDの値を示す2バイトの領域である。
本実施の形態では、図6に示すエントリ検索テーブル126aにおいて、上記のように、最初の3ビットは、“タグ無しフラグ”フィールド、“1段タグフラグ”フィールド、”2段タグフラグ”フィールドのエントリフラグ情報であり、次の1バイトは、受信ポート番号である。そして、残り20バイト(宛先MACアドレスフィールドからVLAN IDフィールド(2段目)まで)は、スイッチ100で受信したフレームの先頭から20バイト分のデータに対応するものである。このエントリ検索テーブル126aに示された各エントリのエントリフラグ情報および宛先MACアドレスフィールドからVLAN IDフィールド(2段目)までを、スイッチ100で受信したフレームについて、フラグ生成処理で生成されたフラグおよび先頭から20バイト分のデータである検索キーと比較することにより、フレームの検索が行われる。
また、エントリ検索テーブル126aにおいて、“−”はマスクされた領域を示す。マスクは、検索キーにおいてその領域がフレームとの比較の対象としないことを示しており、フレーム側においてマスクに対応する領域がいかなる値であっても、当該領域は一致しているものと判定される。また、連想メモリ126は、ビット単位に比較対象の制御が可能である。
エントリ検索テーブル126aの例では、アドレス100にタグ無しフレームのエントリが登録され、アドレス101に1段タグのフレームのエントリ(TPID=0x8100、VLAN ID=100)が登録されている。アドレス102に2段タグのフレームのエントリ(1段目のタグ(外側タグ)のTPID=0x8100、1段目のタグのVLAN ID=100、2段目のタグ(内側タグ)のTPID=0x8100、2段目のタグのVLAN ID=200)が登録されている。
また、連想メモリ126の検索キーによる検索は、若番アドレスから老番アドレスへ順に実施され、完全一致するエントリが見つかった場合、その時点で検索処理は終了し、そのエントリが格納されている連想メモリ126のアドレス値が連想メモリ126より出力される。
最終アドレスには、全マスクが設定された最終エントリを設定しておくものとする。これにより、受信したフレームに一致するエントリが登録されていない場合でも、受信したフレームを必ず最終アドレスのエントリに一致すると判定することが可能である。これに従い、受信したフレームの検索キーと比較して、連想メモリ126から送信される検索結果のアドレスが最終アドレスである場合には、「受信したフレームは、一致するエントリが無い」と判断される。
本実施の形態では、エントリ検索テーブル126aが有するエントリフラグ情報により、例えば1段タグ(TPID=0x8100、VLAN ID=100)のフレームや2段タグ(1段目のタグのTPID=0x8100、1段目のタグのVLAN ID=100、2段目のタグのTPID=0x8100、2段目のタグのVLAN ID=200)のフレームを受信し、受信したフレームの検索キーによって連想メモリ126が検索された場合に、タグ無し、1段タグ、2段タグではそれぞれ検索時に制御情報まで比較されるエントリフラグ情報が異なるため、1段タグや2段タグのフレームの検索キーが、タグ無しのフレームのエントリと一致することは無い。また、同様に、2段タグのフレームを受信し、受信したフレームの検索キーによって連想メモリ126が検索された場合に、検索キーが1段タグのフレームのエントリと一致することは無い。
このように本実施の形態では、フラグ生成処理によって、受信したフレームについて予めVLANタグのタグ段数がチェックされ、VLANタグの段数に応じたフレームフラグ情報が生成される。そして、生成されたフレームフラグ情報が検索キーに含まれる。これにより、連想メモリ126のエントリ検索テーブル126aに登録されるエントリのアドレスの順序を意識する必要が無くなるので、連想メモリ126の任意のアドレスに任意のエントリを設定することが可能であり、この場合にもエントリのソートが不要になる。
また、エントリ検索テーブル126aに示すように、最終エントリには全マスクのエントリを設定する。これにより、連想メモリ126における他のいずれのエントリにも一致しないフレームが存在する場合にも、そのようなフレームが最終エントリに一致したことにより未登録フレームと判定して廃棄することが可能になる。
なお、図6は、インタフェースカード102aが有する連想メモリ126に記憶されているエントリ検索テーブル126aを示したものであるが、インタフェースカード102b,102c,・・・が有するエントリ検索テーブル(図示省略)も同様の構成で実現できる。
図7は、第2の実施の形態の宛先テーブルのデータ構造例を示す図である。図7に示す宛先テーブル128aは、アソシエイトメモリ128に記憶されている、スイッチ100で受信したフレームの宛先を示す宛先情報を記憶するテーブルである。宛先テーブル128aには、“アドレス”、“受信有効フラグ”フィールド、“宛先カード情報”フィールド、“宛先ポート情報”フィールドが設けられている。各フィールドの横方向に並べられた情報同士が宛先情報として互いに関連付けられている。
“アドレス”は、アソシエイトメモリ128における各宛先情報が格納されているアドレスである。
“受信有効フラグ”フィールドには、エントリ検索テーブル126aにおいてそのアドレスに対応するエントリ検索情報と検索キーとを比較して、検索キーが一致したインタフェースカード102aで受信したフレームについて受信の許可または拒否を示すフラグが設定される。検索キーが、アドレスに対応するエントリ検索情報と一致したフレームについて、そのフレームの受信を許可する場合には、有効を示す値(例えば、“1”)が設定される。受信有効フラグに有効を示す値が設定されている場合、そのフレームは受信され、宛先カード情報および宛先ポート情報が示す宛先に転送される。検索キーが、アドレスに対応するエントリ検索情報と一致したフレームについて、そのフレームの受信を拒否する場合には、無効を示す値が設定される。受信有効フラグに無効を示す値(例えば、“0”)が設定されている場合、そのフレームは廃棄される。
“宛先カード情報”フィールドには、受信有効フラグにより受信が許可された各フレームの転送先のインタフェースカードを示す情報が設定される。宛先ポート情報”フィールドには、受信有効フラグにより受信が許可された各フレームの転送先のインタフェースカードにおけるポート番号を示す情報が設定される。
また、宛先テーブル128aに示すように、最終エントリには全マスクのエントリを設定する。この全マスクエントリに対応するエントリの受信有効フラグについて無効を示す“0”を設定する。これにより、アソシエイトメモリ128のどのエントリにも一致しないエントリに対して、そのエントリに一致したフレームを未登録フレームとして廃棄することが可能になる。
図8は、第2の実施の形態のフラグ生成処理の手順を示すフローチャートである。図8に示すフラグ生成処理は、受信されたフレームの先頭部分を取得し、取得した先頭部分に基づいてフレームフラグ情報が生成される処理である。フラグ生成処理は、フレーム受信部121にユーザフレームを受信し、フラグ生成部122にフレームが送信された場合に実行が開始される。
本実施の形態のフラグ生成処理では、以下に示すように、ユーザフレームを受信したインタフェースカード102aにより、受信したフレームの先頭部分が取得される。次に、取得した先頭部分に含まれているVLANタグのTPIDを取得してVLANタグが設定されているか否かおよび何段設定されているかを判定し、判定結果に基づいてフレームフラグ情報がセットされる。フラグ生成処理によって生成されたフラグは、受信したフレームの検索キーの一部であって、エントリ検索情報のエントリフラグ情報に対応する部分となる。
[ステップS11]フラグ生成部122は、受信したフレームの先頭部分(例えば、先頭から20バイト分)を切り出して取得する。
[ステップS12]フラグ生成部122は、ステップS11で取得したフレームの先頭部分における1段目のVLANタグのTPIDの領域(先頭から13バイト目および14バイト目)を参照して、1段目にVLANタグが設定されていることを示す所定値(例えば、“0x8100”)であるか否かについて判定する。1段目のVLANタグのTPIDの領域が所定値であれば、処理はステップS14に進められる。一方、1段目のVLANタグのTPIDの領域が所定値でなければ、処理はステップS13に進められる。
[ステップS13]フラグ生成部122は、受信したフレームのフレームフラグ情報に“タグ無し”を示す値(例えば、タグ無しフラグ=“1”、1段タグフラグ=“0”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
[ステップS14]フラグ生成部122は、ステップS11で取得したフレームの先頭部分における2段目のVLANタグのTPIDの領域(先頭から17バイト目および18バイト目)を参照して、2段目にVLANタグが設定されていることを示す所定値であるか否かについて判定する。2段目のVLANタグのTPIDの領域が所定値であれば、処理はステップS15に進められる。一方、2段目のVLANタグのTPIDの領域が所定値でなければ、処理はステップS16に進められる。
[ステップS15]フラグ生成部122は、受信したフレームのフレームフラグ情報に“2段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“0”、2段タグフラグ=“1”)をセットする。その後、処理は終了する。
[ステップS16]フラグ生成部122は、受信したフレームのフレームフラグ情報に“1段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“1”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
以上のように、第2の実施の形態によれば、予めVLANタグのタグ段数をチェックして、タグ段数に応じたフレームフラグ情報を生成する。そして、そのフレームフラグ情報を検索キーに含ませる。これにより、連想メモリ126に登録されているエントリのマスクがあっても、フレームフラグ情報およびエントリフラグ情報を比較することにより、検索するエントリを特定することが可能になるので、一致するフレームおよびエントリ同士を一意に特定することが可能になる。このため、連想メモリ126に登録されるエントリのアドレスの順序を意識する必要が無くなり、ソフトウェアは任意のアドレスに任意のエントリを設定すると共に、エントリのソートが不要になるので、スイッチ100における転送処理の負荷を軽減し、転送処理の安定化および高速化を図ることが可能になる。
また、全マスクのエントリを連想メモリ126の最終アドレスに登録することにより、最終エントリに一致したフレームを未登録フレームとして廃棄することが可能になる。
また、同様に、全マスクのエントリをアソシエイトメモリ128の最終アドレスに登録することにより、最終エントリに一致したフレームを未登録フレームとして廃棄することが可能になる。
[第3の実施の形態]
次に、第3の実施の形態について説明する。上記の第2の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いると共に説明を省略する。
第3の実施の形態は、TPIDの値が複数種類存在する場合に対応可能である点で、第2の実施の形態と異なる。
図9は、第3の実施の形態のスイッチの機能を示すブロック図である。図9は、インタフェースカード202aによってフレームが受信され、スイッチカード203を介してインタフェースカード202b,202c,・・・が有するポート#1〜#Nによって転送される時のスイッチ200の動作を示す。
インタフェースカード202aは、フレーム受信部221、フラグ生成部222、検索キー生成部223、受信フレーム判定部224、連想メモリアクセス制御部225、連想メモリ226、アソシエイトメモリアクセス制御部227、アソシエイトメモリ228を有する。
インタフェースカード202aは、接続されている他の通信装置や端末装置等の通信機器と通信する回線ポートを収容しており、通信機器とのインタフェース機能、受信フレーム処理、送信フレーム処理等を提供する。
フレーム受信部221は、インタフェースカード202aが有する各受信ポートの物理レイヤおよびMACレイヤの終端を行う。
フラグ生成部222は、受信したフレームが有するフレーム制御情報に基づいて受信したフレームの種別を示すフラグ情報であるフレームフラグ情報を生成する。フレームフラグ情報は、受信したフレームのVLANタグの有無および個数を示す。
ここで、本実施の形態では、フレームフラグ情報の生成の判定に用いられるTPIDの値は、予め複数種類設定されている。フラグ生成部222は、受信したフレームのTPIDが設定される領域の値が、予め設定されているいずれかの値と一致する場合には、受信したフレームはVLANタグを有すると判定してフレームフラグ情報を生成する。フラグ生成部222は、受信フレームのVLANタグのタグ段数をチェックし、タグ段数に応じてフレームフラグ情報の値を決定する。生成されたフレームフラグ情報は受信フレームと共に検索キー生成部223に送信される。
検索キー生成部223は、フラグ生成部222によって生成されたフレームフラグ情報と受信したフレームが有するフレーム制御情報の全部または一部とを有する検索キー情報を生成する。
検索キー生成部223は、受信したフレームから制御情報を取得する。このとき、検索キー生成部223は、受信したフレームの先頭から20バイト目までの、20バイト分のデータを切り出して制御情報を取得し、取得した制御情報をフラグ生成部222から受信したフレームフラグ情報および受信したポート番号と結合して、連想メモリアクセス制御部225に対して連想メモリ226の検索キーとして送信する。
受信フレーム判定部224は、フレーム受信部221で受信したフレームについて、上記検索の結果に基づいて、送信先の判定や廃棄の判定等、受信したフレームの制御を行う。受信フレーム判定部224は、アソシエイトメモリアクセス制御部227から送信された宛先情報に基づいて受信したフレームの宛先を判定する。また、受信フレーム判定部224は、宛先情報が有する受信有効フラグが受信を拒否することを示す場合には、受信したフレームを廃棄する。
連想メモリアクセス制御部225は、検索キー生成部223から送信された連想メモリ226に対する検索と、CPU101から連想メモリ226に対するアクセスとの調停制御を行う。
連想メモリアクセス制御部225は、連想メモリ226を制御して、検索キー情報が有するフレームフラグ情報とエントリ検索情報が有するエントリフラグ情報とを比較して、比較結果が一致したエントリ検索情報について、そのエントリ検索情報が有するエントリ制御情報と検索キー情報が有するフレーム制御情報とを比較して検索する。連想メモリアクセス制御部225は、検索制御部として機能する。
連想メモリ226は、エントリしたフレームの種別を示すフラグ情報であるエントリフラグ情報と、エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶する。エントリフラグ情報は、エントリしたフレームのVLANタグの有無および個数を示す。連想メモリ226は、連想メモリアクセス制御部225から送信された検索キーによる検索を実行して、一致するエントリがあった場合には、そのエントリが格納されているアドレスをアソシエイトメモリアクセス制御部227に送信する。ここで、本実施の形態では、図10に後述するように、エントリ検索情報においても、TPIDの値は予め複数種類設定されている。この送信されたアドレスをインデックスとして、アソシエイトメモリ228のエントリを読み出すことが可能となる。連想メモリ226は、エントリ検索情報記憶部として機能する。
アソシエイトメモリアクセス制御部227は、連想メモリ226からのアクセスと、CPU101からアソシエイトメモリ228に対するアクセスとの調停制御を行う。また、アソシエイトメモリアクセス制御部227は、一連の検索処理により連想メモリ226から検索されたエントリ検索情報に応じて、アソシエイトメモリ228に記憶されている受信したフレームの宛先情報を受信フレーム判定部224に送信する。アソシエイトメモリアクセス制御部227は、宛先制御部として機能する。
アソシエイトメモリ228は、受信したフレームの宛先を示す宛先情報を記憶する。宛先情報は、受信したフレームについて受信を許可するかまたは受信を拒否するかを示す受信有効フラグを有する。アソシエイトメモリ228は、宛先情報記憶部として機能する。
インタフェースカード202b,202c,・・・は、インタフェースカード202aと同様に構成され、同様の機能を有する。
スイッチカード203は、受信フレーム判定部224の判定結果に基づいて、ユーザフレームを受信したインタフェースカードから送信するインタフェースカードに転送する。これに基づいて、転送されたインタフェースカードのポートからフレームが出力される。
図10は、第3の実施の形態のエントリ検索テーブルのデータ構造例を示す図である。図10に示すエントリ検索テーブル226aは、連想メモリ226に記憶されている、スイッチ200で受信したフレームのエントリの構成を示す。エントリ検索テーブル226aは、スイッチ200で受信するフレームの検索キーと比較される各エントリの検索条件を示すエントリ検索情報を記憶するテーブルである。エントリ検索テーブル226aには、第2の実施の形態のエントリ検索テーブル126aと同様、“アドレス”、“タグ無しフラグ”フィールド、“1段タグフラグ”フィールド、“2段タグフラグ”フィールド、“受信ポート番号”フィールド、“宛先MACアドレス”フィールド、“送信元MACアドレス”フィールド、“TPID”フィールド(1段目)、“VLAN ID”フィールド(1段目)、“TPID”フィールド(2段目)、“VLAN ID”フィールド(2段目)が設けられている。各フィールドの横方向に並べられた情報同士がエントリ検索情報として互いに関連付けられている。
ここで、IEEE802.1qにおいて、複数のVLANタグがスタックされる構成において、ユーザーネットワークで使用するカスマタタグ(Cタグ)と、通信事業者であるキャリアネットワークで使用するサービスタグ(Sタグ)の2種類について、CタグのTPIDは0x8100と規定されており、SタグのTPIDは0x88a8と規定されている。本実施の形態では、複数のタグ段数をサポートするVLANタグフレームであって、1段目のタグと2段目のタグにおいて、2種類の異なるTPIDが使用される場合に対応可能である。
エントリ検索テーブル226aの例では、第2の実施の形態と同様、アドレス100にタグ無しフレームのエントリが登録され、アドレス101に1段タグのフレームのエントリ(TPID=0x8200、VLAN ID=100)が登録されている。アドレス102に2段タグのフレームのエントリ(1段目のタグのTPID=0x8100、VLAN ID=100、2段目のタグのTPID=0x8100、VLAN ID=200)が登録されている。
さらに、エントリ検索テーブル226aの例では、アドレス103に1段タグのフレームのエントリ(TPID=0x88a8、VLAN ID=100)が登録されている。アドレス104に2段タグのフレームのエントリ(1段目のタグのTPID=0x88a8、1段目のタグのVLAN ID=100、2段目のタグのTPID=0x8100、2段目のタグのVLAN ID=200)が登録されている。
なお、図10は、インタフェースカード202aが有する連想メモリ226に記憶されているエントリ検索テーブル226aを示したものであるが、インタフェースカード202b,202c,・・・のスイッチ200における他のインタフェースカードが有するエントリ検索テーブル(図示省略)も同様の構成で実現できる。
図11は、第3の実施の形態のフラグ生成処理の手順を示すフローチャートである。図11に示すフラグ生成処理は、受信されたフレームの先頭部分を取得し、取得した先頭部分に基づいてフレームフラグ情報が生成される処理である。フラグ生成処理は、フレーム受信部221にユーザフレームを受信し、フラグ生成部222にフレームが送信された場合に実行が開始される。
本実施の形態のフラグ生成処理では、以下に示すように、ユーザフレームを受信したインタフェースカード202aにより、受信したフレームの先頭部分が取得される。次に、VLANタグのTPIDが、例えば、“0x8100”および“0x88a8”の2種類存在する場合において、取得した先頭部分に含まれているVLANタグのTPIDを取得していずれかのTPIDのVLANタグが設定されているか否かおよび何段設定されているかを判定し、判定結果に基づいてフレームフラグ情報がセットされる。フラグ生成処理によって生成されたフラグは、受信したフレームの検索キーの一部であって、エントリ検索情報のエントリフラグ情報に対応する部分となる。
[ステップS21]フラグ生成部222は、受信したフレームの先頭部分(例えば、先頭から20バイト分)を切り出して取得する。
[ステップS22]フラグ生成部222は、ステップS21で取得したフレームの先頭部分における1段目のVLANタグのTPIDの領域(先頭から13バイト目および14バイト目)を参照して、1段目にVLANタグが設定されていることを示す所定値1(例えば、“0x8100”)であるか否かについて判定する。1段目のVLANタグのTPIDの領域が所定値1であれば、処理はステップS25に進められる。一方、1段目のVLANタグのTPIDの領域が所定値1でなければ、処理はステップS23に進められる。
[ステップS23]フラグ生成部222は、ステップS21で取得したフレームの先頭部分における1段目のVLANタグのTPIDの領域を参照して、1段目にVLANタグが設定されていることを示す所定値2(例えば、“0x88a8”)であるか否かについて判定する。1段目のVLANタグのTPIDの領域が所定値2であれば、処理はステップS25に進められる。一方、1段目のVLANタグのTPIDの領域が所定値2でなければ、処理はステップS24に進められる。
[ステップS24]フラグ生成部222は、受信したフレームのフレームフラグ情報に“タグ無し”を示す値(例えば、タグ無しフラグ=“1”、1段タグフラグ=“0”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
[ステップS25]フラグ生成部222は、ステップS21で取得したフレームの先頭部分における2段目のVLANタグのTPIDの領域(先頭から17バイト目および18バイト目)を参照して、2段目にVLANタグが設定されていることを示す所定値1であるか否かについて判定する。2段目のVLANタグのTPIDの領域が所定値1であれば、処理はステップS27に進められる。一方、2段目のVLANタグのTPIDの領域が所定値1でなければ、処理はステップS26に進められる。
[ステップS26]フラグ生成部222は、ステップS21で取得したフレームの先頭部分における2段目のVLANタグのTPIDの領域を参照して、2段目にVLANタグが設定されていることを示す所定値2であるか否かについて判定する。2段目のVLANタグのTPIDの領域が所定値2であれば、処理はステップS27に進められる。一方、2段目のVLANタグのTPIDの領域が所定値2でなければ、処理はステップS28に進められる。
[ステップS27]フラグ生成部222は、受信したフレームのフレームフラグ情報に“2段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“0”、2段タグフラグ=“1”)をセットする。その後、処理は終了する。
[ステップS28]フラグ生成部222は、受信したフレームのフレームフラグ情報に“1段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“1”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
以上のように、第3の実施の形態によれば、第2の実施の形態に加えて、複数種類のTPIDを持つVLANタグが存在する場合に対しても適用可能である。
[第4の実施の形態]
次に、第4の実施の形態について説明する。上記の第2の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いると共に説明を省略する。
第4の実施の形態は、任意のTPID値を設定可能である点で、第2の実施の形態と異なる。
図12は、第4の実施の形態のスイッチの機能を示すブロック図である。図12は、インタフェースカード302aによってフレームが受信され、スイッチカード303を介してインタフェースカード302b,302c,・・・が有するポート#1〜#Nによって転送される時のスイッチ300の動作を示す。
インタフェースカード302aは、フレーム受信部321、フラグ生成部322、検索キー生成部323、受信フレーム判定部324、連想メモリアクセス制御部325、連想メモリ326、アソシエイトメモリアクセス制御部327、アソシエイトメモリ328、TPID設定部329を有する。
インタフェースカード302aは、接続されている他の通信装置や端末装置等の通信機器と通信する回線ポートを収容しており、通信機器とのインタフェース機能、受信フレーム処理、送信フレーム処理等を提供する。
フレーム受信部321は、インタフェースカード302aが有する各受信ポートの物理レイヤおよびMACレイヤの終端を行う。
フラグ生成部322は、受信したフレームが有するフレーム制御情報に基づいて受信したフレームの種別を示すフラグ情報であるフレームフラグ情報を生成する。フレームフラグ情報は、受信したフレームのVLANタグの有無および個数を示す。
ここで、本実施の形態では、フレームフラグ情報の生成の判定に用いられるTPIDの値は、予め複数種類設定されている。フラグ生成部322は、受信したフレームのTPIDが設定される領域の値が、予め設定されているいずれかの値と一致する場合には、受信したフレームはVLANタグを有すると判定してフレームフラグ情報を生成する。フラグ生成部322は、受信フレームのVLANタグのタグ段数をチェックし、タグ段数に応じてフレームフラグ情報の値を決定する。生成されたフレームフラグ情報は受信フレームと共に検索キー生成部323に送信される。
検索キー生成部323は、フラグ生成部322によって生成されたフレームフラグ情報と受信したフレームが有するフレーム制御情報の全部または一部とを有する検索キー情報を生成する。
検索キー生成部323は、受信したフレームから制御情報を取得する。このとき、検索キー生成部323は、受信したフレームの先頭から20バイト目までの、20バイト分のデータを切り出して制御情報を取得し、取得した制御情報をフラグ生成部322から受信したフレームフラグ情報および受信したポート番号と結合して、連想メモリアクセス制御部325に対して連想メモリ326の検索キーとして送信する。
受信フレーム判定部324は、フレーム受信部321で受信したフレームについて、上記検索の結果に基づいて、送信先の判定や廃棄の判定等、受信したフレームの制御を行う。受信フレーム判定部324は、アソシエイトメモリアクセス制御部327から送信された宛先情報に基づいて受信したフレームの宛先を判定する。また、受信フレーム判定部324は、宛先情報が有する受信有効フラグが受信を拒否することを示す場合には、受信したフレームを廃棄する。
連想メモリアクセス制御部325は、検索キー生成部323から送信された連想メモリ326に対する検索と、CPU101から連想メモリ326に対するアクセスとの調停制御を行う。
連想メモリアクセス制御部325は、連想メモリ326を制御して、検索キー情報が有するフレームフラグ情報とエントリ検索情報が有するエントリフラグ情報とを比較して、比較結果が一致したエントリ検索情報について、そのエントリ検索情報が有するエントリ制御情報と検索キー情報が有するフレーム制御情報とを比較して検索する。連想メモリアクセス制御部325は、検索制御部として機能する。
連想メモリ326は、エントリしたフレームの種別を示すフラグ情報であるエントリフラグ情報と、エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶する。エントリフラグ情報は、エントリしたフレームのVLANタグの有無および個数を示す。連想メモリ326は、連想メモリアクセス制御部325から送信された検索キーによる検索を実行して、一致するエントリがあった場合には、そのエントリが格納されているアドレスをアソシエイトメモリアクセス制御部327に送信する。ここで、本実施の形態では、エントリ検索情報においても、TPIDの値は予め複数種類設定されている。この送信されたアドレスをインデックスとして、アソシエイトメモリ328のエントリを読み出すことが可能となる。連想メモリ326は、エントリ検索情報記憶部として機能する。
アソシエイトメモリアクセス制御部327は、連想メモリ326からのアクセスと、CPU101からアソシエイトメモリ328に対するアクセスとの調停制御を行う。また、アソシエイトメモリアクセス制御部327は、一連の検索処理により連想メモリ326から検索されたエントリ検索情報に応じて、アソシエイトメモリ328に記憶されている受信したフレームの宛先情報を受信フレーム判定部324に送信する。アソシエイトメモリアクセス制御部327は、宛先制御部として機能する。
アソシエイトメモリ328は、受信したフレームの宛先を示す宛先情報を記憶する。宛先情報は、受信したフレームについて受信を許可するかまたは受信を拒否するかを示す受信有効フラグを有する。アソシエイトメモリ328は、宛先情報記憶部として機能する。
TPID設定部329は、図示しない管理用端末装置によるTPIDの値の入力を受け付け、受け付けたTPIDの値を示すTPID設定情報を設定すると共に、設定したTPID設定情報を記憶する。TPID設定部329は、フラグ生成部322の要求に応じてTPID設定情報を送信する。
インタフェースカード302b,302c,・・・は、インタフェースカード302aと同様に構成され、同様の機能を有する。
スイッチカード303は、受信フレーム判定部324の判定結果に基づいて、ユーザフレームを受信したインタフェースカードから送信するインタフェースカードに転送する。これに基づいて、転送されたインタフェースカードのポートからフレームが出力される。
図13は、第4の実施の形態のTPID設定テーブルのデータ構造例を示す図である。図13に示すTPID設定テーブル329aは、スイッチ300で受信したフレームが有するVLANタグを有効にするか無効にするかを示すTPID設定情報を記憶するテーブルである。TPID設定テーブル329aは、TPID設定部329で管理されると共に記憶されている。このTPID設定テーブル329aは、インタフェースカード302aのポート毎に1段目のVLANタグに使用されるTPIDであるTPID1の値と、2段目のVLANタグに使用されるTPIDであるTPID2の値とを設定可能とする。
TPID設定テーブル329aには、“ポート番号”フィールド、“TPID1有効フラグ”フィールド、“TPID1”フィールド、“TPID2有効フラグ”フィールド、“TPID2”フィールドが設けられている。各フィールドの横方向に並べられた情報同士がTPID設定情報として互いに関連付けられている。
“ポート番号”フィールドには、フレームを受信したポート番号が設定される。各TPID設定情報は、このポート番号フィールドで示されたポート番号から受信したフレームのTPIDの判定に用いられる。
“TPID1有効フラグ”フィールドには、TPID1に設定されたTPIDが有効であるか無効であるかを示すフラグが設定される。そのTPIDが有効である場合には、有効を示す値(例えば、“1”)が設定される。TPID1有効フラグに有効を示す値が設定されている場合、そのTPID1が示すTPIDは、インタフェースカード302aで受信したフレームのフラグ生成において1段目のVLANタグの有無の判定に使用される。TPID有効フラグに無効を示す値(例えば、“0”)が設定されている場合、TPID1が示すTPIDは、インタフェースカード302aで受信したフレームのフラグ生成において使用されず、1段目のVLANタグは無いと判定される。
“TPID1”フィールドには、TPID1有効フラグの値が有効を示す場合に受信したフレームが1段目のVLANタグを有するか否かの判定に用いられるTPIDの値が設定される。
“TPID2有効フラグ”フィールドには、TPID2に設定されたTPIDが有効であるか無効であるかを示すフラグが設定される。そのTPIDが有効である場合には、有効を示す値が設定される。TPID2有効フラグに有効を示す値が設定されている場合、そのTPID2が示すTPIDは、インタフェースカード302aで受信したフレームのフラグ生成において2段目のVLANタグの有無の判定に使用される。TPID有効フラグに無効を示す値が設定されている場合、TPID2が示すTPIDは、インタフェースカード302aで受信したフレームのフラグ生成において使用されず、2段目のVLANタグは無いと判定される。
“TPID2”フィールドには、TPID2有効フラグの値が有効を示す場合に受信したフレームが2段目のVLANタグを有するか否かの判定に用いられるTPIDの値が設定される。
本実施の形態では、TPID設定テーブル329aにより、ポート毎に各段のVLANタグのTPID値を、明示的に設定することが可能になる。
図14は、第4の実施の形態のフラグ生成処理の手順を示すフローチャートである。図14に示すフラグ生成処理は、受信されたフレームの先頭部分を取得し、取得した先頭部分に基づいてフレームフラグ情報が生成される処理である。フラグ生成処理は、フレーム受信部321にユーザフレームを受信し、フラグ生成部322にフレームが送信された場合に実行が開始される。
本実施の形態のフラグ生成処理では、以下に示すように、ユーザフレームを受信したインタフェースカード302aにより、受信したフレームの先頭部分が取得される。次に、取得した先頭部分に含まれているVLANタグのTPIDを取得してVLANタグが設定されているか否かおよび何段設定されているかを判定し、判定結果に基づいてフレームフラグ情報がセットされる。フラグ生成処理によって生成されたフラグは、受信したフレームの検索キーの一部であって、エントリ検索情報のエントリフラグ情報に対応する部分となる。
[ステップS31]フラグ生成部322は、受信したフレームの先頭部分(例えば、先頭から20バイト分)を切り出して取得する。
[ステップS32]フラグ生成部322は、TPID設定部329から、フレームを受信したポート番号に応じたTPID設定情報を取得する。
[ステップS33]フラグ生成部322は、ステップS32で取得したTPID設定情報を参照して、TPID1有効フラグの値が有効を示す“1”であるか無効を示す“0”であるかについて判定する。TPID1有効フラグの値が有効であれば、処理はステップS34に進められる。一方、TPID1有効フラグの値が無効であれば、処理はステップS35に進められる。
[ステップS34]フラグ生成部322は、ステップS31で取得したフレームの先頭部分における1段目のVLANタグのTPIDの領域(先頭から13バイト目および14バイト目)を参照して、ステップS32で取得したTPID設定情報のTPID1に設定されている設定値1(例えば、“0x9100”)であるか否かについて判定する。1段目のVLANタグのTPIDの領域が設定値1であれば、処理はステップS36に進められる。一方、1段目のVLANタグのTPIDの領域が設定値1でなければ、処理はステップS35に進められる。
[ステップS35]フラグ生成部322は、受信したフレームのフレームフラグ情報に“タグ無し”を示す値(例えば、タグ無しフラグ=“1”、1段タグフラグ=“0”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
[ステップS36]フラグ生成部322は、ステップS32で取得したTPID設定情報を参照して、TPID2有効フラグの値が有効を示す“1”であるか無効を示す“0”であるかについて判定する。TPID2有効フラグの値が有効であれば、処理はステップS37に進められる。一方、TPID2有効フラグの値が無効であれば、処理はステップS39に進められる。
[ステップS37]フラグ生成部322は、ステップS31で取得したフレームの先頭部分における2段目のVLANタグのTPIDの領域(先頭から17バイト目および18バイト目)を参照して、ステップS32で取得したTPID設定情報のTPID2に設定されている設定値2(例えば、“0x9200”)であるか否かについて判定する。2段目のVLANタグのTPIDの領域が設定値2であれば、処理はステップS38に進められる。一方、2段目のVLANタグのTPIDの領域が設定値2でなければ、処理はステップS39に進められる。
[ステップS38]フラグ生成部322は、受信したフレームのフレームフラグ情報に“2段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“0”、2段タグフラグ=“1”)をセットする。その後、処理は終了する。
[ステップS39]フラグ生成部322は、受信したフレームのフレームフラグ情報に“1段タグ”を示す値(例えば、タグ無しフラグ=“0”、1段タグフラグ=“1”、2段タグフラグ=“0”)をセットする。その後、処理は終了する。
上記のように、IEEE標準仕様においては、CタグのTPIDは0x8100と規定されており、SタグのTPIDは0x88a8と規定されている。しかし、例えば、プライベートネットワークや特定の通信事業者で使用される場合等において、任意のTPID値を設定可能であることが要求される場合もある。本実施の形態では、ポート毎に1段目のVLANタグおよび2段目のVLANタグのそれぞれに対して、任意のTPID値を設定することが可能になる。
以上のように、第4の実施の形態によれば、第2の実施の形態に加えて、複数の段数のVLANタグを持つEthernetフレームに対して、ポート毎に任意のTPID値による判定を行うことができる。これにより、より柔軟なVLANネットワークの構築が可能になる。
[第5の実施の形態]
次に、第5の実施の形態について説明する。上記の第2の実施の形態との相違点を中心に説明し、同様の事項については同一の符号を用いると共に説明を省略する。
第5の実施の形態は、Ethernetフレームが転送する上位レイヤの判定も可能である点で、第2の実施の形態と異なる。
図15は、第5の実施の形態のスイッチの機能を示すブロック図である。図15は、インタフェースカード402aによってフレームが受信され、スイッチカード403を介してインタフェースカード402b,402c,・・・が有するポート#1〜#Nによって転送される時のスイッチ400の動作を示す。
インタフェースカード402aは、フレーム受信部421、フラグ生成部422、検索キー生成部423、受信フレーム判定部424、連想メモリアクセス制御部425、連想メモリ426、アソシエイトメモリアクセス制御部427、アソシエイトメモリ428を有する。
インタフェースカード402aは、接続されている他の通信装置や端末装置等の通信機器と通信する回線ポートを収容しており、通信機器とのインタフェース機能、受信フレーム処理、送信フレーム処理等を提供する。
フレーム受信部421は、インタフェースカード402aが有する各受信ポートの物理レイヤおよびMACレイヤの終端を行う。
フラグ生成部422は、受信したフレームが有するフレーム制御情報に基づいて受信したフレームの種別を示すフラグ情報であるフレームフラグ情報を生成する。フレームフラグ情報は、受信したフレームのVLANタグの有無および個数を示す。
ここで、本実施の形態では、フレームフラグ情報の生成の判定に用いられるTPIDの値は、予め複数種類設定されている。フラグ生成部422は、受信したフレームのTPIDが設定される領域の値が、予め設定されているいずれかの値と一致する場合には、受信したフレームはVLANタグを有すると判定してフレームフラグ情報を生成する。フラグ生成部422は、受信フレームのVLANタグのタグ段数をチェックし、タグ段数に応じてフレームフラグ情報の値を決定する。生成されたフレームフラグ情報は受信フレームと共に検索キー生成部423に送信される。
検索キー生成部423は、フラグ生成部422によって生成されたフレームフラグ情報と受信したフレームが有するフレーム制御情報の全部または一部とを有する検索キー情報を生成する。
検索キー生成部423は、受信したフレームから制御情報を取得する。このとき、本実施の形態の検索キー生成部423は、受信したフレームの先頭から22バイト目までの、22バイト分のデータを切り出して制御情報を取得し、取得した制御情報をフラグ生成部422から受信したフレームフラグ情報および受信したポート番号と結合して、連想メモリアクセス制御部425に対して連想メモリ426の検索キーとして送信する。
このように、本実施の形態では、フレーム制御情報は、受信したフレームの上位レイヤのプロトコルを示すフレーム上位プロトコル情報として、2段目のVLANタグの直後に位置する領域のデータであるE−TYPEを有する。これにより、2段タグのVLANをフレーム受信した場合にも、連想メモリ426で検索するときに、E−TYPEの検索が可能になる。
受信フレーム判定部424は、フレーム受信部421で受信したフレームについて、上記検索の結果に基づいて、送信先の判定や廃棄の判定等、受信したフレームの制御を行う。受信フレーム判定部424は、アソシエイトメモリアクセス制御部427から送信された宛先情報に基づいて受信したフレームの宛先を判定する。また、受信フレーム判定部424は、宛先情報が有する受信有効フラグが受信を拒否することを示す場合には、受信したフレームを廃棄する。
連想メモリアクセス制御部425は、検索キー生成部423から送信された連想メモリ426に対する検索と、CPU101から連想メモリ426に対するアクセスとの調停制御を行う。
連想メモリアクセス制御部425は、連想メモリ426を制御して、検索キー情報が有するフレームフラグ情報とエントリ検索情報が有するエントリフラグ情報とを比較して、比較結果が一致したエントリ検索情報について、そのエントリ検索情報が有するエントリ制御情報と検索キー情報が有するフレーム制御情報とを比較して検索する。連想メモリアクセス制御部425は、検索制御部として機能する。
連想メモリ426は、エントリしたフレームの種別を示すフラグ情報であるエントリフラグ情報と、エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶する。エントリフラグ情報は、エントリしたフレームのVLANタグの有無および個数を示す。連想メモリ426は、連想メモリアクセス制御部425から送信された検索キーによる検索を実行して、一致するエントリがあった場合には、そのエントリが格納されているアドレスをアソシエイトメモリアクセス制御部427に送信する。
ここで、本実施の形態では、エントリ制御情報は、エントリされたフレームの上位レイヤのプロトコルを示すエントリ上位プロトコル情報として、E−TYPEの領域が設けられている。これにより、受信したフレームについてE−TYPEを検索条件に含めてエントリを検索することが可能になる。この送信されたアドレスをインデックスとして、アソシエイトメモリ428のエントリを読み出すことが可能となる。連想メモリ426は、エントリ検索情報記憶部として機能する。
アソシエイトメモリアクセス制御部427は、連想メモリ426からのアクセスと、CPU101からアソシエイトメモリ428に対するアクセスとの調停制御を行う。また、アソシエイトメモリアクセス制御部427は、一連の検索処理により連想メモリ426から検索されたエントリ検索情報に応じて、アソシエイトメモリ428に記憶されている受信したフレームの宛先情報を受信フレーム判定部424に送信する。アソシエイトメモリアクセス制御部427は、宛先制御部として機能する。
アソシエイトメモリ428は、受信したフレームの宛先を示す宛先情報を記憶する。宛先情報は、受信したフレームについて受信を許可するかまたは受信を拒否するかを示す受信有効フラグを有する。アソシエイトメモリ428は、宛先情報記憶部として機能する。
インタフェースカード402b,402c,・・・は、インタフェースカード402aと同様に構成され、同様の機能を有する。
スイッチカード403は、受信フレーム判定部424の判定結果に基づいて、ユーザフレームを受信したインタフェースカードから送信するインタフェースカードに転送する。これに基づいて、転送されたインタフェースカードのポートからフレームが出力される。
連想メモリアクセス制御部425は、受信したフレームの制御情報が有するE−TYPEと、エントリフラグ制御情報が有するE−TYPEとを比較して検索することが可能である。
図16は、第5の実施の形態のエントリ検索テーブルのデータ構造例を示す図である。図16に示すエントリ検索テーブル426aは、連想メモリ426に記憶されている、スイッチ400で受信したフレームのエントリの構成を示す。エントリ検索テーブル426aは、スイッチ400で受信するフレームの検索キーと比較される各エントリの検索条件を示すエントリ検索情報を記憶するテーブルである。エントリ検索テーブル426aには、 “アドレス”、“タグ無しフラグ”フィールド、“1段タグフラグ”フィールド、“2段タグフラグ”フィールド、“受信ポート番号”フィールド、“宛先MACアドレス”フィールド、“送信元MACアドレス”フィールド、“TPID”フィールド(1段目)、“VLAN ID”フィールド(1段目)、“TPID”フィールド(2段目)、“VLAN ID”フィールド(2段目)、“E−TYPE”フィールドが設けられている。各フィールドの横方向に並べられた情報同士がエントリ検索情報として互いに関連付けられている。
“E−TYPE”フィールドは、エントリの検索条件である上位レイヤの識別子であるE−TYPEを示す2バイトの領域である。E−TYPEフィールドにおいて、“0x0800”はIPv4フレームを表す。また、0x86ddはIPv6フレームを表す。
エントリ検索テーブル426aの例では、アドレス100にタグ無しフレームのエントリが登録され、アドレス101に1段タグのフレームのエントリ(TPID=0x8100、VLAN ID=100)が登録されている。アドレス102に2段タグのフレームのエントリ(1段目のタグのTPID=0x88a8、1段目のタグのVLAN ID=100、2段目のタグのTPID=0x8100、2段目のタグのVLAN ID=200、E−TYPE=0x0800)が登録されている。アドレス103に2段タグのフレームのエントリ(1段目のタグのTPID=0x88a8、1段目のタグのVLAN ID=100、2段目のタグのTPID=0x8100、2段目のタグのVLAN ID=200、E−TYPE=0x86dd)が登録されている。
本実施の形態では、このE−TYPEフィールドによって、エントリ検索テーブル426aのアドレス102,103のエントリに示すように、1段目タグのTPID=0x88a8、VLAN ID=100に対して、上位レイヤがIPv4フレームの場合とIPv6フレームの場合に、異なるエントリを設定することが可能になる。これにより、フレームの判定について上位レイヤまで含めて行うことが可能になる。
また、エントリ検索テーブル426aに示すように、最終エントリには全マスクのエントリを設定する。これにより、連想メモリ426における他のいずれのエントリにも一致しないフレームが存在する場合にも、そのようなフレームが最終エントリに一致したことにより未登録フレームと判定して廃棄することが可能になる。
なお、図16は、インタフェースカード402aが有する連想メモリ426に記憶されているエントリ検索テーブル426aを示したものであるが、インタフェースカード402b,402c,・・・のスイッチ400における他のインタフェースカードが有するエントリ検索テーブル(図示省略)も同様の構成で実現できる。
図17は、第5の実施の形態の宛先テーブルのデータ構造例を示す図である。図17に示す宛先テーブル428aは、アソシエイトメモリ428に記憶されている、スイッチ400で受信したフレームの宛先を示す宛先情報を記憶するテーブルである。宛先テーブル428aには、第2の実施の形態の宛先テーブル128aと同様、“アドレス”、“受信有効フラグ”フィールド、“宛先カード情報”フィールド、“宛先ポート情報”フィールドが設けられている。各フィールドの横方向に並べられた情報同士が宛先情報として互いに関連付けられている。
宛先テーブル428aに示すアソシエイトメモリ428のエントリでは、IPv4フレームのエントリに対応するアドレス102は、“カード#3”(例えば、インタフェースカード402cを示すものとする)の“ポート#1”が宛先として設定されている。また、IPv6フレームのエントリに対応するアドレス103は、“カード#3”の“ポート#2”が宛先として設定されている。このように、本実施の形態では、上位レイヤのフレーム種別単位に異なる宛先に対して転送することが可能になる。
また、宛先テーブル428aに示すように、最終エントリには全マスクのエントリを設定する。この全マスクエントリに対応するエントリの受信有効フラグについて無効を示す“0”を設定する。これにより、アソシエイトメモリ428における他のいずれのエントリにも一致しないフレームが存在する場合にも、そのようなフレームが最終エントリに一致したことにより未登録フレームとして廃棄することが可能になる。
以上のように、第5の実施の形態によれば、第2の実施の形態に加えて、異なる上位レイヤのフレーム種別についての判定を行うことが可能となる。
また、異なる上位レイヤの判定結果を用いて、フレームの上位レイヤに応じて異なる宛先に転送することが可能になる。
以上、開示の通信装置および通信制御方法を、図示の実施の形態に基づいて説明したが、上記については単に本発明の原理を示すものである。開示の技術は、多数の変形、変更が当業者にとって可能であり、上記に示し、説明した正確な構成および応用例に限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の2以上の構成を組み合わせたものであってもよい。また、開示の技術に対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
(付記1) エントリしたフレームの種別を示すエントリフラグ情報と、前記エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶するエントリ検索情報記憶部と、
受信したフレームが有するフレーム制御情報に基づいて前記受信したフレームの種別を示すフレームフラグ情報を生成するフラグ生成部と、
前記フラグ生成部によって生成された前記フレームフラグ情報と前記受信したフレームが有する前記フレーム制御情報の全部または一部とを有する検索キー情報を生成する検索キー生成部と、
前記エントリ検索情報記憶部を制御して、前記検索キー情報が有する前記フレームフラグ情報と前記エントリ検索情報が有する前記エントリフラグ情報とを比較して、比較結果が一致した前記エントリ検索情報について、前記検索キー情報が有する前記フレーム制御情報で検索する検索制御部とを有することを特徴とする通信装置。
(付記2) 前記検索制御部は、前記エントリ検索情報記憶部を制御して、前記検索キー情報が有する前記フレームフラグ情報と前記エントリ検索情報が有する前記エントリフラグ情報とを比較して、比較結果が一致した前記エントリ検索情報について、当該エントリ検索情報が有する前記エントリ制御情報と前記検索キー情報が有する前記フレーム制御情報とを比較して検索することを特徴とする付記1記載の通信装置。
(付記3) 前記フレームフラグ情報は、前記受信したフレームのVLANタグの有無を示し、
前記エントリフラグ情報は、前記エントリしたフレームの前記VLANタグの有無を示すことを特徴とする付記1記載の通信装置。
(付記4) 前記フラグ生成部は、前記受信したフレームのTPIDが設定される領域の値が所定の値と一致する場合には、前記受信したフレームは前記VLANタグを有すると判定して、前記フラグ情報を生成することを特徴とする付記3記載の通信装置。
(付記5) 前記TPIDの値は予め複数種類設定されており、
前記フラグ生成部は、前記受信したフレームの前記TPIDが設定される領域の値が予め設定されているいずれかの値と一致する場合には、前記受信したフレームは前記VLANタグを有すると判定して、前記フラグ情報を生成することを特徴とする付記4記載の通信装置。
(付記6) 前記TPIDの値の入力を受け付け、受け付けた当該TPIDの値を示すTPID設定情報を設定すると共に当該TPID設定情報を記憶するTPID設定部を有することを特徴とする付記4記載の通信装置。
(付記7) 前記フレームフラグ情報は、前記受信したフレームの前記VLANタグの有無と共に個数を示し、
前記エントリフラグ情報は、前記エントリしたフレームの前記VLANタグの有無と共に個数を示すことを特徴とする付記3記載の通信装置。
(付記8) 前記エントリ検索情報記憶部は、前記エントリ検索情報を記憶する連想メモリを有し、
前記検索制御部は、前記検索キー情報を前記連想メモリに送信することにより前記エントリ検索情報を検索することを特徴とする付記1記載の通信装置。
(付記9) 前記フレーム制御情報は、前記受信したフレームの上位レイヤのプロトコルを示すフレーム上位プロトコル情報を有し、
前記エントリ制御情報は、前記エントリされたフレームの上位レイヤのプロトコルを示すエントリ上位プロトコル情報を有し、
前記検索制御部は、前記フレーム制御情報が有する前記フレーム上位プロトコル情報と、前記エントリフラグ制御情報が有する前記エントリ上位プロトコル情報とを比較して検索することを特徴とする付記1記載の通信装置。
(付記10) 前記受信したフレームの宛先を示す宛先情報を記憶する宛先情報記憶部と、
前記エントリ検索情報記憶部から検索されたエントリ検索情報に応じて、前記宛先情報記憶部に記憶されている前記受信したフレームの前記宛先情報を送信する宛先制御部と、
前記宛先制御部から送信された前記宛先情報に基づいて前記受信したフレームの宛先を判定する受信フレーム判定部とを有することを特徴とする付記1記載の通信装置。
(付記11) 前記宛先情報は、前記受信したフレームについて受信を許可するかまたは受信を拒否するかを示す受信有効フラグを有し、
前記受信フレーム判定部は、前記宛先情報が有する受信有効フラグが受信を拒否することを示す場合には、前記受信したフレームを廃棄することを特徴とする付記10記載の通信装置。
(付記12) フラグ生成部が、受信したフレームが有するフレーム制御情報に基づいて前記受信したフレームの種別を示すフレームフラグ情報を生成し、
検索キー生成部が、前記フラグ生成部によって生成された前記フレームフラグ情報と前記受信したフレームが有する前記フレーム制御情報の全部または一部とを有する検索キー情報を生成し、
検索制御部が、エントリしたフレームの種別を示すエントリフラグ情報と前記エントリしたフレームの制御情報であるエントリ制御情報とを有するエントリ検索情報を記憶するエントリ検索情報記憶部を制御して、前記検索キー情報が有する前記フレームフラグ情報と、前記エントリ検索情報が有する前記エントリフラグ情報とを比較して、比較結果が一致した前記エントリ検索情報について、前記検索キー情報が有する前記フレーム制御情報で検索することを特徴とする通信制御方法。