JP2016178368A - 通信装置及び通信制御方法 - Google Patents

通信装置及び通信制御方法 Download PDF

Info

Publication number
JP2016178368A
JP2016178368A JP2015055145A JP2015055145A JP2016178368A JP 2016178368 A JP2016178368 A JP 2016178368A JP 2015055145 A JP2015055145 A JP 2015055145A JP 2015055145 A JP2015055145 A JP 2015055145A JP 2016178368 A JP2016178368 A JP 2016178368A
Authority
JP
Japan
Prior art keywords
mac address
entry
unit
collision
registration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015055145A
Other languages
English (en)
Other versions
JP6520259B2 (ja
Inventor
浩美 吹野
Hiromi Fukino
浩美 吹野
康之 三森
Yasuyuki Mimori
康之 三森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015055145A priority Critical patent/JP6520259B2/ja
Priority to US15/001,849 priority patent/US9729445B2/en
Publication of JP2016178368A publication Critical patent/JP2016178368A/ja
Application granted granted Critical
Publication of JP6520259B2 publication Critical patent/JP6520259B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】既登録エントリを削除せずに空きエントリへ新しいエントリを登録する確率を向上させる通信装置を提供する。【解決手段】衝突検出部111は、第1MACアドレスをハッシュして得られた値に対応する第1エントリが、MACアドレステーブル20の各領域に存在するか検出し、且つ、第2MACアドレスをハッシュして得られた値に対応する第2エントリが、MACアドレステーブル20の各領域に存在するか検出する。衝突回避制御部105は、各領域に前記第1エントリがそれぞれ存在する場合、何れかの領域にある前記第1エントリに格納されている前記第2MACアドレスを取得し、衝突検出部111に第2MACアドレスを入力する。登録部112は、MACアドレステーブル20の何れの領域にも第2エントリが存在しない場合、第2エントリに第2MACアドレスを格納し、第1エントリに第1MACアドレスを格納する。【選択図】図5

Description

本発明は、通信装置及び通信制御方法に関する。
LAN(Local Area Network)におけるノード間の通信には、通信の中継を行うL(Layer)2スイッチなどの通信装置が利用されている。L2スイッチは、フレーム転送を行うためにMAC(Media Access Control)学習機能を有する。
すなわち、MAC学習機能を採用するスイッチは、フレームが受信された場合に、フレームを受信したポートと、フレームの送信元となる端末のMACアドレスとの対応関係をMAC学習テーブルと呼ばれるテーブルに格納する。そして、スイッチは、MAC学習テーブルに格納されたMACアドレスを宛先とするフレームを他のポートから受信した場合に、MAC学習テーブルに学習済みであるポートから受信フレームを転送する。
そして、ネットワークに多くの電子機器が接続された場合、LANサービスを提供する通信装置の処理量が増大する。処理量が増大するということは、通信装置が制御すべきエントリ数が増大することを表している。
通信装置は、MACアドレスを学習する場合、処理の高速化などの理由から、TCAM(Ternary Content Addressable Memory)を用いることや、ハッシュアルゴリズムを利用いてMACアドレステーブルの管理を行うことが多い。
TCAMを用いた場合、エントリ登録が確実に可能となるという利点がある。しかし、TCAMは、汎用の揮発性デバイスに比べて、高価であり、消費電力も多く、大量のエントリ登録には不向きである。
一方、ハッシュアルゴリズムを用いてMACアドレステーブルの管理を行う通信装置では、汎用の揮発性メモリが利用可能であり、コストを抑えることができる。さらに、このような通信装置では、ハッシュ計算式によってMACアドレステーブルが縮退されるためエントリの衝突が発生するが、少ない資源で大量のエントリを管理することが可能である。
従来、衝突が発生した場合、通信装置は、既登録エントリを削除し、新しいエントリを登録する。既登録エントリが削除されると、そのエントリに対応するMACアドレスに対するMACアドレステーブルを使用した通信が困難となる。この状態を既登録エントリの「瞬断」という場合がある。そして、通信装置は、Floodingを行う。この場合、意図しないポートにまで情報が送信されてしまう。Floodingは、利用者が意図的に登録したMACアドレスであるStaticMACであっても実行されてしまうため、セキュリティが低下するという問題がある。
なお、ハッシュアルゴリズムを用いたMACアドレスの管理技術として、例えば、MACアドレステーブルを複数のバンクに分割していずれかのバンクにハッシュ計算したアドレスを登録する従来技術がある。また、ハッシュ計算したアドレスの登録において、登録する場所が無い場合に再順序付けを行う従来技術がある。
特開2002−334114号公報 特表2003−510963号公報
しかしながら、MACアドレステーブルを複数のバンクに分けて管理する従来技術であっても、衝突が発生した場合には従来技術と同様の処理を行うため、既登録エントリを削除せずに空きエントリへ新しいエントリを登録する確率を向上させることは困難である。また、衝突により登録する場所が無い場合に再順序付けを行う従来技術であっても、再順序付けを行っても空きエントリに登録できないおそれがあり、既登録エントリを削除せずに空きエントリへ新しいエントリを登録する確率を向上させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、既登録エントリを削除せずに空きエントリへ新しいエントリを登録する確率を向上させる通信装置及び通信制御方法を提供することを目的とする。
本願の開示する通信装置及び通信制御方法は、一つの態様において、MACアドレステーブルが、複数の領域に分割され、各前記領域毎に異なるハッシュ関数を用いて、MACアドレスをハッシュして得られた値に対応するエントリが記憶される。検出部は、前記各ハッシュ関数を用いて、入力された第1MACアドレスをハッシュして得られた値に対応する第1エントリが、前記MACアドレステーブルの各領域に存在するか検出し、且つ、前記各ハッシュ関数を用いて、後述する第2MACアドレスをハッシュして得られた値に対応する第2エントリが、前記MACアドレステーブルの各領域に存在するか検出する。取得部は、前記MACアドレステーブルの各領域に前記第1エントリがそれぞれ存在すると検出された場合、何れかの領域にある前記第1エントリに格納されている前記第2MACアドレスを取得する。格納部は、前記MACアドレステーブルの何れの領域にも前記第2エントリが存在しないと検出された場合、前記第2エントリに前記第2MACアドレスを格納し、前記第1エントリに前記第1MACアドレスを格納する。
本願の開示する通信装置及び通信制御方法の一つの態様によれば、既登録エントリを削除せずに空きエントリへ新しいエントリを登録する確率を向上させることができるという効果を奏する。
図1は、通信装置を含むシステムの構成を示す概略図である。 図2は、通信装置のブロック図である。 図3は、スイッチ制御部のブロック図である。 図4は、MACアドレステーブルの一例の図である。 図5は、テーブル管理部の詳細を示すブロック図である。 図6は、受信MACアドレスを用いた衝突検出処理の状態を表す図である。 図7は、対象MACアドレスをFILOバッファに格納した状態を表す図である。 図8は、対象MACアドレスを用いた衝突検出処理の状態を表す図である。 図9は、検出された空きエントリに対象MACアドレスを格納した状態を表す図である。 図10は、対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。 図11は、受信MACアドレスに対する追出処理の状態を表す図である。 図12は、MACアドレスの登録処理の完了後の状態を表す図である。 図13は、最初の対象MACアドレスを用いた衝突検出処理の状態を表す図である。 図14は、2番目の対象MACアドレスをFILOバッファに格納した状態を表す図である。 図15は、2番目の対象MACアドレスを用いた衝突検出処理の状態を表す図である。 図16は、検出された空きエントリに2番目の対象MACアドレスを格納した状態を表す図である。 図17は、2番目の対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。 図18は、最初の対象MACアドレスに対する追出処理の状態を表す図である。 図19は、追出処理により空きエントリに最初の対象MACアドレスを格納した状態を表す図である。 図20は、最初の対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。 図21は、受信MACアドレスに対する追出処理の状態を表す図である。 図22は、MACアドレスの登録処理の完了後の状態を表す図である。 図23は、FILOバッファに空きが無くなった状態の図である。 図24は、FILOバッファを空にして元に戻した状態の図である。 図25は、実施例1に係る通信装置によるMACアドレスの登録処理のフローチャートである。 図26は、各バンクのサイズを変更した割振り方法の例を示す図である。 図27は、バンク数を変更した割振り方法の例を示す図である。 図28は、実施例2におけるFILOバッファに空きが無い状態を表す図である。 図29は、ダイナミックエントリを空きエントリにした状態を表す図である。 図30は、ダイナミックエントリを空きエントリにした後のMACアドレスの登録処理の完了後の状態を表す図である。 図31は、実施例2に係る通信装置によるMACアドレスの登録処理のフローチャートである。 図32は、実施例3における受信MACアドレスを用いた衝突検出処理の状態を表す図である。 図33は、実施例3における最初の対象MACアドレスを用いた衝突検出処理の状態を表す図である。 図34は、実施例3における2番目の対象MACアドレスを用いた衝突検出処理の状態を表す図である。 図35は、通信装置のハードウェア構成の一例の図である。
以下に、本願の開示する通信装置及び通信制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する通信装置及び通信制御方法が限定されるものではない。
図1は、通信装置を含むシステムの構成を示す概略図である。図1に示すように、通信装置1は、ネットワーク上に複数配置されている。各通信装置1は、複数の端末装置2が接続されている。さらに、通信装置1同士が接続され、端末装置2は、通信装置を介して他の端末装置2と通信を行うことが可能である。
通信装置1は、例えば、L2スイッチである。通信装置1は、端末装置2から送信されたフレームを受信し、フレーム内に格納されたアドレス情報などを基に、指定された宛先へのフレームの転送処理を行う。例えば、端末装置2がイーサネット(登録商標)フレームやIP(Internet Protocol)フレームを送信する場合を考える。この場合、通信装置1は、イーサネットフレーム内に格納されたMACアドレスやIPフレーム内に格納されたIPアドレスなどを基にフレームの転送処理を行う。
図2は、通信装置のブロック図である。図2に示すように、通信装置1は、スイッチ制御部11、回線IF(InterFace)回路12及び制御回路13を有する。
回線IF回路12は、複数の回線ポートを収容する。そして、回線IF回路12は、外部装置とのインタフェース機能、並びに、受信フレーム処理及び送信フレーム処理などを提供する。回線IF回路12は、一般的には脱着可能暗モジュールやカードとして提供される。例えば、回線IF回路12は、外部装置と接続するためのポートを複数有する。そして、回線IF回路12は、各ポートを介して他の通信装置1や端末装置2と通信を行う。
スイッチ制御部11は、通信装置1内において回線IF回路12との間でデータ信号の送受信を行う。スイッチ制御部11は、回線IF回路12の間のフレーム転送のスイッチ機能を提供する回路である。
制御回路13は、通信装置1内においてスイッチ制御部11及び回線IF回路12の間で制御信号の送受信を行う。制御回路13は、スイッチ制御部11及び回線IF回路12の各種設定、故障時のアラームの通知や統計情報の収集を実行する。本実施例では、制御回路13に、制御端末3が接続している。
制御端末3は、通信装置1のパラメータ設定などの制御を行うためのコンピュータである。制御端末3は、利用者から登録するMACアドレスの入力を受ける。そして、制御端末3は、入力されたMACアドレスを入力情報として制御回路13へ送信する。また、制御端末3は、制御回路13からデータの入力を受ける。ここで、制御端末3とスイッチ制御部11は、実際には、制御回路13を介してデータの送受信を行うが、以下では、説明の都合上、制御端末3とスイッチ制御部11とが直接データの送受信を行っているように説明する場合がある。
次に、図3を参照して、スイッチ制御部11について詳細に説明する。図3は、スイッチ制御部のブロック図である。
スイッチ制御部11は、テーブル管理部10、MACアドレステーブル20及び転送部30を有する。
MACアドレステーブル20は、バンクと呼ばれる複数の領域に分割される。MACアドレステーブル20は、バンク毎にMACアドレスとそのMACアドレスの宛先にフレームを送信する場合の送信先のポート番号との組み合わせの情報が登録される。後述するMACアドレスの登録時における衝突回避処理の時を除き、異なるバンクに同じMACアドレスが登録されることはない。すなわち、MACアドレステーブル20には、MACアドレスとポート番号とが1対1で対応付けられて登録される。MACアドレステーブル20は、例えば、図4のような状態で情報が登録される。図4は、MACアドレステーブルの一例の図である。
また、MACアドレステーブル20には、スタティックMACアドレスとダイナミックMACアドレスという2種類のMACアドレスが登録される。スタティックMACアドレスは、利用者が意図的に登録したポートとの対応が固定のMACアドレスである。ダイナミックMACアドレスは、スイッチ制御部11により適当なポート番号が対応付けられる、すなわち、流動的にポートとの対応付けが変化するMACアドレスである。このMACアドレステーブルが、「MACアドレステーブル」の一例にあたる。
転送部30は、端末装置2から送信されたフレームを回線IF回路12から受信する。そして、転送部30は、フレームに格納されているMACアドレスを取得する。次に、転送部30は、取得したMACアドレスに対応するポート番号をMACアドレステーブル20から取得する。そして、転送部30は、取得したMACアドレスに対応するポートを有する回線IF回路12へフレームを転送する。
また、転送部30は、取得したMACアドレスがMACアドレステーブル20に登録されていない場合、Floodingを行い送信先のポート番号を特定する。そして、転送部30は、取得したMACアドレス及び特定した送信先のポート番号をテーブル管理部10へ出力する。
図4に示すMACアドレステーブル20を用いた場合を例に説明する。転送部30は、例えば、受信したフレームからMACアドレスとしてMAC#Aを取得すると、MACアドレステーブル20からMAC#Aに対応するポートが2番のポートであることを把握する。そして、転送部20は、2番のポートを有する回線IF回路12へフレームを転送する。
図3に戻って説明を続ける。テーブル管理部10は、MACアドレステーブル20の登録情報を管理する。例えば、テーブル管理部10は、登録するMACアドレス及びそのMACアドレスに対応するポート番号の入力を制御端末3から受ける。テーブル管理部10は、ポート番号を基にMACアドレステーブル20における登録先のエントリを確定し、そのエントリにMACアドレスが登録されていない、すなわち空きエントリであれば、そのエントリに受信したMACアドレス及びポート番号を登録する。空きエントリでない場合、テーブル管理部10は、後で説明するエントリの衝突を回避するための衝突回避処理を行い、受信したMACアドレス及びポート番号を登録する。衝突回避処理を実行しても衝突が回避できない場合、テーブル管理部10は、登録不可の通知を制御端末3へ通知する。このように、制御端末3から入力されたMACアドレス及びそのMACアドレスに対応するポートの組み合わせで登録されたMACアドレスは、スタティックMACアドレスである。以下では、MACアドレス及びポート番号の対応をMACアドレステーブル20へ登録することを、単に「MACアドレスの登録」という。
また、テーブル管理部10は、MACアドレス及び転送部30が特定したそのMACアドレスに対応する送信先のポートの情報の入力を転送部30から受ける。そして、テーブル管理部10は、制御端末3からMACアドレス及びそのMACアドレスに対応するポート番号の入力を受けた場合と同様に、衝突回避処理などを行い、MACアドレスを登録する。
次に、図5を参照して、テーブル管理部10による衝突回避処理を含むMACアドレステーブル20の管理について詳細に説明する。図5は、テーブル管理部の詳細を示すブロック図である。
テーブル管理部10は、テーブル制御管理部101、ハッシュ部102、衝突アドレス一時管理部103、FILO(First In Last Out)バッファ104、衝突回避制御部105、空エントリ管理部106及び登録結果出力部107を有する。以下では、制御端末3が、スタティックMACアドレスをテーブル管理部10へ入力した場合で説明する。
テーブル制御管理部101は、衝突検出部111及び登録部112を有する。衝突検出部111は、MACアドレス及びポート番号の入力を制御端末3から受ける。以下では、制御端末3から受信したMACアドレスを、「受信MACアドレス」という。この受信MACアドレスが、「第1MACアドレス」の一例にあたる。
衝突検出部111は、MACアドレステーブル20における各バンクの優先度の情報を有する。そして、衝突検出部111は、受信MACアドレスの最高の優先度のバンクに対応するハッシュ計算をハッシュ部102へ指示する。
その後、衝突検出部111は、受信MACアドレスのハッシュ計算の計算結果の入力をハッシュ部102から受ける。そして、衝突検出部111は、指定したバンクにおける受信した計算結果に応じたエントリに既にMACアドレスが登録されているか否かを判定する。MACアドレスが未登録のエントリ、すなわち空きエントリの場合、衝突検出部111は、空きエントリの情報及び受信MACアドレスを登録部112に出力する。以下では、このエントリが空きエントリであるか否かを判定する処理を「衝突検出処理」という。
これに対して、エントリに既にMACアドレスが登録されている場合、衝突検出部111は、次の優先度のバンクに対応するハッシュ計算をハッシュ部102へ指示する。次に、衝突検出部111は、次のバンクに対して、最初のバンクに対する衝突検出処理と同様の処理を行う。
衝突検出部111は、空きエントリが検出される、もしくは、全てのバンクで衝突が検出されるまで、バンクの優先度にしたがって衝突検出処理を繰り返す。
いずれかのバンクで空きエントリが検出された場合、衝突検出部111は、検出した空きエントリの情報及び受信MACアドレスを登録部112へ出力する。受信MACアドレスに関して空きエントリが検出できた場合、衝突検出部111は、衝突検出処理を終了する。
これに対して、全てのバンクで衝突が発生した場合、衝突検出部111は、受信MACアドレスを衝突アドレス一時管理部103へ出力する。
さらに、衝突検出部111は、衝突の発生及び衝突が発生した各バンクのエントリの情報を衝突回避制御部105へ送信する。その後、衝突検出部111は、次に衝突検出処理を行う対象とするMACアドレスが格納されたエントリの情報を衝突回避制御部105から取得する。以下では、衝突回避制御部105から通知された衝突検出処理の対象とするMACアドレスを、「対象MACアドレス」という。
その後、衝突検出部111は、取得したエントリに登録された対象MACアドレス及びそのエントリのMACアドレステーブル20上での場所の情報のFILOバッファ104への格納を衝突アドレス一時管理部103へ指示する。以下では、FIROバッファ104に格納されているデータであるMACアドレス及びそのエントリのMACアドレステーブル20上での場所の情報をまとめて「エントリ情報」という。
そして、衝突検出部111は、バンクの優先度にしたがって、対象MACアドレスについて、衝突検出処理を繰り返す。いずれかのバンクで空きエントリが検出された場合、衝突検出部111は、検出した空きエントリの情報及び対象MACアドレスを登録部112へ出力する。対象MACアドレスに関して空きエントリが検出できた場合、衝突検出部111は、衝突検出処理を終了する。
これに対して、対象MACアドレスに関して空きエントリが検出されない場合、衝突検出部111は、対象MACアドレスでの衝突の発生及び衝突が発生した各バンクのエントリの情報を衝突回避制御部105へ送信する。その後、衝突検出部111は、新たな対象MACアドレスを衝突回避制御部105から取得し、衝突検出処理を繰り返す。
そして、FILOバッファ104に空きが無くなる前に、対象MACアドレスに関して空きエントリが検出できた場合、衝突検出部111は、検出した空きエントリの情報及び対象MACアドレスを登録部112へ出力し、衝突検出処理を終了する。
これに対して、衝突検出処理を繰り返すうちにFILOバッファ104に空きが無くなった場合、衝突検出部111は、FILOバッファ104を空にする指示を衝突アドレス一時管理部103に通知する。そして、衝突検出部111は、受信MACアドレスの登録不可を登録部112に通知し、MACアドレスの登録処理を終了する。この衝突検出部111が、「検出部」の一例にあたる。
登録部112は、受信MACアドレスに関して空きエントリが検出された場合、空きエントリの情報及び受信MACアドレスの入力を衝突検出部111から受ける。そして、登録部112は、MACアドレステーブル20の空きエントリに受信MACアドレスを登録し、MACアドレスの登録処理を終了する。
登録部112は、受信MACアドレスに関して全てのバンクで衝突が発生した場合、受信MACアドレスの入力を衝突検出部111から受ける。そして、登録部112は、自己が有する記憶領域(不図示)に受信MACアドレスを格納し保持する。
その後、登録部112は、対象MACアドレスに関して空きエントリが検出された場合、空きエントリの情報及び対象MACアドレスの入力を衝突検出部111から受ける。そして、登録部112は、MACアドレステーブル20の空きエントリに対象MACアドレスを登録する。
続いて、テーブル制御管理部101は、FILOバッファ104に格納された最終登録エントリ情報が示すMACアドレスを空きエントリに順次登録していく追出処理を行う。以下では、追出処理の詳細について説明する。
登録部112は、最終登録エントリ情報の削除を衝突アドレス一時管理部103に指示する。最終登録エントリ情報とは、FILOバッファ104が保持するエントリ情報の内、最後に格納されたエントリ情報である。ここでは、まず空きエントリが検出された対象MACアドレスに対応するエントリ情報が削除される。
さらに、登録部112は、登録した対象MACアドレスの元の登録先エントリ(以下、「元エントリ」という場合がある。)の登録内容を削除し、元エントリを空きエントリにする。その後、登録部112は、空きエントリとなったエントリの情報を空エントリ管理部106に通知する。空エントリ管理部106に通知する空きエントリの情報には、空きエントリのMACアドレステーブル20上の場所などが含まれる。
登録部112は、最終登録エントリ情報の送信を衝突アドレス一時管理部103に通知する。その後、登録部112は、最終登録エントリ情報を衝突アドレス一時管理部103から取得する。以下、登録部112が衝突アドレス一時管理部103から取得した最終登録エントリ情報が示すMACアドレスを「追出MACアドレス」という。
そして、登録部112は、空きエントリの情報を空エントリ管理部106から取得する。その後、登録部112は、空エントリ管理部106から通知された空きエントリに追出MACアドレスを登録する。
さらに、登録部112は、取得した最終登録エントリ情報からエントリの場所の情報を取得する。このエントリの場所は、追出MACアドレスの元エントリの場所にあたる。そして、登録部112は、取得したエントリの場所を基に、MACアドレステーブル20における追出MACアドレスの元エントリを抽出する。その後、登録部112は、追出MACアドレスの元エントリの登録内容を削除し、元エントリを空きエントリにする。そして、登録部112は、空きエントリとなった元エントリの情報を空エントリ管理部106に通知する。
また、登録部112は、最終登録エントリ情報のFILOバッファ104からの削除を衝突アドレス一時管理部103に指示する。これにより、登録した追出MACアドレスのエントリ情報がFILOバッファ104から削除される。
次に、登録部112は、FILOバッファ104が空になったか否かを判定する。FIOバッファ104が空になっていなければ、登録部112は、FILOバッファ104が空になるまで追出処理を繰り返す。
FILOバッファ104が空になった場合、登録部112は、空エントリ管理部106が記憶する空きエントリの情報を取得する。そして、登録部112は、自己が保持する受信MACアドレスを空きエントリに格納し、追出処理を終了する。
その後、登録部112は、受信MACアドレスの登録完了を登録結果出力部107へ通知する。これにより、テーブル制御管理部101は、MACアドレスの登録の処理を終了する。対象MACアドレス及びそれに対応する追出MACアドレスが、「第2〜第3MACアドレス」の一例にあたる。
ハッシュ部102は、MACアドレステーブル20の各バンクの優先度の情報を有する。また、ハッシュ部102は、MACアドレステーブル20の各バンクに対応するハッシュ計算式を有する。バンク毎のハッシュ計算式は、それぞれ異なる。バンク毎のハッシュ計算式が異なることにより、MACアドレスに対してハッシュ計算を用いて登録を行う場合に、あるバンクで登録できなくても、他のバンクに登録できるようになる。
ハッシュ部102は、受信MACアドレス又は対象MACアドレスのハッシュ計算の指示を衝突検出部111から受ける。ハッシュ部102は、各バンクの優先度を基にバンクを選択する。そして、ハッシュ部102は、選択したバンクに応じたハッシュ計算式を用いて指定されたMACアドレスに対するハッシュ計算を行う。その後、ハッシュ部102は、ハッシュ計算の計算結果を衝突検出部111へ出力する。
FILOバッファ104は、データの格納が遅い順に、先に出力する先読み後出しのバッファである。すなわち、FILOバッファ104では、格納しているエントリ情報のうち、最後に格納されたエントリ情報が出力される。ただし、FILOバッファ104以外にも、データの格納が遅い順にデータを取得できる記憶装置であれば他の記憶装置を用いることもできる。例えば、データの格納時刻をデータとともに保持しておき、データの取得要求に合わせて格納時刻が最も古いものを出力する記憶装置を用いてもよい。
衝突アドレス一時管理部103は、エントリ情報のFILOバッファ104への格納指示を衝突検出部111から受ける。そして、衝突アドレス一時管理部103は、衝突検出部111から受信したエントリ情報をFILOバッファ104へ格納する。
また、衝突アドレス一時管理部103は、最終登録エントリ情報の取得の指示を登録部112から受ける。そして、衝突アドレス一時管理部103は、FILOバッファ104からエントリ情報を読み出し、登録部112へ出力する。
また、衝突アドレス一時管理部103は、FILOバッファ104から最終登録エントリ情報の削除の指示を登録部112から受ける。そして、衝突アドレス一時管理部103は、FILOバッファ104の先頭のエントリ情報を削除する。
また、衝突アドレス一時管理部103は、FILOバッファ104を空にする指示を衝突検出部111から受ける。そして、衝突アドレス一時管理部103は、FILOバッファ104を空にする。
衝突回避制御部105は、MACアドレステーブル20の各バンクの優先度の情報を有する。衝突回避制御部105は、受信MACアドレス及び対象MACアドレスの衝突の発生及び衝突が発生した各バンクのエントリの情報の入力を衝突検出部111から受ける。
受信MACアドレスの衝突の場合、衝突回避制御部105は、最も優先度の高いバンクに含まれる衝突先のエントリを抽出する。また、対象MACアドレスの衝突の場合、衝突回避制御部105は、対象MACアドレスが登録されているエントリを含むバンクの次の優先度のバンクに含まれる衝突先のエントリを抽出する。また、優先度が最低のバンクを使用した場合、衝突回避制御部105は、次は最も優先度の高いバンクに戻ってエントリの抽出を行う。そして、衝突回避制御部105は、抽出したエントリの情報を衝突検出部111へ出力する。
ここで、本実施例では、バンクを均等に使用するため、優先度を順に低いものに変えていきながらエントリを抽出するバンクを選択したが、バンクの選択はこれに限らない。例えば、衝突回避制御部105は、対象MACアドレスが登録されているエントリを含むバンク以外のバンクで最も優先度が高いバンクを選択してもよい。この場合、選択されるバンクに偏りが出る場合がある。この衝突回避制御部105が、「取得部」の一例にあたる。
空エントリ管理部106は、空きエントリの情報を登録部112から取得し保持する。そして、空エントリ管理部106は、空きエントリの情報の送信要求を登録部112から受けると、保持する空きエントリの情報を登録部112へ送信し、保持する空きエントリの情報を削除する。
登録結果出力部107は、受信MACアドレスの登録不可の通知を登録部112から受信する。そして、登録結果出力部107は、受信MACアドレスの登録不可の通知を制御端末3へ出力し、利用者へ受信MACアドレスの登録不可を通知する。
また、登録結果出力部107は、受信MACアドレスの登録完了の通知を登録部112から受信する。そして、登録結果出力部107は、受信MACアドレスの登録完了の通知を制御端末3へ出力し、利用者へ受信MACアドレスの登録完了を通知する。
制御端末3は、受信MACアドレスの登録不可の通知を登録結果出力部107から受信すると、モニタへ通知内容を表示するなどして利用者に受信MACアドレスの登録不可を通知する。また、制御端末3は、受信MACアドレスの登録完了の通知を登録結果出力部107から受信すると、モニタへ通知内容を表示するなどして利用者に受信MACアドレスの登録完了を通知する。
次に、図6〜12を参照して、本実施例に係る通信装置によるMACアドレス登録処理について説明する。ここでは、1つ目の対象MACアドレスで空きエントリが検出される場合で説明する。図6は、受信MACアドレスを用いた衝突検出処理の状態を表す図である。図7は、対象MACアドレスをFILOバッファに格納した状態を表す図である。図8は、対象MACアドレスを用いた衝突検出処理の状態を表す図である。図9は、検出された空きエントリに対象MACアドレスを格納した状態を表す図である。図10は、対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。図11は、受信MACアドレスに対する追出処理の状態を表す図である。図12は、MACアドレスの登録処理の完了後の状態を表す図である。ここでは、MACアドレステーブル20がバンク21〜23という3つのバンクに分割されている場合で説明する。また、説明の都合上、FILOバッファ104に格納されているエントリ情報もMACアドレスで表している。さらに、ここでは、バンク21が最も優先度が高く、バンク22が次の優先度を有し、バンク23が最も低い優先度を有する場合で説明する。
衝突検出部111は、図6に示すように、MAC#Aに対してバンク21〜23毎のハッシュ計算式を用いた計算結果に対応する各バンク21〜23のエントリを確認し、バンク21〜23のいずれでも衝突が発生したことを確認する。この状態では、FILOバッファ104は空である。
そこで、衝突検出部111は、最も優先度が高いバンク21でMAC#Aと衝突したMAC#Bが格納されているエントリを対象MACアドレスとする指示を衝突回避制御部105から受ける。その後、衝突アドレス一時管理部103は、衝突検出部111からの指示を受けて、図7に示すように、対象MACアドレスであるMAC#Bのエントリ情報をFILOバッファ104に格納する。
次に、図8に示すように、衝突検出部111は、対象MACアドレスであるMAC#Bに対してバンク21〜23毎のハッシュ計算式を用いた計算結果に対応する各バンク21〜23のエントリを順次確認する。ここで、MAC#Bの計算結果は、バンク21に含まれるMAC#Bが登録されたエントリと衝突する。そこで、衝突検出部111は、次の優先度を有するバンク22を確認し、MAC#Bのハッシュ計算の計算結果に対応するエントリが空きエントリであることを検出する。これにより、衝突検出部111による衝突検出処理は終了する。
そこで、図9に示すように、登録部112は、検出した空きエントリにMAC#Bを登録する。この状態では、MACアドレステーブル20上に、MAC#Bが登録されたエントリが2つ存在する。さらに、FILOバッファ104の先頭にMAC#Bのエントリ情報が格納されている。
そこで、図10に示すように、登録部112は、MACアドレステーブル20上の対象MACアドレスの元エントリの情報を削除し、空きエントリとする。この時、空エントリ管理部106は、空きエントリの情報を記憶する。さらに、衝突アドレス一時管理部103は、登録部112からの指示を受けて、FILOバッファ104の先頭にあるMAC#Bのエントリ情報を削除する。そして、登録部112は、FILOバッファ104が空になったか否かを判定する。この場合は、FILOバッファ104が空になっている。
そこで、図11に示すように、登録部112は、自己が記憶するMAC#Aを、空エントリ管理部106が記憶する空きエントリに登録する。これにより登録処理が完了し、MACアドレステーブル20及びFILOバッファ104は、図12で示す状態になる。以上で、最初の対象MACアドレスで空きエントリが検出された場合のMACアドレスの登録処理が完了する。
次に、図13〜22を参照して、最初の対象MACアドレスの衝突検出処理において空きエントリが検出できなかった場合の動作について説明する。ここでは、受信MACアドレスをMAC#A、最初の対象MACアドレスをMAC#B、2番目の対象MACアドレスをMAC#Eとして説明する。図13は、最初の対象MACアドレスを用いた衝突検出処理の状態を表す図である。図14は、2番目の対象MACアドレスをFILOバッファに格納した状態を表す図である。図15は、2番目の対象MACアドレスを用いた衝突検出処理の状態を表す図である。図16は、検出された空きエントリに2番目の対象MACアドレスを格納した状態を表す図である。図17は、2番目の対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。図18は、最初の対象MACアドレスに対する追出処理の状態を表す図である。図19は、追出処理により空きエントリに最初の対象MACアドレスを格納した状態を表す図である。図20は、最初の対象MACアドレスの情報を元エントリ及びFILOバッファから削除した状態を表す図である。図21は、受信MACアドレスに対する追出処理の状態を表す図である。図22は、MACアドレスの登録処理の完了後の状態を表す図である。
衝突検出部111は、最初のMACアドレスであるMAC#Bに対してバンク21〜23毎のハッシュ計算式を用いた計算を行い、図13に示すように、バンク21〜23のいずれでも衝突が発生したことを確認する。
そこで、衝突検出部111は、優先度が次に高いバンク22でMAC#Bと衝突したMAC#Eが格納されているエントリを対象MACアドレスとする指示を衝突回避制御部105から受ける。その後、衝突アドレス一時管理部103は、衝突検出部111からの指示を受けて、図14に示すように、2番目の対象MACアドレスであるMAC#Eのエントリ情報をFILOバッファ104に格納する。
次に、図15に示すように、衝突検出部111は、2番目の対象MACアドレスであるMAC#Eに対してバンク21〜23毎のハッシュ計算式を用いた計算結果に対応する各バンク21〜23のエントリを順次確認する。ここでは、衝突検出部111は、バンク23におけるMAC#Eのハッシュ計算の計算結果に対応するエントリが空きエントリであることを検出する。これにより、衝突検出部111による衝突検出処理は終了する。
そこで、図16に示すように、登録部112は、検出した空きエントリにMAC#Eを登録する。この状態では、MACアドレステーブル20上に、MAC#Eが登録されたエントリが2つ存在する。さらに、FILOバッファ104の先頭にMAC#Eのエントリ情報が格納されている。
そこで、図17に示すように、登録部112は、MACアドレステーブル20上のMAC#Eの元エントリの情報を削除し、空きエントリとする。この時、空エントリ管理部106は、空きエントリの情報を記憶する。さらに、衝突アドレス一時管理部103は、登録部112からの指示を受けて、FILOバッファ104の先頭にあるMAC#Eの情報を削除する。
次に、登録部112は、FILOバッファ104が空になったか否かを判定する。ここでは、FILOバッファ104は空ではないので、図18に示すように、登録部112は、追出処理をさらに行い、FILOバッファ104の最終登録エントリ情報に含まれるMAC#Bを、空エントリ管理部106が記憶する空きエントリに登録する。この登録後のMACアドレステーブル20及びFILOバッファ104の状態が図19に示される状態である。この状態では、MACアドレステーブル20上に、MAC#Bが登録されたエントリが2つ存在する。さらに、FILOバッファ104の先頭にMAC#Bのエントリ情報が格納されている。
そこで、図20に示すように、登録部112は、MACアドレステーブル20上のMAC#Bの元エントリの情報を削除し、空きエントリとする。この時、空エントリ管理部106は、空きエントリの情報を記憶する。さらに、衝突アドレス一時管理部103は、テーブル制御管理部101からの指示を受けて、FILOバッファ104の先頭にあるMAC#Bの情報を削除する。
次に、登録部112は、FILOバッファ104が空になったか否かを判定する。ここでは、FILOバッファ104が空になっているので、図21に示すように、登録部112は、自己が記憶するMAC#Aを、空エントリ管理部106が記憶する空きエントリに登録する。この登録部112が、「格納部」の一例にあたる。
これにより、MACアドレスの登録処理が完了し、MACアドレステーブル20及びFILOバッファ104は、図22で示す状態になる。以上で、最初の対象MACアドレスに関して空きエントリが無かった場合のMACアドレスの登録処理が完了する。ここでは、2番目の対象MACアドレスに関して空きエントリが検出される場合について説明したが、2番目以降の対象MACアドレスに関して空きエントリが検出されない場合にも、同様の処理を繰り返すことで、受信MACアドレスの登録を行うことができる。
次に、図23及び24を参照して、FILOバッファ104に空きが無くなった場合テーブル管理部10の処理について説明する。図23は、FILOバッファに空きが無くなった状態の図である。また、図24は、FILOバッファを空にして元に戻した状態の図である。
テーブル管理部101が衝突検出処理を繰り返したが空きエントリが見つからない場合、FILOバッファ104にエントリ情報が蓄積され、図23に示すように、FILOバッファ104に空きが無くなる。その場合、衝突アドレス一時管理部103は、FILOバッファ103に空きが無くなったことを衝突検出部111に通知する。衝突検出部111は、衝突検出処理を停止する。
衝突検出部111は、FILOバッファ103に空きが無くなった通知を受けて、FILOバッファ103を空にする指示を衝突アドレス一時管理部103に通知する。FILOバッファ103は、FILOバッファ103を空にする。これにより、図24に示すように、FILOバッファ104は保持するエントリ情報が無くなる。またこの場合、MACアドレステーブル20のエントリに対する登録や削除は行われていない。そのため、アドレステーブル20及びFILOバッファ104は、受信MACアドレスの登録の要求を受ける前と同じ状態を維持することになり、既登録エントリの削除による瞬断は発生しない。
さらに、衝突検出部111は、受信MACアドレスの登録不可を登録部112に通知する。登録部112は、衝突検出部111からの通知を受けて、受信MACアドレスの登録不可を登録結果出力部107に通知する。登録結果出力部107は、登録部112からの指示を受けて、MACアドレスの登録不可を制御端末3へ通知する。
次に、図25を参照して、本実施例に係る通信装置によるMACアドレスの登録処理の全体的な流れについて説明する。図25は、実施例1に係る通信装置によるMACアドレスの登録処理のフローチャートである。
利用者は、操作端末3を用いて、登録したいMACアドレスをテーブル制御管理部101に入力する(ステップS1)。
衝突検出部111は、受信MACアドレスのハッシュ計算をハッシュ部102に指示する。ハッシュ部102は、バンクの優先度にしたがって受信MACアドレスのハッシュ計算を行い(ステップS2)、計算結果を衝突検出部111へ出力する。
衝突検出部111は、空きエントリがあるか否か、すなわち、全てのバンクで衝突が発生したか否かを判定する(ステップS3)。ここで、実際には衝突検出部111及びハッシュ部102によるこの衝突検出処理は、バンク毎に行われるが、ここでは、説明のため、まとめて1回のステップで表している。
空きエントリがあった場合(ステップS3:肯定)、衝突検出部111は、検出した空きエントリに受信MACアドレスを登録し(ステップS4)、MACアドレスの登録処理を終了する。
これに対して、空きエントリが無い場合(ステップS3:否定)、衝突検出部111は、衝突が発生した旨の通知を衝突した各エントリの情報とともに、衝突回避制御部105に通知する。衝突回避制御部105は、衝突先のエントリで且つFILOバッファ104に登録されていないエントリを抽出する(ステップS5)。そして、衝突回避制御部105は、抽出したエントリの情報を衝突検出部111に通知する。
衝突検出部111は、抽出されたエントリの情報の通知をテーブル制御管理部101から受け、その情報を基にMACアドレステーブル20から対象MACアドレスを取得する。そして、衝突検出部111は、抽出されたエントリのエントリ情報のFILOバッファ104への格納を衝突アドレス一時管理部103に指示する。アドレス一時管理部103は、衝突検出部111からの指示を受けて、抽出されたエントリのエントリ情報をFILOバッファ104へ格納する(ステップS6)。
次に、衝突検出部111は、対象MACアドレスのハッシュ計算をハッシュ部102に指示する。ハッシュ部102は、バンクの優先度にしたがって対象MACアドレスのハッシュ計算を行い(ステップS7)、計算結果を衝突検出部111へ出力する。
衝突検出部111は、計算結果に応じた各バンクのエントリで衝突が発生したか否かを確認する。そして、衝突検出部111は、空きエントリがあるか否か、すなわち、対象MACアドレスに関して全てのバンクで衝突が発生したか否かを判定する(ステップS8)。
空きエントリが無い場合(ステップS8:否定)、衝突検出部111は、FILOバッファ104に空きがあるか否か、すなわち、FILOバッファ104が満杯か否かの判定を衝突アドレス一時管理部103に指示する。衝突アドレス一時管理部103は、FILOバッファ104に空きがあるか否かを判定し(ステップS9)、衝突検出部111に判定結果を通知する。
FILOバッファ104に空きがある場合(ステップS9:肯定)、衝突検出部111は、ステップS5へ戻る。
これに対して、FILOバッファ104に空きが無い場合(ステップS9:否定)、衝突検出部111は、受信MACアドレスの登録不可を登録結果出力部107へ通知する。これを受けて、登録結果出力部107は、受信MACアドレスの登録不可を制御端末3へ通知する(ステップS10)。
一方、空きエントリがある場合(ステップS8:肯定)、衝突検出部111は、対象MACアドレス及び空きエントリの情報を登録部112へ出力する。そして、登録部112は、空きエントリに対象MACアドレスを登録する(ステップS11)。
次に、登録部112は、登録したMACアドレスの元エントリを空にして空きエントリにする。ここで、登録したMACアドレスとは、対象MACアドレス又は追出MACアドレスである。さらに、登録部112は、空きエントリを空エントリ管理部106に通知する(ステップS12)。
登録部112は、FILOバッファ104の先頭のエントリ情報の削除を衝突アドレス一時管理部103に指示する。衝突アドレス一時管理部103は、登録部112からの指示を受けて、FILOバッファ104の先頭のエントリ情報を削除する(ステップS13)。
登録部112は、FILOバッファ104が空か否かを衝突アドレス一時管理部103に問い合わせ、その応答にしたがってFILOバッファ104が空か否かを判定する(ステップS14)。
FILOバッファ104が空でない場合(ステップS14:否定)、登録部112は、FILOバッファ104における最終登録エントリ情報の提供を衝突アドレス一時管理部103に指示する。衝突アドレス一時管理部103は、登録部112からの指示を受けて、最終登録エントリ情報をFILOバッファ104から取得する。その後、登録部112は、最終登録エントリ情報を衝突アドレス一時管理部103から取得する(ステップS15)。
次に、登録部112は、空きエントリの情報を空エントリ管理部106から取得する。そして、登録部112は、最終登録エントリ情報に含まれるMACアドレスである追出MACアドレスを空きエントリに登録する(ステップS16)。
次に、登録部112は、最終登録エントリ情報で示されるエントリの場所を取得する(ステップS17)。その後、登録部112は、ステップS12に戻る。
これに対して、FILOバッファ104が空である場合(ステップS14:肯定)、登録部112は、空きエントリの情報を空エントリ管理部106から取得する。そして、登録部112は、自己が保持する受信MACアドレスを空きエントリに登録する(ステップS18)。
そして、登録部112は、受信MACアドレスの登録完了を登録結果出力部107へ通知する。登録結果出力部107は、受信MACアドレスの登録完了通知を制御端末3へ送信し、利用者にMACアドレスの登録完了を通知する(ステップS19)。
以上に説明したように、本実施例に係る通信装置は、バンク毎に異なるハッシュ計算を行い、空きエントリが見つからない場合、衝突先のエントリの中から1つ選んで空きエントリを検出することを繰り返す。そして、空きエントリを検出した場合、本実施例に係る通信装置は、空きエントリの検出を行ったMACアドレスを順次空きバンクに登録していく。これにより、本実施例に係る通信装置は、MACアドレス登録時の衝突による登録不可の確率を低減することができる。
また、本実施例に係る通信装置は、MACアドレステーブルを格納するメモリとしてTCAMといった高価なメモリではなく、一般的なメモリを使用した上で、衝突による登録不可の確率を低減している。そのため、本実施例に係る通信装置は、安価に大量のテーブルを管理することができる。
(変形例1)
実施例1で説明した通信装置では、一例としてバンクを等分した場合で説明した。ただし、バンクの割振り方法に特に制限はない。図26は、各バンクのサイズを変更した割振り方法の例を示す図である。また、図27は、バンク数を変更した割振り方法の例を示す図である。
ここでは、実施例1のようにバンク21、22、23の順に優先度が下がっていく場合で説明する。この場合、例えば、図26のように優先度がより高いバンクを大きくすることができる。例えば、バンク21を最大にし、バンク22を次に大きくし、バンク23を最も小さくしてもよい。このようにバンクの大きさを変更することにより、最初の衝突検出で空きエントリが検出される可能性を高くすることができる。これにより、通信装置1は衝突先のMACアドレスを用いた検出を行う確率が低くなり、処理負荷を低減することができる。
また、例えば、実施例1では3分割を例に説明したが、バンクの個数は特に制限はない。例えば、図27で示すバンク21〜26のようにバンクの数を増やした場合、バンク毎に異なるハッシュ計算式を用いるため、通信装置1では、登録するときに空きエントリが検出される確率が高くなる。そのため、バンクの数を増やすことにより、通信装置1は、次の衝突したMACアドレスを用いた検出を行わなくて済む。これにより、通信装置1は衝突先のMACアドレスを用いた検出を行う回数を低く抑えることができ、処理負荷を低減することができる。
また、図26及び27で示す分割方法を組み合わせてもよい。すなわち、MACアドレステーブル20を格納するメモリを、より細かく分割しつつ、優先度の高いバンクを大きくしてもよい。
(変形例2)
また、実施例1では、テーブル制御管理部101が、受信MACアドレスを記憶していたが、追出処理の最後にテーブル制御管理部101が取得できるのであれば受信MACアドレスの情報の保持方法はこれに限らない。例えば、FILOバッファ104に最初に受信MACアドレスのエントリ情報を格納し、その後から対象MACアドレスのエントリ情報を格納することで、受信MACアドレスの情報を保持してもよい。
さらに、実施例1では、FILOバッファ104を用いたが、受信MACアドレスが全てのバンクで衝突した後、衝突検出処理を1回だけを行う構成であれば、FILOバッファ104を設けなくてもよい。
次に、実施例2について説明する。本実施例に係る通信装置は、FILOバッファ104に空きが無くなった場合に、ダイナミックMACアドレスを格納するエントリを空にして空きエントリを作成することが実施例1と異なる。本実施例に係るテーブル管理部10も図5のブロック図で表される。以下の説明では、実施例1と同じ符号を有する各部は、特に説明の無い限り同じ機能を有するものとする。
まず、本実施例に係るテーブル管理部10も実施例1と同様に、受信MACアドレスが全てのバンクで衝突した場合、衝突先のMACアドレスを対象MACアドレスとして、衝突検出処理を繰り返す。
そして、衝突検出処理を繰り返した結果、図28に示すようにFILOバッファ104に空きが無くなることが考えられる。図28は、実施例2におけるFILOバッファに空きが無い状態を表す図である。この時、FILOバッファ104には、複数のエントリ情報が格納されている。そして、エントリ情報の中には、ダイナミックMACアドレスを含むエントリであるダイナミックエントリのエントリ情報及びスタティックMACアドレスを含むエントリであるスタティッククエントリのエントリ情報が含まれる。
図28において、MACアドレステーブル20の中でMACDynamicと記載されているエントリが、ダイナミックMACアドレスが登録されたエントリの1つである。また、FILOバッファ104の中でMACDynamicと記載されているエントリ情報が、MACアドレステーブル20の中でMACDynamicに対応するエントリ情報である。MACアドレステーブル20のエントリ及びFILOバッファ104のエントリ情報それぞれにおいて、MACDynamicであることを示すフラグが格納されている。
ここで、スタティックMACアドレスは、利用者がMACアドレスとポートとを一意に対応付ける意思を持って登録したアドレスである。そのため、スタティックMACアドレスは重要度が高く、また削除後に自動的に登録を行うことも困難である。これに対して、ダイナミックMACアドレスは、自動的にポートとMACアドレスとの対応が登録されたアドレスである。そのため、重要度は比較的低く、また削除しても自動的に登録を行うことが容易である。そこで、スタティックMACアドレスが登録されているエントリを空にして空きエントリを作成しても運用上の問題が発生する可能性は低い。
そこで、登録部112は、FILOバッファ104に空きが無くなった旨の通知を衝突検出部111から受けると、ダイナミックエントリのエントリ情報の検出を衝突アドレス一時管理部103に指示する。その後、登録部112は、ダイナミックエントリのエントリ情報を衝突アドレス一時管理部103から取得する。
これに対して、ダイナミックエントリのエントリ情報が見つからない場合、登録部112は、ダイナミックエントリのエントリ情報が無い旨の通知を衝突アドレス一時管理部103から受ける。この場合、登録部112は、受信MACアドレスの登録不可を登録結果出力部107へ通知する。
ダイナミックエントリのエントリ情報を取得した場合、登録部112は、FILOバッファ104の先頭のエントリ情報から取得したダイナミックエントリのエントリ情報までのエントリ情報の削除を衝突アドレス一時管理部103に指示する。
次に、登録部112は、取得したエントリ情報で示されるMACアドレステーブル20のダイナミックエントリを空にする。この時のMACアドレステーブル20及びFILOバッファ104の状態が図29で示される。図29は、ダイナミックエントリを空きエントリにした状態を表す図である。
この場合、図29に示すように、FILOバッファ104から、図28における先頭のエントリ情報であるMAC#XXのエントリ情報からMACDynamicのエントリ情報までが削除されている。この状態では、FILOバッファ104には、MAC#E及びMAC#Bのエントリ情報の2つが格納されている。また、MACアドレステーブル20では、MACDynamicが登録されていたダイナミックエントリが空きエントリである。
その後、登録部112は、MAC#E及びMAC#Bを追出MACアドレスとして追出処理を行う。そして、MAC#Bの追出処理が終わると、登録部112は、MAC#Bの元エントリである空きエントリに受信MACアドレスであるMAC#Aを登録する。この時のMACアドレステーブル20及びFILOバッファ104の状態が図30で示される。図30は、ダイナミックエントリを空きエントリにした後のMACアドレスの登録処理の完了後の状態を表す図である。
また、衝突アドレス一時管理部103は、FILOバッファ104に空きが無くなると、ダイナミックエントリのエントリ情報の検出の指示を登録部112から受ける。そして、衝突アドレス一時管理部103は、FILOバッファ104を検索し、最も古いダイナミックエントリのエントリ情報を検出する。そして、衝突アドレス一時管理部103は、検出したダイナミックエントリのエントリ情報を登録部112へ送信する。これに対して、ダイナミックエントリのエントリ情報が見つからない場合、衝突アドレス一時管理部103は、ダイナミックエントリのエントリ情報がない旨を登録部112へ通知する。
ダイナミックエントリのエントリ情報の送信後、衝突アドレス一時管理部103は、エントリ情報の削除の指示を登録部112から受ける。そして、衝突アドレス一時管理部103は、FILOバッファ104における先頭のエントリ情報から検出したダイナミックエントリのエントリ情報までのエントリ情報を削除する。
以上のような処理を行うことで、図30に示すように、対象MACアドレスが登録されたエントリにダイナミックエントリがあれば、本実施例に係るテーブル制御管理部101は、受信MACアドレスの登録を完了することができる。
次に、図31を参照して、本実施例に係る通信装置1によるFILOバッファ104に空きが無くなった後のMACアドレスの登録処理について説明する。図31は、実施例2に係る通信装置によるMACアドレスの登録処理のフローチャートである。
FILOバッファ104に空きが無くなる(ステップS101)。
登録部112は、ダイナミックエントリのエントリ情報と通知を衝突アドレス一時管理部103に指示する。そして、登録部112は、衝突アドレス一時管理部103からの応答により、FILOバッファ104にダイナミックエントリがあるか否かを判定する(ステップS102)。
ダイナミックエントリが無い場合(ステップS102:否定)、登録部112は、受信MACアドレスの登録不可を登録結果出力部107に通知する。登録結果出力部107は、登録部112からの通知を受けて、MACアドレスの登録不可を制御端末3へ送信し、利用者に通知する(ステップS103)。
これに対して、ダイナミックエントリがある場合(ステップS102:肯定)、登録部112は、ダイナミックエントリのエントリ情報を衝突アドレス一時管理部103から取得する。本実施例では、登録部112は、FILOバッファ104の中の最も古いダイナミックエントリのエントリ情報を取得する。これにより、登録部112は、FILOバッファ104からダイナミックエントリのエントリ情報を1つ取得する(ステップS104)。
次に、登録部112は、取得したエントリ情報が示すMACアドレステーブル20上のダイナミックエントリを空きエントリにする(ステップS105)。
さらに、登録部112は、FILOバッファ104における先頭のエントリ情報から検出したダイナミックエントリのエントリ情報までのエントリ情報の削除を衝突アドレス一時管理部103に指示する。衝突アドレス一時管理部103は、登録部112からの指示を受けて、FILOバッファ104における先頭のエントリ情報から検出したダイナミックエントリのエントリ情報までのエントリ情報を削除する(ステップS106)。
そして、登録部112は、追出処理を行う(ステップS107)。
その後、登録部112は、受信MACアドレスの登録完了を登録結果出力部107に通知する。登録結果出力部107は、登録部112からの通知を受けて、MACアドレスの登録完了を制御端末3へ送信し、利用者に通知する(ステップS108)。
以上に説明したように、本実施例に係る通信装置は、衝突検出処理の結果、FILOバッファ104に空きが無くなった場合に、ダイナミックエントリを空きエントリにして追出処理を行い受信MACアドレスを登録する。これにより、本実施例に係る通信装置は、MACアドレス登録時の衝突による登録不可の確率をより低減することができる。
次に、実施例3について説明する。本実施例に係る通信装置は、受信MACアドレスが衝突した衝突先のエントリに登録されているMACアドレスを順次対象MACアドレスとして衝突検出処理を行うことが実施例1と異なる。本実施例に係るテーブル管理部10も図5のブロック図で表される。以下の説明では、実施例1と同じ符号を有する各部は、特に説明の無い限り同じ機能を有するものとする。
衝突検出部111は、受信MACアドレスであるMAC#Aに対するハッシュ計算の計算結果をハッシュ部102から取得し、各バンクで衝突が発生するか否かを判定する。この場合、図32に示すように、テーブル制御管理部101は、バンク21〜23の全てのバンクで衝突の発生を検出する。図32は、実施例3における受信MACアドレスを用いた衝突検出処理の状態を表す図である。
次に、衝突検出部111は、MAC#Aを登録部112に記憶させる。そして、衝突検出部111は、衝突先のエントリの中から一つ選択されたエントリ情報を衝突回避制御部105から取得する。そして、衝突検出部111は、取得したエントリに登録されているMACアドレスを最初の対象MACアドレスとして取得する。ここでは、衝突検出部111は、最初の対象MACアドレスとしてMAC#Bを取得する。衝突検出部111は、MAC#Bに対するハッシュ計算の計算結果をハッシュ部102から取得し、各バンクで衝突が発生するか否かを判定する。この場合、図33に示すように、衝突検出部111は、バンク21〜23の全てのバンクで衝突の発生を検出する。図33は、実施例3における最初の対象MACアドレスを用いた衝突検出処理の状態を表す図である。
衝突検出部111は、MAC#Bのエントリのエントリ情報をFILOバッファ104に格納する指示を衝突アドレス一時管理部103へ送信する。次に、衝突検出部111は、衝突先のエントリの中から選択されたMAC#B以外のエントリのエントリ情報を衝突回避制御部105から取得する。そして、衝突検出部111は、取得したエントリに登録されているMACアドレスを2番目の対象MACアドレスとして取得する。ここでは、衝突検出部111は、バンク22のMAC#Cを2番目の対象MACアドレスとして取得する。衝突検出部111は、MAC#Cに対するハッシュ計算の計算結果をハッシュ部102から取得し、各バンクで衝突が発生するか否かを判定する。この場合、図34に示すように、衝突検出部111は、バンク22で登録可能なエントリを検出する。図34は、実施例3における2番目の対象MACアドレスを用いた衝突検出処理の状態を表す図である。このように、テーブル制御管理部101は、空きエントリが検出できるまで衝突検出処理を繰り返す。
そして、空きエントリを検出後、登録部112は、実施例1と同様に追出処理を行い、最終的に受信MACアドレスであるMAC#Aを登録する。
衝突回避制御部105は、衝突の発生及び衝突が発生した各バンクのエントリの情報の入力を衝突検出部111から受ける。そして、衝突回避制御部105は、バンクの優先順位にしたがい、エントリを選択し、そのバンクのエントリの情報を衝突検出部111へ送信する。その後、受信MACアドレスの衝突先のエントリがなくなるまで、衝突回避制御部105は、衝突の発生の通知を受けて、1つ前に選んだバンクの次の優先順位を持つバンクを選択し、そのバンクの衝突先のエントリのエントリ情報を衝突検出部111に通知する。ここでは、衝突回避制御部105は、最初にバンク21のMAC#Bが登録されているエントリを選びそのエントリ情報を通知し、次にバンク22のMAC#Cが登録されているエントリを選びそのエントリ情報を通知する。
ここで、MAC#Aの衝突先のエントリを全て対象MACアドレスとしても空きエントリが見つからない場合が考えられる。その場合、衝突回避制御部105は、MAC#BやMAC#Cの衝突先のエントリの中で未だ対象エントリとしていないエントリを選択し、衝突検出部111はその選択にしたがって衝突検出処理を繰り返えしてもよい。
以上に説明したように、本実施例に係る通信装置は、衝突先のエントリを順番に対象エントリとして衝突検出処理を繰り返す。このように対象エントリの選択には他の方法を用いることもできる。
(ハードウェア構成)
次に、図35を参照して、各実施例に係る通信装置1のハードウェア構成について説明する。図35は、通信装置のハードウェア構成の一例の図である。図35のハードウェア構成は、例えば、ソフトウェアを用いて図2,3及び5の各部の機能を実現する場合をあらわす。
通信装置1は、CPU91、RAM(Random Access Memory)92、FILOバッファ用RAM93及びポート94を有する。RAM92、FILOバッファ用RAM93及びポート94は、バスによりCPU91に接続する。
RAM92は、図2に例示した回線IF回路12及び制御回路13の機能を実現するプログラムを記憶する。また、RAM92は、スイッチ制御部11の機能、すなわち、図3に例示した転送部30、テーブル管理部10の機能を実現するプログラムを記憶する。より詳しくは、RAM92は、テーブル管理部10の機能として、図5に例示するテーブル制御管理部101、衝突検出部111及び登録部112の機能を実現するプログラムを記憶する。また、RAM92は、ハッシュ部102、衝突アドレス一時管理部103、衝突回避制御部105及び空エントリ管理部106の機能を実現するプログラムを記憶する。このように、RAM92は、上述した各プログラムを含む各種プログラムを記憶する。さらに、RAM92は、MACアドレステーブル20を記憶する。
FILOバッファ用RAM93は、FILOバッファ104の機能を有する。
CPU91は、RAM92から各種プログラムを読み出して実行することで、回線IF回路12、制御回路13及びスイッチ制御部11の機能を実現する。詳しくは、CPU91及びRAM92は、スイッチ制御部11の機能として、テーブル管理部10及び転送部30の機能を実現する。より詳しくは、CPU91及びRAM92は、テーブル管理部10の機能として、テーブル制御管理部101、ハッシュ部102、衝突アドレス一時管理部103、衝突回避制御部105及び空エントリ管理部106の機能を実現する。特に、CPU91及びRAM92は、テーブル制御管理部101の機能として、衝突検出部111及び登録部112の機能を実現する。
ただし、ここでは各部の機能をソフトウェアで実現する場合で説明したが、これと異なり組み込み回路などのハードウェアを用いて各部の機能を実現してもよい。
1 通信装置
2 端末装置
3 制御端末
10 テーブル管理部
11 スイッチ制御部
12 回線IF回路
13 制御回路
20 MACアドレステーブル
30 転送部
101 テーブル制御管理部
102 ハッシュ部
103 衝突アドレス一時管理部
104 FILOバッファ
105 衝突回避制御部
106 空エントリ管理部
107 登録結果出力部
111 衝突検出部
112 登録部

Claims (7)

  1. 複数の領域に分割され、各前記領域毎に異なるハッシュ関数を用いて、MACアドレスをハッシュして得られた値に対応するエントリが記憶されたMACアドレステーブルと、
    前記各ハッシュ関数を用いて、入力された第1MACアドレスをハッシュして得られた値に対応する第1エントリが、前記MACアドレステーブルの各領域に存在するか検出し、且つ、前記各ハッシュ関数を用いて、後述する第2MACアドレスをハッシュして得られた値に対応する第2エントリが、前記MACアドレステーブルの各領域に存在するか検出する検出部と、
    前記MACアドレステーブルの各領域に前記第1エントリがそれぞれ存在すると検出された場合、何れかの領域にある前記第1エントリに格納されている前記第2MACアドレスを取得する取得部と、
    前記MACアドレステーブルの何れの領域にも前記第2エントリが存在しないと検出された場合、前記第2エントリに前記第2MACアドレスを格納し、前記第1エントリに前記第1MACアドレスを格納する格納部と、
    を備えたことを特徴とする通信装置。
  2. 前記取得部は、前記MACアドレステーブルの各領域に前記第2エントリがそれぞれ存在すると検出された場合、何れかの領域にある前記第2エントリに格納されている第3MACアドレスを取得し、
    前記検出部は、取得された第3MACアドレスをハッシュして得られた値に対応する第3エントリが、前記MACアドレステーブルの各領域に存在するか検出し
    前記格納部は、前記MACアドレステーブルの何れの領域にも前記第3エントリが存在しないと検出された場合、前記第3エントリに前記第3MACアドレスを格納し、前記第2エントリに前記第2MACアドレスを格納し、前記第1エントリに前記第1MACアドレスを格納する
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記取得部は、入力されたMACアドレスをハッシュして得られた値に対応するエントリが、前記MACアドレステーブルの何れの領域にも存在しなくなるまで、前記エントリに格納されたMACアドレスを取得し、
    前記格納部は、前記第2MACアドレス又は第3MACアドレスをハッシュして得られた値に対応するエントリが、前記MACアドレステーブルの何れの領域にも存在しないと検出された場合、当該エントリから検出順に、入力が遅い順のMACアドレスを順次格納していく
    ことを特徴とする請求項1又は2に記載の通信装置。
  4. 前記第2MACアドレスを記憶する記憶部をさらに備え、
    前記格納部は、前記記憶部から前記第2MACアドレスを取得して前記第2エントリに格納し、前記第2MACアドレスを前記第1エントリ及び前記記憶部から削除し、その後、前記第1MACアドレスを前記第1エントリに格納する
    ことを特徴とする請求項1〜3のいずれか1つに記載の通信装置。
  5. 前記MACアドレステーブルには、MACアドレスと出力先との固定の対応又は変更可能な対応が登録され、
    前記格納部は、前記記憶部にアドレスを記憶する空きが無くなった場合、前記記憶部が記憶するアドレスの内、前記変更可能な対応が前記MACアドレステーブルに登録されている固定アドレスを選択し、前記固定アドレスの登録を前記MACアドレステーブルから削除し、前記記憶部に格納されているMACアドレスのうち前記固定アドレス以後に登録されたMACアドレスを削除し、さらに、前記記憶部に最も新しく格納された第1最新MACアドレスを取得し、前記第1最新MACアドレスを前記固定アドレスをハッシュして得られた値に対応する第1最新エントリに格納し、前記第1最新MACアドレスを前記第1最新エントリ及び前記記憶部から削除し、その後、前記記憶部に格納されているMACアドレスのうち最も新しく格納された第2最新MACアドレスを取得し、前記第2最新MACアドレスを前記第1最新エントリに格納するとともに、前記第2最新MACアドレスをハッシュして得られた値に対応する前記第2最新エントリ及び前記記憶部から削除する処理を繰り返す
    ことを特徴とする請求項4に記載の通信装置。
  6. 前記取得部は、前記MACアドレステーブルの各領域に前記第2エントリがそれぞれ存在すると検出された場合、前記第1エントリの何れかから前記第2MACアドレス以外の第3MACアドレスを取得し、
    前記検出部は、前記第3MACアドレスをハッシュして得られた値に対応する第3エントリが、前記MACアドレステーブルの各領域に存在するか検出し、
    前記格納部は、前記第3エントリが、前記MACアドレステーブルの何れの領域にも存在しないと検出された場合、前記第3エントリに前記第3MACアドレス格納し、前記第2エントリに前記第2MACアドレスを格納し、前記第1エントリに前記第1MACアドレスを格納する
    ことを特徴とする請求項1に記載の通信装置。
  7. 通信装置が、
    複数の領域に分割されたMACアドレステーブルであって、領域毎に異なるハッシュ関数を用いて、MACアドレスをハッシュして得られた値に対応するエントリが記憶された該MACアドレステーブルの各領域に、該各ハッシュ関数を用いて、前記通信装置に入力された第1MACアドレスをハッシュして得られた値に対応する第1エントリが存在するか検出し、
    前記MACアドレステーブルの各領域に前記第1エントリがそれぞれ存在する場合、何れかの領域にある前記第1エントリに格納されている第2MACアドレスを取得し、
    前記MACアドレステーブルの各領域に、前記各ハッシュ関数を用いて、前記第2MACアドレスをハッシュして得られた値に対応する第2エントリが存在するか検出し、
    前記MACアドレステーブルの何れの領域にも前記第2エントリが存在しなければ、前記第2エントリに前記第2MACアドレスを格納し、前記第1エントリに前記第1MACアドレスを格納する、
    ことを特徴とする通信制御方法。
JP2015055145A 2015-03-18 2015-03-18 通信装置及び通信制御方法 Expired - Fee Related JP6520259B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015055145A JP6520259B2 (ja) 2015-03-18 2015-03-18 通信装置及び通信制御方法
US15/001,849 US9729445B2 (en) 2015-03-18 2016-01-20 Communication device and communication control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015055145A JP6520259B2 (ja) 2015-03-18 2015-03-18 通信装置及び通信制御方法

Publications (2)

Publication Number Publication Date
JP2016178368A true JP2016178368A (ja) 2016-10-06
JP6520259B2 JP6520259B2 (ja) 2019-05-29

Family

ID=56924077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015055145A Expired - Fee Related JP6520259B2 (ja) 2015-03-18 2015-03-18 通信装置及び通信制御方法

Country Status (2)

Country Link
US (1) US9729445B2 (ja)
JP (1) JP6520259B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024197808A1 (zh) * 2023-03-31 2024-10-03 新华三技术有限公司 存储mac地址表项

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169937A1 (en) * 2001-05-10 2002-11-14 Koichi Kagawa Table management technique
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体
JP2005347969A (ja) * 2004-06-01 2005-12-15 Matsushita Electric Ind Co Ltd パケット転送装置およびパケット転送方法
JP2014072581A (ja) * 2012-09-27 2014-04-21 Fujitsu Ltd 通信装置およびアドレス学習方法
JP2014195140A (ja) * 2013-03-28 2014-10-09 Hitachi Metals Ltd ネットワーク中継装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775281B1 (en) 1999-09-30 2004-08-10 Mosaid Technologies, Inc. Method and apparatus for a four-way hash table
US9743400B2 (en) * 2012-07-30 2017-08-22 Harman International Industries, Incorporated Collision avoidance system for mobile slotted aloha protocol
US9658984B2 (en) * 2014-07-15 2017-05-23 Cisco Technology, Inc. Method and apparatus for synchronizing multiple MAC tables across multiple forwarding pipelines

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169937A1 (en) * 2001-05-10 2002-11-14 Koichi Kagawa Table management technique
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体
JP2005347969A (ja) * 2004-06-01 2005-12-15 Matsushita Electric Ind Co Ltd パケット転送装置およびパケット転送方法
JP2014072581A (ja) * 2012-09-27 2014-04-21 Fujitsu Ltd 通信装置およびアドレス学習方法
JP2014195140A (ja) * 2013-03-28 2014-10-09 Hitachi Metals Ltd ネットワーク中継装置

Also Published As

Publication number Publication date
US9729445B2 (en) 2017-08-08
JP6520259B2 (ja) 2019-05-29
US20160277296A1 (en) 2016-09-22

Similar Documents

Publication Publication Date Title
US20190245875A1 (en) Method and apparatus for defending against dns attack, and storage medium
CN108924274B (zh) 域名系统dns处理方法、装置、存储介质及电子设备
US20230153264A1 (en) Data transmission method, chip, and device
CN103209141A (zh) 一种交换芯片处理数据报文的方法及交换芯片
JP6900481B2 (ja) Nfコンポーネントの例外を処理するための方法およびシステム、ならびにデバイス
CN107360268B (zh) 一种数据包处理方法、装置及设备
CN101789905A (zh) 防止未知组播攻击cpu的方法和设备
CN110430135B (zh) 一种报文处理方法和装置
CN114338594B (zh) 在Kubernetes环境下的ARP代答方法、装置、设备及存储介质
CN101404620A (zh) 一种创建路由表项的方法和交换设备
WO2023273424A1 (zh) 一种基于linux内核ko模块的加载方法及装置
CN110912826A (zh) 利用acl扩充ipfix表项的方法及装置
US9923794B2 (en) Method, apparatus, and system for identifying abnormal IP data stream
CN104426816B (zh) 一种虚拟机通信方法及装置
CN103607360A (zh) 一种报文处理方法、线卡及交换设备
JP6520259B2 (ja) 通信装置及び通信制御方法
CN105635138B (zh) 一种防止arp攻击的方法和装置
CN108881060A (zh) 一种处理通信报文的方法及装置
TWI505675B (zh) 網路交換器與資料更新方法
CN106330712B (zh) 一种mac地址学习的控制方法和装置
CN114827047B (zh) 数据传输方法、装置、计算机设备和存储介质
JP2007221522A (ja) ポーリング装置及び端末装置及びポーリング方法及びプログラム
CN112187484B (zh) 降低占用宽带的网络广播流量发送方法、装置及存储介质
JP6266445B2 (ja) パケット中継装置及びパケット中継方法
CN106302184B (zh) 一种流表项下发方法、流表项保存方法、相关装置和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190415

R150 Certificate of patent or registration of utility model

Ref document number: 6520259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees