近年、光伝送技術や波長多重技術の発達により、通信装置やサーバ装置の伝送速度が向上している。
また、大容量の画像転送やストレージ装置等の伝送速度を必要とするアプリケーションの出現により、アプリケーション側からの伝送速度向上の要求も高まっている。
例えば、IEEE802.3で規定されているMAC(Media Access Control)層技術(以下、イーサネット(登録商標)MACと称す)がある。なお、イーサネット(登録商標)MACは、OSI(Open Systems Interconnection)参照モデルのデータリンク層の可変長フレーム送受信技術である。
現在、イーサネット(登録商標)MACでは、10Gbps伝送技術が確立されている。今後は、更に高速なデータリンク層のフレーム送受信技術への要求が高まることが想定される。
しかしながら、イーサネット(登録商標)MACでは、フレーム長は64バイト〜2,000バイトであり、例えば、100Gbpsではそのフレーム時間は0.25μ秒と短く、フレームに対する処理が困難、もしくは、制約を受ける可能性がある。
これは、サーバ装置のOSI上位層とのインタフェースである、ホストインタフェース処理において、フレームに対する処理が困難、もしくは、性能制約が生じる可能性があるためである。
なお、上記の問題を解決する対策としては、フレーム長を延長した新たなフレームを定義する方法が考えられる。
例えば、フレーム長を1メガバイトまで拡張すれば、100Gbpsでは、そのフレーム時間は80μ秒、20Gbpsでは、フレーム時間は400μ秒となり、ホストインタフェース処理の問題を解決することが可能となる。
なお、本明細書では、フレーム長が長いフレームをロングフレームと呼ぶことにする。なお、図9(a)に、ロングフレームの一例を示す。図9(a)では、最大フレーム長をメガバイト級としているが、フレーム長は回線速度にも依存するためこれは一例であり、具体的なフレーム長は、数十バイト〜数千キロバイト級でも良く、あるいはそれ以上のメガバイト級以上のフレーム長でも良い。
<ロングフレーム>
図9(a)に示すように、ロングフレームは、『ヘッダ部』と、『ペイロード部』と、『トレイラ部』と、で構成される。
なお、本明細書では、ロングフレームを構成する『ヘッダ部』にはフレーム長情報(Length情報)は含まないものとする。
米国T1X1委員会にて定義された可変長フレームにGFP(Generic Framing Procedure)があるが、GFPではヘッダ部分にフレーム長情報が定義されている。
しかしながら、送信側において、GFPフレームをメモリに蓄積し、フレーム長情報を算出した後、その算出したフレーム長情報をヘッダ部に書き込み、受信側においても、GFPフレームをメモリに蓄積し、フレーム長の正常性のチェックを行うなど、フレームに対する処理が複雑、かつ、重くなり、ロングフレームのような長いフレーム長では処理が困難になることが想定される。
このため、イーサネット(登録商標)と同様に、ヘッダ部にはフレーム長情報は定義せず、図9(b)に示すように、ロングフレームの前後に、SOF(Start of Frame)と、EOF(End of Frame)と、を付加し、そのSOFと、EOFと、を基にフレーム開始とフレーム終了とを識別する。なお、SOF、EOFは、SOP(Start of Packet)、EOP(End of Packet)とも呼ばれるが、本明細書ではSOF、EOFと称す。なお、SOF、EOFは物理層において付加されるものである。図9(b)は物理層におけるロングフレームフォーマットであり、図9(a)はデータリンク層でのフレームフォーマットを示している。したがって、物理層からデータリンク層への入力信号では、SOF、EOFはフレーム図9(b)のようにフレームの前後に付加されているのではなく、フレーム信号とは別線にて並走入力される。同様に、送信側では、データリンク層内部ではSOF、EOFはフレーム信号と並走する内部信号であり、物理層への出力信号では、図9(a)で記されるロングフレームとは別線にて並走出力され、物理層にて図9(b)のフォーマットに変換する。
<制御フレーム>
次に、制御フレームについて説明する。
制御フレームは、制御情報等を、主信号データと同一経路で伝送するためのフレームである。制御フレームの一例を図9(c)に示す。なお、図9(c)に示す制御フレームは、一例であり、制御フレームのフレーム長は、64バイト〜数百バイトに限定するものではなく、任意長でも良い。一般的には、制御フレームは、ロングフレーム以下である。また、これはデータリンク層での制御フレームフォーマットであり、ロングフレームと同様に、物理層では前後にSOF、EOFが付加されたフォーマットとなる。
図9(c)に示すように、制御フレームは、『ヘッダ部』と、『ペイロード部』と、『トレイラ部』と、『パディング部』と、で構成される。
制御フレームは、図9(c)に示すように、主信号データと同様に、『ヘッダ部』と、『ペイロード部』と、『トレイラ部』と、を有し、その他に、『パディング部』を有して構成される場合がある。
なお、制御フレームには、自装置内での要求をトリガに発出するものや、対向装置からのフレーム受信をトリガに発出するものなど、様々な種類がある。例えば、イーサネット(登録商標)では、制御フレームに分類可能なものにポーズフレームがある。これは、フレーム受信中に発生した自装置の輻輳を、対向装置に通知し、対向装置のデータ送信を停止させるフレームである。これにより、例えば、自装置においてバッファオーバーフローが発生した場合に、ポーズフレームを対向装置に送信し、ポーズフレームを受信した対向装置は、そのポーズフレームで指定される時間だけデータの送信を停止し、バッファオーバーフローを解消させる。なお、ポーズフレームは、64バイト長である。
一方、GFPでは、12バイト長のGFPコントロールフレームが定義されている。これは、OAM(Operations, Administration and Maintenance)用である。なお、その他に、ACK/NACK(Acknowledgement/Non-Acknowledgement)や再送情報通知など、フレーム送受信技術別に定義された種々の制御フレームが想定される。
また、フレーム間を埋めるアイドルフレームも制御フレームの一種であるが、本明細書では、アイドルフレーム以外の、目的を持ったものを制御フレームと呼ぶことにする。
<制御フレームの送信制御>
次に、図8を参照しながら、制御フレームの送信制御について説明する。なお、図8は、フレーム送受信回路における制御フレームの送信制御の一例を示す図であり、図8では、フレーム送受信回路(80)の左側が上位層(ネットワーク層)を示し、フレーム送受信回路(80)の右側が下位層(物理層)を示している。
なお、図8では、上位層から下位層への方向を『送信側』とし、下位層から上位層への方向を『受信側』とする。
フレーム送受信回路(80)は、送信バッファ(81)と、フレーム生成回路(82)と、送信選択回路(83)と、フレーム終端回路(84)と、受信バッファ(85)と、制御フレーム生成回路(86)と、を有して構成している。なお、(801)は、送信ロングフレームを示し、(802)は、受信ロングフレームを示し、(803)は、制御フレームを示す。送信ロングフレーム長、受信ロングフレーム長とも、可変長を想定するが、固定長でも良い。また、送信ロングフレーム長と受信ロングフレーム長との間には相関はなく、受信ロングフレーム(802)は、送信ロングフレーム(801)よりも長くても短くても良い。
また、制御フレーム(803)の種別は特に限定しないが、受信ロングフレーム(802)の受信、特にその受信完了後に生成する制御フレームとする。
まず、受信側では、フレーム終端回路(84)は、受信ロングフレーム(802)が入力されると、その受信ロングフレーム(802)からヘッダ部とトレイラ部とを取り除く。
なお、フレーム終端回路(84)は、トレイラ部からCRCチェックを行い、そのチェック結果を、ACK/NACKとして、制御フレーム(803)により、送信側から下位層側の対向装置に返送するように構築することも可能である。なお、本機能は、イーサネット(登録商標)では定義されていない。
また、受信バッファ(85)の輻輳情報を、ポーズフレームとして、制御フレーム(803)により、送信側から下位層側の対向装置に返送するように構築することも可能である。
なお、下位層側の対向装置への制御フレーム(803)の返送は、送信選択回路(83)を経由して行うことになる。
また、送信側では、送信バッファ(81)は、パケットデータが入力されると、そのパケットデータを蓄積し、その蓄積したパケットデータをフレーム生成回路(82)に出力する。
フレーム生成回路(82)は、送信バッファ(81)から入力されたパケットデータに対し、ヘッダ部とトレイラ部とを付加し、送信ロングフレーム(801)を生成する。そして、フレーム生成回路(82)は、その生成した送信ロングフレーム(801)を送信選択回路(83)を経由して下位層側に送信する。
なお、送信ロングフレーム(801)を下位層側に送信する際に、送信選択回路(83)において、送信ロングフレーム(801)と、制御フレーム(803)と、の出力競合が発生する場合がある。このため、送信選択回路(83)は、一方のフレーム(例えば、送信ロングフレーム)の送信が完了した後に、他方のフレーム(制御フレーム)の送信を開始することになる。
なお、上述した図8に示すフレーム送受信回路(80)では、送信ロングフレーム(801)と制御フレーム(803)との出力競合が発生した場合に、制御フレーム(803)による各種制御の効果が劣化する可能性があり、また、それを避けるために回路規模が増大することになる。
その理由は、送信選択回路(83)において、送信ロングフレーム(801)と制御フレーム(803)とが出力競合し、既に、送信ロングフレーム(801)が送信されている場合には、制御フレーム(803)は、送信ロングフレーム(801)の送信完了を待つ必要があり、制御フレーム(803)の待ち時間が長くなるためである。
例えば、送信ロングフレーム(801)が1メガバイト長で、帯域が100Gbpsの場合は、制御フレーム(803)の出力待ち時間は、最大80μ秒となる。また、帯域が20Gbpsの場合は、制御フレーム(803)の出力待ち時間は、400μ秒となる。
このため、送信ロングフレーム(801)のフレーム長が長くなるに伴い、制御フレーム(803)の待ち時間が顕著となる。
従って、制御フレーム(803)を用いた再送制御は、対向装置への再送通知がその分遅延することになり、再送バッファ量を増加する必要が生じることになる。また、ポーズフレームの場合も、対向装置への転送が遅れることになり、バッファ溢れや、送信バッファや受信バッファ量を増加する必要が生じることになる。
このようなことから、送信ロングフレーム(801)と、制御フレーム(803)と、の送信を制御し、制御フレーム(803)の待ち時間を低減し、制御フレーム(803)の遅延による各種制御効果の劣化を改善することが可能なフレーム送信制御方法の開発が必要視されることになる。
なお、本発明より先に出願された技術文献として、第1パケットである長電文が送信されている間に、第2パケットである短電文あるいは緊急パケットの送信要求が発生した場合、第1パケットをどこまで受信したかその残りのデータ数を計数し、この計数値が予め設定した値より大きい場合には第1パケットの送信を優先させるようにする技術について開示された文献がある(例えば、特許文献1参照)。
また、緊急フレームを送信遅延を少なくして送信可能とし、緊急フレーム送信による影響度を少なくすることが可能な技術について開示された文献がある(例えば、特許文献2参照)。
特開平1−137744号公報
特開2006−67038号公報
まず、図1を参照しながら、本実施形態の通信装置の特徴について説明する。
本実施形態の通信装置は、データフレーム(101)と、制御フレーム(103)と、を同一経路に送信する通信装置であり、フレーム(102)を受信する受信手段(受信バッファ:15に該当)と、受信手段(15)へのフレーム(102)の受信が完了する受信完了時刻を推定する推定手段(フレーム終端回路:14、制御フレーム生成推定回路:17、フレーム長分布推定回路:19に該当)と、受信完了時刻に応じて、データフレーム(101)と制御フレーム(103)との送信タイミングを制御する制御手段(送信選択回路:13に該当)と、を有することを特徴とする。
これにより、フレーム(102)の受信が完了する受信完了時刻を推定し、その受信完了時刻に応じて、データフレーム(101)と制御フレーム(103)との送信タイミングを制御し、制御フレーム(103)の待ち時間を低減し、制御フレーム(103)の遅延による各種制御効果の劣化を改善することが可能となる。以下、添付図面を参照しながら、本実施形態の通信装置について詳細に説明する。
<通信装置の構成>
まず、図1を参照しながら、本実施形態の通信装置の構成について説明する。なお、図1は、本実施形態の通信装置に搭載されるフレーム送受信回路(10)の構成を示すブロック図である。
なお、図1において、フレーム送受信回路(10)の左側が上位層(ネットワーク層)を示し、フレーム送受信回路(10)の右側が下位層(物理層)を示している。なお、本実施形態では、上位層から下位層への方向を『送信側』とし、下位層から上位層への方向を『受信側』とする。
本実施形態におけるフレーム送受信回路(10)は、送信バッファ(11)と、フレーム生成回路(12)と、送信選択回路(13)と、フレーム終端回路(14)と、受信バッファ(15)と、制御フレーム生成回路(16)と、制御フレーム生成推定回路(17)と、タイマ回路(18)と、フレーム長分布推定回路(19)と、を有して構成している。
なお、図1において、(101)は、送信ロングフレームを示し、(102)は、受信ロングフレームを示し、(103)は、制御フレームを示す。送信ロングフレーム長、受信ロングフレーム長とも、可変長を想定するが、固定長でも良い。また、送信ロングフレーム長と受信ロングフレーム長との間には相関はなく、受信ロングフレーム(102)は、送信ロングフレーム(101)よりも長くても短くても良い。また、(102)は、受信ロングフレームではなく、受信側の制御フレームであっても良いが、以下ではあわせて受信ロングフレーム(102)と称す。また、図1では省略しているが、下位層(物理層)からのフレーム入力には、SOF、EOFが並走入力され、また、下位層(物理層)へのフレーム出力には、SOF、EOFが並走出力されている。
なお、本実施形態において制御フレーム(103)の種別は特に限定しないが、再送制御やACK/NACK、あるいは、一部のOAMのように、受信ロングフレーム(102)の受信、特にその受信完了後に生成する制御フレームとする。
フレーム終端回路(14)は、SOF(Start of Frame)、EOF(End of Frame)、受信バイト数を、制御フレーム生成推定回路(17)に出力する。
制御フレーム生成推定回路(17)は、SOF、EOF、受信バイト数を基に、フレーム受信バイト数『BYT』をフレーム長分布推定回路(19)に出力する。また、制御フレーム生成推定回路(17)は、制御フレーム(103)の発出可能性を示す選択信号『SEL』を送信選択回路(13)に出力する。
フレーム長分布推定回路(19)は、フレーム受信バイト数『BYT』を基に、フレーム長分布が閾値『D_TH』を上回る直近のフレーム長『F_TH』と、フレーム受信バイト数『BYT』と、の差分バイト数『ΔF』を算出し、該算出した差分バイト数『ΔF』を制御フレーム生成推定回路(17)に出力する。但し、『ΔF』=『F_TH』−『BYT』である。
送信選択回路(13)は、送信イネーブル信号『TE』をフレーム生成回路(12)に出力する。
フレーム生成回路(12)は、送信イネーブル信号『TE』を基に、送信ロングフレーム(101)を送信選択回路(13)に出力する。
タイマ回路(18)は、タイマカウント値を送信選択回路(13)に出力する。
<フレーム送受信回路:10における制御動作>
次に、図1に示すフレーム送受信回路(10)における制御動作について詳細に説明する。
『SOF』、『EOF』は、双方ともイーサネット(登録商標)と同じく、物理層においては受信ロングフレーム(102)の『ヘッダ部』および『トレイラ部』の前後に付加されたものであり、データリンク層へ入力される際は、フレームとは別線にて並走入力され、フレーム終端回路(14)がそれらを検出して出力する。
『BYT』は、フレーム受信バイト数であり、受信ロングフレーム(102)毎に0からカウントし直す。
『ΔF』は、フレーム長分布推定回路(19)内で算出する差分バイト数であり、差分バイト数『ΔF』は、フレーム長分布が閾値『D_TH』を上回る直近のフレーム長『F_TH』と、フレーム受信バイト数『BYT』と、を基に、『ΔF』=『F_TH』−『BYT』により算出する。
『SEL』は、制御フレーム(103)の発出可能性を示す選択信号である。
『TE』は、送信選択回路(13)からフレーム生成回路(12)に出力する送信イネーブル信号である。
送信側では、送信バッファ(11)は、上位層からデータが入力されると、そのデータを保持し、その保持したデータをフレーム生成回路(12)に出力する。なお、上位層から入力されるデータは、数十バイト長〜メガバイト長までの任意のデータ長を有する。
フレーム生成回路(12)は、送信バッファ(11)から入力されたデータに対し、ヘッダ部、トレイラ部を付加し、送信ロングフレーム(101)を生成する。
そして、フレーム生成回路(12)は、送信選択回路(13)から入力される送信イネーブル信号『TE』が『TE=‘1’』の場合には、送信ロングフレーム(101)を送信選択回路(13)に出力する。
また、フレーム生成回路(12)は、送信選択回路(13)から入力される送信イネーブル信号『TE』が『TE=‘0’』の場合には、送信ロングフレーム(101)を送信選択回路(13)に出力しない。
送信選択回路(13)は、選択信号『SEL』、および、制御フレーム生成回路(16)からの制御フレーム(103)の有無に応じ、下位層側にフレームを出力する。
受信側では、フレーム終端回路(14)は、受信ロングフレーム(102)が入力されると、その受信ロングフレーム(102)からヘッダ部とトレイラ部とを取り除く。そして、フレーム終端回路(14)は、ペイロード部を受信データとして受信バッファ(15)に転送し、受信バッファ(15)から上位層側にデータが転送される。
その際に、フレーム終端回路(14)は、受信ロングフレーム(102)とともに並走入力され、その先頭と最後尾を示す『SOF』、『EOF』を、制御フレーム生成推定回路(17)に出力する。また、フレーム終端回路(14)は、受信ロングフレーム(102)毎に『受信バイト数』を、制御フレーム生成推定回路(17)に出力する。
なお、フレーム終端回路(14)は、トレイラ部からCRCチェックを行い、そのチェック結果を、ACK/NACKとして、制御フレーム生成回路(16)より制御フレーム(103)で下位層側の対向装置に返送するように構築することも可能である。
これは、受信ロングフレーム(102)の受信完了直後に行うことが可能である。なお、本機能は、イーサネット(登録商標)では定義されていない。また、下位層側の対向装置への制御フレーム(103)の返送は、送信選択回路(13)を経由して行うことになる。
<制御フレーム生成推定回路:17における処理動作>
次に、図2を参照しながら、本実施形態の制御フレーム生成推定回路(17)における処理動作について詳細に説明する。
まず、スタート後(ステップS1)、制御フレーム生成推定回路(17)は、フレーム受信バイト数『BYT』を、『BYT=‘0’』にする(ステップS2)。また、制御フレーム生成推定回路(17)は、選択信号『SEL』を『SEL信号=‘0’』とする(ステップS3)。
次に、制御フレーム生成推定回路(17)は、受信ロングフレーム(102)が到着したか否かを判断し(ステップS4)、受信ロングフレーム(102)が到着していないと判断した場合は(ステップS4/No)、ステップS2に移行する。
また、制御フレーム生成推定回路(17)は、受信ロングフレーム(102)が到着していると判断した場合は(ステップS4/Yes)、図1に示すフレーム終端回路(14)から入力される受信バイト数を基に、フレーム受信バイト数『BYT』のカウントを開始する(ステップS5)。
そして、制御フレーム生成推定回路(17)は、図1に示すフレーム長分布推定回路(19)に対し、ステップS5においてカウントしたフレーム受信バイト数『BYT』を出力し、フレーム長分布推定回路(19)から差分バイト数『ΔF』を取得する(ステップS6)。
そして、 制御フレーム生成推定回路(17)は、ステップS6にて取得した差分バイト数『ΔF』を基に、受信ロングフレーム(102)の受信が完了すると推測される直近の時刻tを、以下の(式1)にて算出する(ステップS7)。
t=ΔF÷回線速度・・・・(式1)
なお、回線速度は、図1に示す下位層側に接続されている伝送路の回線速度であり、本実施形態の制御を行う際に、フレーム送受信回路(10)に予め設定されている速度である。なお、回線速度は、任意に設定変更するように構築することも可能である。
次に、制御フレーム生成推定回路(17)は、ステップS7にて算出した時刻tが、t≦T_MAXであるか否かを判断し(ステップS8)、t≦T_MAXであると判断した場合(ステップS8/Yes)、即ち、閾値T_MAX以内に受信ロングフレーム(102)の受信が完了し、制御フレーム(103)を発出すると推測される場合は、選択信号『SEL』を『SEL=‘1’』とし、『SEL=‘1’』を送信選択回路(13)に出力する(ステップS9)。
また、t>T_MAXであると判断した場合は(ステップS8/No)、制御フレーム(103)を発出すると推測されないため、選択信号『SEL』を『SEL=‘0’』とし、『SEL=‘0’』を送信選択回路(13)に出力する(ステップS10)。
次に、制御フレーム生成推定回路(17)は、『EOF』が入力されて実際に受信ロングフレーム(102)の受信が完了したか否かを判断し(ステップS11)、受信ロングフレーム(102)の受信が完了したと判断した場合は(ステップS11/Yes)、ステップS2に移行する。
また、受信ロングフレーム(102)の受信が完了していないと判断した場合は(ステップS11/No)、受信ロングフレーム(102)の受信途中と判断し、ステップS6に移行する。
<フレーム長分布推定回路:19の処理動作>
次に、図3を参照しながら、本実施形態のフレーム長分布推定回路(19)における処理動作について説明する。なお、図3は、フレーム送受信回路(10)が受信する受信ロングフレーム(102)のフレーム長分布(フレーム長分布情報)を示す図であり、横軸が、受信ロングフレーム(102)のフレーム長を示し、縦軸が、受信ロングフレーム(102)の受信回数(受信頻度)を示しており、受信回数(受信頻度)が高い程、そのフレーム長の受信ロングフレーム(102)を、フレーム送受信回路(10)が受信していることを示している。
図3において、『BYT』値は、フレーム受信バイト数であり、制御フレーム生成推定回路(17)から入力される値である。
また、『D_TH』は、フレーム長分布が一定確率以上となるように設定する閾値である。
また、『F_TH』は、フレーム長分布が閾値『D_TH』を上回る、フレーム受信バイト数『BYT』以上の直近のフレーム長である。
また、『ΔF』は、『BYT』と『F_TH』との差分バイト数である。但し、『ΔF』=『F_TH』−『BYT』となる。
なお、フレーム長分布推定回路(19)は、受信ロングフレーム(102)毎に、その受信ロングフレーム(102)のフレーム長を順次蓄積し、図3に示すフレーム長分布情報を順次更新してゆく。これにより、最新のフレーム長分布情報を管理することが可能となる。
そして、フレーム長分布推定回路(19)は、制御フレーム生成推定回路(17)からフレーム受信バイト数『BYT』が入力される度に、差分バイト数『ΔF』を算出し、該算出した差分バイト数『ΔF』を、制御フレーム生成推定回路(17)に出力する。
なお、図3に示すフレーム長分布情報は、横軸を、受信ロングフレーム(102)のフレーム長とし、縦軸を、受信ロングフレーム(102)の受信回数(受信頻度)としたが、フレーム送受信回路(10)が頻繁に受信する受信ロングフレーム(102)のフレーム長を把握することが可能であれば、縦軸の情報は、特に限定せず、あらゆる情報を適用することは可能である。
<送信選択回路:13の処理動作>
次に、図4を参照しながら、本実施形態の送信選択回路(13)における処理動作について説明する。
図4において、『TE』は、フレーム生成回路(12)に出力する送信イネーブル信号である。
また、『SEL』は、制御フレーム生成推定回路(17)から入力される制御フレーム(103)の発出可能性を示す選択信号である。
『T_MAX』は、予め設定した時刻値であり、送信ロングフレーム(101)の送出を一時停止しても可能な値である。
まず、スタート後(ステップS20)、送信選択回路(13)は、送信イネーブル信号『TE』を『TE=‘0’』に設定する(ステップS21)。また、タイマ回路(18)を0にクリアすると共に、タイマ回路(18)のタイマカウントを停止のままの状態にする(ステップS22)。
次に、送信選択回路(13)は、制御フレーム生成回路(16)に送出すべき制御フレーム(103)があるか否かを調べ(ステップS23)、送出すべき制御フレーム(103)がある場合は(ステップS23/Yes)、その制御フレーム(103)を優先的に下位層側に出力する(ステップS24)。
そして、送信選択回路(13)は、制御フレーム(103)の送信終了後(ステップS25)、ステップS21に移行する。
また、送信選択回路(13)は、送出すべき制御フレーム(103)がない場合は(ステップS23/No)、選択信号『SEL』が『SEL=‘1’』か否かを調べ、制御フレーム(103)の発出可能性があるか否かを調べる(ステップS26)。
送信選択回路(13)は、選択信号『SEL』が『SEL=‘1’』の場合には(ステップS26/Yes)、制御フレーム(103)の発出可能性があると判断し、制御フレーム生成回路(16)に送出すべき制御フレーム(103)があるか否か調べ(ステップS27)、送出すべき制御フレーム(103)がある場合には(ステップS27/Yes)、ステップS24に移行する。
また、送出すべき制御フレーム(103)が無い場合には(ステップS27/No)、フレーム生成回路(12)に送信ロングフレーム(101)があるか否かを調べる(ステップS28)。
送信選択回路(13)は、送信ロングフレーム(101)が無い場合には(ステップS28/No)、ステップS26に移行する。
また、送信ロングフレーム(101)がある場合には(ステップS28/Yes)、タイマ回路(18)のタイマカウントを開始させる(ステップS29)。
次に、送信選択回路(13)は、タイマ回路(18)のタイマカウント値が閾値T_MAXに達したか否かを判断し(ステップS30)、タイマ回路(18)のタイマカウント値が閾値T_MAXに達していないと判断した場合は(ステップS30/No)、ステップS26に移行する。
また、タイマ回路(18)のタイマカウント値が閾値T_MAXに達していると判断した場合は(ステップS30/Yes)、ステップS32に移行する。
なお、ステップS26において、選択信号『SEL』が『SEL=‘0’』の場合には(ステップS26/No)、制御フレーム(103)の発出可能性がないと判断し、フレーム生成回路(12)に送信ロングフレーム(101)があるか否かを調べる(ステップS31)。
送信選択回路(13)は、送信ロングフレーム(101)が無い場合には(ステップS31/No)、ステップS21に移行する。
また、送信ロングフレーム(101)がある場合には(ステップS31/Yes)、ステップS32に移行する。そして、送信選択回路(13)は、送信イネーブル信号『TE』を『TE=‘1’』に設定し(ステップS32)、フレーム生成回路(12)から送信ロングフレーム(101)を読み出し、該読み出した送信ロングフレーム(101)を送信側に送出する(ステップS33)。そして、送信ロングフレーム(101)の送信が終了した場合に(ステップS34)、ステップS21に移行する。
このように、本実施形態における通信装置は、フレーム長分布推定回路(19)において、受信バッファ(15)に入力されると推定される受信ロングフレーム(102)のフレーム受信バイト数『BYT』をカウントする。
また、フレーム長分布推定回路(19)は、受信ロングフレーム(102)のフレーム長分布情報(図3参照)を保持し、そのフレーム長分布情報を基に、フレーム長分布が閾値『D_TH』を上回る直近のフレーム長『F_TH』と、フレーム受信バイト数『BYT』と、の差分バイト数『ΔF』を算出し、該算出した差分バイト数『ΔF』を、制御フレーム推定回路(17)に出力する(但し、ΔF=F_TH−BYT)。
制御フレーム生成推定回路(17)は、フレーム長分布推定回路(19)から入力された差分バイト数『ΔF』を基に、受信ロングフレーム(102)の受信完了時刻『t』を推定する(但し、t=ΔF÷回線速度)。
なお、再送制御など、受信ロングフレーム(102)の受信完了と共に発出する制御フレーム(103)では、受信ロングフレーム(102)の受信完了時刻『t』を推定すれば、その受信完了時刻『t』が、制御フレーム(103)の発出推定時刻とほぼ等価になる。
その結果、予め設定された時間『T_MAX』以内に受信ロングフレーム(102)の受信完了があると推定した場合、つまり、予め設定された時間『T_MAX』以内に制御フレーム(103)の送出の可能性があると推定した場合は、その旨を選択信号『SEL』により、送信選択回路(13)に通知し、送信選択回路(13)は、選択信号『SEL』が入力された場合に、送信ロングフレーム(101)の送信を最大で『T_MAX』時間だけ停止し、その間に、制御フレーム(103)の送信を行うように制御する。
これにより、受信ロングフレーム(102)の受信完了時刻『t』、即ち、制御フレーム(103)の発出推定時刻『t』を事前に推定し、その推定した発出推定時刻『t』が予め設定された時間『T_MAX』以内であれば、送信ロングフレーム(101)の送出を一時的に停止し、制御フレーム(103)を優先的に出力するように制御することで、制御フレーム(103)の送出の平均待ち時間を短縮することが可能となる。その結果、制御フレーム(103)の遅延による各種制御効果の劣化を改善することが可能となる。
なお、上述した実施形態では、OSI参照モデルのデータリンク層への適用例として説明したが、トランスポート層のACK返送などにも適用することが可能である。また、図2、図3、図4の処理は、ディジタル論理回路によるハードウェア処理、または、CPUやDSPによるソフトウェア処理のどちらを適用することも可能である。
(第2の実施形態)
次に、第2の実施形態について説明する。
第1の実施形態では、図1、図2に示すように、制御フレーム生成推定回路(17)は、ステップS7にて算出した時刻tが、t≦T_MAXであるか否かを判断し(ステップS8)、t≦T_MAXであると判断した場合(ステップS8/Yes)、即ち、閾値T_MAX以内に受信ロングフレーム(102)の受信が完了し、制御フレーム(103)を発出すると推測される場合は、選択信号『SEL』を『SEL=‘1’』とし、『SEL=‘1’』を送信選択回路(13)に出力し(ステップS9)、また、t>T_MAXであると判断した場合は(ステップS8/No)、選択信号『SEL』を『SEL=‘0’』とし、『SEL=‘0’』を送信選択回路(13)に出力する(ステップS10)ことにした。
第2の実施形態では、図5、図6に示すように、制御フレーム生成推定回路(57)は、ステップS47にて算出した時刻tが、t≦T_MAXであるか否かを判断し(ステップS48)、t≦T_MAXであると判断した場合(ステップS48/Yes)、即ち、閾値T_MAX以内に受信ロングフレーム(502)の受信が完了し、制御フレーム(503)を発出すると推測される場合は、更に、RBL+ΔFと、RBL_MAXと、の大小比較を行い(ステップS52)、受信バッファ(55)のバッファオーバーフローが発生するか否かを推測し、受信バッファ(55)のバッファオーバーフローが発生するか否かに応じて、『SEL=‘0’』、または、『SEL=‘1’』の選択信号『SEL』を送信選択回路(53)に出力することを特徴とする(ステップS52、49,50)。なお、『RBL』は、受信完了時刻時の受信バッファ(55)の蓄積バイト数を示し、『RBL_MAX』は、受信バッファ(55)の最大バッファ長を示す。
このように、第2の実施形態は、受信バッファ(55)のバッファオーバーフローが発生するか否かを推測し、その推測結果に応じた選択信号『SEL』を送信選択回路(53)に出力し、送信選択回路(53)から出力する送信ロングフレーム(501)と、制御フレーム(503)と、の送信タイミングを制御することを特徴とする。これにより、第1の実施形態と同様に、制御フレーム(503)の遅延による各種制御効果の劣化を改善することが可能となる。以下、図5〜図7を参照しながら、第2の実施形態の通信装置について詳細に説明する。なお、第2の実施形態は、図5に示す受信バッファ(55)の蓄積バイト数から、ポーズフレームを送信する例を示している。
<通信装置の構成>
まず、図5を参照しながら、本実施形態の通信装置の構成について説明する。なお、図5は、本実施形態の通信装置に搭載されるフレーム送受信回路(50)の構成を示すブロック図である。
なお、図5において、フレーム送受信回路(50)の左側が上位層(ネットワーク層)を示し、フレーム送受信回路(50)の右側が下位層(物理層)を示している。なお、本実施形態では、上位層から下位層への方向を『送信側』とし、下位層から上位層への方向を『受信側』とする。
本実施形態におけるフレーム送受信回路(50)は、送信バッファ(51)と、フレーム生成回路(52)と、送信選択回路(53)と、フレーム終端回路(54)と、受信バッファ(55)と、制御フレーム生成回路(56)と、制御フレーム生成推定回路(57)と、タイマ回路(58)と、フレーム長分布推定回路(59)と、を有して構成している。
また、(501)は送信ロングフレームを示し、(502)は、受信ロングフレームを示し、(503)は、制御フレームを示す。送信ロングフレーム長、受信ロングフレーム長とも、可変長を想定するが、固定長でも良い。また、送信ロングフレーム長と受信ロングフレーム長との間には相関はなく、受信ロングフレーム(502)は、送信ロングフレーム(501)よりも長くても短くても良い。また、(502)は、受信ロングフレームでなく、受信側の制御フレームであっても良いが、以下ではあわせて受信ロングフレーム(502)と称す。また、図5では省略しているが、下位層(物理層)からのフレーム入力には、SOF、EOFが並走入力され、また、下位層(物理層)へのフレーム出力には、SOF、EOFが並走出力されている。
なお、本実施形態において、制御フレーム(503)の種別は特に限定しないが、受信バッファ(55)の状態に応じたポーズフレームとする。
フレーム終端回路(54)は、SOF(Start of Frame)、EOF(End of Frame)、受信バイト数を、制御フレーム生成推定回路(57)に出力する。
制御フレーム生成推定回路(57)は、SOF、EOF、受信バイト数を基に、フレーム受信バイト数『BYT』をフレーム長分布推定回路(59)に出力する。また、制御フレーム生成推定回路(57)は、制御フレーム(503)の発出可能性を示す選択信号『SEL』を送信選択回路(53)に出力する。
フレーム長分布推定回路(59)は、フレーム受信バイト数『BYT』を基に、フレーム長分布が閾値『D_TH』を上回る直近のフレーム長『F_TH』と、フレーム受信バイト数『BYT』と、の差分バイト数『ΔF』を算出し、該算出した差分バイト数『ΔF』を制御フレーム生成推定回路(57)に出力する。但し、『ΔF』=『F_TH』−『BYT』である。
送信選択回路(53)は、送信イネーブル信号『TE』をフレーム生成回路(52)に出力する。
フレーム生成回路(52)は、送信イネーブル信号『TE』を基に、送信ロングフレーム(501)を送信選択回路(53)に出力する。
タイマ回路(58)は、タイマカウント値を送信選択回路(53)に出力する。
<フレーム送受信回路:50における制御動作>
次に、図5に示すフレーム送受信回路(50)における制御動作について詳細に説明する。
『SOF』、『EOF』は、双方ともイーサネット(登録商標)と同じく、物理層においては受信ロングフレーム(502)の『ヘッダ部』および『トレイラ部』の前後に付加されたものであり、データリンク層へ入力される際は、フレームとは別線にて並走入力され、フレーム終端回路(54)がそれらを検出して出力する。
『BYT』は、フレーム受信バイト数であり、受信ロングフレーム(502)毎に0からカウントし直す。
『ΔF』は、フレーム長分布推定回路(59)内で算出する差分バイト数であり、差分バイト数『ΔF』は、フレーム長分布が閾値『D_TH』を上回る直近のフレーム長『F_TH』と、フレーム受信バイト数『BYT』と、を基に、『ΔF』=『F_TH』−『BYT』により算出する。
『SEL』は、制御フレーム(503)の発出可能性を示す選択信号である。
『TE』は、送信選択回路(53)からフレーム生成回路(52)に出力する送信イネーブル信号である。
送信側では、送信バッファ(51)は、上位層からデータが入力されると、そのデータを保持し、その保持したデータをフレーム生成回路(52)に出力する。なお、上位層から入力されるデータは、数十バイト長〜メガバイト長までの任意のデータ長を有する。
フレーム生成回路(52)は、送信バッファ(51)から入力されたデータに対し、ヘッダ部、トレイラ部を付加し、送信ロングフレーム(501)を生成する。
そして、フレーム生成回路(52)は、送信選択回路(53)から入力される送信イネーブル信号『TE』が『TE=‘1’』の場合には、送信ロングフレーム(501)を送信選択回路(53)に出力する。
また、フレーム生成回路(52)は、送信選択回路(53)から入力される送信イネーブル信号『TE』が『TE=‘0’』の場合には、送信ロングフレーム(501)を送信選択回路(53)に出力しない。
送信選択回路(53)は、選択信号『SEL』、および、制御フレーム生成回路(56)からの制御フレーム(503)の有無に応じ、下位層側にフレームを出力する。
受信側では、フレーム終端回路(54)は、受信ロングフレーム(502)が入力されると、その受信ロングフレーム(502)からヘッダ部とトレイラ部とを取り除く。そして、フレーム終端回路(54)は、ペイロード部を受信データとして受信バッファ(55)に転送し、受信バッファ(55)から上位層側にデータが転送される。
その際に、フレーム終端回路(54)は、受信ロングフレーム(502)とともに並走入力され、その先頭と最後尾を示す『SOF』、『EOF』を、制御フレーム生成推定回路(57)に出力する。また、フレーム終端回路(54)は、受信ロングフレーム(502)毎に『受信バイト数』を、制御フレーム生成推定回路(57)に出力する。
なお、受信バッファ(55)の輻輳情報は、ポーズフレームとして、制御フレーム生成回路(56)より制御フレーム(503)で下位層側の対向装置に返送するように構築する。なお、下位層側の対向装置への制御フレーム(503)の返送は、送信選択回路(53)を経由して行うことになる。
<制御フレーム生成推定回路:57における処理動作>
次に、図6を参照しながら、本実施形態の制御フレーム生成推定回路(57)における処理動作について詳細に説明する。
なお、図6において、『RBL』は、受信完了時刻時の受信バッファ(55)の蓄積バイト数である。
また、『RBL_MAX』は、受信バッファ(55)の最大バッファ長である。なお、『RBL_MAX』は、受信バッファ(55)に応じて任意に設定変更するように構築することも可能である。
まず、スタート後(ステップS41)、制御フレーム生成推定回路(57)は、フレーム受信バイト数『BYT』を、『BYT=‘0’』にする(ステップS42)。また、制御フレーム生成推定回路(57)は、選択信号『SEL』を『SEL信号=‘0’』とする(ステップS43)。
次に、制御フレーム生成推定回路(57)は、受信ロングフレーム(502)が到着したか否かを判断し(ステップS44)、受信ロングフレーム(502)が到着していないと判断した場合は(ステップS44/No)、ステップS42に移行する。
また、制御フレーム生成推定回路(57)は、受信ロングフレーム(502)が到着していると判断した場合は(ステップS44/Yes)、図5に示すフレーム終端回路(54)から入力される受信バイト数を基に、フレーム受信バイト数『BYT』のカウントを開始する(ステップS45)。
そして、制御フレーム生成推定回路(57)は、図5に示すフレーム長分布推定回路(59)に対し、ステップS45においてカウントしたフレーム受信バイト数『BYT』を出力し、フレーム長分布推定回路(59)から差分バイト数『ΔF』を取得する(ステップS46)。
そして、 制御フレーム生成推定回路(57)は、ステップS46にて取得した差分バイト数『ΔF』を基に、受信ロングフレーム(502)の受信が完了すると推測される直近の時刻tを、以下の(式1)にて算出する(ステップS47)。
t=ΔF÷回線速度・・・・(式1)
次に、制御フレーム生成推定回路(57)は、ステップS47にて算出した時刻tが、t≦T_MAXであるか否かを判断し(ステップS48)、t≦T_MAXであると判断した場合(ステップS48/Yes)、即ち、閾値T_MAX以内に受信ロングフレーム(502)の受信が完了し、制御フレーム(503)を発出すると推測される場合は、更に、RBL+ΔFと、RBL_MAXと、の大小比較を行う(ステップS52)。
これは、受信バッファ(55)の蓄積バイト数がRBL+ΔFまで伸びると推測されるためである。
制御フレーム生成推定回路(57)は、RBL+ΔF≧RBL_MAXであると判断した場合は(ステップS52/Yes)、受信バッファ(55)のバッファオーバーフローの発生が推測されるため,選択信号『SEL』を『SEL=‘1’』とし、『SEL=‘1’』を送信選択回路(53)に出力する(ステップS49)。
一方、制御フレーム生成推定回路(57)は、RBL+ΔF<RBL_MAXであると判断した場合は(ステップS52/No)、受信バッファ(55)のバッファオーバーフローが発生しないと推測されるため、選択信号『SEL』を『SEL=‘0’』とし、『SEL=‘0’』を送信選択回路(53)に出力する(ステップS50)。
また、制御フレーム生成推定回路(57)は、ステップS48でt>T_MAXであると判断した場合は(ステップS48/No)、選択信号『SEL』を『SEL=‘0’』とし、『SEL=‘0’』を送信選択回路(53)に出力する(ステップS50)。
次に、制御フレーム生成推定回路(57)は、EOFが入力されて実際に受信ロングフレーム(502)の受信が完了したか否かを判断し(ステップS51)、受信ロングフレーム(502)の受信が完了したと判断した場合は(ステップS51/Yes)、ステップS42に移行する。
また、受信ロングフレーム(502)の受信が完了していないと判断した場合は(ステップS51/No)、受信ロングフレーム(502)の受信途中と判断し、ステップS46に移行する。
<フレーム長分布推定回路:59の処理動作>
次に、図3を参照しながら、本実施形態のフレーム長分布推定回路(59)における処理動作について説明する。
本実施形態のフレーム長分布推定回路(59)における処理動作は、第1の実施形態と同様である。即ち、フレーム長分布推定回路(59)は、制御フレーム生成推定回路(57)からフレーム受信バイト数『BYT』が入力される度に、差分バイト数『ΔF』を算出し、該算出した差分バイト数『ΔF』を制御フレーム生成推定回路(57)に出力することになる。また、フレーム長分布推定回路(59)は、受信ロングフレーム(502)毎に、その受信ロングフレーム(502)のフレーム長を順次蓄積し、フレーム長分布情報を順次更新してゆくことになる。
<送信選択回路:53の処理動作>
次に、図7を参照しながら、本実施形態の送信選択回路(53)における処理動作について説明する。なお、本実施形態の送信選択回路(53)における処理動作は、第1の実施形態と同様である。
なお、図7において、『TE』は、フレーム生成回路(52)に出力する送信イネーブル信号である。
また、『SEL』は、制御フレーム生成推定回路(57)から入力される制御フレーム(503)の発出可能性を示す選択信号である。
『T_MAX』は、予め設定した時刻値であり、送信ロングフレーム(501)の送出を一時停止しても可能な値である。
まず、スタート後(ステップS60)、送信選択回路(53)は、送信イネーブル信号『TE』を『TE=‘0’』に設定する(ステップS61)。また、タイマ回路(58)を0にクリアすると共に、タイマ回路(58)のタイマカウントを停止のままの状態にする(ステップS62)。
次に、送信選択回路(53)は、制御フレーム生成回路(56)に送出すべき制御フレーム(503)があるか否かを調べ(ステップS63)、送出すべき制御フレーム(503)がある場合は(ステップS63/Yes)、その制御フレーム(503)を優先的に下位層側に出力する(ステップS64)。
そして、送信選択回路(53)は、制御フレーム(503)の送信終了後(ステップS65)、ステップS61に移行する。
また、送信選択回路(53)は、送出すべき制御フレーム(503)がない場合は(ステップS63/No)、選択信号『SEL』が『SEL=‘1’』か否かを調べ、制御フレーム(503)の発出可能性があるか否かを調べる(ステップS66)。
送信選択回路(53)は、選択信号『SEL』が『SEL=‘1’』の場合には(ステップS66/Yes)、制御フレーム(503)の発出可能性があると判断し、制御フレーム生成回路(56)に送出すべき制御フレーム(503)があるか否か調べ(ステップS67)、送出すべき制御フレーム(503)がある場合には(ステップS67/Yes)、ステップS64に移行する。
また、送出すべき制御フレーム(503)が無い場合には(ステップS67/No)、フレーム生成回路(52)に送信ロングフレーム(501)があるか否かを調べる(ステップS68)。
送信選択回路(53)は、送信ロングフレーム(501)が無い場合には(ステップS68/No)、ステップS66に移行する。
また、送信ロングフレーム(501)がある場合には(ステップS68/Yes)、タイマ回路(58)のタイマカウントを開始させる(ステップS69)。
次に、送信選択回路(53)は、タイマ回路(58)のタイマカウント値が閾値T_MAXに達したか否かを判断し(ステップS70)、タイマ回路(58)のタイマカウント値が閾値T_MAXに達していないと判断した場合は(ステップS70/No)、ステップS66に移行する。
また、タイマ回路(58)のタイマカウント値が閾値T_MAXに達していると判断した場合は(ステップS70/Yes)、ステップ62に移行する。
なお、ステップS66において、選択信号『SEL』が『SEL=‘0’』の場合には(ステップS66/No)、制御フレーム(503)の発出可能性がないと判断し、フレーム生成回路(52)に送信ロングフレーム(501)があるか否かを調べる(ステップS71)。
送信選択回路(53)は、送信ロングフレーム(501)が無い場合には(ステップS71/No)、ステップS61に移行する。
また、送信ロングフレーム(501)がある場合には(ステップS71/Yes)、ステップS72に移行する。そして、送信選択回路(53)は、送信イネーブル信号『TE』を『TE=‘1’』に設定し(ステップS72)、フレーム生成回路(52)から送信ロングフレーム(501)を読み出し、該読み出した送信ロングフレーム(501)を送信側に送出する(ステップS73)。そして、送信ロングフレーム(501)の送信が終了した場合に(ステップS74)、ステップS61に移行する。
このように、本実施形態における通信装置は、受信バッファ(55)のバッファオーバーフローが発生するか否かを推測し、その推測結果に応じた選択信号『SEL』を送信選択回路(53)に出力し、送信選択回路(53)から出力する送信ロングフレーム(501)と、制御フレーム(503)と、の送信タイミングを制御することで、第1の実施形態と同様に、制御フレーム(503)の送出の平均待ち時間を短縮することが可能となる。その結果、制御フレーム(503)の遅延による各種制御効果の劣化を改善することが可能となる。
なお、上述した実施形態では、OSI参照モデルのデータリンク層への適用例として説明したが、トランスポート層のACK返送などにも適用することが可能である。また、図6、図7の処理は、ディジタル論理回路によるハードウェア処理、または、CPUやDSPによるソフトウェア処理のどちらを適用することも可能である。
このように、本実施形態における通信装置は、数十バイト長〜1メガバイト長のようなロングフレームの送受信回路(10、50)において、制御フレーム(103、503)の送出の平均待ち時間を短縮することが可能となる。
その理由は、制御フレーム(103、503)の送信待ち時間は、最長で、受信ロングフレーム(102、502)のフレーム長であったものが、最大で、予め設定されたT_MAX時間分だけ短縮することが可能となるためである。
具体的には、送信選択回路(13、53)および制御フレーム生成推定回路(17、57)において、送信ロングフレーム(101、501)の読み出しを一時停止する際の最大の停止時間T_MAXを事前に設定しておき、また、制御フレーム生成推定回路(17、57)は、フレーム長分布推定回路(19、59)において算出した差分バイト数『ΔF』を基に、受信ロングフレーム(102、502)の受信完了時刻『t』を推定し、即ち、制御フレーム(103、503)の発出推定時刻『t』を推測する。
そして、その発出推定時刻『t』が予め設定した時刻『T_MAX』以内であれば、選択信号『SEL』により、その旨を送信選択回路(13、53)に通知し、送信選択回路(13、53)は、選択信号『SEL』が入力された場合に、送信ロングフレーム(101、501)の送信を、最大で、予め設定した『T_MAX』時間だけ停止し、その間に、制御フレーム(103、503)の送信を可能とするように制御することになる。これにより、最大で、予め設定されたT_MAX時間分だけ短縮することが可能となる。
特に、制御フレーム(103、503)は、再送制御、ACK/NACK等のフィードバック制御や一部のOAMで用いられることが想定され、これらは、ラウンドトリップ時間が重要である。
従って、本実施形態によるフレーム送信制御により、制御フレーム(103、503)のラウンドトリップ時間が短縮される状況が生まれ、制御フレーム(103、503)による制御効果の向上、その制御フレーム(103、503)を用いた通信システムの性能向上、信頼性向上を図ることが可能となる。
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
例えば、上述する実施形態では、発出推定時刻『t』が予め設定した時刻『T_MAX』以内であれば、送信ロングフレーム(101、501)よりも制御フレーム(103、503)を優先的に送信し、その間は、送信ロングフレーム(101、501)の送信を待たせるように制御することにしたが、送信ロングフレーム(101、501)を破棄するように制御することも可能である。
また、上述した実施形態における通信装置における制御動作は、ハード構成ではなく、コンピュータプログラム等のソフトウェアにより実行することも可能であり、また、上記のプログラムは、光記録媒体、磁気記録媒体、光磁気記録媒体、または半導体等の記録媒体に記録し、その記録媒体から上記プログラムを、上述した通信装置に読み込ませることで、上述した制御動作を、通信装置において実行させることも可能である。また、所定のネットワークを介して接続されている外部機器から上記プログラムを上述した通信装置に読み込ませることで、上述した制御動作を、通信装置において実行させることも可能である。