(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5787061
(24)【登録日】2015年8月7日
(45)【発行日】2015年9月30日
(54)【発明の名称】スイッチシステム、ラインカード、FDB情報の学習方法及びプログラム
(51)【国際特許分類】
H04L 12/44 20060101AFI20150910BHJP
【FI】
H04L12/44 A
【請求項の数】8
【全頁数】11
(21)【出願番号】特願2011-75425(P2011-75425)
(22)【出願日】2011年3月30日
(65)【公開番号】特開2012-209855(P2012-209855A)
(43)【公開日】2012年10月25日
【審査請求日】2014年2月13日
【前置審査】
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100079005
【弁理士】
【氏名又は名称】宇高 克己
(72)【発明者】
【氏名】小倉 直人
【審査官】
安藤 一道
(56)【参考文献】
【文献】
特開2008−182326(JP,A)
【文献】
特開2006−094094(JP,A)
【文献】
特表2007−525883(JP,A)
【文献】
特開2004−193821(JP,A)
【文献】
特開2004−194145(JP,A)
【文献】
米国特許出願公開第2005/0152335(US,A1)
【文献】
特開2003−158541(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/44
(57)【特許請求の範囲】
【請求項1】
レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に、ひとつの代表ラインカードを含む複数のラインカードが接続され、
前記代表ラインカードを除く各ラインカードは、
FDB情報がエントリされたFDBテーブルと、
受信したパケットのFDB情報が、自ラインカードの前記FDBテーブルにエントリされていない場合、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して前記代表ラインカードのみに送信するパケット処理手段と、
前記代表ラインカードからのFDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して受信し、前記代表ラインカードからの学習通知に含まれるFDB情報が前記FDBテーブルにエントリされていない場合にのみ自ラインカードの前記FDBテーブルを更新する更新手段と
を有し、
前記代表ラインカードは、
FDB情報がエントリされたFDBテーブルと、
前記レイヤ2スイッチング処理部を介して前記ラインカードから代表ラインカードのみに送信される学習通知を受信し、前記学習通知のFDB情報が自代表ラインカードの前記FDBテーブルにエントリされているかを判定し、前記FDB情報がエントリされていない場合には、自代表ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信する学習手段と
を有するスイッチシステム。
【請求項2】
前記代表ラインカードの学習手段は、前記学習通知の流量を制御する
請求項1に記載のスイッチシステム。
【請求項3】
前記代表ラインカードの学習手段は、他のラインカードからの学習通知を蓄積するFDB用バッファを備え、
前記FDB用バッファにより、処理できる学習通知の流量を制御する
請求項2に記載のスイッチシステム。
【請求項4】
前記ラインカードのパケット処理手段は、受信したパケットのFDB情報が、自ラインカードの前記FDBテーブルにエントリされていない場合、前記受信したパケットをフラッディングパケットとして送信する
請求項1から請求項3のいずれかに記載のスイッチシステム。
【請求項5】
レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続され、ひとつの代表ラインカードを含む複数のラインカードとから構成されるスイッチシステムにおけるラインカードであって、
FDB情報がエントリされたFDBテーブルと、
受信したパケットのFDB情報が、自ラインカードの前記FDBテーブルにエントリされていない場合、前記代表ラインカードのみに前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して送信するパケット処理手段と、
前記代表ラインカードからのFDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して受信し、前記代表ラインカードからの学習通知に含まれるFDB情報が前記FDBテーブルにエントリされていない場合にのみ自ラインカードの前記FDBテーブルを更新する更新手段と
を有するラインカード。
【請求項6】
レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続される複数のラインカードとから構成されるスイッチシステムにおけるラインカードのFDB情報の学習方法であって、
前記複数のラインカードのうちひとつのラインカードを、代表ラインカードとし、
前記代表ラインカードを除く各ラインカードは、受信したパケットのFDB情報が、自ラインカードのFDBテーブルにエントリされていない場合、前記レイヤ2スイッチング処理部を介して前記代表ラインカードのみに前記FDB情報を含む学習通知を送信し、
前記代表ラインカードは、前記レイヤ2スイッチング処理部を介して前記ラインカードから代表ラインカードのみに送信される学習通知を受信し、前記学習通知のFDB情報が自ラインカードのFDBテーブルにエントリされているかを判定し、前記FDB情報がエントリされていない場合には、自ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信し、
前記代表ラインカードを除く各ラインカードは、前記レイヤ2スイッチング処理部を介して前記代表ラインカードからのFDB情報を含む学習通知を受信し、前記代表ラインカードからの学習通知に含まれるFDB情報が前記FDBテーブルにエントリされていない場合にのみ自ラインカードの前記FDBテーブルを更新する
FDB情報の学習方法。
【請求項7】
前記代表ラインカードは、他のラインカードからの学習通知を処理できる量に制御する
請求項6に記載のFDB情報の学習方法。
【請求項8】
レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続され、ひとつの代表ラインカードを含む複数のラインカードとから構成されるスイッチシステムにおけるラインカードのプログラムであって、
受信したパケットのFDB情報が、自ラインカードのFDBテーブルにエントリされていない場合、前記レイヤ2スイッチング処理部を介して前記代表ラインカードのみに前記FDB情報を含む学習通知を送信する処理と、
前記レイヤ2スイッチング処理部を介して前記代表ラインカードからのFDB情報を含む学習通知を受信し、前記代表ラインカードからの学習通知に含まれるFDB情報が前記FDBテーブルにエントリされていない場合にのみ自ラインカードの前記FDBテーブルを更新する処理と
をラインカードのCPUに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スイッチシステム、ラインカード、FDB情報の学習方法及びプログラム
に関する。
【背景技術】
【0002】
スイッチ装置は、
図7に示すような、複数のラインカード601,602,603,604で構成させるレイヤ2スイッチにおいて、各ラインカードはそれぞれにFDBテーブル702,712,722,732を有している。
【0003】
通常、あるパケットをラインカード601が受信した場合、ラインカード601のパケット処理部701がFDBテーブル702を参照し、未学習のパケットかどうかを判断し、未学習の場合は学習が必要なパケットとして、学習通知をFDB用バッファ704に転送する。
【0004】
CPU703はFDB用バッファ704から学習通知を読み出し、CPU703がFDBテーブル702へ登録を行う。このとき、すべてのFDBテーブルが同期して同じ情報を有している必要があるため、CPU703は他のラインカード602,603,604へ同様の学習通知を転送し、他のラインカード602,603,604のCPU713,723,733は同様のプロセスでFDBテーブル712,722,732に登録する。
【0005】
パケットを受信したラインカードが602の場合は、同様の処理をCPU713が行うこととなる。このような構成の場合、新規で受信するパケットが単一のラインカードに集中した場合、そのラインカードのCPUは自身で受信するパケットの処理と、他のラインから受信するパケットの処理を行う必要があり、CPUの負荷が偏りやすい。
【0006】
また、装置内部に送信される同期用の学習通知と外部から受信したパケットに対する学習通知が輻輳した場合、FDB用バッファ内に、学習通知を蓄積できなくなり廃棄され、装置内部でFDBテーブルの不一致を引き起こしパケットの転送を正常に行えなくなる課題が存在する。
【0007】
また、自ラインカードが学習してから、他のラインカードへの通知を行うため、このような輻輳状態では自ラインカードでは学習しているが、他のラインカードでは未学習となってしまう場合があり、FDBテーブルの不一致となる課題が存在する。
【0008】
このような課題を解決するために、特許文献1の発明が提案されている。
【0009】
特許文献1に記載されたスイッチ装置は、L2SWを搭載した第1のカードと、第2のカードとを有する。そして、第1のカードは、自スイッチにないFDB情報を検出した場合、第2のカードに送信し、第2のカードから送信されてくるFDB情報に自スイッチのFDB情報を更新する。また、第2のカードは、各第1のカードから送信されてくるFDB情報を収集し、スイッチ装置のFDB情報を更新し、更新されたFDB情報を各カードに送信する。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2010−177722号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1の発明は、FDB情報を収集する第2のカードが各カードのFDB情報を記憶しておく、メモリが必要であり、また、レイヤ2スイッチング処理部を有しており、特別の機能を持たさなければならない。
【0012】
そこで、本発明の目的は、レイヤ2スイッチに複数のラインカードが搭載されており、各ラインカードがパケット処理を行う技術において、パケットを転送するために参照するFDB(Forwarding Database)テーブルを効率的に学習できるスイッチシステム、ラインカード、FDB情報の学習方法及びプログラムを提供することにある。
上記課題を解決することにある。
【課題を解決するための手段】
【0013】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に、ひとつの代表ラインカードを含む複数のラインカードが接続され、前記代表ラインカードを除く各ラインカードは、FDB情報がエントリされたFDBテーブルと、受信したパケットのFDB情報が、自ラインカードの前記FDBテーブルにエントリされていない場合、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して前記代表ラインカードに送信するパケット処理手段と、前記代表ラインカードからのFDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して受信し、自ラインカードの前記FDBテーブルを更新する更新手段とを有し、前記代表ラインカードは、FDB情報がエントリされたFDBテーブルと、前記レイヤ2スイッチング処理部を介して前記ラインカードから学習通知を受信し、前記学習通知のFDB情報が自ラインカードの前記FDBテーブルにエントリされているかを判定し、前記FDB情報がエントリされていない場合には、自ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信する学習手段とを有するスイッチシステムである。
【0014】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続され、ひとつの代表ラインカードを含む複数のラインカードとから構成されるスイッチシステムにおける代表ラインカードであって、FDB情報がエントリされたFDBテーブルと、自ラインカードを除く他のラインカードからFDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して受信し、前記学習通知のFDB情報が自ラインカードの前記FDBテーブルにエントリされているかを判定し、前記FDB情報がエントリされていない場合には、自ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信する学習手段を有する代表ラインカードである。
【0015】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続され、ひとつの代表ラインカードを含む複数のラインカードとから構成されるスイッチシステムにおけるラインカードであって、FDB情報がエントリされたFDBテーブルと、受信したパケットのFDB情報が、自ラインカードの前記FDBテーブルにエントリされていない場合、前記代表ラインカードに前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して送信するパケット処理手段と、前記代表ラインカードからのFDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して受信し、自ラインカードの前記FDBテーブルを更新する更新手段とを有するラインカードである。
【0016】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続される複数のラインカードとから構成されるスイッチシステムにおけるラインカードのFDB情報の学習方法であって、前記複数のラインカードのうちひとつのラインカードを、代表ラインカードとし、前記代表ラインカードを除く各ラインカードは、受信したパケットのFDB情報が、自ラインカードのFDBテーブルにエントリされていない場合、前記レイヤ2スイッチング処理部を介して前記代表ラインカードに前記FDB情報を含む学習通知を送信し、前記代表ラインカードは、前記レイヤ2スイッチング処理部を介して前記ラインカードから学習通知を受信し、前記学習通知のFDB情報が自ラインカードのFDBテーブルにエントリされているかを判定し、前記FDB情報がエントリされていない場合には、自ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信し、前記代表ラインカードを除く各ラインカードは、前記レイヤ2スイッチング処理部を介して前記代表ラインカードからのFDB情報を含む学習通知を受信し、自ラインカードの前記FDBテーブルを更新するFDB情報の学習方法である。
【0017】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続される複数のラインカードとから構成されるスイッチシステムにおける代表ラインカードのプログラムであって、前記レイヤ2スイッチング処理部を介して自ラインカードを除く他のラインカードからFDB情報を含む学習通知を受信すると、前記学習通知のFDB情報が自ラインカードの前記FDBテーブルにエントリされているかを判定する処理と、前記FDB情報がエントリされていない場合には、自ラインカードのFDBテーブルを更新し、前記FDB情報を含む学習通知を、前記レイヤ2スイッチング処理部を介して他のラインカードにマルチキャストで送信する処理とを代表ラインカードのCPUに実行させるプログラムである。
【0018】
本発明は、レイヤ2スイッチング処理部と、前記レイヤ2スイッチング処理部に接続され、ひとつの代表ラインカードを含む複数のラインカードとから構成されるスイッチシステムにおけるラインカードのプログラムであって、受信したパケットのFDB情報が、自ラインカードのFDBテーブルにエントリされていない場合、前記レイヤ2スイッチング処理部を介して前記代表ラインカードに前記FDB情報を含む学習通知を送信する処理と、前記レイヤ2スイッチング処理部を介して前記代表ラインカードからのFDB情報を含む学習通知を受信し、自ラインカードの前記FDBテーブルを更新する処理とをラインカードのCPUに実行させるプログラムである。
【発明の効果】
【0019】
本発明は、レイヤ2スイッチに複数のラインカードが搭載されており、各ラインカードがパケット処理を行う技術において、パケットを転送するために参照するFDB(Forwarding Database)テーブルを効率的に学習できる。
【図面の簡単な説明】
【0020】
【
図1】
図1は第1の実施の形態のブロック図である。
【
図2】
図2はラインカード102のパケット処理部211の動作を説明したフローチャートである。
【
図3】
図3はFDBテーブル212の構成の一例を示した図である。
【
図4】
図4は学習通知に含まれる情報の一例を示した図である。
【
図5】
図5は代表ラインカードの動作を説明したフローチャートである。
【
図6】
図6は代表ラインカードから学習通知を受け取ったラインカード102の動作を説明したフローチャートである。
【発明を実施するための形態】
【0021】
本発明の第1の実施の形態を説明する。
【0022】
本発明は、レイヤ2スイッチに複数のラインカードが搭載されており、各ラインカードがパケット処理を行う装置において、パケットを転送するために参照するFDB(Forwarding Database)テーブルを効率的に学習できることを特徴としている。
【0023】
第1の実施の形態では複数あるラインカードのうち、いずれか一つを代表ラインカードと定義し、装置内部に送信する学習通知を代表ラインカードにあつめることで、適切に制御し、大量の学習パケットが来た場合や、CPUの負荷が高い場合でも適切に学習する。
【0024】
次に、第1の実施の形態の構成について説明する。
【0025】
図1は第1の実施の形態のブロック図である。
【0026】
図1に示す如く、第1の実施の形態は、複数のラインカード101,102,103,104と、レイヤ2スイッチであるスイッチング処理部105とから構成される。
【0027】
各ラインカードは、パケット処理部201,211,221,231と、FDBテーブル202,212,222,232と、CPU203,213,223,233と、FDB用バッファ204,214,224,234と、データ用バッファ205,215,225,235とを有する。
【0028】
第1の実施の形態は、概略以下のように動作する。
【0029】
尚、第1の実施の形態では、ラインカード101を代表ラインカードとして説明するが、他のラインカードが代表ラインカードであっても良い。また、代表ラインカードの決定方法についてはSlot番号の若番など任意で1つだけ決定する。
【0030】
ここで、ラインカード102が、新規パケットを受信したとする。この場合、ラインカード102のパケット処理部211はFDBテーブル212を参照して、該当するエントリがない場合は未学習パケットとして、学習通知を代表ラインカード101のFDB用バッファ204へスイッチング処理部105を経由して送信する。また、受信したパケットそのものは宛先の解決ができないため、通常のレイヤ2スイッチと同様にフラッディングパケットとして全ポートへコピー転送するため、データ用バッファ215へ送信する。
【0031】
代表ラインカード101のCPU203はFDBバッファ204から学習に必要なパケット(学習通知)を読み込み、FDBテーブル202を検索し同一のエントリが存在するか確認する。エントリ(登録)が存在しない場合は、エントリが存在しない場合は、FDBテーブル204への登録を実施する。そして、他のすべてのラインカード102,103,104のFDB用バッファ214,224,234に対して学習パケットをマルチキャストする。
【0032】
代表ラインカード101からの学習通知をうけとった各ラインカード102,103,104のCPU213,223,233は、それぞれが管理するFDBテーブル212,222,232へFDBテーブルの登録を行う。
【0033】
上述の如く、本実施の形態では、未学習のパケットは通常のレイヤ2スイッチの動作と同様にフラッディングされる。本実施の形態において学習通知の廃棄は、代表ラインカード101のFDB用バッファに蓄積できなくなった場合に行われるため、廃棄されても、装置全体で学習がされなくなるだけで、FDBテーブルの不一致を回避することができる。学習できなかったパケットは次回の受信時にまた学習通知が発行されるため、次回に学習することができる。
【0034】
更に、代表ラインカード101から学習パケットを、ラインカード102,103,104に対してマルチキャストする際、代表ラインカード101のFDB学習用バッファ204では流量制限を行い、CPU203が受信できる量に流量制限をすることで、CPUが処理できる適切な量の学習通知に制限する。流量制限は、シェーピングやポリシングのような技術で対応できる。そして、各ラインカード102,103,104のFDBテーブル212,222,232は、代表ラインカード101からの学習通知によってのみ学習するため、すべてのラインカードでCPUが処理するべき学習通知パケットの量を制御できるため、装置内部での学習通知の廃棄を抑制し、適切な量の通知を処理することができる。
【0035】
次に、上述した構成の具体的な動作を説明する。
【0036】
まず、代表カード101ではないラインカード102,103,104の動作を説明する。尚、各ラインカード102,103,104の動作は同様なものなので、ラインカード102を例にして説明する。
【0037】
図2は、ラインカード102のパケット処理部211の動作を説明したフローチャートである。
図3はFDBテーブル212の構成の一例を示した図である。
【0038】
図2においてパケット処理部211は、受信したパケットの受信ポート番号、受信スロット番号、VLAN
ID、及び送信元MACアドレスを検索キーとしてFDBテーブルの検索を実施する(Step 302)。
【0039】
FDBテーブル212の各エントリは、
図3に示すようにポート番号、スロット番号、VLAN ID、及びMACアドレスで構成されている。検索キーのうちMACアドレスとVLAN IDが一致しているエントリがある場合(Step 303)、その他の検索キー(受信スロット番号、受信ポート番号)についても一致しているかを確認し(Step 304)、一致している場合は学習済みパケットと判断し、送信処理にうつる。
【0040】
一方、MACアドレスとVLAN IDとが一致するエントリが存在しない、あるいは存在しても他の検索キーが一致しない場合は、新規学習パケットとして学習通知を代表ラインカード101のFDB用バッファ204あてに送信する(Step 306)。
図4に学習通知に含まれる情報を示す。学習通知には受信Slot番号、受信Port番号、送信元MACアドレス、受信VLAN IDが含まれる。
【0041】
送信処理においては、受信パケットの送信先MACアドレスをキーにしてFDBテーブルを検索する(Step 305)。FDBテーブル212に該当するエントリが存在する場合、FDBテーブル212に記載されている、ポート、スロット、VLAN ID向けにデータ用バッファに送信する(Step 308)。
【0042】
エントリが存在しない場合は、未学習パケットとして、フラッディングパケットとしてデータ用バッファに送信する(Step 309)。
【0043】
次に、代表ラインカード101の動作を説明する。
【0044】
図5は代表ラインカードの動作を説明したフローチャートである。
【0045】
学習通知をFDB用バッファ204で受信すると(Step 401)、CPU203がFDB用バッファ204から学習通知を読み出す(Step 402)。読み出した学習通知の情報からMACアドレスとVLAN IDが一致するエントリがあるか、FDBテーブル202を検索する(Step 404)。
【0046】
CPU203は、該当するエントリがない場合、FDBテーブル202にエントリを追加し、受信したものと同じ学習通知を他のラインカードに対してマルチキャストで送信する(Step 408)。
【0047】
一方、該当するエントリがある場合、学習通知のMACアドレスとVLAN ID以外の情報が一致するか確認する。エントリが一致する場合は、すでに学習済みとして何もせずに終了する(Step 406)。エントリが一致しない場合は、ポートムーブが発生したと判断し、FDBテーブル202の該当するエントリを学習通知の情報に更新し、受信したものと同じ学習通知を他のラインカードに対してマルチキャストで送信する(Step 407)。
【0048】
続いて、代表ラインカード101から学習通知を受け取ったラインカード102の動作を説明する。
【0049】
図6は代表ラインカードから学習通知を受け取ったラインカード102の動作を説明したフローチャートである。
【0050】
学習通知をFDB用バッファ214で受信すると(Step 801)、CPU213がFDB用バッファ214から学習通知を読み出す(Step 802)。読み出した学習通知の情報からMACアドレスとVLAN IDが一致するエントリがあるか、FDBテーブル212を検索する(Step 804)。
【0051】
CPU213は、該当するエントリがない場合、FDBテーブル212にエントリを追加して終了する(Step 808)。
【0052】
一方、該当するエントリがある場合、学習通知のMACアドレスとVLAN ID以外の情報が一致するか確認する。エントリが一致する場合は、すでに学習済みとして何もせずに終了する(Step 806)。エントリが一致しない場合は、ポートムーブが発生したと判断し、FDBテーブル212の該当するエントリを学習通知の情報に更新して終了する(Step 807)。
【0053】
このように、動作としては代表ラインカードの場合と同様の処理を行うが、代表ラインカード以外のラインカードは学習通知を送信せずに終了する。
【0054】
尚、上述した説明からも明らかなように、各部をハードウェアで構成することも可能であるが、コンピュータプログラムにより実現することも可能である。この場合、プログラムメモリに格納されているプログラムで動作するプロセッサによって、上述した各実施の形態と同様の機能、動作を実現させる。また、上述した実施の形態の一部の機能のみをコンピュータプログラムにより実現することも可能である。
【0055】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することが出来る。
【符号の説明】
【0056】
101,102,103,104 ラインカード
105 スイッチング処理部
201,211,221,231 パケット処理部
202,212,222,232 FDBテーブル
203,213,223,233 CPU
204,214,224,234 FDB用バッファ
205,215,225,235 データ用バッファ