(57)【要約】【課題】パケット再送用バッファのサイズと確認応答の送信遅延（間隔）を最適化することができる通信システムを提供すること。【解決手段】  送信コンポーネント１０と受信コンポーネント２０とが通信可能に接続された通信システムであって、送信コンポーネント１０は、パケット送信部１０−４からデータパケットを送信してから、受信コンポーネント２０からの肯定応答を受信するまでの遅延時間を測定するACK DLLP受信遅延測定部１０−３と測定された遅延時間と、再送バッファ１０−２の容量とに基づいて、確認応答送信部２０−２での肯定応答の送信間隔の適否を判断し、当該判断結果に基づいて肯定応答の送信間隔を変更する指示を受信コンポーネント２０に送信する送信間隔指示部１０−１とを具備する。【選択図】        図３
2007180611.tif 000002
【特許請求の範囲】
【請求項１】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記送信装置はさらに、前記送信部から前記データパケットを送信してから、前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定する遅延時間測定部と、
前記遅延時間測定部で測定された遅延時間と、前記再送バッファの容量とに基づいて、前記確認応答送信部での肯定応答の送信間隔の適否を判断し、当該判断結果に基づいて前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する送信間隔指示部と、
を具備することを特徴とする通信システム。
【請求項２】
前記送信間隔指示部は、前記遅延時間測定部で測定された遅延時間と、前記再送バッファの容量を前記データパケットの送信レートで割り算した値と、を比較し、当該比較結果に基づいて、前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する請求項１記載の通信システム。
【請求項３】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記受信装置はさらに、前記送信装置からのデータパケットを受信する受信間隔を測定する受信間隔測定部と、
前記受信間隔測定部で測定された受信間隔に基づいて、前記確認応答送信部から送信される肯定応答の送信間隔の適否を判断し、当該判断結果に応じて前記肯定応答の送信間隔を変更する送信間隔変更部と、
を具備することを特徴とする通信システム。
【請求項４】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持するものであり、その容量を変更可能な再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記送信装置はさらに、前記送信部から前記データパケットを送信してから前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定する遅延時間測定部と、
前記遅延時間測定部で測定された遅延時間に基づいて、前記再送バッファの容量を変更するバッファ容量変更部と、
を具備することを特徴とする通信システム。
【請求項５】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記受信装置はさらに、前記確認応答送信部から前記肯定応答および前記否定応答のいずれもが送信されていないときに、前記送信装置から再送のデータパケットを受信したか否かを判断し、当該判断結果に基づいて、前記肯定応答の送信間隔を変更する送信間隔変更部を具備することを特徴とする通信システム。
【請求項６】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記送信装置はさらに、前記再送バッファの空き容量を確認する空き容量確認部と、
前記空き容量確認部で確認された前記空き容量にしたがって、前記受信装置に対して前記肯定応答を前記送信装置に送信する指示を出力する肯定応答送信指示部と、
を具備することを特徴とする通信システム。
【請求項７】
送信装置と受信装置とが通信可能に接続された通信システムであって、
前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、
前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、
前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、
前記受信装置はさらに、前記送信装置からのデータパケットを計数し、前記送信装置により設定された所定数のパケットが送信されたか否かを判断するパケット計数部を具備し、
前記確認応答送信部は、前記パケット計数部での判断結果に基づいて、前記送信装置に対して前記確認応答を送信することを特徴とする通信システム。
【請求項８】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記送信装置においてさらに、前記送信ステップで前記データパケットを送信してから、前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定するステップと、
前記遅延時間測定ステップで測定された遅延時間と、前記再送バッファの容量とに基づいて、前記確認応答ステップでの肯定応答の送信間隔の適否を判断し、当該判断結果に基づいて前記肯定応答の送信間隔を変更する指示を前記受信装置に送信するステップと、
を具備することを特徴とする通信方法。
【請求項９】
前記送信間隔指示ステップは、前記遅延時間測定ステップで測定された遅延時間と、前記再送バッファの容量を前記データパケットの送信レートで割り算した値と、を比較し、当該比較結果に基づいて、前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する請求項１記載の通信システム。
【請求項１０】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記受信装置においてさらに、前記送信装置からのデータパケットを受信する受信間隔を測定するステップと、
前記受信間隔測定ステップで測定された受信間隔に基づいて、前記確認応答ステップにおいて送信される肯定応答の送信間隔の適否を判断し、当該判断結果に応じて前記肯定応答の送信間隔を変更するステップと、
を具備することを特徴とする通信方法。
【請求項１１】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記送信装置においてさらに、前記送信ステップにおいて前記データパケットを送信してから前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定するステップと、
前記遅延時間測定ステップで測定された遅延時間に基づいて、前記再送バッファの容量を変更するステップと、
を具備することを特徴とする通信方法。
【請求項１２】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記受信装置はさらに、前記確認応答ステップにおいて前記肯定応答および前記否定応答のいずれもが送信されていないときに、前記送信装置から再送のデータパケットを受信したか否かを判断し、当該判断結果に基づいて、前記肯定応答の送信間隔を変更するステップを具備することを特徴とする通信方法。
【請求項１３】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記送信装置においてさらに、前記再送バッファの空き容量を確認するステップと、
前記空き容量確認ステップで確認された前記空き容量にしたがって、前記受信装置に対して前記肯定応答を前記送信装置に送信する指示を出力するステップと、
を具備することを特徴とする通信方法。
【請求項１４】
送信装置と受信装置とで通信を行なう通信方法であって、
前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、
前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、
前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、
前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、
前記受信装置においてさらに、前記送信装置からのデータパケットを計数し、前記送信装置により設定された所定数のパケットが送信されたか否かを判断するステップを具備し、
前記確認応答送信ステップは、前記パケット計数ステップでの判断結果に基づいて、前記送信装置に対して前記確認応答を送信することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及び通信方法に関し、特に、送信装置と受信装置間の通信において、送信装置からのデータパケットに対する確認応答の送信間隔を調整可能な通信システム及び通信方法に関する。
【背景技術】
【０００２】
コンピュータ間のデータパケットの通信においては、信頼性のあるデータ配送を維持するために、送信装置からのデータパケットを誤りなく受信したときには、受信装置は確認応答を送信側に返すようにしている。このような通信システムにおいて、例えば特開２００１−１１１６１８号公報は、送信局と受信局間でのパケット通信において、送信局がＤＴパケットの送信時刻を記録し、該パケットに対応するＡＣＫパケットの受信時刻を測定する手段を備え、ＡＣＫパケットの受信時刻と対応するＤＴパケットの送信時刻の差から往復応答時間を算出する手段と、ＡＣＫパケットの受信間隔を測定する手段と、前記応答往復時間と前記受信間隔とにもとづいて最適なウインドウサイズを計算する手段とを備えた通信システムを開示している。
【特許文献１】特開２００１−１１１６１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特開２００１−１１１６１８号公報を従来の技術は、送信装置内に配置されたパケット再送のためのバッファのサイズと、受信装置からの確認応答の送信遅延（送信間隔）との関係を最適化することを意図したものではなかった。
【０００４】
本発明は、パケット再送用バッファのサイズと確認応答の送信遅延（間隔）を最適化することができる通信システム及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明の第1の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記送信装置はさらに、前記送信部から前記データパケットを送信してから、前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定する遅延時間測定部と、前記遅延時間測定部で測定された遅延時間と、前記再送バッファの容量とに基づいて、前記確認応答送信部での肯定応答の送信間隔の適否を判断し、当該判断結果に基づいて前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する送信間隔指示部と、を具備する。
【０００６】
また、本発明の第２の態様は、第１の態様において、前記送信間隔指示部は、前記遅延時間測定部で測定された遅延時間と、前記再送バッファの容量を前記データパケットの送信レートで割り算した値と、を比較し、当該比較結果に基づいて、前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する。
【０００７】
また、本発明の第３の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記受信装置はさらに、前記送信装置からのデータパケットを受信する受信間隔を測定する受信間隔測定部と、前記受信間隔測定部で測定された受信間隔に基づいて、前記確認応答送信部から送信される肯定応答の送信間隔の適否を判断し、当該判断結果に応じて前記肯定応答の送信間隔を変更する送信間隔変更部と、を具備する。
【０００８】
また、本発明の第４の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持するものであり、その容量を変更可能な再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記送信装置はさらに、前記送信部から前記データパケットを送信してから前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定する遅延時間測定部と、前記遅延時間測定部で測定された遅延時間に基づいて、前記再送バッファの容量を変更するバッファ容量変更部と、を具備する。
【０００９】
また、本発明の第５の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記受信装置はさらに、前記確認応答送信部から前記肯定応答および前記否定応答のいずれもが送信されていないときに、前記送信装置から再送のデータパケットを受信したか否かを判断し、当該判断結果に基づいて、前記肯定応答の送信間隔を変更する送信間隔変更部を具備する。
【００１０】
また、本発明の第６の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記送信装置はさらに、前記再送バッファの空き容量を確認する空き容量確認部と、前記空き容量確認部で確認された前記空き容量にしたがって、前記受信装置に対して前記肯定応答を前記送信装置に送信する指示を出力する肯定応答送信指示部と、を具備する。
【００１１】
また、本発明の第７の態様は、送信装置と受信装置とが通信可能に接続された通信システムであって、前記送信装置は、データパケットを前記受信装置に送信するためのパケット送信部と、前記送信装置から前記受信装置に送信されるデータパケットを再送用として保持する再送バッファと、を具備し、前記受信装置は、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断する正当性判断部と、前記正当性判断部での判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答送信部と、を具備し、前記受信装置はさらに、前記送信装置からのデータパケットを計数し、前記送信装置により設定された所定数のパケットが送信されたか否かを判断するパケット計数部を具備し、前記確認応答送信部は、前記パケット計数部での判断結果に基づいて、前記送信装置に対して前記確認応答を送信する。
【００１２】
また、本発明の第８の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記送信装置においてさらに、前記送信ステップで前記データパケットを送信してから、前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定するステップと、前記遅延時間測定ステップで測定された遅延時間と、前記再送バッファの容量とに基づいて、前記確認応答ステップでの肯定応答の送信間隔の適否を判断し、当該判断結果に基づいて前記肯定応答の送信間隔を変更する指示を前記受信装置に送信するステップと、を具備する。
【００１３】
また、本発明の第９の態様は、第８の態様において、前記送信間隔指示ステップは、前記遅延時間測定ステップで測定された遅延時間と、前記再送バッファの容量を前記データパケットの送信レートで割り算した値と、を比較し、当該比較結果に基づいて、前記肯定応答の送信間隔を変更する指示を前記受信装置に送信する。
【００１４】
また、本発明の第１０の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記受信装置においてさらに、前記送信装置からのデータパケットを受信する受信間隔を測定するステップと、前記受信間隔測定ステップで測定された受信間隔に基づいて、前記確認応答ステップにおいて送信される肯定応答の送信間隔の適否を判断し、当該判断結果に応じて前記肯定応答の送信間隔を変更するステップと、を具備する。
【００１５】
また、本発明の第１１の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記送信装置においてさらに、前記送信ステップにおいて前記データパケットを送信してから前記受信装置からの前記肯定応答を受信するまでの遅延時間を測定するステップと、前記遅延時間測定ステップで測定された遅延時間に基づいて、前記再送バッファの容量を変更するステップと、を具備する。
【００１６】
また、本発明の第１２の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記受信装置はさらに、前記確認応答ステップにおいて前記肯定応答および前記否定応答のいずれもが送信されていないときに、前記送信装置から再送のデータパケットを受信したか否かを判断し、当該判断結果に基づいて、前記肯定応答の送信間隔を変更するステップを具備する。
【００１７】
また、本発明の第１３の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記送信装置においてさらに、前記再送バッファの空き容量を確認するステップと、前記空き容量確認ステップで確認された前記空き容量にしたがって、前記受信装置に対して前記肯定応答を前記送信装置に送信する指示を出力するステップと、を具備する。
【００１８】
また、本発明の第１４の態様は、送信装置と受信装置とで通信を行なう通信方法であって、前記送信装置において、データパケットを前記受信装置に送信する送信ステップと、前記送信装置から前記受信装置に送信されるデータパケットを再送用として再送バッファに保持するステップと、を具備し、前記受信装置において、前記送信装置からのデータパケットを受信して当該データパケットの正当性を判断するステップと、前記正当性判断ステップでの判断結果に基づいて、前記パケットが承認されたことを示す肯定応答かあるいは前記パケットが承認されなかったことを示す否定応答を所定の間隔で前記送信装置に送信する確認応答を行なうステップと、を具備し、前記受信装置においてさらに、前記送信装置からのデータパケットを計数し、前記送信装置により設定された所定数のパケットが送信されたか否かを判断するステップを具備し、前記確認応答送信ステップは、前記パケット計数ステップでの判断結果に基づいて、前記送信装置に対して前記確認応答を送信する。
【発明の効果】
【００１９】
本発明によれば、パケット再送用バッファのサイズと確認応答の送信遅延（間隔）を最適化することができる。
【発明を実施するための最良の形態】
【００２０】
まず、本発明の概略を説明する。ここでは、本発明を次世代ＰＣＩバスインタフェース規格であるPCI Expressに適用した場合について説明する。PCI ExpressはＰＣＩバスの上位互換となるシリアルバスであり、１レーンあたり最大２．５Ｇｂｐｓで最大３２レーンの広いデータバンド幅を有している。
【００２１】
以下に、PCI Expressの規格で定義されたデータリンク層に備えられた、リンク間で送受信されたTLP(Transaction Layer Packet)の正当性を保証する機能について図１を参照して説明する。
【００２２】
図１は、再送バッファとAck DLLP(Data Link Layer Packet)によるTLP承認の手順を説明するための図であり、受信バッファ１１と再送バッファ１２とを備える送信側コンポーネント１０と、受信バッファ２２と再送バッファ２１とを備える受信側コンポーネント２０とが通信可能に接続される。図１において、まず、送信側コンポーネント１０からTLP a、TLP b、が受信側コンポーネント２０に送信される（ステップＳ１、Ｓ２）。このTLP a、TLP b、は図２に示すように、後述するシーケンス番号ＳＮ（ここではD85,D86）とともに再送バッファ１２に記録される。受信側コンポーネント２０は、ＳＮ：D85,D86のTLPの受信を確認する（ステップＳ３）。ここでは、D85のTLPを受信した後D86のTLPを受信した場合を想定する。すると受信側コンポーネント２０は送信側コンポーネント１０に対してD86についてのAck DLLPを送信する（ステップＳ４）。送信側コンポーネント１０はD86についてのAck DLLPを受信してD86のTLPが承認されたことを知る（ステップＳ５）。次に、送信側コンポーネント１０はSN:D86までのTLPを承認済みとして再送バッファ１２から削除する（ステップＳ６）。
【００２３】
以下に、上記した手順をより詳細に説明する。リンク間で送受信されたTLPの正当性を保証する機能を実現するために、TLP上にはシーケンス番号と、LCRCが用いられている。シーケンス番号は、過去４０９６個のTLPについて連番で固有の値を示す１２bitのIDであり、送信側コンポーネント１０からTLPを送信する際に生成される。受信側コンポーネント２０は、その連続性を利用してTLPの受信抜け等がないかどうかについての正当性を判断できる。
【００２４】
一方、LCRCは３２bitのCRC(cyclic redundancy check)である。LCRCは送信側コンポーネント１０からTLPを送信する際に生成され、受信側コンポーネント２０は受信側コンポーネント２０自身で計算したCRCと比較し、誤りを検出することができる。
【００２５】
このように、受信側コンポーネント２０のデータリンク層はシーケンス番号とLCRCが正しいか否かで、そのTLPの正当性を判断する。このとき受信側コンポーネント２０のデータリンク層が、正当なTLPを受信した場合にはAck DLLP（肯定DLLP）を送り返し、不当なTLPを受信した場合にはNak DLLP（否定DLLP）を送り返す。
【００２６】
送信側コンポーネント１０のデータリンク層は送信したTLPを一旦再送バッファに保持しており、Ack DLLPによって承認されることが通知された場合には、承認されたTLPを再送バッファ１２から削除する。また、Nak DLLPによって少なくとも１つのTLPが非承認であることが通知された場合には、再送バッファ１２に残っている承認されなかったTLP以降のすべてのTLPを受信側コンポーネント２０に再送する。ただし、承認を示すAck DLLPは必ずしも受信側コンポーネント２０が１つのTLPを受信する毎に送信する必要はなく、最後に承認したTLPのシーケンス番号をAck DLLPに載せて送ることで、そのシーケンス番号が示すTLPまでを同時に承認することが出来る。これはAck DLLPを送信する個数を抑制し、Ack DLLPの送信による帯域の減少を押さえる効果がある。
【００２７】
このAck DLLPの送信遅延は規格上厳密には定められておらず、大まかなガイドラインが示されているだけであり、実装依存となっている。
【００２８】
以下に、図面を参照して本発明の実施形態を詳細に説明する。
【００２９】
（第１実施形態）
図３は、本発明の第１実施形態の概略を説明するための図である。まず、送信側コンポーネント１０のパケット送信部１０−１は受信側コンポーネント２０に対してTLPを送信する（ステップＳＴ１）。受信側コンポーネント２０はTLPを受信すると、正当性判断部２０−１でパケットの正当性を判断し正当であるならば、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＴ２）。送信側コンポーネント１０のAck DLLP 受信遅延／受信間隔測定部１０−３は、Ack DLLPを受信した時刻に基づいて、TLPを送信してからAck DLLP受信までの遅延あるいは受信間隔を測定する（ステップＳＴ３）。
【００３０】
送信側コンポーネント１０の送信間隔指示部１０−４は、このときの測定結果に応じてAck DLLPの送信間隔を変更する指示を受信側コンポーネント２０に送信する（ステップＳ４）。受信側コンポーネント２０は当該指示を受信したならば、Ack DLLPの送信間隔を変更（ステップＳ５）した上でAck DLLPを送信側コンポーネント１０に送信する。
【００３１】
以下に、上記した手順をより詳細に説明する。PCI Express のコンポーネントとして実装されるTLPを送信する側のデバイスとしての送信側コンポーネント内の再送バッファのサイズと、相手デバイスとしての受信側コンポーネントに実装されているAck DLLPの発行間隔を決めるAck 送信レイテンシーリミット値は相互に最適な実装あるいは設定が存在し、これが最適でない場合、例えば再送バッファのサイズに対して、Ack 送信レイテンシーリミット値が大きすぎる場合や小さすぎる場合には、それぞれ帯域が制限されることになる。PCI Expressの規格である、文献『PCI Express Base Specification 1.1』中には、 Ack 送信レイテンシーリミット値のおおよそのガイドラインは示されているものの、再送バッファのサイズとAck 送信レイテンシーリミット値は接続した受信コンポーネントの実装あるいは設定を考慮しなくては、最適な値を決定することは出来ない値である。
【００３２】
そこで第１実施形態では、送信側コンポーネントがTLPを送信してから、そのTLPについてのAck DLLPを受信側コンポーネントから受信するまでの時間を送信側コンポーネントにおいて測定し、その時間が適切ではない場合には、受信側コンポーネントに対して、Ack DLLPの送信遅延を変更する指示を伝達することによって問題を解決する。
【００３３】
指示を伝達する手段としては、特に制約を設けないが、例えば、PCI Express規格に定義されている、ユーザー（Vendor）に開放されたVendor Defined Message(VD Msg)，Vendor Specific DLLP(VS DLLP)を使用してもよい。これらのパケットの中にはVendorが自由に定義してよい領域が有るため、その領域を使用して送信遅延を変更するための情報を伝達する。伝える情報はAck DLLP送信遅延そのものでもよいし、Ack DLLPの間隔を現状より長くする指示、Ack DLLPの間隔を現状より短くする指示を使い分けることで、Ack DLLP送信遅延をTLP送信側の意図した値に収束させる制御方法でもよい。
【００３４】
この送信遅延はAck DLLP発行側で操作できる範囲や、その粒度に制限がある可能性もあるので、TLP送信側からのAck DLLP送信遅延の変更指示もある程度の粒度を持つ。これより、遅延をある１点ではなく一定時間内に収めることを目的としたヒステリシス制御であることが望ましい。このようにすることで、Ack DLLPの操作できる限界を超えて、TLP送信側がAck DLLP送信遅延の調整を試み、結果としてVD MsgまたはVS DLLPを発行しすぎることで、帯域を減少させることを抑制する。
【００３５】
また、帯域の減少を抑える観点から、Ack DLLP送信遅延の制御を目的としたVD MsgまたはVS DLLPの発行は連続して発行する事を避け、一定数のTLP送信毎に、または一定時間毎に、VD MsgまたはVS DLLPの発行を行うことが望ましい。当然、Ack DLLP送信遅延がTLP送信側から見て最適であれば、VD MsgまたはVS DLLPを送信する必要はない。
【００３６】
図４は、VS DLLPでのAck DLLP送信遅延制御の実装例を示す図である。この実装例ではByte１が01hのとき、VS DLLPがAck DLLP送信遅延制御用VS DLLPであることを示し、Byte３のbit０が０bのときAck DLLP送信遅延を長くすることを、bit０が１bのときAck DLLP送信遅延を長くすることを示すものとしている。このVS DLLPを受信したデバイスがサポートする場合には、受信したVS DLLPのByte３ bit０の値にしたがって、以降のAck DLLP送信遅延を変更する。
【００３７】
受信側コンポーネント２０のVS DLLPのサポート状況は、相手デバイスのConfiguration Registerにある、Vendor ID、Device IDから判断できることもあるが、通常一方のデバイスから相手のデバイスのサポート状況は解らない。このため、本発明によるAck DLLP送信遅延制御を数回試みても、Ack DLLP送信遅延の改善が見られない場合には、相手デバイスが未サポートである可能性が高いので、Ack DLLP送信遅延制御の機能、すなわちそれを示すVS DLLPの発行を止めた方が、帯域の減少を抑制することに繋がる。
【００３８】
前述のように、Ack DLLP送信遅延の制御に用いるパケットはVD Msg、VS DLLPのどちらでも可能だが、再送バッファやAck DLLPの制御はデータリンク層の機能なので、データリンク層のパケットであるDLLPを使用することが望ましい。そうすることで、VD Msgによって、再送バッファの容量を消費することを避ける効果もある。
【００３９】
図５（Ａ）、（Ｂ）は、第１実施形態についてのTLP送信側の処理についてのフローチャートを示す。ここでは一例として、TLP受信側のAckNakレイテンシータイマー制御回路と類似した回路を実装した場合について示す。Ack DLLP 送信レイテンシー測定用のタイマーを実装し、未承認のTLPが存在する場合にタイマーを動作させ（図５（Ａ）のステップＳ２０〜Ｓ２２）、Ack DLLPを受信するまでの時間を計測する（ステップＳ２３〜Ｓ２５）。
【００４０】
すなわち、Ack送信レイテンシー測定用のタイマーをリセット（ステップＳ２０）した後、未承認のTLPが存在するか否かを判断し（ステップＳ２１）、ＮＯの場合にはステップＳ２０に戻り、ＹＥＳになった場合にはAck送信レイテンシー測定用のタイマーをスタートさせる（ステップＳ２２）。次に、Ack DLLPを受信したか否かを判断し（ステップＳ２３）、ＮＯならばAck送信レイテンシー測定用のタイマーを１インクリメントし（ステップＳ２４）、その後、ステップＳ２３に戻る。また、ここでＹＥＳの場合にはAck送信レイテンシー測定用のタイマーの値を記録（ステップＳ２５）した後、ステップＳ２０に戻る。
【００４１】
次に、上記の方法により測定した時間をAck DLLP 送信レイテンシーとして、この値がTLP送信回路に適合しているかどうかの判定を図５（Ｂ）のステップＳＴ２０〜ＳＴ２４で行う。リンクが正常の場合、Ack DLLP送信レイテンシーが以下の場合にもっとも効率的であると考えられる。
【００４２】
Ack DLLP 送信レイテンシー＝（再送バッファの容量）／（TLP 送信レート）
TLP送信レートは、更新FC DLLP等のDLLP、SKP Ordered Set等のOS、TLPのヘッダ等のオーバーヘッドを除いたレートで計算することが望ましい。
【００４３】
Ack送信レイテンシーが更新されたと判断されたならば（ステップＳ３０）、Ack DLLP 送信レイテンシーが（再送バッファの容量）／（TLP 送信レート）よりも大きいか否かを判断する（ステップＳ３１）。Ack DLLP送信レイテンシーが、測定したAck送信レイテンシーよりも小さい場合には、Ack DLLPの遅延のために再送バッファ１２がフルになる可能性が高いため、Vendor Specific（ＶＳ） DLLPを用いてTLP受信側の回路へAck 送信レイテンシーを小さくすることを指示する（ステップＳ３３）。逆に、計算したAck 送信レイテンシーが、測定したAck DLLP送信レイテンシーよりも著しく大きい場合には（ステップＳ３２）、再送バッファの利用効率が悪い、頻繁なAck DLLP送信によるリンクの利用効率が悪いと考えられるため、Vendor Specific DLLPを用いてTLP受信側コンポーネントの回路へAck DLLP送信レイテンシーを大きくすることを指示する（ステップＳ３４）。
【００４４】
図６は、第１実施形態についてのTLP受信側の処理についてのフローチャートを示している。受信側では、TLP送信側から送信されたVendor Specific DLLPを元に、実際のAck DLLP 送信レイテンシーを変更する。すなわち、まずAck送信レイテンシーリミットを小さくするVS DLLPを受信したか否かを判断し（ステップ４１）、ＹＥＳならばAck送信レイテンシーリミットを所定量だけ小さくし（ステップ４２）、ＮＯの場合にはAck送信レイテンシーリミットを大きくするVS DLLPを受信したか否かを判断し（ステップ４３）、ＮＯならばステップＳ４１に戻り、ＹＥＳならばAck送信レイテンシーリミットを所定量だけ大きくする（ステップＳ４４）。
【００４５】
第１実施形態によれば、再送バッファサイズ／Ack送信レイテンシーリミットの関係を最適化するための具体的な方法が提示された。これによって帯域の最大化を容易に行うこと、または不要な再送バッファを持たないことでハードウェアリソースを節約することが出来る。
【００４６】
（第２実施形態）
以下に、本発明の第２実施形態を説明する。図７は、本発明の第２実施形態の概略を説明するための図である。まず、送信側コンポーネント１０のパケット送信部１０−１は受信側コンポーネント２０に対してTLPを送信する（ステップＳＭ１）。受信側コンポーネント２０はTLPを受信すると正当性判断部２０−１でパケットの正当性を判断し、正当であるならば、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＭ２）。このとき、受信側コンポーネント２０のTLP受信間隔測定部２０−３は、TLP受信間隔を測定する（ステップＳＭ３）。確認応答送信部２０−２は、このときの測定結果に応じて送信間隔を変更したAck DLLPを送信側コンポーネント１０に送信する（ステップＳＭ４）。
【００４７】
以下に、上記した手順をより詳細に説明する。PCI Expressによって接続されたデバイス間でTLPが流れなくなったり、流れるTLPの数が減る、あるいは間隔が長くなる原因は幾つか存在する。その１つが前述の送信側コンポーネント１０の再送バッファ１２のサイズと、受信側コンポーネント２０のAck DLLP送信遅延の不整合による問題である。再送バッファ１２のサイズに対して、Ack DLLPの送信遅延が大きすぎる場合には、再送バッファ１２が未承認のTLPで満たされるために、次のTLPを送信できなくなるという可能性がある。
【００４８】
そこで第２実施形態では、あらかじめ想定し設定された値よりも、TLPの受信間隔が長い場合、あるいは一定期間内に受信したTLPの数が少ない場合には、Ack DLLPの送信遅延を短くすることで、相手デバイスの再送バッファの空きを作りやすくすることを特徴とする。
【００４９】
図８は第２実施形態の動作を示すフローチャートである。TLP受信間隔測定部２０−３は送信側コンポーネント１０からのTLPを受信してTLP受信間隔を測定する（ステップＳ５０）。次に測定した間隔が長いか否かを閾値に基づいて判断し（ステップＳ５１）、ＮＯの場合にはステップＳ５０に戻り、ＹＥＳの場合、すなわち閾値よりも長かった場合には、Ack DLLP送信間隔を短縮する（ステップＳ５２）。閾値の判定については、単純な比較でも良いし、バースト転送等の一定間隔のTLP受信の際のみ判定対象にしても良い。DLLP送信間隔の短縮を行うことでTLP受信間隔が短縮されれば（ステップＳ５３）、送信側コンポーネント１０の再送バッファ１０−２が頻繁に空くようになったことを意味するため、この状態を保持する。
【００５０】
一方でTLP受信間隔に変化がなければ、Ack DLLP要因でTLP受信間隔が長いのではないと考えられるため、Ack DLLPの送信間隔を元に戻す（ステップＳ５４）。これは、無駄にAck DLLPを送信して、送信帯域を浪費することがないようにするためである。
【００５１】
第２実施形態によれば、送信側コンポーネントの再送バッファの負荷を軽減することが可能になる。
【００５２】
（第３実施形態）
以下に、本発明の第３実施形態を説明する。図９は、本発明の第３実施形態の概略を説明するための図である。まず、送信側コンポーネント１０のパケット送信部１０−１は受信側コンポーネント２０に対してTLPを送信する（ステップＳＬ１）。受信側コンポーネント２０はTLPを受信すると、正当性判断部２０−１でパケットの正当性を判断し、正当であるならば、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＬ２）。送信側コンポーネント１０のAck DLLP 受信遅延／受信間隔測定部１０−３は、Ack DLLPを受信した時刻に基づいて、Ack DLLP受信までの遅延あるいは受信間隔を測定する（ステップＳＴ３）。次に、送信側コンポーネント１０の再送バッファ変更部１０−４は、このときの測定結果に応じて再送バッファの容量を変更する（ステップＳＬ４）。
【００５３】
以下に、上記した手順をより詳細に説明する。再送バッファの実装方法には、再送バッファ専用の固定のハードウェアを持つ方法の他に、バッファ領域を他の機能とシェアする方法が考えられる。このような実装方法では再送バッファに割り当てるバッファ領域のサイズを最小限に抑えることで、他の機能が残りの領域を最大限に利用できるようにすることができる。しかし、前述のように相手デバイスのAck DLLPの送信遅延が判らないことから、通常再送バッファには十分なマージンを持って設計されることが普通である。
【００５４】
そこで第３実施形態ではTLPを送信してからAck DLLPを受信するまでの間隔を計測し、それを元に再送バッファのサイズを動的に調整することで、再送バッファが占有していたバッファ領域を開放し、他の目的に利用できるようにする。具体的には、おおよそ以下の式を満たすように再送バッファのサイズを決定すればよい。
【００５５】
要求された再送バッファサイズ＝(Ack DLLP送信レイテンシー)×(TLP送信レート)
ここで、TLP送信レートは、更新 FC DLLP等のDLLP、SKP Ordered Set等のOS、TLPのHeader等のオーバーヘッドを除いたレートで計算することが望ましい。
【００５６】
図１０（Ａ）、（Ｂ）は第３実施形態の動作を示すフローチャートである。図１０（Ａ）のステップは図５（Ａ）のステップと同一であるので説明を省略する。ステップＳ２５の後は図１０（Ｂ）のステップＳ５１に移行してAck送信レイテンシーに変動があるか否かを判断する。Ack送信レイテンシーに変動があれば、変動値より上記の式に基づいて適切な再送バッファのサイズを計算し（ステップＳ５２）、再送バッファを調整する。すなわち、再送バッファのサイズが変更可能か否かを判断し（ステップＳ５３）、ＮＯの場合には新たなバッファを割り当てるためのスペースはなしと判断して、再送バッファのサイズを変更するために、新たなバッファを割り当てる準備をする（ステップＳ５５）。一方、ステップＳ５３の判断がＹＥＳならば、再送バッファのサイズを変更する（ステップＳ５４）。
【００５７】
ここで、再送バッファを減少（開放）させる場合には特に問題はないが、さらに確保する場合には確保が不可能な場合もある。その場合には更なる再送バッファの確保ができるまで待機するか、再送バッファの容量を維持するかのいずれかとなるであろう。
【００５８】
また、別の実装方法としては、再送バッファの書き込みポインタ（再送バッファ上の現在のTLP書き込み位置）と書き込み限界（再送バッファ上のTLP書き込み限界位置）の間隔を常に監視し、一定期間でもっとも両者の間隔が詰まったとき、つまりBufferを多く占有したときを基準に動的に調整することも可能である。
【００５９】
書き込み限界はAck DLLPを受信することで更新されるので、書き込みポインタと書き込み限界の間隔によって再送バッファのサイズを制御することは、TLPの送信頻度とAck DLLP送信遅延によって制御することに相当する。
【００６０】
図１１は、一般的なリングバッファを用いた再送バッファの実装概略を説明するための図である。再送バッファ中には未承認のTLPが格納されており、トランザクション層の送信回路から送信されるTLPが再送バッファに格納される場合には書き込みポインタがインクリメントされ、一方で、Ack DLLPを対向するコンポーネントから受信することでTLPが承認され、再送バッファが書き込み限界をインクリメントすることによって開放される。ここで、書き込み限界から、書き込みポインタまでの部分が、再送バッファの空き領域（フリースペース）となる。
【００６１】
図１２（Ａ）、（Ｂ）は、ポインタベースの制御フローチャートを示す。再送バッファ内の空き領域（Free Space）は、書き込み限界と書き込みポインタによって支配され、これが常に計算される。この値が過去の最小値（最小空き領域レジスタr）を下回った場合には、最小空き領域レジスタが更新される（図１２（Ａ）のステップＳ６０〜Ｓ６２）。
【００６２】
次に、図１２（Ｂ）のフローに移行して最小空き領域レジスタが０よりも大きいか否かを判断する（ステップＳ７０）。
【００６３】
最小空き領域レジスタの値が０であるとすると、再送バッファが過去にフルになったということを示すため、再送バッファの容量を増加させることを試み（ステップＳ７１）、再送バッファサイズが受信可能か否かを判断する（ステップＳ７２）。ＹＥＳの場合にはステップＳ７６（後述する）に進み、ＮＯの場合には新たなバッファを割り当てるスペースは無いと判断して、まだ再送バッファのサイズを拡大するか否かを判断する（ステップＳ７３）。ここでＹＥＳならば再送バッファサイズを変更するために新たなバッファを割り当てる準備をし（ステップＳ７４）、ステップＳ７２に戻る。
【００６４】
一方、ステップＳ７０の判断がＹＥＳすなわち、最小空き領域レジスタの値が正、あるいは一定以上の閾値以上であるならば、無駄な再送バッファが存在しうるということを示すため、例えば、図１３（Ａ）、（Ｂ）に示すように、書き込み限界値を減少させ、バッファの折り返し位置を変更することにより、再送バッファの空き領域のサイズを減少させる（ステップＳ７５）。
【００６５】
次に、最小空き領域レジスタに従って再送バッファサイズを調整し（ステップＳ７６）、続いて調整された再送バッファサイズに従って最小空き領域レジスタを調整する（ステップＳ７７）。
【００６６】
このように再送バッファの容量を変化させることで、再送バッファの効率的な利用を実現させ、他の用途に無駄な再送バッファ分のメモリを割り当てることができる。
【００６７】
なお、再送バッファサイズを縮小した場合には、他の共有バッファに領域を割り当てることができる。一例として、例えば、受信バッファ（データリンク層またはトランザクション層）や、トランザクション層送信バッファが挙げられる。
【００６８】
第３実施形態によれば、Ack DLLP送信遅延に基づいて再送バッファのサイズを調整するようにしたので、再送バッファのサイズをつねに最適な大きさに調整できる。
【００６９】
（第４実施形態）
以下に、本発明の第４実施形態を説明する。図１４は、本発明の第４実施形態の概略を説明するための図である。ここでは、送信側コンポーネント１０がTLPを受信側コンポーネント２０に送信したにもかかわらず、Ack DLLPを受信できない場合を想定する。このような場合、送信側コンポーネント１０は受信側コンポーネント２０に対して再送バッファ１０−２内のTLPを再送する（ステップＳＳ１）。受信側コンポーネント２０は再送されたTLPを受信すると（ステップＳＳ２）、正当性判断部２０−１でパケットの正当性を判断し、正当であるならば、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＳ３）。このとき、送信間隔変更部２０−４でAck DLLPの送信間隔を短縮した上で送信側コンポーネント１０に送信する（ステップＳＳ３）。
【００７０】
以下に、上記した手順をより詳細に説明する。PCI Expressでは、送信側コンポーネント１０がTLP送信後に一定期間以上、Ack DLLPを受信できない場合、送信側コンポーネント１０は、再送バッファ内にありまだ承認されていないTLPを再送する。このような状況はノイズなどの影響でレーンの状態が悪く、相手デバイス（受信側コンポーネント２０）がパケットを正確に受信できなかった場合にも発生することだが、相手のデバイスが不完全な状態でTLPを受信していれば、TLPの非承認を示すNak DLLPを送り返すため、それを原因として再送が発生する。
【００７１】
そこで、第４実施形態では受信側コンポーネント２０において、Ack DLLP／Nak DLLPをともに送信していないときに、受信側コンポーネント２０で過去に受信したシーケンス番号のTLPを受信した場合、つまり送信側コンポーネント１０によってTLPを再送していると考えられる場合、受信側コンポーネント２０が以降のAck DLLPの送信遅延を小さくすることで、再送の発生を抑制する。
【００７２】
図１５は第４実施形態の動作を示すフローチャートである。まず、TLPを受信し（ステップＳ８０）、次に、受信コンポーネント２０が過去に受信したシーケンス番号のTLP（Duplicated TLP）か否かを判断し（ステップＳ８１、Ｓ８２）、ＹＥＳの場合には、Ack DLLP送信レイテンシーを短縮し（ステップＳ８４）、その後、複製TLP受信シーケンス(Ack DLLPを送信する)に移行する（ステップＳ８５）。また、ステップＳ８２の判断がＮＯならば、不良TLPシーケンスに移行する（ステップＳ８３）。
【００７３】
第４実施形態によれば、送信側コンポーネント１０によってTLPを再送していると考えられる場合、受信側コンポーネント２０が以降のAck DLLPの送信遅延を小さくするようにしたので、再送の発生を抑制することができる。
【００７４】
（第５実施形態）
以下に、本発明の第５実施形態を説明する。図１６は、本発明の第５実施形態の概略を説明するための図である。ここでは、送信側コンポーネント１０は空き容量確認部１０−５で再送バッファ１０−２の空き領域を検出し、その結果に応じてAck DLLPの送信間隔を変更する指示をパケット送信部１０−１から受信側コンポーネント２０に対して送信する（ステップＳＭ１）。受信側コンポーネント２０はこの指示を受信すると（ステップＳＭ２）、正当性判断部２０−１で指示の正当性を判断し、正当であるならば、送信間隔変更部２０−４においてAck DLLPの送信間隔を当該指示通りに変更し、その後、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＭ３）。
【００７５】
以下に、上記した手順をより詳細に説明する。PCI Express規格では、Ack DLLPの送信遅延は、規定された一定時間内に送信することが定められているが、送信最小間隔については特に規定はない。第１実施形態では、送信側コンポーネント１０から受信側コンポーネント２０に対して、Ack DLLP送信間隔（時間）の調整を指示するようにしたが、この機構の動作が間に合わず、送信側の再送バッファの空き容量が不足してしまった場合には、TLPの送信が停止してしまう。
【００７６】
そこで第５実施形態では、Ack DLLPの送信要求をただちに受信側コンポーネント２０に通知することによって受信側コンポーネント２０がAck DLLPを送信するタイミングを早め、TLP送信を再開させることができるようにする。また、送信側コンポーネント１０は再送バッファ１０−２の空き容量は把握しているから、受信側コンポーネント２０に対してそのつど再送バッファ１０−２の空き領域におうじて数パケット後でのAck DLLP送信を要求することも可能である。
【００７７】
図１７（Ａ）、（Ｂ）は、第５実施形態の動作を示すフローチャートであり、Ack DLLP送信制御（即時／規定TLP受信時）の手順を示している。図１８（Ａ）は送信側コンポーネント１０のフローであり、図１８（Ｂ）は受信側コンポーネント２０のフローである。
【００７８】
送信側コンポーネント１０は、まず、再送バッファがフルか否かを判断し（ステップＳ９０）、ＹＥＳの場合には受信側コンポーネント２０にAck DLLPを送信させるために、VS DLLPなどを発行する（ステップＳ９２）。また、ステップＳ９０の判断がＮＯならば、数個のTLP受信後、Ack DLLPを送信する必要があるか否かを判断し（ステップＳ９１）、ＹＥＳならば数個のTLP受信後にAck DLLPを発行させるために  VS DLLPを発行する（ステップＳ９３）。ステップＳ９１の判断がＮＯならばステップＳ９０に戻る。
【００７９】
次に、受信側コンポーネント２０のフローにおいて、まず受信したVS DLLPがAck DLLPの発行を要求するか否かを判断する（ステップＳ１００）。ここでＹＥＳの場合にはAck DLLPを直ちに発行する（ステップＳ１０２）。また、ＮＯならば、受信したVS DLLPが数個のTLPの受信後に、Ack DLLPを発行するか否かを判断する（ステップＳ１０１）。ここでＹＥＳの場合には数個のTLPの受信後にAck DLLPを発行する（ステップＳ１０３）。ＮＯの場合にはステップＳ１００に戻る。
【００８０】
（第６実施形態）
以下に本発明の第６実施形態を説明する。第１実施形態では、送信側コンポーネントが時間に基づいて受信側コンポーネントのAck DLLPの送信遅延を制御する方法を示したが、別の制御方法として、パケット数によって制御する方法が考えられる。送信側コンポーネント１０は例えば、VD Msg、VS DLLPを使用して何パケット周期でAck DLLPを欲しいか事前にパケット送信部１０−１を介して受信側コンポーネント２０に通知する（ステップＳＷ１）。受信側コンポーネント２０は受信したパケット（ステップＳＷ２）の正当性を正当性判断部２０−１で判断し、パケットが正当であるならば、パケット計数部２０−５において受信したパケットの個数をカウントする。指定された個数を受信した段階で、確認応答送信部２０−２からAck DLLPを送信側コンポーネント１０に送信する（ステップＳＷ３）。
【００８１】
図１９は、第６実施形態の方法を用いるVS DLLPの実装例を示している。
【００８２】
なお、上記の実施形態において説明したAck DLLPの送信遅延の制御方法は、必ずしも個別に使用しなければならないものではなく、複数の制御方法を実装し、組み合わせて使用しても構わない。
【図面の簡単な説明】
【００８３】
【図１】再送バッファとAck DLLP(Data Link Layer Packet)によるTLP承認の手順を説明するための図である。
【図２】再送バッファの内容の一例を示す図である。
【図３】本発明の第１実施形態の概略を説明するための図である。
【図４】VS DLLPでのAck DLLP送信遅延制御の実装例を示す図である。
【図５】第１実施形態についてのTLP送信側の処理についてのフローチャートである。
【図６】第１実施形態についてのTLP受信側の処理についてのフローチャートである。
【図７】本発明の第２実施形態の概略を説明するための図である。
【図８】第２実施形態の動作を示すフローチャートである。
【図９】本発明の第３実施形態の概略を説明するための図である。
【図１０】第３実施形態の動作を示すフローチャートである。
【図１１】一般的なリングバッファを用いた再送バッファの実装概略を説明するための図である。
【図１２】ポインタベースの制御フローチャートである。
【図１３】書き込み限界値を減少させ、バッファの折り返し位置を変更するようすを示す図である。
【図１４】本発明の第４実施形態の概略を説明するための図である。
【図１５】第４実施形態の動作を示すフローチャートである。
【図１６】本発明の第５実施形態の概略を説明するための図である。
【図１７】第５実施形態の動作を示すフローチャートである。
【図１８】（Ａ）は送信側コンポーネント１０のフローであり、（Ｂ）は受信側コンポーネント２０のフローである。
【図１９】第６実施形態の方法を用いるVS DLLPの実装例を示す図である。
【符号の説明】
【００８４】
１０  送信側コンポーネント
１０−１  送信バッファ
１０−２  再送バッファ
１０−３  ACK DLLP受信遅延／受信間隔測定部
１１  受信バッファ
１２  再送バッファ
２０  受信側コンポーネント
２０−１  正当性判断部
２０−２  確認応答送信部
２１  再送バッファ
２２  受信バッファ
【図１】
2007180611.tif 000003
【図２】
2007180611.tif 000004
【図３】
2007180611.tif 000005
【図４】
2007180611.tif 000006
【図５】
2007180611.tif 000007
【図６】
2007180611.tif 000008
【図７】
2007180611.tif 000009
【図８】
2007180611.tif 000010
【図９】
2007180611.tif 000011
【図１０】
2007180611.tif 000012
【図１１】
2007180611.tif 000013
【図１２】
2007180611.tif 000014
【図１３】
2007180611.tif 000015
【図１４】
2007180611.tif 000016
【図１５】
2007180611.tif 000017
【図１６】
2007180611.tif 000018
【図１７】
2007180611.tif 000019
【図１８】
2007180611.tif 000020
【図１９】
2007180611.tif 000021