以下に、本願の開示するデータ伝送装置、データ伝送システム及びデータ伝送方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するデータ伝送装置、データ伝送システム及びデータ伝送方法が限定されるものではない。
図1は、実施例1に係るデータ伝送装置のブロック図である。図1に示すように、本実施例に係るデータ伝送装置1は、入力IF(Inter Face)11、12、受信バッファ21、22、MAC(Media Access Control)学習処理部31、32を有している。また、データ伝送装置1は、LAG振分部40、スイッチ部50、フラグメント処理部61〜63、送信レートチェック部71〜73、送信バッファ81〜83、出力IF91〜93及び回線101〜103を有している。さらに、データ伝送装置1は、LAGポート管理部111、レート管理部112、記憶部113、MAC学習テーブル121及びLAG振分テーブル122を有している。データ伝送装置1は、データの送受信をフレーム単位で行うものとして説明する。以下では、データ伝送装置1が送受信するフレーム単位のデータを単に「フレーム」と呼ぶ場合がある。また、図1では、実線の矢印がフレームの流れを表しており、点線の矢印が制御情報の流れを表している。
出力IF91〜93は、それぞれ回線101〜103に接続する送信ポートである。本実施例では、説明の便宜上、データ伝送装置1は出力IF91〜3という3つの送信ポートのみを有するものとする。また、出力IF91〜93及び回線101〜103は、1つの論理的な回線として構成されている。以下では、複数の送信ポートをまとめて構成される1つの論理的な回線を「LAG」と呼ぶ場合がある。ただし、実際には、データ伝送装置1のポート数及びLAGの数は特に限定されず、また、LAGを構成しない送信ポートが存在してもよい。以下では、出力IF91〜93を、単に「ポート」と呼ぶ場合がある。
記憶部113は、LAGポートテーブル131及び送信レートテーブル132を記憶している。
LAGポートテーブル131は、情報としてメモリ上に格納されているテーブルである。LAGポートテーブル131は、例えば、図2に示すテーブル200のように各ポートに対応するポートの使用種別及び使用種別を特定するための情報を有している。図2は、LAGポートテーブルの一例の図である。
ここで、テーブル200について詳細に説明する。行201がポートの識別情報を表している。また、行202が、各ポートがどの型のフレームの送信に用いられるポートかを表す使用種別を表している。ここで、本実施例では、フレームの型としてショートフレーム及びロングフレームがある。テーブル200では、「short」がショートフレームの送信に用いるポート(以下では、「ショートフレーム用ポート」という。)であることを表している。また、「long」がロングフレームの送信に用いるポート(以下では、「ロングフレーム用ポート」という。)であることを表している。以下では、ショートフレーム用ポート及びロングフレーム用ポートをまとめて「通常ポート」と呼ぶ場合がある。また、「reserve」は、予備ポートであることを表しており、送信するフレームの型は決まっていない。本実施例では、ショートフレーム用ポート及びロングフレーム用ポートとして1回線ずつ用い、残りの回線を予備ポートとする。そして、行203がショートフレーム及びロングフレームの定義を表す情報である。すなわち、本実施例では、64byte未満のフレームをショートフレームとしている。また、64byte以上のフレームをロングフレームとしている。LAGポートテーブル131の情報は予め設定されている。ただし、操作者は、各ポートの使用種別を適当に設定することができ、また、ショートフレームとロングフレームの定義を適当な値に設定することができる。
ここで、本実施例では、ポートXは、出力IF91を表している。また、ポートYは、出力IF92を表している。また、ポートZは、出力IF93を表している。そして、出力IF91は、ショートフレーム用ポートとして設定されている。また、出力FI92は、予備ポートとして設定されている。また、出力IF93は、ロングフレーム用ポートとして設定されている。
送信レートテーブル132は、情報としてメモリ上に格納されているテーブルである。例えば、図3に示すテーブル300のように各ポートに対応するポートの使用種別、並びに各ポートの送信レートの上限値及び下限値の情報を有している。図3は、送信レートテーブルの一例の図である。
ここで、テーブル300について詳細に説明する。行301がポートの識別情報を表している。また、行302が、各ポートの使用種別を表している。そして、行303が各ポートの送信レートの上限値を表している。また、行304が各ポートの送信レートの下限値を表している。送信レートテーブル132の情報は予め設定されている。ただし、操作者は、各ポートの上限値及び下限値を適当に設定することができる。
LAGポート管理部111は、LAG設定時、ファームウェア起動時、操作者による設定変更時に、LAGポートテーブル131の設定値を読み出し、LAG振分テーブル122に読み出した設定値を設定する。
LAG振分テーブル122は、ハードウェアで構成されたテーブルである。LAG振分テーブル122は、例えば、図4に示すテーブル400のように各ポートに対応するポートの使用種別、リンク状態及び使用状態を有している。図4は、LAG振分テーブルの一例の図である。
ここで、テーブル400について詳細に説明する。行401がポートの識別情報を表している。また、行402が、各ポートの使用種別を表している。そして、行403が各ポートのリンク状態を表している。ここで、リンク状態とは、対向装置との間で接続が確立されてリンクアップしているか否かを表している。行402において「Up」がリンクアップを表しており、「Down」がリンクダウンを表している。また、行404が各ポートに実際に流れているフレームの型を示す使用状態を表している。ここで、使用状態は2ビットで表され、先頭ビットが1の場合にはショートフレームが流れている状態をあらわしており、次のビットが1の場合にはロングフレームが流れていることを表している。すなわち、使用状態が「01」は、ショートフレームのみが流れている状態を表しており、「10」は、ロングフレームのみが流れている状態を表している。また、使用状態が「11」は、ショートフレームとロングフレームとが混在して流れている状態(以下では、「フレーム混在」という場合がある。)を表している。また、使用状態が「00」は、未使用状態を表している。ここで、図4では、分かり易いように使用状態を表すビットの後ろに流れているフレームの型(「混在」は、フレーム混在を表している。)を記載している。
MAC学習テーブル121は、ハードウェアで構成されたテーブルである。MAC学習テーブル121は、例えば、図5に示すテーブル500のようにMACアドレスと対応する送信ポートの論理グループ又は送信ポートの情報を有している。図5は、MAC学習テーブルの一例の図である。例えば、テーブル500では、MACアドレス「MA」、「MB」及び「MC」は「LAG1」というLAGに対応している。ここで、本実施例ではLAG1という1つのLAGのみを設定しているので、テーブル500のようになっているが、MACアドレスは他のLAGに対応してもよいし、送信ポートに直接対応してもよい。
レート管理部112は、各ポートに対応する送信レートの上限値及び下限値を送信レートテーブル132から読み出す。そして、レート管理部112は、各ポートに繋がっている送信レートチェック部に読み出した上限値及び下限値を設定する。ここでは、送信レートは、通常ポートのみに設定されているので、レート管理部112は、送信レートチェック部71及び73にのみ上限値及び下限値を設定する。
入力IF11及び12は、外部の装置から送られてきたフレームを受信するインタフェースである。本実施例では、例えば、入力IF11はVLAN−ID(Virtual Local Area Network)が「10」のネットワークに接続している。また、入力IF12は、VLAN−IDが「20」のネットワークに接続している。また、VLAN−IDが「10」のネットワークには、MACアドレス「MA」「MB」を有する装置が接続されている。また、VLAN−IDが「20」のネットワークには、MACアドレス「MC」を有する装置が接続されている。入力IF11は、VLAN−IDが「10」のネットワークからフレームを受信する。また、入力IF11は、VLAN−IDが「20」のフレームを受信する。
受信バッファ21は、入力IF11が受信したフレームを取得し格納していく。受信バッファ22は、入力IF12が受信したフレームを取得し格納していく。
MAC学習処理部31は、受信バッファ21に格納されたフレームを順次読み出していく。そして、MAC学習処理部31は、読み出したフレームから宛先のMACアドレスを取得する。そして、MAC学習処理部31は、取得したMACアドレスに対応するポート番号をMAC学習テーブル121から取得、取得したポート番号を有するポートをフレームの宛先として決定する。ここで、MAC学習テーブル121においてMACアドレスに対応する宛先がLAGの場合には、MAC学習処理部31は、LAGの情報を取得する。例えば、フレームの宛先のマックアドレスが「MA」の場合、MAC学習処理部31は、テーブル500(図5参照)からLAG1を取得する。そして、MAC学習処理部31は、フレームの宛先をLAG1と決定する。そして、MAC学習処理部31は、読み出したフレームをフレームの宛先の情報と共にLAG振分部40へ出力する。
MAC学習処理部32は、受信バッファ22に格納されたフレームを順次読み出していく。そして、MAC学習処理部32は、MAC学習処理部31と同様にフレームの宛先を決定し、読み出したフレームをフレームの宛先の情報と共にLAG振分部40へ出力する。
LAG振分部40は、フレーム及びフレームの宛先の情報をMAC学習処理部31及び32から受信する。フレームの宛先がLAGの場合、LAG振分部40は、受信したフレームからサイズ情報を取得する。そして、LAG振分部40は、取得したフレームのサイズを用いてLAG振分テーブル122から取得したフレームの宛先となるポートを取得する。例えば、フレームのサイズが64Byte未満の場合、LAG振分部40は、そのフレームをショートフレームと判定し、LAG振分テーブル122の使用状態からショートフレームを送信しているポートを選択して、そのフレームの宛先のポートとする。また、例えば、フレームのサイズが64Byte以上の場合、LAG振分部40は、そのフレームをロングフレームと判定し、LAG振分テーブル122の使用状態からロングフレームを送信しているポートを選択して、そのフレームの宛先のポートとする。
LAG振分部40は、フレームの宛先としたポートが1つの場合、そのポートへの転送指示とともに受信したフレームをスイッチ部50へ出力する。取得したポートが2つ以上の場合、LAG振分部40は、その型のフレームを送るポートが周期的に変化するようにポートを選択して、そのポートへの転送指示とともに受信したフレームをスイッチ部50へ出力する。例えば、本実施例において、出力IF91と出力IF92とがショートフレームを送信している場合、LAG振分部40は、出力IF91と出力IF92とで交互にショートフレームが送られるように受信したフレームの宛先のポートを選択する。
さらに、LAG振分部40は、出力IF91又は93において送信レートが上限値を超えた場合、上限値を超えたポートに対応する送信レートチェック部71又は73から送信レートが上限値を超えた旨の通知を受信する。以下では、送信レートが上限値を超えたポートが送信していたフレームの型を「上限超型」という。
送信レートが上限値を超えた旨の通知を受信すると、LAG振分部40は、予備ポートである出力IF92がリンクアップしているか否かをLAG振分テーブル122から判定する。
出力IF92がリンクアップしている場合、上限超型のフレームを予備ポートである出力IF92に振分けるよう決定する。そして、LAG振分部40は、LAG振分テーブル122における出力IF92に対応するポートの使用状態を上限超型のフレームを送信するように変更する。例えば、ショートフレームを送信しているポートである出力IF91の送信レートが上限値を超えた場合、LAG振分部40は、送信レートが上限値を超えた旨の通知を送信レートチェック部71から受ける。そして、LAG振分部40は、LAG振分テーブル122における出力IF92の使用状態のショートフレームの送信を表すビットを立てる。具体的には、予備ポートである出力IF92が未使用であり使用状態を表すビットが「00」の場合、ショートフレームを送信するのであれば、LAG振分部40は、出力IF92の使用状態を表すビットを「01」に変える。また、予備ポートである出力IF92が既にロングフレームを送っており、使用状態を表すビットが「10」の場合、ショートフレームを送信するのであれば、LAG振分部40は、出力IF92の使用状態を表すビットを「11」に変える。
さらに、LAG振分部40は、予備ポートへのフレームの振分けを行った場合、LAG振分テーブル122における予備ポートの使用状態を確認し、使用状態を表すビットが「11」であれば、フレームが混在していると判定する。そして、LAG振分部40は、フレーム混在の状態であれば、フラグメント処理部62に対してフラグメント設定を指示する。
また、LAG振分部40は、フレーム混在のポートがある場合には、振分け先の拡張は行わない。
また、LAG振分部40は、予備ポートである出力IF92のリンクがダウンしている場合、上限超型とは逆の型のフレーム用のポートがリンクアップしているか否かをLAG振分テーブル122のリンクの状態から判定する。上限超型とは逆の型のフレーム用のポートがリンクアップしている場合、LAG振分部40は、上限超型とは逆の型のフレーム用のポートへ上限型のフレームを振分けるよう決定する。そして、上限超型とは逆の型のフレーム用のポートの使用状態を上限超型のフレームを送信するように変更する。例えば、ショートフレームを送信しているポートである出力IF91の送信レートが上限値を超えた場合で説明する。この場合、出力IF92がリンクダウンしていれば、LAG振分部40は、LAG振分テーブル122における出力IF93の使用状態のショートフレームの送信を表すビットを立てる。すなわち、LAG振分テーブル122における出力IF93の使用状態を表すビットは、「10」から「11」に変更される。
これに対して、上限超型とは逆の型のフレーム用のポートがリンクアップしていない場合、LAG振分部40は、フレームの振分けを行わない。
また、LAG振分部40は、出力IF91又は93において送信レートが下限値を下回った場合、下限値を下回ったポートに対応する送信レートチェック部71又は73から送信レートが下限値を超えた旨の通知を受信する。以下では、送信レートが下限値を下回ったポートが送信していたフレームの型を「下限超型」という。
送信レートが下限値を超えた旨の通知を受信すると、LAG振分部40は、LAG振分テーブル122を用いて、下限超型のフレームを予備ポートである出力IF92が送信しているか否かを判定する。下限超型のフレームを予備ポートである出力IF92が送信している場合、LAG振分部40は、出力IF92からの下限超型のフレームの送信の停止を決定する。そして、LAG振分部40は、LAG振分テーブル122における出力IF92に対応するポートの使用状態を下限超型のフレームを送信しないように変更する。例えば、ショートフレーム用ポートである出力IF91の送信レートが下限値を下回った場合、LAG振分部40は、送信レートが下限値を超えた旨の通知を送信レートチェック部71から受ける。そして、LAG振分部40は、LAG振分テーブル122における出力IF92の使用状態のショートフレームの送信を表すビットを落とす。具体的には、予備ポートである出力IF92がショートフレームのみを送信しており、使用状態を表すビットが「01」の場合、ショートフレームの送信を停止するのであれば、LAG振分部40は、出力IF92の使用状態を表すビットを「00」に変える。また、予備ポートである出力IF92がフレームを混在させて送っており、使用状態を表すビットが「11」の場合、ショートフレームの送信を停止するのであれば、LAG振分部40は、出力IF92の使用状況を表すビットを「10」に変える。
さらに、LAG振分部40は、予備ポートである出力IF92においてフレーム混在の状態で、予備ポートへのフレームの振分けを停止した場合、フラグメント処理部62に対してフラグメント停止を指示する。
また、出力IF92がリンクダウンしている場合、LAG振分部40は、下限超型とは逆の型のフレーム用のポートの使用状態がフレーム混在か否かをLAG振分テーブル122から判定する。下限超型とは逆の型のフレーム用のポートがフレームを混在して送信している場合、LAG振分部40は、下限超型とは逆の型のフレーム用のポートの使用状態を下限超型のフレームを送信しないように変更する。例えば、ショートフレーム用ポートである出力IF91の送信レートが下限値を下回った場合で説明する。この場合、ロングフレーム用ポートである出力IF93の使用状態がフレーム混在の場合、LAG振分部40は、LAG振分テーブル122における出力IF93の使用状態のショートフレームの送信を表すビットを落とす。すなわち、LAG振分テーブル122における出力IF93の使用状態を表すビットは、「11」から「10」に変更される。
スイッチ部50は、フレームとともにそのフレームの宛先のポートの指示をLAG振分部40から受信する。そして、スイッチ部50は、受信したフレームを指示されたポートに繋がるフラグメント処理部61〜63のいずれかへ出力する。
フラグメント処理部61〜63は、LAG振分部40からのフラグメント設定の指示を受けるまでは、フラグメントはディセーブルになっている。この場合、フラグメント処理部61〜63は、スイッチ部50から受信したフレームにたいしてフラグメント処理を行わずに対応する送信レートチェック部71〜73へ出力する。
フラグメント処理部61〜63は、LAG振分部40からフラグメント設定の指示を受けると、ロングフレームに対するフラグメント処理を開始する。フラグメント処理部61〜63は、受信したフレームのうちショートフレームは対応する送信レートチェック部71〜73へ出力する。また、フラグメント処理部61〜63は、受信したフレームのうちロングフレームを分割してフラグメントする。そして、フラグメント処理部61〜63は、フラグメントしたフレームを対応する送信レートチェック部71〜73へ出力する。
さらに、フラグメント処理部61〜63は、LAG振分部40からフラグメント停止の指示を受けるとフラグメント処理を停止する。そして、フラグメント停止の指示を受けた、フラグメント処理部61〜63は、スイッチ部50から受信したフレームにたいしてフラグメント処理を行わずに対応する送信レートチェック部71〜73へ出力する。
送信レートチェック部71〜73は、送信レートの上限値及び下限値の設定をレート管理部112から受ける。本実施例では、送信レートチェック部71及び73が、送信レートの上限値及び下限値の設定をレート管理部112から受ける。
送信レートチェック部71〜73は、対応するフラグメント処理部61〜63からフレームを受信する。送信レートチェック部72は、上限値及び下限値の設定がなされていないので、送信レートをチェックせずに送信バッファ82へフレームを出力する。これに対して、送信レートチェック部71及び73は、対応するポートにおける送信レートが上限値を上回っているか又は下限値を下回っているかをチェックする。送信レートチェック部71及び73は、送信レートが上限値を上回っている場合、送信レートが上限値を超えた旨をLAG振分部40へ通知する。また、送信レートチェック部71及び73は、送信レートが下限値を下回っている場合、送信レートが下限値を超えた旨をLAG振分部40へ通知する。
送信バッファ81〜83は、対応する送信レートチェック部71〜73からフレームを受信する。そして、送信バッファ81〜83は、受信したフレームを格納していく。そして、送信バッファ81〜83は、格納しているフレームを順次読み出し、対応するポートへ送信する。
次に、図6を参照して、本実施例に係るデータ伝送装置1における送信レートが上限値を上回った場合の処理について説明する。図6は、実施例1に係るデータ伝送装置における送信レートが上限値を上回った場合の処理のフローチャートである。ここでは、出力IF91〜92が全てリンクアップしている場合で説明する。
送信レートチェック部71又は73は、送信レートが上限値を超えたか否かを検出する(ステップS101)。上限値を超えていない場合(ステップS101:否定)、送信レートチェック部71又は73は、検出を継続する。
上限値を超えたことを検出した場合(ステップS101:肯定)、送信レートチェック部71又は73は、LAG振分部40に上限値超過を通知する(ステップS102)。
LAG振分部40は、予備ポートである出力IF92のリンクアップを確認し、LAG振分テーブル122の予備ポートの使用状態において、予備ポートへの上限超型のフレームの送信を設定する(ステップS103)。
LAG振分部40は、予備ポートである出力IF92の出力において使用状態がフレーム混在か否かを、LAG振分テーブル122の予備ポートの使用状態から判定する(ステップS104)。
フレーム混在の場合(ステップS104:肯定)、LAG振分部40は、フラグメント処理部62に対してフラグメント設定を行う(ステップS105)。これに対して、フレーム混在でない場合(ステップS104:否定)、LAG振分部40は、ステップS106へ進む。
その後、LAG振分部40は、上限超型のフレーム用のポートと通常ポートとに交互にフレームを送信する(ステップS106)。
次に、図7を参照して、本実施例に係るデータ伝送装置1における送信レートが上限値を上回った場合の処理についてさらに説明する。図7は、実施例1に係るデータ伝送装置における送信レートが上限値を上回った場合のシーケンス図である。ここでは、出力IF91〜93が全てリンクアップしている場合で説明する。また、ここでは、ショートフレーム用ポートである出力IF91において送信レートが超過した場合で説明する。
送信レートチェック部71は、出力IF91において送信レートが上限値を超過したことを検出する(ステップS201)。そして、送信レートチェック部71は、上限値超過をLAG振分部40に通知する(ステップS202)。
LAG振分部40は、予備ポートである出力IF92の出力がフレーム混在か否かを確認する(ステップS203)。ここでは、出力IF92の出力がフレーム混在でない場合で説明する。
LAG振分部40は、ショートフレームの送信に予備ポートを使用することを決定する(ステップS204)。
LAG振分テーブル122では、LAG振分部40により、予備ポートの使用状態において、ショートフレームの送信を表すビットを立てられる(ステップS206)。
LAG振分部40は、予備ポートである出力IF92の使用状態をLAG振分テーブル122から読み出す(ステップS207)。
そして、LAG振分部40は、読み出した使用状態からフレーム混在か否かを検出する。ここでは、フレーム混在の場合で説明する。LAG振分部40は、フレーム混在を検出する(ステップS208)。
LAG振分部40は、フラグメント設定をフラグメント処理部62に通知する(ステップS209)。フラグメント処理部62は、ロングフレームのフラグメントを開始する。
LAG振分部40は、ショートフレーム用ポートである出力IF91と予備ポートである出力IF92にショートフレームを交互に送信する(ステップS210)。
次に、図8を参照して、本実施例に係るデータ伝送装置1における送信レートが下限値を下回った場合の処理について説明する。図8は、実施例1に係るデータ伝送装置における送信レートが下限値を下回った場合の処理のフローチャートである。ここでは、出力IF91〜92が全てリンクアップしている場合で説明する。また、ここでは、下限超型のフレームが予備ポートに振分けられている場合で説明する。
送信レートチェック部71又は73は、送信レートが下限値を下回ったか否かを検出する(ステップS301)。下限値を下回っていない場合(ステップS301:否定)、送信レートチェック部71又は73は、検出を継続する。
下限値を下回ったことを検出した場合(ステップS301:肯定)、送信レートチェック部71又は73は、LAG振分部40に下限値超過を通知する(ステップS302)。
LAG振分部40は、予備ポートである出力IF92に下限超型のフレームの振分けを確認し、LAG振分テーブル122の予備ポートの使用状態において、予備ポートへの下限超型のフレームの送信停止を設定する(ステップS303)。
LAG振分部40は、フラグメント処理部62に対してフラグメント停止を指示する(ステップS304)。
その後、LAG振分部40は、下限超型のフレーム用のポートへフレームを送信する(ステップS305)。
次に、図9を参照して、本実施例に係るデータ伝送装置1における送信レートが下限値を下回った場合の処理についてさらに説明する。図9は、実施例1に係るデータ伝送装置における送信レートが上限値を下回った場合のシーケンス図である。ここでは、出力IF91〜93が全てリンクアップしている場合で説明する。また、ここでは、予備ポートである出力IF92にショートフレームを振分けている状態で、ショートフレーム用ポートである出力IF91において送信レートが下限値を下回った場合で説明する。
送信レートチェック部71は、出力IF91において送信レートが下限値を超過したことを検出する(ステップS401)。そして、送信レートチェック部71は、下限値超過をLAG振分部40に通知する(ステップS402)。
LAG振分部40は、予備ポートである出力IF92へのショートフレームの送信停止をLAG振分テーブル122に設定する(ステップS403)。
LAG振分テーブル122では、LAG振分部40により、予備ポートの使用状態において、ショートフレームの送信を表すビットが落とされる(ステップS404)。
LAG振分部40は、LAG振分テーブル122における予備ポートである出力IF92の使用状態を確認する(ステップS405)。
そして、LAG振分部40は、予備ポートである出力IF92においてフレームが混在していない状態を検出する(ステップS406)。
LAG振分部40は、フラグメント停止をフラグメント処理部62に通知する(ステップS407)。フラグメント処理部62は、ロングフレームのフラグメントを停止する。
LAG振分部40は、ショートフレーム用ポートである出力IF91にショートフレームを送信する(ステップS408)。このとき、LAG振分部40は、ロングフレームをロングフレーム用のポートである出力IF93と予備ポートである出力IF92へ交互に送信する。そして、出力IF92及び93は、フラグメントされていないロングフレームを出力する。
図10は、実施例1に係るデータ伝送装置におけるショートフレーム送信を実現するためのハードウェア構成図である。ここでは、ショートフレームの送信のためのハードウェアのみを示したが、データ伝送装置1において、図1に示すようにロングフレームの送信も加えて実現するには、さらに入出力経路を1つ加え、3の出力経路とすることが好ましい。
データ伝送装置1は、入力IF11及び出力IF91の機能を有する1つのインタフェースである入出力IF211を有し、また、入力IF12及び出力IF92の機能を有する1つのインタフェースである入出力IF212を有している。また、入出力IF213が出力IF93の機能を実現する。
MAC学習処理回路221及び222は、MAC学習処理部31及び32の機能を実現する回路である。LAG振分回路230は、LAG振分部40の機能を実現する回路である。スイッチ240は、スイッチ部50の機能を実現する。送信レートチェック回路261〜263は、送信レートチェック部71〜73の機能を実現する回路である。
そして、CPU271、ROM272、RAM273は、LAGポート管理部111、レート管理部112及び記憶部113の機能を実現する。例えば、RAM273は、LAGポートテーブル131及び送信レートテーブル132を記憶している。さらに、ROM272には、LAGポート管理部111及びレート管理部112の機能を実現するための実行モジュールなど各種プログラムが格納されている。そして、CPU271は、RAM272に格納された各種プログラムを実行することで、LAGポート管理部111及びレート管理部112の機能を実現する。
以上に説明したように、本実施例に係るデータ伝送装置は、ロングフレームとショートフレームとが混在したときにのみロングフレームのフラグメントを実施する。これにより、本実施例に係るデータ伝送装置は、帯域の余分な消費を軽減しつつショートフレームの遅延を抑えることができる。
次に実施例2に係るデータ伝送装置について説明する。図11は、実施例2に係るデータ伝送装置のブロック図である。本実施例に係るデータ伝送装置は、予備ポートを複数有することが実施例1と異なるものである。以下の説明では、実施例1と同じ機能については説明を省略する。ここで、本実施例では、予備ポートが3つの場合で説明するが、予備ポートの数に特に制限はない。
本実施例に係るデータ伝送装置は、予備ポートを複数持つため、LAG振分テーブル122における予備ポートの欄が図12に示すテーブル410のように複数になる。図12は、実施例2に係るLAG振分テーブルの一例の図である。
欄411のポートVが出力IF91に対応するショートフレーム用ポート、欄415のポートZが出力IF95に対応するロングフレーム用のポートである。さらに、欄412のポートW、欄413のポートX及び欄414のポートYがそれぞれ出力IF92〜94に対応する予備ポートである。
LAG振分部40は、送信レートチェック部71又は75から送信レートの上限値超過の通知を受けると、予備ポートの中から上限超型のフレームを振分けるポートを1つ選択する。本実施例では、LAG振分部40は、ショートフレームの送信レートが上限値を超過した場合、出力IF92に振分け、ロングフレームの送信レートが上限値を超過した場合、出力IF94に振分ける。そして、LAG振分部40は、LAG振分テーブル122の振分け先の予備ポートの使用状態に振分けた型のフレームのビットを立てる。その後、LAG振分部40は、LAG振分テーブル122を用いて、振分け先の予備ポートの使用状態がフレーム混在か否かを判定する。ここで、振分けた先の予備ポートの使用状態がフレーム混在であれば、LAG振分部40は、ショートフレームロングフレーム共に以降の振分け先の拡張を行わない。これに対して、振分け先の予備ポートの使用状態がフレーム混在でない場合、LAG振分部40は、振分け先の拡張を継続する。
予備ポートに対してフレームの振分けを行った後、振分けを行っている型のフレーム用のポートの送信レートが上限値を超過した場合、LAG振分部40は、未使用の予備ポートに振分けを行っている型のフレームをさらに振分ける。例えば、既にショートフレームを出力IF92に振分けている状態で、出力IF91の送信レートが上限値を超過した場合、LAG振分部40は、送信レートチェック部71から上限値超過の通知を受ける。そして、LAG振分部40は、未使用である予備ポートの中からポートXである出力IF93を振分け先として選択する。そして、LAG振分部40は、LAG振分テーブル122の振分け先の予備ポートの使用状態に振分けた型のフレームのビットを立てる。この後、同様にして、LAG振分部40は、振分け先の予備ポートの使用状態をチェックし、使用状態がフレーム混在であれば振分け先の拡張を停止し、フレーム混在でなければ振分け先の拡張を継続する。このようにして、LAG振分部40は、全ての予備ポートが使用され、且つそのうちの1つの予備ポートの使用状態がフレーム混在となるまで振分け先の拡張を行う。
LAG振分部40は、フレームの振分け先のポートが複数の場合、各ポートに順番にフレームを振分けていく。例えば、ショートフレームを出力IF91〜93に振分ける場合、LAG振分部40は、出力IF91、92、93の順番で繰り返しながらフレームを振分けていく。
また、ショートフレーム用ポートである出力IF91又はロングフレーム用ポートである出力IF95において送信レートが下限値以下になった場合、LAG振分部40は、使用状態がフレーム混在のポートがあるか否かを判定する。使用状態がフレーム混在のポートがある場合、LAG振分部40は、使用状態がフレーム混在のポートへの下限超型のフレームの振分けを停止する。これに対して、使用状態がフレーム混在のポートがない場合、LAG振分部40は、下限超型のフレームを送信しているポートがあるか否かを判定する。下限超型のフレームを送信しているポートがなければ、LAG振分部40は、振分けの縮退を行わない。これに対して、下限超型のフレームを送信しているポートがあれば、LAG振分部40は、下限超型のフレームを送信しているポートの中から11つのポートを選び、その選択したポートに対への下限超型のフレームの振分けを停止する。
LAG振分部40は、LAG振分テーブル122から下限超型のフレームの振分けを停止したポートの使用状態の下限超型のフレームの送信を表すビットを落とす。その後、LAG振分部40は、下限超型のフレームの振分けを停止したポートの使用状態を確認し、使用状態がフレーム混在でない場合、そのポートに対応するフラグメント処理部62〜64の状態を確認する。このとき、状態を確認したフラグメント処理部62〜64にフラグメント設定が行われていれば、LAG振分部40は、状態を確認したフラグメント処理部62〜64に対してフラグメント停止を指示する。LAG振分部40は、下限超型のフレームの予備ポートへの振分けが無くなるまで、上述した振分け先の縮退を行う。
また、LAG振分部40は、通常ポートにおいて送信レートが下限値以下になった場合に予備ポート全てが未使用であれば、以降の下限値超過の通知の停止を下限値超過を通知してきた送信レートチェック部72又は73に指示する。その後、下限値超過の通知を停止しているポートにおいて送信レートの上限値の超過が発生した場合、LAG振分部40は、下限値超過の通知を再開させる。
ここで、図13を参照してLAG振分部40による振り分け先の拡張の処理の流れについてさらに説明する。図13は、実施例2における振り分け先の拡張の処理のフローチャートである。
送信レートチェック部71又は73は、送信レートが上限値を超えたか否かを検出する(ステップS501)。上限値を超えていない場合(ステップS501:否定)、送信レートチェック部71又は73は、検出を継続する。
上限値を超えたことを検出した場合(ステップS501:肯定)、送信レートチェック部71又は73は、LAG振分部40に上限値超過を通知する。LAG振分部40は、LAG振分テーブル122を用いて、出力IF92〜94の中で未使用の予備ポートがあるかを判定する(ステップS502)。
未使用の予備ポートがある場合(ステップS502:肯定)、LAG振分部40は、未使用の予備ポートから1つのポートを選択する(ステップS503)。
LAG振分部40は、LAG振分テーブル122の選択した予備ポートの使用状態の上限超型にフレームに該当するビットを立てる(ステップS504)。
LAG振分部40は、LAG振分テーブル122を用いて、選択した予備ポートの使用状態がフレーム混在か否かを判定する(ステップS505)。フレーム混在の場合(ステップS505:肯定)、LAG振分部40は、選択した予備ポートに対応するフラグメント処理部に対してフラグメント設定を指示する(ステップS506)。これに対して、フレーム混在でない場合(ステップS505:否定)、LAG振分部40は、ステップS507へ進む。
その後、LAG振分部40は、上限超型のフレーム用のポート及び上限超型のフレームを振分けている予備ポートに順番にフレームを送信する(ステップS507)。
これに対して、未使用の予備ポートがない場合(ステップS502:否定)、LAG振分部40は、使用状態がフレーム混在の予備ポートがあるか否かを判定する(ステップS508)。フレーム混在の予備ポートがない場合、LAG振分部40は、上限超型とは逆の型のフレームの送信に使用している予備ポートの中から1つのポートを上限超型のフレームの振分け先として選択する(ステップS509)。その後、LAG振分部40は、ステップS506へ進む。
一方、フレーム混在の予備ポートがある場合(ステップS508:肯定)、LAG振分部40は、振分け先の拡張を行わず、ステップS507へ進む。
次に、図14を参照してLAG振分部40による振り分け先の縮退の処理の流れについてさらに説明する。図14は、実施例2における振り分け先の縮退の処理のフローチャートである。
送信レートチェック部71又は73は、送信レートが下限値を下回ったか否かを検出する(ステップS601)。下限値を下回っていない場合(ステップS601:否定)、送信レートチェック部71又は73は、検出を継続する。
下限値を下回ったことを検出した場合(ステップS601:肯定)、送信レートチェック部71又は73は、LAG振分部40に下限値超過を通知する。LAG振分部40は、LAG振分テーブル122を用いて、出力IF92〜94の中で下限超型のフレームの送信に使用中の予備ポートがあるかを判定する(ステップS602)。
使用中の予備ポートがある場合(ステップS602:肯定)、LAG振分部40は、使用状態がフレーム混在である予備ポートがあるか否かを判定する(ステップS603)。
フレーム混在の予備ポートがある場合(ステップS603:肯定)、LAG振分部40は、フレーム混在の予備ポートの使用状態から下限超型に該当するフレームのビットを落とす(ステップS604)。
さらに、LAG振分部40は、フレーム混在の予備ポートに対応するフラグメント処理部に対してフラグメント停止を指示する(ステップS605)。
これに対して、フレーム混在の予備ポートがない場合(ステップS603:否定)、LAG振分部40は、下限超型のフレームの送信に使用している予備ポートのうち最老番の予備ポートを選択する。LAG振分部40は、LAG振分テーブル122の選択した予備ポートの使用状態から下限超型の送信を表すビットを落とす(ステップS606)。そして、LAG振分部40は、ステップS607へ進む。
一方、使用中の予備ポートがない場合(ステップS602:否定)、LAG振分部40は、振分け先の縮退を行わず、ステップS607へ進む。
その後、LAG振分部40は、下限超型のフレーム用のポート及び下限超型のフレームを振分けている予備ポートに順番にフレームを送信する(ステップS607)。
次に、図15、16、17を参照して、ポートのリンク状態が変化した場合の処理について説明する。図15は、使用していない予備ポートのリンク状態が変化した場合のLAG振分テーブルの遷移を表す図である。図16は、使用している予備ポートのリンク状態が変化した場合で、且つ未使用の予備ポートが残っている場合のLAG振分テーブルの遷移を表す図である。図17は、使用している予備ポートのリンク状態が変化した場合で、且つ振分け可能な予備ポートが残っていない場合のLAG振分テーブルの遷移を表す図である。
図15を参照して、使用していない予備ポートのリンク状態が変化した場合の処理について説明する。
テーブル410Aがリンク状態変化前のLAG振分テーブル122を表している。この場合、欄421において使用状態を示すビットが「00」となっているので、ポートXが未使用である。
そして、未使用のポートXのリンクダウンが発生すると、テーブル410Bに示すように、LAG振分部40は、リンク状態を表す欄422を「Down」に書き換える。
その後、ポートXのリンクが回復しリンクアップすると、テーブル410Cに示すように、LAG振分部40は、リンク状態を表す欄422を「Up」に書き換える。この場合、使用状態が未使用であるので、LAG振分部40は振分け先の変更を行わない。そのため、ポートXの使用状態に変化は生じない。
次に、図16を参照して、使用している予備ポートのリンク状態が変化した場合で、且つ未使用の予備ポートが残っている場合の処理について説明する。
テーブル410Dがリンク状態変化前のLAG振分テーブル122を表している。この場合、欄421において使用状態を示すビットが「00」となっているので、ポートXが未使用である。
そして、使用中のポートYのリンクダウンが発生すると、テーブル410Eに示すように、LAG振分部40は、リンク状態を表す欄431を「Down」に書き換える。さらに、LAG振分部40は、ポートYに振分けられていたフレームを振分ける他の未使用のポートを選択する。ここでは、LAG振分部40は、ポートXを選択する。そして、LAG振分部40は、ポートYの使用状態を表す欄433を未使用に変更し、ポートXの使用状態を表す欄432をポートYの以前の使用状態と同じ「10」に変更する。
その後、ポートYのリンクが回復しリンクアップすると、テーブル410Fに示すように、LAG振分部40は、ポートYのリンク状態を表す欄434を「Up」に書き換える。このとき、LAG振分部40は、ポートXの使用状態の欄435及びポートYの使用状態の欄436は変更しない。すなわち、使用している予備ポートのリンク状態がダウンし、且つ未使用の予備ポートが残っている場合、LAG振分部40は、使用状態を入れ替え、その後ダウンしたリンクが回復しても振分け先はそのままで運用を継続する。
次に、図17を参照して、使用している予備ポートのリンク状態が変化した場合で、振分け可能な予備ポートが残っていない場合の処理について説明する。
テーブル410Gがリンク状態変化前のLAG振分テーブル122を表している。この場合、予備ポートがすべてリンクダウンしている。
そして、ショートフレーム用ポートであるポートVのリンクダウンが発生すると、テーブル410Hに示すように、LAG振分部40は、リンク状態を表す欄441を「Down」に書き換える。さらに、LAG振分部40は、ロングフレーム用ポートであるポートZしかないので、ショートフレームをポートZに振分けることを決定する。そして、LAG振分部40は、ポートZの使用状態を表す欄442のショートフレームの送信を表すビットを立てる。これにより、欄442のビットは、フレーム混在を表す「11」となる。
その後、ポートVのリンクが回復しリンクアップすると、テーブル410Iに示すように、LAG振分部40は、ポートVのリンク状態を表す欄443を「Up」に書き換える。このとき、LAG振分部40は、ポートZの使用状態のショートフレームの送信を表すビットを落とし、欄444のように「10」にする。すなわち、使用している予備ポートのリンク状態がダウンし、且つ予備ポートが残っていない場合、LAG振分部40は、一時的にショートフレーム用ポート又はロングフレーム用ポートをフレーム混在の状態にし、その後リンクが回復すると元の状態に戻して運用を継続する。
次に、図18を参照して、本実施例におけるリンクダウン検出時の処理の流れについて説明する。図18は、実施例2におけるリンクダウン検出時の処理のフローチャートである。
LAG振分部40は、いずれかのポートのリンクダウンを検出したか否かを判定する(ステップS701)。リンクダウンを検出していない場合(ステップS701:否定)、LAG振分部40は、運用を継続しつつリンクダウンの検出を行う。
これに対して、リンクダウンを検出した場合(ステップS701:肯定)、LAG振分部40は、LAG振分テーブル122におけるリンクダウンポートのリンク状態を「Down」に変更する(ステップS702)。
LAG振分部40は、LAG振分テーブル122を用いて、リンクダウンポートが使用中か否かを判定する(ステップS703)。
リンクダウンポートを使用中の場合(ステップS703:肯定)、LAG振分部40は、未使用の予備ポートがあるか否かを判定する(ステップS704)。
未使用の予備ポートがある場合(ステップS704:肯定)、LAG振分部40は、未使用の予備ポートから1つのポートを選択する。そして、LAG振分部40は、選択したポートの使用状態において、リンクダウンが送信していた型のフレーム(以下では、「該当フレーム」という。)の送信を表すビットを立てる(ステップS705)。
次に、LAG振分部40は、リンクダウンポートが予備ポートか否かを判定する(ステップS706)。リンクダウンポートが予備ポートの場合(ステップS706:肯定)、リンクダウンポートの仕様状態を未使用に変更する(ステップS707)。これに対して、リンクダウンポートが予備ポートでない場合(ステップS706:否定)、LAG振分部40は、ステップS718へ進む。
一方、未使用の予備ポートがない場合(ステップS704:否定)、LAG振分部40は、リンクダウンポートの使用状態がフレーム混在か否かを判定する(ステップS708)。
フレーム混在の場合(ステップS708:肯定)、LAG振分部40は、リンクダウンポートの使用状態を見使用に設定する(ステップS709)。そして、LAG振分部40は、リンクダウンポートに対応するフラグメント処理部のフラグメント停止を指示する(ステップS710)。
これに対して、リンクダウンポートがフレーム混在でない場合(ステップS708:否定)、LAG振分部40は、リンクアップしている予備ポートがあるか否かを判定する(ステップS711)。
リンクアップしている予備ポートがある場合(ステップS711:肯定)、LAG振分部40は、該当フレームを送信する予備ポートがあるか否かを判定する(ステップS712)。
該当フレームを送信する予備ポートがある場合(ステップS712:肯定)、LAG振分部40は、リンクダウンポートの使用状態を未使用に設定する(ステップS713)。
これに対して、該当フレームを送信する予備ポートがない場合(ステップS712:否定)、該当フレームとは逆の型の他方のフレーム送信に使用している予備ポートのうち最老番の予備ポートの使用状態における該当フレームのビットを立てる(ステップS714)。
一方、リンクアップしている予備ポートがない場合(ステップS711:否定)、LAG振分部40は、該当フレーム用の通常ポートがリンクアップしているか否かを判定する(ステップS715)。該当フレーム用の通常ポートがリンクアップしている場合(ステップS715:肯定)、LAG振分部40は、ステップS718に進む。
これに対して、該当フレーム用の通常ポートがリンクアップしていない場合(ステップS715:否定)、LAG振分部40は、残っている通常ポートの使用状態における該当フレームのビットを立てる(ステップS716)。
その後、LAG振分部40は、該当フレームのビットを立てたポートに対応するフラグメント処理部にフラグメント設定を指示する(ステップS717)。
そして、LAG振分部40は、フレームを順番に各ポートへ送信する(ステップS718)。
次に、図19を参照して、本実施例におけるリンクアップ検出時の処理の流れについて説明する。図19は、実施例2におけるリンクアップ検出時の処理のフローチャートである。
LAG振分部40は、ダウンしていたポートのリンクアップを検出したか否かを判定する(ステップS801)。リンクアップを検出していない場合(ステップS801:否定)、LAG振分部40は、運用を継続しつつリンクアップの検出を行う。
これに対して、リンクアップを検出した場合(ステップS801:肯定)、LAG振分部40は、LAG振分テーブル122におけるリンクアップポートのリンク状態を「Up」に変更する(ステップS802)。
LAG振分部40は、他にリンクアップしているポートがあるか否かを判定する(ステップS803)。
他にリンクアップしているポートがない場合(ステップS803:否定)、LAG振分部40は、リンクアップポートに対応するフラグメント処理部に対してフラグメント設定を指示する(ステップS804)。そして、LAG振分部40は、リンクアップポートの使用状態をフレーム混在に設定する(ステップS805)。
一方、他にリンクアップしているポートがない場合(ステップS803:肯定)、LAG振分部40は、他にリンクアップしているポートが2つ以上あるか否かを判定する(ステップS806)。他にリンクアップしているポートが2つ以上ある場合(ステップS806:肯定)、LAG振分部40は、ステップS812へ進む。
これに対して、他にリンクアップしているポートが1つの場合(ステップS806:否定)、リンクアップしている各ポートの種別がいずれも通常ポートであるか否かを判定する(ステップS807)。いずれも通常ポートとである場合(ステップS807:肯定)、LAG振分部40は、使用種別に併せて各ポートの使用状態を設定する(ステップS808)。
これに対して、通常ポートとでない場合(ステップS807:否定)、LAG振分部40は、どちらかが通常ポートであり、他方が予備ポートであるか否かを判定する(ステップS809)。どちらかが通常ポートであり、他方が予備ポートである場合(ステップS809:肯定)、LAG振分部40は、通常ポートの使用状態は使用種別に合わせて設定し、予備ポートの使用状態は通常ポートと逆の型のフレームを送信するように設定する(ステップS810)。
一方、両方とも予備ポートである場合(ステップS809:否定)、LAG振分部40は、若番を有するポートの使用状態をショートフレームを送信するように設定し、老番を有するポートの使用状態をロングフレームを送信するように設定する(ステップS811)。
そして、LAG振分部40は、各ポートへ順番にフレームを送信する(ステップS812)。
以上に説明したように、本実施例に係るデータ伝送装置は、複数の予備ポートを有し、それらの予備ポートを順にショートフレームとロングフレームの送信に予備ポートを用いていく。さらに、いずれかの予備ポートでフレームの混在が起きたときに、その予備ポートにおいてロングフレームのフラグメントを実施する。これにより、運用状態に合わせて、それぞれの予備ポートをショートフレームの送信専用又はロングフレームの送信専用に用いることができ、さらに、フレーム混在の予備ポートを適当に決めることができる。また、LAGを構成する回線を増やし予備ポートを追加することで、フレーム混在によるフラグメントの頻度を軽減することができる。また、予備ポートがリンクダウンしても他のポートにより運用を継続することができる。
次に実施例3に係るデータ伝送装置について説明する。図20は、実施例3に係るデータ伝送装置のブロック図である。本実施例に係るデータ伝送装置は、各フレームにシーケンス番号を振ることが実施例1と異なるものである。以下の説明では、実施例1と同じ機能については説明を省略する。
本実施例に係るデータ伝送装置1は、図20に示すように実施例1のデータ伝送装置にシーケンス番号付与部140を加えたものである。
シーケンス番号付与部140は、MAC学習処理部31及び32からフレームを受信する。そして、シーケンス番号付与部140は、図21に示すように各フレームにシーケンス番号700を付与する。シーケンス番号付与部140は、VLAN毎に異なるシーケンス番号を振る。図21は、シーケンス番号を付与されたフレームのフォーマットの一例の図である。図21に示すように、各フレームは、例えば、シーケンス番号700以外に、宛先アドレス、送信元アドレス、VLANの識別番号、タイプ、Payload及びFCS(Frame Check Sequence)を有する。
そして、本実施例に係るデータ伝送装置1は、図22に示すように対向装置2に接続されている。対向装置2は、他のデータ伝送装置でもよいし、情報処理端末でもよい。図22は、実施例3に係るデータ伝送システムのシステム構成図である。
シーケンス番号を付与されたフレームは、データ伝送装置1のLAGを構成する各ポートから出力され、回線101〜103を経由して対向装置2へ入力される。このとき、データ伝送装置1は、ある予備ポートでフレームが混在していればその予備ポートに対応するフラグメント処理部においてロングフレームのフラグメントを実行して出力する。
対向装置2は、受信側のLAGを構成するポートを有する。そして、ポート毎に、受信バッファ601〜603が配置されている。受信バッファ601は、回線101から入力されたフレームを格納する。受信バッファ602は、回線102から入力されたフレームを格納する。受信バッファ603は、回線103から入力されたフレームを格納する。
共有バッファ610は、全ての受信バッファ601〜603から、フレームを読み出しVLAN毎に格納していく。
転送部620は、フレームに含まれるシーケンス番号700を参照し、シーケンス番号の順序にしたがってフレームを読み出し、読み出した順にフレームを転送する。フレームは、例えば、対向装置2がデータ伝送装置の場合、次の送信を行う処理部に転送される。
以上に説明したように、本実施例に係るデータ伝送システムでは、シーケンス番号を付与したフレームをデータ伝送装置が送信し、そのフレームを受けた対向装置は、シーケンス番号にしたがって受信したフレームを処理していく。これにより、フラグメントされたフレームの受信側における順序の逆転を回避することができる。