(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-28
(54)【発明の名称】スケジューリングサイクルを調整する方法およびネットワークデバイス
(51)【国際特許分類】
H04L 47/56 20220101AFI20240521BHJP
【FI】
H04L47/56
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023574667
(86)(22)【出願日】2021-12-29
(85)【翻訳文提出日】2023-12-04
(86)【国際出願番号】 CN2021142635
(87)【国際公開番号】W WO2023123102
(87)【国際公開日】2023-07-06
(81)【指定国・地域】
(71)【出願人】
【識別番号】518056748
【氏名又は名称】新華三技術有限公司
【氏名又は名称原語表記】NEW H3C TECHNOLOGIES CO., LTD.
(74)【代理人】
【識別番号】110002468
【氏名又は名称】弁理士法人後藤特許事務所
(74)【代理人】
【識別番号】100230086
【氏名又は名称】譚 粟元
(72)【発明者】
【氏名】郭 道栄
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA02
5K030HA08
5K030HD03
5K030JA11
5K030KA02
5K030KX12
5K030KX13
5K030KX18
5K030MB06
(57)【要約】
本発明は、スケジューリングサイクルを調整する方法およびネットワークデバイスを提供する。当該方法は、第2のネットワークデバイスから送信されたパケットを受信した後、前記パケットが前記第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルを決定し、前記パケットが第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルを決定するステップと、第1のネットワークデバイス上の、送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定するステップであって、前記パケットは、目標スケジューリングサイクルに対応するCQに対応する、ステップと、前記受信スケジューリングサイクルと前記目標スケジューリングサイクルとの間の間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があると決定した場合、第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を初期時間長から目標時間長に調整するステップと、を含む。本発明の技術案により、決定論的ネットワークのスケジューリングサイクルを動的に制御することで、CSQFは厳密な周波数同期に依存せず、リンク伝送遅延の変動に適応できるようになり、広域ネットワークにおけるCSQFの適応性が大幅に向上する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
スケジューリングサイクルを調整する方法であって、第1のネットワークデバイスに適用され、
第2のネットワークデバイスから送信されたパケットを受信した後、前記パケットが前記第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルを決定し、前記パケットが前記第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルを決定するステップと、
前記第1のネットワークデバイス上の、前記送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定するステップであって、前記パケットは、前記目標スケジューリングサイクルに対応するサイクルキュー(CQ)に対応する、ステップと、
前記受信スケジューリングサイクルと前記目標スケジューリングサイクルとの間の間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があると決定した場合、前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップと、を含む、
ことを特徴とするスケジューリングサイクルを調整する方法。
【請求項2】
前記第1のネットワークデバイス上の、前記送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定するステップは、
前記第2のネットワークデバイスのノード識別子と、前記パケットに対応するエグレスインタフェース情報とを取得するステップと、
前記ノード識別子および前記エグレスインタフェース情報に基づいて、設定されたセッション情報テーブルを問い合せ、前記第2のネットワークデバイスの指定スケジューリングサイクルに対応する関連スケジューリングサイクルを得るステップであって、前記セッション情報テーブルは、ノード識別子と、エグレスインタフェース情報と、関連スケジューリングサイクルとの間のマッピング関係を含む、ステップと、
前記送信スケジューリングサイクル、前記関連スケジューリングサイクル、および前記指定スケジューリングサイクルに基づいて、前記第1のネットワークデバイス上の、前記送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定するステップと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記受信スケジューリングサイクルと前記目標スケジューリングサイクルとの間の間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があると決定するステップは、
前記受信スケジューリングサイクルが前記目標スケジューリングサイクルの前にあり、かつ、前記間隔サイクル数が第1の閾値より大きい場合、スケジューリングサイクルの初期時間長を調整する必要があると決定し、
前記受信スケジューリングサイクルが前記目標スケジューリングサイクルの後にあり、かつ、前記間隔サイクル数が第2の閾値より大きい場合、スケジューリングサイクルの初期時間長を調整する必要があると決定するステップを含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップは、
前記受信スケジューリングサイクルが前記目標スケジューリングサイクルの前にある場合、設定された時間長調整量に基づいて前記初期時間長に対して減少調整を行い、調整後の目標時間長を得、
前記受信スケジューリングサイクルが前記目標スケジューリングサイクルの後にある場合、当該時間長調整量に基づいて前記初期時間長に対して増加調整を行い、調整後の目標時間長を得るステップを含む、
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップは、
前記初期時間長に対応する第1のクロックカウント数、設定された時間長調整量、および前記間隔サイクル数に基づいて、スケジューリングサイクルの総調整数Kを決定し、前記第1のネットワークデバイス上のK個の連続するスケジューリングサイクルの実際の時間長を前記目標時間長に更新するステップを含み、
前記第1のネットワークデバイス上のK個の連続するスケジューリングサイクルの実際の時間長を前記目標時間長に更新した後、
前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記目標時間長から前記初期時間長に更新するステップをさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項6】
前記第1のネットワークデバイスは、クロック入力信号を受信するためのハードウェアタイマを含み、前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップは、
前記ハードウェアタイマにより、前記クロック入力信号に基づいてクロック信号蓄積数を決定し、前記クロック信号蓄積数が前記目標時間長に対応する第2のクロックカウント数に達したときにトリガ信号を生成するステップを含み、
ここで、前記トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、前記トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる、
ことを特徴とする請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記第1のネットワークデバイスは、クロック入力信号を受信するための制御ロジックと、前記初期時間長に対応する第1のクロックカウント数を記憶するための第1のレジスタと、設定された時間長調整量を記憶するための第2のレジスタとを含み、前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップは、
前記制御ロジックにより、前記第1のクロックカウント数と前記時間長調整量とに基づいて、前記目標時間長に対応する第2のクロックカウント数を決定し、前記クロック入力信号に基づいてクロック信号蓄積数を決定し、前記クロック信号蓄積数が前記第2のクロックカウント数に達したときにトリガ信号を生成するステップを含み、
ここで、前記トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、前記トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる、
ことを特徴とする請求項1~5のいずれか一項に記載の方法。
【請求項8】
前記第1のネットワークデバイスは、スケジューリングサイクルの総調整数Kを記憶するための第3のレジスタを含み、さらに、
前記制御ロジックにより、前記第2のクロックカウント数に基づいてK個のトリガ信号を生成した後、前記クロック入力信号に基づいてクロック信号蓄積数を決定し続け、前記クロック信号蓄積数が前記初期時間長に対応する前記第1のクロックカウント数に達したときにトリガ信号を生成するステップを含む、
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記第1のネットワークデバイスは、クロック入力信号を受信するためのハードウェアモジュールと、転送モジュールとを含み、前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップは、
前記ハードウェアモジュールにより、クロック入力信号を受信するたびに、前記クロック入力信号に基づいてクロック信号蓄積数を決定し、前記クロック信号蓄積数を前記ハードウェアモジュールのレジスタに格納するステップと、
現在のスケジューリングサイクルの開始時に、前記転送モジュールにより、前記目標時間長に対応する第2のクロックカウント数に基づいて、前記現在のスケジューリングサイクルのクロック信号目標数を決定するステップと、
前記転送モジュールにより、前記レジスタにクロック信号蓄積数を問い合わせ、得られたクロック信号蓄積数が前記クロック信号目標数に達した場合、前記現在のスケジューリングサイクルが終了したと判断し、前記現在のスケジューリングサイクルの次のスケジューリングサイクルを現在のスケジューリングサイクルに更新するステップと、を含む、
ことを特徴とする請求項1~5のいずれか一項に記載の方法。
【請求項10】
前記パケットは、テストパケットまたは決定論的フローに属するデータパケットであり、前記パケットがデータパケットである場合、さらに、
前記データパケットを前記目標スケジューリングサイクルに対応するサイクルキュー(CQ)に格納し、前記目標スケジューリングサイクル内で、前記目標スケジューリングサイクルに対応するCQ内のデータパケットを外部デバイスに送信するステップを含む、
ことを特徴とする請求項1~5のいずれか一項に記載の方法。
【請求項11】
ネットワークデバイスであって、プロセッサと、機械可読記憶媒体とを含み、
前記機械可読記憶媒体には前記プロセッサによって実行可能な機械実行可能命令が記憶されており、
前記プロセッサは、請求項1~10のいずれか一項に記載の方法を実施するように機械実行可能命令を実行するために使用される、ことを特徴とするネットワークデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は通信技術の分野に関し、特に、スケジューリングサイクルを調整する方法およびネットワークデバイスに関する。
【背景技術】
【0002】
決定論的ネットワーク(DetNet:Deterministic Network)は、ネットワークドメインにおいてベアラサービスに対して決定論的サービス機能を提供することができる。これらの決定論的サービス機能は、遅延、パケット損失率などを含み得る。タイムセンシティブネットワーキング(TSN:Time Sensitive Networking)は、ローカルエリアネットワークに基づいて実現される決定論的ネットワークである。TSNでは、サイクリックキューイングと転送(CQF:Cyclic Queuing and Forwarding)を使用することで、転送層での決定論的伝送を保証し、ベアラサービスに対して決定論的サービス機能を提供する。説明を簡単にするために、決定論的ネットワークで伝送される決定論的サービス機能(遅延やパケット損失率など)を持つサービスフローを決定論的フローと呼ぶ。決定論的フローとは異なる他のサービスフローについては、ベストエフォート方式で転送することができる。従って、決定論的フローとは異なる他のサービスフローをベストエフォートフローと呼ぶ。
【発明の概要】
【0003】
本発明は、スケジューリングサイクルを調整する方法を提供し、当該方法は、第1のネットワークデバイスに適用され、
第2のネットワークデバイスから送信されたパケットを受信した後、前記パケットが前記第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルを決定し、前記パケットが第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルを決定するステップと、
前記第1のネットワークデバイス上の、前記送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定するステップであって、前記パケットは、前記目標スケジューリングサイクルに対応するサイクルキューCQに対応する、ステップと、
前記受信スケジューリングサイクルと前記目標スケジューリングサイクルとの間の間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があると決定した場合、前記第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を前記初期時間長から目標時間長に調整するステップと、を含む。
【0004】
本発明は、ネットワークデバイスを提供し、当該ネットワークデバイスは、プロセッサと、機械可読記憶媒体とを含み、
前記機械可読記憶媒体にはプロセッサによって実行可能な機械実行可能命令が記憶されており、
前記プロセッサは、本発明の上記実施形態に開示されるスケジューリングサイクルを調整する方法を実施するように機械実行可能命令を実行するために使用される。
【発明の効果】
【0005】
以上の技術的解決手段からわかるように、本発明の実施形態では、サイクル指定キューイングと転送(CSQF:Cycle Specified Queuing and Forwarding)に基づいて決定論的ネットワークのパケット伝送を実現し、決定論的ネットワークのスケジューリングサイクルの実際の時間長を調整する(すなわち、初期時間長から目標時間長まで調整する)ことにより、決定論的ネットワークのスケジューリングサイクルを動的に制御する。これにより、CSQFは厳密な周波数同期に依存せず、リンク伝送遅延の変動に適応できるようになり、広域ネットワークにおけるCSQFの適応性が大幅に向上する。CSQFを実現することで、進行中の伝送サービスに影響を与えることなく、決定論的伝送能力を提供することができる。
【図面の簡単な説明】
【0006】
【
図1】本発明の一実施形態によるCSQFの動作原理を示す概略図である。
【
図2】本発明の一実施形態によるCSQFとCQFの比較を示す概略図である。
【
図3A】本発明の一実施形態によるスケジューリングサイクルのマッピング関係を示す概略図である。
【
図3B】本発明の一実施形態によるスケジューリングサイクルのマッピング関係を示す概略図である。
【
図3C】本発明の一実施形態によるスケジューリングサイクルのマッピング関係を示す概略図である。
【
図4】本発明の一実施形態によるスケジューリングサイクルを調整する方法を示すフローチャートである。
【
図5A】本発明の一実施形態によるCSQFのスケジューリングサイクルの分割を示す概略図である。
【
図5B】本発明の一実施形態によるCSQFのスケジューリングサイクルの分割を示す概略図である。
【
図6A】本発明の一実施形態によるスケジューリングサイクルを示す概略図である。
【
図6B】本発明の一実施形態によるスケジューリングサイクルを示す概略図である。
【
図6C】本発明の一実施形態によるスケジューリングサイクルを示す概略図である。
【
図7A】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【
図7B】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【
図7C】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【
図7D】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【
図7E】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【
図7F】本発明の一実施形態によるネットワークデバイスの構成および処理フローを示す概略図である。
【発明を実施するための形態】
【0007】
TSN(Time Sensitive Networking)は、ローカルエリアネットワークに基づいて実現される決定論的ネットワークである。TSNでは、CQF(Cyclic Queuing and Forwarding)を使用することで、転送層での決定論的伝送を保証し、ベアラサービスに対して決定論的サービス機能を提供する。もちろん、CQFは決定論的サービスを提供するための一例に過ぎず、他の方法で転送層での決定論的伝送を保証してもよく、ここでは限定しない。本実施形態では、CSQFに近い技術としてCQFを例にとって説明する。CQFの基本的な動作原理は、各ネットワークデバイスのエグレス(egress)インタフェースが2つのキューに関連付けられ、時間的領域を2つのサイクルに分割し、この2つのキューはこの2つのサイクルで送受信を交互に行うものである。例えば、この2つのキューをそれぞれキューQ1とキューQ2とし、この2つのサイクルをそれぞれサイクルT0とサイクルT1とする。サイクルT0では、キューQ1が送信を行い、キューQ2が受信を行い(キューQ1の受信はオフ、キューQ2の受信はオン、キューQ1の送信はオン、キューQ2の送信はオフ)、サイクルT1では、キューQ1が受信を行い、キューQ2が送信を行う。このように、キューQ1とキューQ2は、奇数サイクルと偶数サイクルで送受信を交互に行うことができる。
【0008】
CQFでは、1ホップのパケット伝送を1サイクルで行うことが必要である。パケットはあるネットワークデバイスのあるサイクルで受信され、次のサイクルで送信される。次のホップのネットワークデバイスは、次のサイクルで当該パケットを受信し、以降も同様である。このように、サイクルTが決められた値であるとき、経路上のパケットの伝送遅延(エンドツーエンド伝送遅延)が決定される。当該伝送遅延の最小値は(H-1)*Tであり、最大値は(H+1)*Tである。ここで、Hは経路上で通過するネットワークデバイスの総数を表すホップ数である。
【0009】
CQFはローカルエリアネットワークに基づく技術であり、広域ネットワークでは実現できない。広域ネットワークの決定論的伝送を実現するために、CQFに基づいてサイクル指定キューイングと転送(CSQF:Cycle Specified Queuing and Forwarding)が提案されている。CSQFは、セグメントルーティング(SR:Segment Routing)やSRv6と組み合わせて使用され、広域ネットワークの決定論的伝送を実現する。ここで、SRはマルチプロトコルラベルスイッチング(MPLS:Multi-Protocol Label Switching)ベースのSRであってもよく、SRv6はIPV6ベースのSRv6であってもよい。
【0010】
図1は、CSQFの動作原理を示す概略図である。コントローラ10は、送信能力、インタフェース、サイクル数、ノード内の最大ジッタなど、各ネットワークデバイスの情報を収集するために使用される。送信側と受信側との間の決定論的伝送要求に対して、コントローラ10は、計算によって十分な伝送リソースがあると判断した場合、伝送経路を割り当て、伝送経路の情報をエッジノードに配布する。
図1に示すように、送信側と受信側との間の伝送経路は、ネットワークデバイス11-ネットワークデバイス12-ネットワークデバイス13-ネットワークデバイス14であってもよく、当該伝送経路のエッジノード(すなわち、最初のネットワークデバイス)はネットワークデバイス11である。ネットワークデバイス11は、転送すべきパケット(packet)を受信すると、伝送経路上のネットワークデバイスのノード識別子(例えば、SRv6のセグメント識別子(SID:Segment identifier)における位置(Locator))、ネットワークデバイスのエグレスインタフェースや各ネットワークデバイスで送信されるサイクルなど、伝送経路上の各ネットワークデバイスの情報をパケットに付加する。このように、パケットがあるネットワークデバイスに到着すると、当該ネットワークデバイスは、対応するインタフェースとサイクルの情報を取得し、当該パケットを当該サイクルに対応するキューに格納することができる。各ネットワークデバイスは、各キュー内のパケットを一定のサイクルに従って周期的に送信してもよく、すなわち、各キューが1サイクルに対応し、当該サイクルで当該キュー内のパケットを送信してもよい。ネットワークデバイスのサイクルが一定の方法に基づいているため、ネットワークデバイス11では、送信側の各パケットの指定サイクルが決まっており、各ネットワークデバイス上の送信側から受信側までのパケット転送のサイクルも決まっている。従って、パケット全体の遅延も決まっており、決定論的伝送が実現される。
【0011】
以上から分かるように、CSQFとCQFの実現プロセスは類似しており、両者の違いは、以下の点である。CSQFでは、少なくとも3つのキュー(例えば、3つ、6つ、8つ、9つ、10つ、12つ、15つのキューなど)が必要であり、各サイクルで、1つのキューのみが送信状態にあり、他のキューは受信状態にある。CQFでは、各ネットワークデバイスのサイクルが位相同期を含めて厳密に同期していることが要求されるのに対し、CSQFでは、周波数同期のみが要求され、位相同期が要求されない。また、あるホップの伝送遅延が1サイクル内に収まらない場合、次のサイクルの伝送キューを指定することができ、これにより、広域ネットワーク内の異なるネットワークデバイスの伝送遅延に適応する。
【0012】
図2は、CSQFとCQFの比較を示す概略図である。CQFについては、あるパケットの伝送プロセスにおいて、ネットワークデバイス11がサイクル1で当該パケットを送信し、ネットワークデバイス12がサイクル1で当該パケットを受信してサイクル2で当該パケットを送信し、ネットワークデバイス13がサイクル2で当該パケットを受信してサイクル3で当該パケットを送信し、ネットワークデバイス14がサイクル3で当該パケットを受信してサイクル4で当該パケットを送信する。CSQFについては、CSQFが3つのキューを必要とすることを例に、あるパケットの伝送プロセスにおいて、ネットワークデバイス11がサイクル1で当該パケットを送信し、ネットワークデバイス12がサイクル1またはサイクル2で当該パケットを受信してサイクル3で当該パケットを送信し、ネットワークデバイス13がサイクル3で当該パケットを受信してサイクル4で当該パケットを送信し、ネットワークデバイス14がサイクル4またはサイクル5で当該パケットを受信してサイクル6で当該パケットを送信する。
【0013】
CSQFの実現プロセスでは、各ネットワークデバイスが一定の長さをサイクルとするタイムスライスで分割し、決定論的サービスフローに対して統一的なフロースケジューリングを行うことにより、決定されたタイムスライスでフローが転送されるため、パケット全体の遅延が決定されることを保証できる。伝送経路上の各ネットワークデバイスについて、送信時間が特定のタイムスライス内に制限されることで、当該ネットワークデバイス上のパケットの遅延ジッタが決定される。ネットワークデバイスの数が増えても、前のネットワークデバイスのジッタが次のネットワークデバイスのジッタ遅延に影響することはない。もちろん、ネットワークデバイスの総数が増加すると、パケット転送の総遅延も増加する。パケットが通過する経路の距離が増加すると、パケット転送の総遅延も増加する可能性がある。
【0014】
最後のネットワークデバイスでは、パケットは決定されたタイムスライス内にのみ送受信され、つまり、最後のネットワークデバイス上のパケットのジッタ範囲は、1つの決定されたタイムスライス内に制限される。
【0015】
CSQFは広域ネットワークでの決定論的伝送を実現し、ベアラサービスに対して決定論的サービス機能を提供することができるが、先行技術では、各ネットワークデバイスがどのようにCSQFを実現するかについての合理的な解決策がない。
【0016】
例えば、CSQFのスケジューリングサイクルは、周波数同期を満たす必要があり、そうでなければ、時間の経過とともに累積誤差が発生し、上流と下流のネットワークデバイス間のスケジューリングサイクルの無効につながる。
図3Aは、周波数の非同期による累積誤差の発生を示す概略図である。ネットワークデバイス1とネットワークデバイス2にはそれぞれ独立したクロックソースがあり、ネットワークデバイス1とネットワークデバイス2との間に同期イーサネット(SyncE:Synchronous Ethernet)メカニズムおよび高精度時刻同期プロトコル(PTP:Precision Time Synchronization Protocol)ハードウェアサポートがない、すなわち、ネットワークデバイス1とネットワークデバイス2との間でクロック同期を行うことができないと仮定する。このため、ネットワークデバイス1とネットワークデバイス2との間に周波数差がある場合、それぞれのクロックソースを用いてCSQFのスケジューリングサイクルを実現する際に、ネットワークデバイス1とネットワークデバイス2のスケジューリングサイクル長が異なることになる。この差は非常に小さいが、時間の経過と誤差の累積に伴い、スケジューリングサイクルのマッピング関係が変化し、最終的に遅延ジャンプが発生し、比較的大きなジッタが発生する。
【0017】
さらに、リンクが熱膨張(カテナリーサギングとも呼ばれる)の影響を受けた場合、ブロードバンド銅線(例えば、ケーブルネットワーク)の長さも、昼と夜の温度の影響を受け、最大20%の変化をもたらす可能性がある。その結果、ネットワークデバイス間の伝送遅延が変化し、これによりスケジューリングサイクルのマッピング関係が変化し、最終的に遅延ジャンプが発生し、比較的大きなジッタが発生する可能性がある。
【0018】
図3Bは、ネットワークデバイス間のスケジューリングサイクルのマッピング関係を示す概略図である。ネットワークデバイス1のスケジューリングサイクルa0とネットワークデバイス2のスケジューリングサイクルb3とはマッピング関係にある。すなわち、ネットワークデバイス1がスケジューリングサイクルa0で送信したパケットは、ネットワークデバイス2によって、スケジューリングサイクルb3に対応するサイクルキュー(CQ:Cycle Queue)に格納されてもよい。また、スケジューリングサイクルa0でネットワークデバイス1が送信したパケットがネットワークデバイス2に到着したとき、ネットワークデバイス2がスケジューリングサイクルb2をスケジューリングしている場合、パケットをスケジューリングサイクルb3に対応するCQに格納することができる。したがって、上記のマッピング関係は合理的である。
【0019】
ネットワークデバイス1とネットワークデバイス2との間のスケジューリングサイクルの周波数は同期しておらず、連続的に累積されるため、一定の時間が経過した後、
図3Cに示すように、ネットワークデバイス1がスケジューリングサイクルa0で送信したパケットがネットワークデバイス2に到着したとき、ネットワークデバイス2がスケジューリングサイクルb4をスケジューリングしている場合、パケットをスケジューリングサイクルb3に対応するCQに格納することができない。すなわち、上記のマッピング関係は合理的ではなく、スケジューリングサイクルa0とスケジューリングサイクルb3とのマッピング関係が無効になる。要約すると、誤差の累積により、ネットワークデバイス1とネットワークデバイス2間のスケジューリングサイクルが対応しなくなり、大きなジッタや輻輳パケットロスが発生する可能性がある。これにより、CSQFの実現が理論的な効果を得ることができず、CSQFが使用できなくなる可能性がある。
【0020】
例示的に、CSQFキューは、送信キュー(SQ:Sending Queue)、受信キュー(RQ:Receiving Queue)、および許容キュー(TQ:Tolerating Queue)を含み得る。SQはCSQFで送信されているキューであり、RQはCSQFで受信されているキューである。受信したパケットがジッタなどによってRQに正常に入らない場合に、TQに入る。本実施形態では、説明の便宜上、SQ、RQ、TQを総称してCQと呼ぶ。すなわちスケジューリングサイクルはCQに対応する。
【0021】
例示的に、スケジューリングサイクルは、スケジューリングタイムスロットとも呼ばれる。例えば、上記各スケジューリングサイクルは、スケジューリングタイムスロットであってもよく、これに限定されない。本実施形態では、説明の便宜上、スケジューリングサイクルを例に説明する。
【0022】
マッピング関係の無効の問題に対して、本発明の実施形態は、CSQFに基づく広域決定論的ネットワークの実現方法を提供し、当該方法により、スケジューリングサイクル間のマッピング関係の無効を回避し、CSQFが厳密な周波数同期に依存せず、リンク伝送の遅延変動に適応することができる。これにより、広域ネットワークにおけるCSQFの適応性を大幅に向上させ、また、CSQFを実現することで決定論的伝送能力を提供することができる。
【0023】
本発明の一実施形態は、スケジューリングサイクルを調整する方法を提供する。当該方法は、CSQFを用いて決定論的ネットワークを実現するシステムに適用でき、スシステムは、複数のネットワークデバイス(ネットワークデバイスは、ネットワークノードまたは転送ノードとも呼ばれる)を含み得、2つの隣接するネットワークデバイスを、第1のネットワークデバイスおよび第2のネットワークデバイスと呼び、第2のネットワークデバイスは、パケットを第1のネットワークデバイスに送信する。
図4は、スケジューリングサイクルを調整する方法示すフローチャートである。当該方法は、第1のネットワークデバイスに適用でき、以下のステップを含み得る。
【0024】
ステップ401において、第2のネットワークデバイスから送信されたパケットを受信した後、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルを決定し、パケットが第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルを決定する。
【0025】
例示的に、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルについて、当該パケットが当該送信スケジューリングサイクル内に第2のネットワークデバイスによって送信されることを表す。例えば、第2のネットワークデバイスがあるスケジューリングサイクルで当該パケットを送信する場合、区別の便宜上、このスケジューリングサイクルを送信スケジューリングサイクルと呼ぶことができる。また、パケットが第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルについて、当該パケットが当該受信スケジューリングサイクル内に第1のネットワークデバイスによって受信されることを表す。例えば、第1のネットワークデバイスは、あるスケジューリングサイクルで第2のネットワークデバイスから送信されたパケットを受信する場合、区別の便宜上、このスケジューリングサイクルを受信スケジューリングサイクルと呼ぶことができる。
【0026】
例示的に、第2のネットワークデバイスは指定スケジューリングサイクルでパケットを送信し、第1のネットワークデバイスは、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルが指定スケジューリングサイクルであると決定する。例えば、第2のネットワークデバイスはスケジューリングサイクルa0で固定的にパケットを送信する(スケジューリングサイクルa0でのみパケットを送信する)場合、第2のネットワークデバイスの指定スケジューリングサイクルがスケジューリングサイクルa0である。これに基づいて、第1のネットワークデバイスは、当該送信スケジューリングサイクルがスケジューリングサイクルa0であると決定する。あるいは、第2のネットワークデバイスは、パケットを送信する際に、送信スケジューリングサイクルのサイクル情報(サイクル識別子など)をパケットに付加し、第1のネットワークデバイスは、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルが当該サイクル情報に対応するスケジューリングサイクルであると決定する。例えば、第2のネットワークデバイスがスケジューリングサイクルa0でパケットを送信する場合、スケジューリングサイクルa0のサイクル情報をパケットに付加してもよい。これに基づいて、第1のネットワークデバイスは、当該送信スケジューリングサイクルが当該サイクル情報に対応するスケジューリングサイクルa0であると決定する。
【0027】
例示的に、第1のネットワークデバイスは、第2のネットワークデバイスから送信されたパケットを受信した後、第1のネットワークデバイス上で実行されているスケジューリングサイクルを決定し、このスケジューリングサイクルは、パケットが第1のネットワークデバイス上で受信されるときの受信スケジューリングサイクルである。例えば、第1のネットワークデバイスはパケットを受信したとき、第1のネットワークデバイス上でスケジューリングサイクルb2が実行されている場合、受信スケジューリングサイクルがスケジューリングサイクルb2であると決定してもよい。
【0028】
ステップ402において、第1のネットワークデバイス上の、当該送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定する。ここで、パケットは目標スケジューリングサイクルに対応するCQに対応し、例えば、パケットは目標スケジューリングサイクルに対応するCQに格納される。
【0029】
例示的に、第2のネットワークデバイスのスケジューリングサイクルと第1のネットワークデバイスのスケジューリングサイクルとの間のマッピング関係を事前に設定してもよい。例えば、第2のネットワークデバイスのスケジューリングサイクルa0と第1のネットワークデバイスのスケジューリングサイクルb3とがマッピング関係にある場合、第2のネットワークデバイスがスケジューリングサイクルa0においてパケットを送信する場合、パケットがスケジューリングサイクルb3に対応するCQに格納される必要があることを表す。これに基づいて、第1のネットワークデバイスは、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルを決定した後、当該送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定することができる。例えば、送信スケジューリングサイクルがスケジューリングサイクルa0である場合、目標スケジューリングサイクルはスケジューリングサイクルb3となる。
【0030】
可能な一実施形態では、第1のネットワークデバイスは、ノード識別子(例えば、ネットワークデバイスの一意の識別子)と、エグレスインタフェース情報(例えば、第1のネットワークデバイスのエグレスインタフェース識別子)と、関連スケジューリングサイクルとの間のマッピング関係を含むセッション情報テーブルを維持してもよい。当該関連スケジューリングサイクルは、当該ノード識別子に対応するネットワークデバイスの指定スケジューリングサイクルに対応する関連スケジューリングサイクルである。すなわち、指定スケジューリングサイクルで送信されたパケットは、この関連スケジューリングサイクルに対応するCQに格納される。
【0031】
これに基づいて、第1のネットワークデバイスは、第2のネットワークデバイスから送信されたパケットを受信した後、第2のネットワークデバイスのノード識別子と、当該パケットに対応するエグレスインタフェース情報(当該パケットがこのエグレスインタフェース情報に対応するエグレスインタフェースを介して送信されることを表す)とを取得してもよい。例えば、当該パケットから当該ノード識別子と当該エグレスインタフェース情報を解析する。第1のネットワークデバイスは、当該ノード識別子および当該エグレスインタフェース情報に基づいて、設定されたセッション情報テーブルを問い合せ、第2のネットワークデバイスの指定スケジューリングサイクルに対応する関連スケジューリングサイクルを得る。例えば、セッション情報テーブルには、ノード識別子と、エグレスインタフェース情報と、関連スケジューリングサイクルとの間のマッピング関係が含まれているため、当該セッション情報テーブルを問い合わせることにより、関連スケジューリングサイクルを取得することができる。
【0032】
第1のネットワークデバイスは、送信スケジューリングサイクル、関連スケジューリングサイクル、および指定スケジューリングサイクルに基づいて、第1のネットワークデバイス上の、当該送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定する。ここで、送信スケジューリングサイクルと指定スケジューリングサイクルとの間の間隔サイクル数は、目標スケジューリングサイクルと関連スケジューリングサイクルとの間の間隔サイクル数と等しくてもよい。例えば、第2のネットワークデバイスの指定スケジューリングサイクルをスケジューリングサイクルa0とし、第1のネットワークデバイスの関連スケジューリングサイクルをスケジューリングサイクルb3とすると、第2のネットワークデバイスがスケジューリングサイクルa0でパケットを送信する場合、すなわち、送信スケジューリングサイクルがスケジューリングサイクルa0であり、送信スケジューリングサイクルと指定スケジューリングサイクルとの間の間隔サイクル数が0である場合、目標スケジューリングサイクルはスケジューリングサイクルb3となる。また、別の例として、第2のネットワークデバイスがスケジューリングサイクルa1でパケットを送信する場合、すなわち、送信スケジューリングサイクルがスケジューリングサイクルa1であり、送信スケジューリングサイクルと指定スケジューリングサイクルとの間の間隔サイクル数が1である場合、目標スケジューリングサイクルはスケジューリングサイクルb4となる。
【0033】
可能な一実施形態では、第2のネットワークデバイスが第1のネットワークデバイスに送信するパケットについて、当該パケットはテストパケットまたは決定論的フローに属するデータパケットであってもよい。当該パケットがデータパケットである場合、当該データパケットは目標スケジューリングサイクルに対応するCQに格納されてもよい。目標スケジューリングサイクルで、当該目標スケジューリングサイクルに対応するCQ内のデータパケットを外部デバイスに送信する。
【0034】
例えば、決定論的ネットワークのパケット伝送プロセスでは、第2のネットワークデバイスと第1のネットワークデバイスとの間でパケットをやり取りしてもよい。例えば、第2のネットワークデバイスは、ベストエフォートフローに属するデータパケットを第1のネットワークデバイスに送信してもよく、決定論的フローに属するデータパケットを第1のネットワークデバイスに送信してもよい。ベストエフォートフローに属するデータパケットについて、本実施形態では説明を省略する。決定論的フローに属するデータパケットについて、第1のネットワークデバイスは、当該データパケットを受信した後、当該データパケットを目標スケジューリングサイクルに対応するCQに格納してもよい。目標スケジューリングサイクルでは、当該目標スケジューリングサイクルに対応するCQ内のデータパケットを外部デバイスに送信する。これに基づいて、本実施形態では、当該データパケットに基づいてスケジューリングサイクルの調整プロセスをトリガし、すなわち、
図4に示すプロセスに基づいてスケジューリングサイクルの調整を実行する。
【0035】
別の例として、本実施形態では、スケジューリングサイクルを調整するために、第2のネットワークデバイスが第1のネットワークデバイスにテストパケットを送信し、第1のネットワークデバイスは当該テストパケットに基づいてスケジューリングサイクルの調整プロセスをトリガし、すなわち、
図4に示すプロセスに基づいてスケジューリングサイクルの調整を実行してもよい。この場合、第1のネットワークデバイスは、テストパケットを目標スケジューリングサイクルに対応するCQに格納する必要がなく、テストパケットを外部デバイスに送信することもない。このテストパケットは、第1のネットワークデバイスでスケジューリングサイクルの調整プロセスをトリガするためにのみ用いられる。
【0036】
ステップ403において、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があると決定した場合、第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を、当該初期時間長から目標時間長に調整する。すなわち、実際の時間長が目標時間長に更新される。
【0037】
例示的に、受信スケジューリングサイクルと目標スケジューリングサイクルとが決定した後、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数を決定し、当該間隔サイクル数に基づいて、スケジューリングサイクルの初期時間長を調整する必要があるかどうかを決定してもよい。スケジューリングサイクルの初期時間長を調整する必要があると決定した場合、当該初期時間長を目標時間長に調整し、すなわち、スケジューリングサイクルの実際の時間長を、初期時間長から目標時間長に更新する。スケジューリングサイクルの初期時間長を調整する必要がないと決定した場合、スケジューリングサイクルの初期時間長を変更しない、すなわち、スケジューリングサイクルの実際の時間長は初期時間長のままである。
【0038】
例示的に、受信スケジューリングサイクルが目標スケジューリングサイクルの前にあり(つまり、受信スケジューリングサイクルが目標スケジューリングサイクルより早く)、かつ、当該間隔サイクル数が第1の閾値より大きい場合、スケジューリングサイクルの初期時間長を調整する必要があると決定し、受信スケジューリングサイクルが目標スケジューリングサイクルの前にあり、かつ、当該間隔サイクル数が第1の閾値より大きくない場合、スケジューリングサイクルの初期時間長を調整する必要がないと決定する。受信スケジューリングサイクルが目標スケジューリングサイクルの後にあり(つまり、受信スケジューリングサイクルが目標スケジューリングサイクルより遅く)、かつ、当該間隔サイクル数が第2の閾値より大きい場合、スケジューリングサイクルの初期時間長を調整する必要があると決定し、受信スケジューリングサイクルが目標スケジューリングサイクルの後にあり、かつ、当該間隔サイクル数が第2の閾値より大きくない場合、スケジューリングサイクルの初期時間長を調整する必要がないと決定する。ここで、第1の閾値と第2の閾値は同じであっても異なっていてもよい。第1の閾値は、0、1、2などであってもよく、特に限定されない。また、第2の閾値は、0、1、2などであってもよく、特に限定されない。なお、以降の実施形態では、説明の便宜上、第1の閾値と第2の閾値は1であることを例に説明する。
【0039】
例示的に、初期時間長を目標時間長に調整する際、受信スケジューリングサイクルが目標スケジューリングサイクルの前にある場合、設定された時間長調整量(経験に基づいて設定されてもよい)に基づいて初期時間長に対して減少調整を行い、調整後の目標時間長を得、受信スケジューリングサイクルが目標スケジューリングサイクルの後にある場合、当該時間長調整量に基づいて初期時間長に対して増加調整を行い、調整後の目標時間長を得る。
【0040】
例えば、受信スケジューリングサイクルがスケジューリングサイクルb2であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、間隔サイクル数が1であり、受信スケジューリングサイクルが目標スケジューリングサイクルの前にある。間隔サイクル数1が第1の閾値1より大きくないため、スケジューリングサイクルの初期時間長を調整する必要がない。
【0041】
別の例として、受信スケジューリングサイクルがスケジューリングサイクルb1であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、間隔サイクル数が2であり、受信スケジューリングサイクルが目標スケジューリングサイクルの前にある。間隔サイクル数2が第1の閾値1より大きいため、スケジューリングサイクルの初期時間長を調整する必要がある。
【0042】
この場合、受信スケジューリングサイクルが目標スケジューリングサイクルの前にあるため、時間長調整量に基づいて当該初期時間長に対して減少調整を行い、調整後の目標時間長を得てもよい。すなわち、目標時間長は当該初期時間長と当該時間長調整量との差であってもよい。
【0043】
また、例えば、受信スケジューリングサイクルがスケジューリングサイクルb4であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、間隔サイクル数が1であり、受信スケジューリングサイクルが目標スケジューリングサイクルの後にある。間隔サイクル数1が第2の閾値1より大きくないため、スケジューリングサイクルの初期時間長を調整する必要がない。
【0044】
別の例として、受信スケジューリングサイクルがスケジューリングサイクルb5であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、間隔サイクル数が2であり、受信スケジューリングサイクルが目標スケジューリングサイクルの後にある。間隔サイクル数2が第2の閾値1より大きいため、スケジューリングサイクルの初期時間長を調整する必要がある。
【0045】
この場合、受信スケジューリングサイクルが目標スケジューリングサイクルの後にあるため、時間長調整量に基づいて当該初期時間長に対して増加調整を行い、調整後の目標時間長を得てもよい。すなわち、目標時間長は当該初期時間長と当該時間長調整量との和であってもよい。
【0046】
例示的に、第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長が初期時間長である場合、第1のネットワークデバイスは、スケジューリングサイクルb1、スケジューリングサイクルb2、スケジューリングサイクルb3、...を順次含むと仮定し、スケジューリングサイクルb1の終了時刻とスケジューリングサイクルb1の開始時刻との間の間隔が当該初期時間長であり、スケジューリングサイクルb2の終了時刻とスケジューリングサイクルb2の開始時刻(スケジューリングサイクルb2の開始時刻は、スケジューリングサイクルb1の終了時刻である)との間の間隔が当該初期時間長である。以降も同様である。
【0047】
第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長が目標時間長である場合、スケジューリングサイクルb1の終了時刻とスケジューリングサイクルb1の開始時刻との間の間隔が当該目標時間長であり、スケジューリングサイクルb2の終了時刻とスケジューリングサイクルb2の開始時刻との間の間隔が当該目標時間長である。以降も同様である。
【0048】
例示的に、初期時間長に対応する第1のクロックカウント数、設定された時間長調整量、および間隔サイクル数に基づいて、スケジューリングサイクルの総調整数Kを決定し、第1のネットワークデバイス上のK個の連続するスケジューリングサイクルの実際の時間長を目標時間長に更新してもよい(すなわち、初期時間長から目標時間長に更新する)。K個の連続するスケジューリングサイクルの実際の時間長を目標時間長に更新した後、第1のネットワークデバイス上のスケジューリングサイクルの実際の時間長を初期時間長に更新(すなわち、目標時間長から初期時間長に更新する)してもよい。
【0049】
例えば、総調整数Kは、K=第1クロックカウント数*間隔サイクル数/時間長調整量という式で決定することができる。なお、上記式は一例であり、これに限定されない。総調整数Kを取得した後、K個の連続するスケジューリングサイクルの実際の時間長を目標時間長に更新してもよい。
【0050】
例えば、第1のネットワークデバイスは、スケジューリングサイクルb1、スケジューリングサイクルb2、スケジューリングサイクルb3、...を順次含み、スケジューリングサイクルb1の実際の時間長が初期時間長であると仮定する。これに基づいて、スケジューリングサイクルb1においてスケジューリングサイクルの初期時間長を調整する必要があると決定し、初期時間長を目標時間長に調整する場合、スケジューリングサイクルb2の実際の時間長は目標時間長となり、スケジューリングサイクルb3の実際の時間長は目標時間長となる。このように、連続するK個のスケジューリングサイクル(すなわち、スケジューリングサイクルb2から始まるK個のスケジューリングサイクル)の実際の時間長が目標時間長となった後、次回、スケジューリングサイクルの初期時間長を調整する必要があると決定し、当該初期時間長を目標時間長に調整するまで、K+1番目のスケジューリングサイクルの実際の時間長を初期時間長に更新し、各スケジューリングサイクルの実際の時間長は初期時間長となる。
【0051】
以下では、スケジューリングサイクルの調整プロセスについて、具体的な応用シナリオと合わせて説明する。
【0052】
図5Aは、CSQFのスケジューリングサイクルの分割を示す概略図である。第1のネットワークデバイスについて、SQはスケジューリングサイクルb0に対応する送信キューであり、RQはスケジューリングサイクルb0の直後のケジューリングサイクルb1に対応する受信キューであり、TQはスケジューリングサイクルb1の直後のスケジューリングサイクルb2に対応する許容キューである。
【0053】
上記の応用シナリオでは、ジッタなどの原因により、スケジューリングサイクルのマッピング関係が無効になる可能性がある。例えば、第2のネットワークデバイスのスケジューリングサイクルa0が第1のネットワークデバイスのスケジューリングサイクルb1に対応する場合、第2のネットワークデバイスがスケジューリングサイクルa0で送信したパケットに対して、第1のネットワークデバイスがスケジューリングサイクルb0で当該パケットを受信した場合、当該パケットをスケジューリングサイクルb1に対応するRQに格納することができる。しかし、第1のネットワークデバイスがスケジューリングサイクルb2で当該パケットを受信した場合、当該パケットをスケジューリングサイクルb1に対応するRQに格納することはできない。このため、スケジューリングサイクルa0とスケジューリングサイクルb1とのマッピング関係は無効になる。
【0054】
以上の知見から、本発明の実施形態では、スケジューリングサイクルの実際の時間長を調整することにより、スケジューリングサイクルのマッピング関係の無効を回避する。
図5Bは、CSQFのスケジューリングサイクルの分割を示す概略図である。当該応用シナリオでは、CSQFは、例えば、10個のスケジューリングサイクルに対応する10個のキューを含む。第2のネットワークデバイスの10個のスケジューリングサイクルは、スケジューリングサイクルa0、スケジューリングサイクルa1、スケジューリングサイクルa2、...、スケジューリングサイクルa9であり、第1のネットワークデバイスの10個のスケジューリングサイクルは、スケジューリングサイクルb0、スケジューリングサイクルb1、スケジューリングサイクルb2、...、スケジューリングサイクルb9である。もちろん、CSQFのキューの数が3以上である限り、10以上であっても10以下であってもよい。
【0055】
当該応用シナリオでは、パケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルがスケジューリングサイクルa0であり、第1のネットワークデバイス上のスケジューリングサイクルa0に対応する目標スケジューリングサイクルがスケジューリングサイクルb3であると仮定する。すなわち、スケジューリングサイクルa0とスケジューリングサイクルb3とはマッピング関係にある。もちろん、上記のマッピング関係は一例に過ぎず、これに限定されない。なお、区別の便宜上、目標スケジューリングサイクルをAnchorと表記し、ここでAnchorはスケジューリングサイクルb3である。
【0056】
Anchorを基準として、ある程度の範囲で前後方向に拡張して、合理的なジッタ区間とする。例えば、第1の閾値のスケジューリングサイクルで前方に拡張し、第1の閾値をJitter1とし、Jitter1の値を1とし、第2の閾値のスケジューリングサイクルで後方に拡張し、第2の閾値をJitter2とし、Jitter2の値を1としてもよい。このように、合理的なジッタ区間は、スケジューリングサイクルb2、スケジューリングサイクルb3、スケジューリングサイクルb4である。
【0057】
一定の時間が経過した後、第2のネットワークデバイスが第1のネットワークデバイスに送信したパケットについて、当該パケットが第1のネットワークデバイスに到着したとき、第1のネットワークデバイスがスケジューリングサイクルb2、スケジューリングサイクルb3、またはスケジューリングサイクルb4をスケジューリングしている場合、スケジューリングサイクルの初期時間長を調整する必要がないことを示す。当該パケットが第1のネットワークデバイスに到着したとき、第1のネットワークデバイスがスケジューリングサイクルb1をスケジューリングしている場合、パケットが到着するスケジューリングサイクルが相対的に前方にあり、スケジューリングサイクルの初期時間長を調整する必要があることを示す。例えば、パケットが到着するスケジューリングサイクルがスケジューリングサイクルb2、スケジューリングサイクルb3、またはスケジューリングサイクルb4になるように、スケジューリングサイクルの初期時間長を短くする。当該パケットが第1のネットワークデバイスに到着したとき、第1のネットワークデバイスがスケジューリングサイクルb5、スケジューリングサイクルb6、またはスケジューリングサイクルb7をスケジューリングしている場合、パケットが到着するスケジューリングサイクルが相対的に後方にあり、スケジューリングサイクルの初期時間長を調整する必要があることを示す。例えば、パケットが到着するスケジューリングサイクルがスケジューリングサイクルb2、スケジューリングサイクルb3、またはスケジューリングサイクルb4になるように、スケジューリングサイクルの初期時間長を増加する。
【0058】
ここで、スケジューリングサイクルb0とスケジューリングサイクルb1など、合理的なジッタ区間より前のスケジューリングサイクルについて、これらのスケジューリングサイクルが位置する領域を前方調整区間と呼び、Area1と表記する。また、スケジューリングサイクルb5、スケジューリングサイクルb6、およびスケジューリングサイクルb7など、合理的なジッタ区間より後のスケジューリングサイクルについて、これらのスケジューリングサイクルが位置する領域を後方調整区間と呼び、Area2と表記する。
【0059】
大幅な調整による隣接パケット間の過度なジッタを避けるために、本実施形態では、プログレッシブ(progressive)調整の方式を用いて、スケジューリングサイクルの初期時間長を調整してもよい。すなわち、スケジューリングサイクルの総調整数Kを決定し、K個のスケジューリングサイクルを経て初期時間長の調整を完了する。スケジューリングサイクルの初期時間長をCとし、単位をticks(クロックカウント単位)とし、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数をTsNumとし、各スケジューリングサイクルで調整するticks(時間長調整量)をJitter_Adjustmentとする。スケジューリングサイクルの初期時間長を増加する必要がある場合、Jitter_Adjustmentは正の値であり、スケジューリングサイクルの初期時間長を減少する必要がある場合、Jitter_Adjustmentは負の値である。これに基づいて、スケジューリングサイクルの総調整数をAdjust_Counterとし、Adjust_Counter=C*TsNum/|Jitter_Adjustment|となる。
【0060】
スケジューリングサイクルを生成するタイマのクロック周波数が1Gであり、すなわち各tickが1nsであると仮定する。1ns毎(すなわち各tick)に1つのクロック信号が生成される。スケジューリングサイクルの初期時間長を30usとすると、30000個のticksのカウントは1スケジューリングサイクルに対応する。したがって、Cは30000であり、初期時間長に対応する第1のクロックカウント数を表す。受信スケジューリングサイクルがスケジューリングサイクルb1であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数は2であり、すなわちTsNumは2である。
【0061】
受信スケジューリングサイクルが目標スケジューリングサイクルの前にあり、間隔サイクル数2が第1の閾値1より大きいため、時間長調整量Jitter_Adjustmentに基づいて、初期時間長に対して減少調整を行ってもよい。例えば、スケジューリングサイクルの初期時間長を短くし、すなわち、タイマによりカウントされたticksを減らす。毎回調整されたJitter_Adjustmentが-1000であるとすると、「-」は初期時間長に対して減少調整を行うことを意味し、初期時間長が30000個のticksに対応する場合、減少調整後の目標時間長は29000個のticksに対応する。
【0062】
例示的に、Jitter_Adjustment、C、およびTsNumに基づいて、スケジューリングサイクルの総調整数Adjust_Counterは、Adjust_Counter=C*TsNum/|Jitter_Adjustment|=30000*2/1000=60という方法で決定される。以上により、各スケジューリングサイクルを、初期時間長30usから目標時間長(30us-1us)に調整してもよく、60回の調整後、総調整時間長は29us*60=1.74msとなる。スケジューリングサイクルの調整プロセスを1.74msに延長すると、各スケジューリングサイクルは1000ns減少し、マクロレベルではほとんど知覚できない。このため、スケジューリングサイクルの変化によるパケットジッタは無視できる。
【0063】
受信スケジューリングサイクルがスケジューリングサイクルb5であり、目標スケジューリングサイクルがスケジューリングサイクルb3である場合、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数は2であり、すなわちTsNumは2である。
【0064】
受信スケジューリングサイクルが目標スケジューリングサイクルの後にあり、間隔サイクル数2が第2の閾値1より大きいため、時間長調整量Jitter_Adjustmentに基づいて、初期時間長に対して増加調整を行ってもよい。例えば、スケジューリングサイクルの初期時間長を長くし、すなわち、タイマによりカウントされたticksを増加する。毎回調整されたJitter_Adjustmentが+1000であるとすると、「+」は初期時間長に対して増加調整を行うことを意味し、初期時間長が30000個のticksに対応する場合、増加調整後の目標時間長は31000個のticksに対応する。
【0065】
例示的に、Jitter_Adjustment、C、およびTsNumに基づいて、スケジューリングサイクルの総調整数Adjust_Counterは、Adjust_Counter=C*TsNum/|Jitter_Adjustment|=30000*2/1000=60という方法で決定される。以上により、各スケジューリングサイクルを、初期時間長30usから目標時間長(30us+1us)に調整してもよく、60回の調整後、総調整時間長は31us*60=1.86msとなる。スケジューリングサイクルの調整プロセスを1.86msに延長すると、各スケジューリングサイクルは1000ns増加し、マクロレベルではほとんど知覚できない。このため、スケジューリングサイクルの変化によるパケットジッタは無視できる。
【0066】
上記スケジューリングサイクルの調整プロセスにより、第2のネットワークデバイスがスケジューリングサイクルa0で送信したパケットに対して、当該パケットが第1のネットワークデバイスに到着したとき、第1のネットワークデバイスの受信スケジューリングサイクルを基準点Anchor(すなわち、目標スケジューリングサイクル)付近に調整することができ、すなわち、合理的なジッタ範囲区間を維持することができる。
【0067】
以下、スケジューリングサイクルの調整プロセスの有効性と制約を分析する。
図6Aは、通常のスケジューリングサイクルを示す概略図である。決定論的フローのスケジューリングのためのCPUの送信時間が2時間単位、各送信スケジューリングサイクルが16時間単位、ポートにおける決定論的フローの送信時間が8時間単位、ポートにおけるベストエフォートフローの送信時間が8時間単位を占める。
図6Bは、スケジューリングサイクルを1時間単位で前方に調整すること示す概略図である。前方に調整することは、スケジューリングサイクルの時間長を短くすること、すなわち、スケジューリングサイクルで転送される決定論的フローのパケットを減らすことに相当する。各スケジューリングサイクルの調整量が非常に小さいこと、転送の確定性を保証するために、各スケジューリングサイクルに割り当てられる決定論的フローにマージンがあること、調整の導入により、累積誤差が一方向に累積され続けることはないこと、などの理由により、機能的には、決定論的フローのパケットがスケジューリングサイクルで完全に送信されないケースは発生しない。
図6Cは、スケジューリングサイクルを1時間単位で後方に調整すること示す概略図である。後方に調整することは、スケジューリングサイクルの時間長を長くすること、すなわち、スケジューリングサイクルで転送される決定論的フローのパケット数を増やすことに相当する。機能的には、決定論的フローのパケットがスケジューリングサイクルで完全に送信されないケースは発生しない。要約すると、前方調整も後方調整も、周期的なスケジューリングと転送の機能には影響しない。
【0068】
可能な一実施形態では、第2のネットワークデバイスは上流(アップストリーム)ノードであり、第1のネットワークデバイスは下流(ダウンストリーム)ノードである。第2のネットワークデバイスは、例えば、テストパケットを第1のネットワークデバイスに送信する。第2のネットワークデバイスは、一定のサイクルでテストパケットを送信し、第2のネットワークデバイスは、スケジューリングサイクルa0で固定的にテストパケットを送信する。つまり、各スケジューリングサイクルa0において、テストパケットを第1のネットワークデバイスに送信する。
【0069】
第1のネットワークデバイスは、テストパケットを受信した後、テストパケットが第2のネットワークデバイス上で送信されるときの送信スケジューリングサイクルがスケジューリングサイクルa0であると決定する。第1のネットワークデバイスは、自デバイス上のスケジューリングサイクルa0に対応する目標スケジューリングサイクルを決定し、Anchorと表記する。例えば、目標スケジューリングサイクルはスケジューリングサイクルb3である。また、第1のネットワークデバイスは、テストパケットが自デバイス上で受信されるときの受信スケジューリングサイクルを決定してもよく、受信スケジューリングサイクルをCurrentと表記する。
【0070】
これに基づいて、CurrentとAnchorとを比較し、CurrentがAnchorの合理的なジッタ範囲を超えている場合、スケジューリングサイクルの初期時間長を調整する必要があると決定し、CurrentがAnchorの合理的なジッタ範囲を超えていない場合、スケジューリングサイクルの初期時間長を調整する必要がないと決定してもよい。
【0071】
例えば、スケジューリングサイクル数をd(d>7)とし、すなわち、合計d個のCQがあり、d個のスケジューリングサイクルとd個のCQとが一対一対応し、目標スケジューリングサイクルがAnchorであり、合理的なジッタ範囲が3つのスケジューリングサイクルであり、受信スケジューリングサイクルがCurrentであると仮定する。これに基づいて、初期時間長の調整方向(すなわち、初期時間長に対して増加調整または減少調整を行う)および調整量(すなわち、受信スケジューリングサイクルと目標スケジューリングサイクルとの間の間隔サイクル数TsNum)を以下のステップで決定してもよい。
【0072】
ステップS11において、調整サイクル数Adjustを次式で算出する:Adjust=(Current+d-Anchor)mod d。
【0073】
ステップS12において、Adjustがd/2より大きい場合、初期時間長の調整方向が前方調整であり、調整量が(d-Adjust)スケジューリングサイクルであると決定し、Adjustがd/2より大きくない場合、初期時間長の調整方向が後方調整であり、調整量がAdjustスケジューリングサイクルであると決定する。
【0074】
ここで、前方調整はスケジューリングサイクルの初期時間長を減少することを示し、調整量は(d-Adjust)スケジューリングサイクルであり、間隔サイクル数TsNumはd-Adjustである。後方調整はスケジューリングサイクルの初期時間長を増加することを示し、調整量はAdjustスケジューリングサイクルであり、間隔サイクル数TsNumはAdjustである。
【0075】
ステップS13において、時間長調整量Jitter_Adjustmentの値を設定する。Jitter_Adjustmentの絶対値は、例えば1000など、グローバルに設定してもよい。また、Jitter_Adjustmentの正負は、調整方向に基づいて決定してもよく、例えば、初期時間長の調整方向が前方調整である場合、すなわち、スケジューリングサイクルの初期時間長を減少する必要がある場合、Jitter_Adjustmentは負の値となり、符号は「-」である。初期時間長の調整方向が後方調整である場合、すなわちスケジューリングサイクルの初期時間長を増加する必要がある場合、Jitter_Adjustmentは正の値となり、符号は「+」である。
【0076】
ステップS14において、間隔サイクル数TsNumと時間長調整量Jitter_Adjustmentとに基づいて、スケジューリングサイクルの総調整数Adjust_Counterを決定する。具体的な決定方法は、上記実施例を参照することができ、ここでは説明を省略する。
【0077】
可能な一実施形態では、上記決定論的ネットワークのスケジューリングサイクルの調整機能をサポートするために、本実施形態では、ネットワークデバイスの構成および機能(本実施形態では、第1のネットワークデバイスの構成および機能を例とし、他のネットワークデバイスの構成および機能は類似する)として、以下の方法を用いてもよい。
【0078】
方法1において、
図7Aに示すように、第1のネットワークデバイスは、ハードウェアタイマと、決定論的転送ユニットとを含み得る。当該決定論的転送ユニットは、転送モジュールと、セッション管理モジュールと、スケジューリングサイクル管理モジュールとを含み得る。当該方法では、ハードウェアタイマはクロック入力信号を受信するために使用され、ハードウェアタイマが、クロック入力信号に基づいてクロック信号蓄積数を決定し、クロック信号蓄積数が目標時間長に対応する第2のクロックカウント数に達したときにトリガ信号を生成する。当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる。ここで、ハードウェアタイマによって生成された2つの隣接するトリガ信号の間隔は、目標時間長である。
【0079】
1、セッション管理モジュール:セッション管理モジュールは、第2のネットワークデバイスとのセッションを確立するために用られる。このセッションの機能は、第2のネットワークデバイスが当該セッションを介して周期的に第1のネットワークデバイスにテストパケットを送信することである。当該テストパケットの送信サイクルTは、誤差累積速度に応じて設定され、ここでは限定されない。決定論的ネットワークのスケジューリングサイクルの調整プロセスは、当該テストパケットによってトリガされる。もちろん、実際の応用では、決定論的ネットワークのスケジューリングサイクルの調整プロセスは、決定論的フローに属するデータパケットによってトリガされてもよい。
【0080】
セッション管理モジュールは、転送モジュールからスケジューリングサイクル情報を受信してもよく、当該スケジューリングサイクル情報は、転送モジュールがテストパケットを受信したときのTemp_CSQF_Jiffies、ノード識別子、およびCSQFパラメータを含んでもよいが、これらに限定されない。ここで、Temp_CSQF_Jiffiesは、第1のネットワークデバイスの現在のスケジューリングサイクルを決定するためのスケジューリングサイクルのグローバルカウント(CSQF_Jiffies)の値を表す。例えば、Temp_CSQF_Jiffiesが1の場合、1つ目のスケジューリングサイクルを表し、例えば、スケジューリングサイクルb0を表す。Temp_CSQF_Jiffiesが2の場合、2つ目のスケジューリングサイクルを表し、例えば、スケジューリングサイクルb1を表す。以降も同様である。ノード識別子は、第2のネットワークデバイスのノード識別子を表す。CSQFパラメータは、エグレスインタフェース情報、すなわち、テストパケットに対応するエグレスインタフェース情報を含んでもよい。
【0081】
セッション管理モジュールは、セッション情報テーブルを維持してもよい。当該セッション情報テーブルは、UpNodeIdと、InterfaceIdと、Anchorとの間のマッピング関係を含むが、これらに限定されない。ここで、UpNodeIdは、第2のネットワークデバイスのノード識別子を表し、一意である限り、ユーザによって手動で設定されてもよく、IPアドレスなどのデバイスの一意の識別子であってもよい。InterfaceIdは、第1のネットワークデバイスのインタフェース識別子を表し、ユーザによって手動で設定されてもよい。
【0082】
Anchorは、スケジューリングサイクルの識別子を表し、第2のネットワークデバイスの指定スケジューリングサイクルに対応する関連スケジューリングサイクルを表すために用いられる。すなわち、指定スケジューリングサイクルで第2のネットワークデバイスによって送信されたパケットが第1のネットワークデバイスに到着した後、当該パケットを当該関連スケジューリングサイクルに対応するCQに格納すべきである。
【0083】
ここで、指定スケジューリングサイクルと関連スケジューリングサイクルとの間のマッピング関係、すなわち、第2のネットワークデバイスのスケジューリングサイクルと第1のネットワークデバイスのスケジューリングサイクルとの間のマッピング関係は、事前に設定されていてもよく、何らかのアルゴリズムを用いて決定されてもよい。当該マッピング関係を取得する方法については特に制限されない。
【0084】
本実施形態では、第2のネットワークデバイスの指定スケジューリングサイクルをスケジューリングサイクルa0とし、第1のネットワークデバイスの関連スケジューリングサイクルをスケジューリングサイクルb3とする。これに基づいて、セッション情報テーブル内のAnchorはスケジューリングサイクルb3の識別子を表し、つまり、Anchorの値によってスケジューリングサイクルb3を知ることができる。
【0085】
セッション管理モジュールは、転送モジュールからスケジューリングサイクル情報を受信した後、ノード識別子とエグレスインタフェース情報をインデックスとしてセッション情報テーブルを問い合わせ、Anchor値を取得し、Anchor値に基づいて関連スケジューリングサイクルを決定してもよい。Anchorがスケジューリングサイクルb3の識別子を表す場合、関連スケジューリングサイクルは、第2のネットワークデバイスのスケジューリングサイクルa0に対応するスケジューリングサイクルb3であると決定される。
【0086】
第2のネットワークデバイスの送信スケジューリングサイクル、第2のネットワークデバイスの指定スケジューリングサイクル、および第1のネットワークデバイスの関連スケジューリングサイクルに基づいて、第1のネットワークデバイス上の、当該送信スケジューリングサイクルに対応する目標スケジューリングサイクルを決定することができる。例えば、送信スケジューリングサイクルと指定スケジューリングサイクルとの間の間隔サイクル数は、目標スケジューリングサイクルと関連スケジューリングサイクルとの間の間隔サイクル数と等しくてもよい。例えば、第2のネットワークデバイスの送信スケジューリングサイクルがスケジューリングサイクルa0である場合、すなわち、テストパケットがスケジューリングサイクルa0で送信される場合、第2のネットワークデバイスの送信スケジューリングサイクルと指定スケジューリングサイクルとが同じであることを示す。したがって、第1のネットワークデバイスの目標スケジューリングサイクルと関連スケジューリングサイクルとが同じである、すなわち、目標スケジューリングサイクルがスケジューリングサイクルb3であると決定される。
【0087】
以上により、セッション管理モジュールにより、目標スケジューリングサイクル、例えばスケジューリングサイクルb3を決定することができる。
【0088】
セッション管理モジュールは、転送モジュールからスケジューリングサイクル情報を受信した後、スケジューリングサイクル情報におけるTemp_CSQF_Jiffiesに基づいて、第1のネットワークデバイスの受信スケジューリングサイクルを決定してもよい。当該受信スケジューリングサイクルをCurrentと表記し、第1のネットワークデバイスが当該受信スケジューリングサイクルでテストパケットを受信することを表す。
【0089】
目標スケジューリングサイクルAnchorと受信スケジューリングサイクルCurrentとに基づいて、セッション管理モジュールは、ステップS11~ステップS14を用いて、調整サイクル数Adjust、調整方向、間隔サイクル数TsNum、時間長調整量Jitter_Adjustment、および総調整数Adjust_Counterなどのパラメータを決定し、ここでは説明を省略する。
【0090】
2、ハードウェアタイマ:ハードウェアタイマは、CPU内部の高精度ハードウェアタイマであり、設定パラメータに基づいてトリガ信号を生成することができる。ハードウェアタイマの入力は、システムクロックのクロック入力信号である。システムクロックの周波数が1Gの場合、すなわち各tickが1nsであると、1ns毎に1つのクロック入力信号が生成されることを示す。ハードウェアタイマは、1ns毎に1つのクロック入力信号を受信することができ、クロック入力信号に基づいてクロック信号蓄積数を決定することができる。つまり、クロック入力信号を受信するたびに、クロック信号蓄積数に1を加算する。
【0091】
スケジューリングサイクル管理モジュールは、設定パラメータ(例えば、カウント値)をハードウェアタイマに配布してもよい。スケジューリングサイクルの実際の時間長が初期時間長である場合、初期時間長に対応する第1のクロックカウント数をカウント値とする。例えば、第1のクロックカウント数を30000とする。これに基づいて、クロック信号蓄積数が第1のクロックカウント数に達するたびに、ハードウェアタイマは、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力する。トリガ信号は、第1のクロックカウント数に基づいて生成されるため、隣接する2つのトリガ信号の間隔は第1のクロックカウント数と一致し、すなわち、隣接する2つのトリガ信号の間隔が初期時間長である。また、スケジューリングサイクルの実際の時間長が目標時間長である場合、目標時間長に対応する第2のクロックカウント数をカウント値とすることができる。例えば、第2のクロックカウント数を29000または31000とする。これに基づいて、クロック信号蓄積数が第2のクロックカウント数に達するたびに、ハードウェアタイマは、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力する。トリガ信号は、第2のクロックカウント数に基づいて生成されるため、隣接する2つのトリガ信号の間隔が目標時間長である。
【0092】
例示的に、ハードウェアタイマによって生成されたトリガ信号について、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる。トリガ信号は、トリガ信号に基づいてスケジューリングサイクルの開始時刻と終了時刻を決定できる限り、割り込み信号または他のタイプの信号であってもよく、特に限定しない。
【0093】
3、転送モジュール:転送モジュールは、第2のネットワークデバイスから送信されたテストパケットを受信し、当該テストパケットから第2のネットワークデバイスのノード識別子とCSQFパラメータ(当該テストパケットに対応するエグレスインタフェース情報など)を取得し、スケジューリングサイクル管理モジュールからTemp_CSQF_Jiffiesを取得し、当該ノード識別子、当該CSQFパラメータ、およびTemp_CSQF_Jiffiesでスケジューリングサイクル情報を構成し、当該スケジューリングサイクル情報をセッション管理モジュールに送信するために使用される。セッション管理モジュールは当該スケジューリングサイクル情報に基づいてAdjust_CounterやJitter_Adjustmentなどのパラメータを決定する。具体的なプロセスは、セッション管理モジュールの関連機能を参照することができる。
【0094】
4、スケジューリングサイクル管理モジュール:スケジューリングサイクル管理モジュールは、ハードウェアタイマによって生成されたトリガ信号を受信し、トリガ信号を受信するたびにTemp_CSQF_Jiffiesを更新するために使用される。例えば、1回目にトリガ信号を受信したとき、Temp_CSQF_Jiffiesを1に更新し、1つ目のスケジューリングサイクルを表し、2回目にトリガ信号を受信したとき、Temp_CSQF_Jiffiesを2に更新し、2つ目のスケジューリングサイクルを表す。以降も同様である。
【0095】
スケジューリングサイクル管理モジュールは、セッション管理モジュールからJitter_AdjustmentとAdjust_Counterなどのパラメータを取得し、Jitter_AdjustmentとAdjust_Counterに基づいて設定パラメータ(例えば、カウント値)を決定し、カウント値をハードウェアタイマに配布して、ハードウェアタイマのカウント値を調整する。
【0096】
例えば、初期時間長に対応する第1のクロックカウント数が30000であると仮定すると、スケジューリングサイクルの実際の時間長が初期時間長である場合、スケジューリングサイクル管理モジュールは、カウント値30000をハードウェアタイマに配布する。
【0097】
スケジューリングサイクルの実際の時間長が目標時間長に更新された後、Jitter_Adjustmentが「+1000」の場合、スケジューリングサイクル管理モジュールは、カウント値31000をハードウェアタイマに配布し、Jitter_Adjustmentが「-1000」の場合、スケジューリングサイクル管理モジュールは、カウント値29000をハードウェアタイマに配布する。
【0098】
更新されたカウント値31000または29000がハードウェアタイマに配布された後、Adjust_Counterが60であると仮定すると、スケジューリングサイクル管理モジュールは、60個のトリガ信号を連続的に受信した後、スケジューリングサイクルの実際の時間長が初期時間長に更新され、スケジューリングサイクルの実際の時間長の次の更新まで、カウント値30000をハードウェアタイマに再配布する。
【0099】
例示的に、カウント値の調整プロセスは、
図7Bに示すように、以下のステップで実行することができる。
【0100】
ステップS21において、Adjust_Counterが0であれば、ステップS27を実行し、そうでなければステップS22を実行する。
【0101】
ステップS22において、Jitter_Adjustmentが0であれば、ステップS24を実行し、そうでなければステップS23を実行する。
【0102】
ステップS23において、ハードウェアタイマのカウント値をC+Jitter_Adjustmentに書き込み、スケジューリングサイクルの実際の時間長を調整する。すなわち、スケジューリングサイクルの実際の時間長を初期時間長から目標時間長に更新する。なお、ここでのJitter_Adjustmentは正の値であっても負の値であってもよい。ハードウェアタイマのカウント値をC+Jitter_Adjustmentに書き込んだ後、Jitter_Adjustmentを0に設定し、ステップS26を実行してもよい。
【0103】
実際の状況に応じて、スケジューリングサイクルの調整プロセスは、1つのスケジューリングサイクルの調整だけではなく、複数のスケジューリングサイクルに拡張してもよい。したがって、1つ目のスケジューリングサイクルを調整した後、スケジューリングサイクルをすぐに元に戻さないため、Jitter_Adjustmentを0に設定した後、ステップS24ではなくステップS26を実行する。
【0104】
ステップS24において、Adjust_Counterが1より大きければ、ステップS26を実行し、そうでなければステップS25を実行する。
【0105】
ステップS25において、ハードウェアタイマのレジスタをJitter_Adjustmentに書き込み、スケジューリングサイクルを元に戻し、ステップS26を実行し、すなわち、実際の時間長を初期時間長に戻し、ハードウェアタイマのカウント値をCに書き込む。
【0106】
ステップS26において、Adjust_Counterを1減らし、ステップS21に戻る。
【0107】
ステップS27において、タイマの割り込みサービスのその他の処理を行う。
【0108】
方法2において、
図7Cに示すように、第1のネットワークデバイスは、ハードウェアモジュール(例えば、ハードウェアタイマ)と、決定論的転送ユニットとを含み得る。決定論的転送ユニットは、転送モジュールと、セッション管理モジュールと、スケジューリングサイクル管理モジュールとを含み得る。ハードウェアモジュールはレジスタを含み得、クロック入力信号を受信するために使用される。ハードウェアモジュールは、クロック入力信号を受信するたびに、クロック入力信号に基づいてクロック信号蓄積数を決定し、クロック信号蓄積数をハードウェアモジュールのレジスタに格納する。現在のスケジューリングサイクルの開始時に、転送モジュールは、目標時間長に対応する第2のクロックカウント数に基づいて、現在のスケジューリングサイクルのクロック信号目標数を決定する。転送モジュールは、レジスタにクロック信号蓄積数を問い合わせ、得られたクロック信号蓄積数が当該クロック信号目標数に達した場合、現在のスケジューリングサイクルが終了したと判断し、現在のスケジューリングサイクルの次のスケジューリングサイクルを現在のスケジューリングサイクルに更新する。
【0109】
1、ハードウェアタイマ:ハードウェアタイマの入力は、システムクロックのクロック入力信号である。システムクロックの周波数が1Gの場合、ハードウェアタイマは、1ns毎に1つのクロック入力信号を受信することができる。ハードウェアタイマは、クロック入力信号を受信するたびに、クロック入力信号に基づいてクロック信号蓄積数を決定する。すなわち、クロック入力信号を受信するたびに、クロック信号蓄積数に1を加算する。クロック入力信号を受信するたびに、クロック信号蓄積数をハードウェアタイマのレジスタに格納することができる。
【0110】
方式1と比較すると、方式2では、ハードウェアタイマは、クロック信号蓄積数をレジスタに格納するだけで、トリガ信号を生成してスケジューリングサイクル管理モジュールに出力する必要がなく、スケジューリングサイクル管理モジュールも設定パラメータ(例えば、カウント値)をハードウェアタイマに配布する必要がない。
【0111】
2、セッション管理モジュール:セッション管理モジュールは、転送モジュールからスケジューリングサイクル情報を受信し、当該スケジューリングサイクル情報は、Temp_CSQF_Jiffies、ノード識別子、およびCSQFパラメータを含むが、これらに限定されない。セッション管理モジュールは、スケジューリングサイクル情報に基づいてセッション情報テーブルを問い合せ、関連スケジューリングサイクルを取得し、目標スケジューリングサイクルを決定する。セッション管理モジュールは、Temp_CSQF_Jiffiesに基づいて受信スケジューリングサイクルを決定する。目標スケジューリングサイクルと受信スケジューリングサイクルとに基づいて、調整サイクル数Adjust、調整方向、間隔サイクル数TsNum、時間長調整量Jitter_Adjustment、および総調整数Adjust_Counterなどのパラメータを決定する。
【0112】
3、転送モジュール:転送モジュールは、第2のネットワークデバイスから送信されたテストパケットを受信し、当該テストパケットから第2のネットワークデバイスのノード識別子とCSQFパラメータを取得し、スケジューリングサイクル管理モジュールからTemp_CSQF_Jiffiesを取得し、当該ノード識別子、当該CSQFパラメータ、およびTemp_CSQF_Jiffiesでスケジューリングサイクル情報を構成し、当該スケジューリングサイクル情報をセッション管理モジュールに送信するために使用される。
【0113】
現在のスケジューリングサイクルについて、現在のスケジューリングサイクルの開始時に、クロック信号の初期数をx(ハードウェアタイマのレジスタに格納されたクロック信号蓄積数がxであることを表す)であると仮定する。これに基づいて、転送モジュールは、現在のスケジューリングサイクルのクロック信号目標数を決定することができる。例えば、スケジューリングサイクルの実際の時間長が初期時間長である場合、転送モジュールは、初期時間長に対応する第1のクロックカウント数、例えば30000を決定し、初期数xと第1のクロックカウント数との和を、現在のスケジューリングサイクルのクロック信号目標数とする。スケジューリングサイクルの実際の時間長が目標時間長に更新される場合、転送モジュールは、目標時間長に対応する第2のクロックカウント数、例えば29000または31000を決定し、初期数xと第2のクロックカウント数との和を、現在のスケジューリングサイクルのクロック信号目標数とする。
【0114】
転送モジュールは、現在のスケジューリングサイクルのクロック信号目標数に基づいて、ハードウェアタイマのレジスタにクロック信号蓄積数を問い合わせ、得られたクロック信号蓄積数が当該クロック信号目標数に達していない場合、現在のスケジューリングサイクルを維持する。得られたクロック信号蓄積数が当該クロック信号目標数に達した場合、現在のスケジューリングサイクルが終了したと判断し、現在のスケジューリングサイクルの次のスケジューリングサイクルを現在のスケジューリングサイクルに更新し、当該クロック信号目標数を当該スケジューリングサイクルのクロック信号の初期数xとする。
【0115】
ここで、スケジューリングサイクル管理モジュールは、設定パラメータを転送モジュールに配布してもよく、例えば、初期時間長に対応する第1のクロックカウント数または目標時間長に対応する第2のクロックカウント数を転送モジュールに配布する。転送モジュールは、当該設定パラメータに基づいて現在のスケジューリングサイクルのクロック信号目標数を決定する。
【0116】
転送モジュールは、クロック信号蓄積数がクロック信号目標数に達したときに、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力してもよい。ここで、転送モジュールによって生成されたトリガ信号について、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる。
【0117】
4、スケジューリングサイクル管理モジュール:スケジューリングサイクル管理モジュールは、転送モジュールによって生成されたトリガ信号を受信し、トリガ信号を受信するたびにTemp_CSQF_Jiffiesを更新するために使用される。スケジューリングサイクル管理モジュールは、セッション管理モジュールからJitter_AdjustmentとAdjust_Counterなどのパラメータを取得し、Jitter_AdjustmentとAdjust_Counterに基づいて設定パラメータを決定し、設定パラメータを転送モジュールに配布することができる。スケジューリングサイクル管理モジュールの実現方法は、方法1を参照することができ、ここでは繰り返さない。
【0118】
方法3において、
図7Dに示すように、第1のネットワークデバイスは、サイクル調整ユニットと、決定論的転送ユニットとを含み得る。決定論的転送ユニットは、転送モジュールと、セッション管理モジュールと、スケジューリングサイクル管理モジュールとを含み得る。サイクル調整ユニットは、制御ロジック(例えば、FPGA、CPLD、ASIC)と、第1のレジスタと、第2のレジスタと、第3のレジスタとを含み得る。制御ロジックはクロック入力信号を受信するために使用され、第1のレジスタは初期時間長に対応する第1のクロックカウント数を格納するために使用され、第2のレジスタは時間長調整量Jitter_Adjustmentを格納するために使用され、第3のレジスタはスケジューリングサイクルの総調整数Adjust_Counterを格納するために使用される。ここで、第2のレジスタの最上位ビットは符号ビットであってもよく、1は「-」を表し、0は「+」を表す。第2のレジスタの最上位ビット以外の残りのビットは|Jitter_Adjustment|を表す。
【0119】
当該方法では、制御ロジックは、第1のクロックカウント数と時間長調整量とに基づいて、目標時間長に対応する第2のクロックカウント数を決定し、クロック入力信号に基づいてクロック信号蓄積数を決定し、クロック信号蓄積数が第2のクロックカウント数に達したときにトリガ信号を生成する。ここで、トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる。制御ロジックは、第2のクロックカウント数に基づいてAdjust_Counter個のトリガ信号を生成した後、クロック入力信号に基づいてクロック信号蓄積数を決定し続け、クロック信号蓄積数が初期時間長に対応する第1のクロックカウント数に達したときにトリガ信号を生成する。
【0120】
1、セッション管理モジュール:セッション管理モジュールは、転送モジュールからスケジューリングサイクル情報を受信し、当該スケジューリングサイクル情報は、Temp_CSQF_Jiffies、ノード識別子、およびCSQFパラメータを含むが、これらに限定されない。セッション管理モジュールは、スケジューリングサイクル情報に基づいてセッション情報テーブルを問い合せ、関連スケジューリングサイクルを取得し、目標スケジューリングサイクルを決定する。セッション管理モジュールは、Temp_CSQF_Jiffiesに基づいて受信スケジューリングサイクルを決定する。目標スケジューリングサイクルと受信スケジューリングサイクルとに基づいて、調整サイクル数Adjust、調整方向、間隔サイクル数TsNum、時間長調整量Jitter_Adjustment、および総調整数Adjust_Counterなどのパラメータを決定する。
【0121】
例として、セッション管理モジュールは、Jitter_Adjustmentをサイクル調整ユニットの第2のレジスタに書き込み、Adjust_Counterをサイクル調整ユニットの第3のレジスタに書き込むことができる。
【0122】
2、転送モジュール:転送モジュールは、第2のネットワークデバイスから送信されたテストパケットを受信し、当該テストパケットから第2のネットワークデバイスのノード識別子とCSQFパラメータを取得し、スケジューリングサイクル管理モジュールからTemp_CSQF_Jiffiesを取得し、当該ノード識別子、当該CSQFパラメータ、およびTemp_CSQF_Jiffiesでスケジューリングサイクル情報を構成し、当該スケジューリングサイクル情報をセッション管理モジュールに送信するために使用される。
【0123】
3、スケジューリングサイクル管理モジュール:スケジューリングサイクル管理モジュールは、制御ロジックによって生成されたトリガ信号を受信し、トリガ信号を受信するたびにTemp_CSQF_Jiffiesを更新するために使用される。スケジューリングサイクル管理モジュールは、初期時間長に対応する第1のクロックカウント数を決定し、第1のクロックカウント数を第1のレジスタに書き込む。
【0124】
4、制御ロジック:制御ロジックの入力は、システムクロックのクロック入力信号である。システムクロックの周波数が1Gの場合、1ns毎に1つのクロック入力信号を受信し、クロック入力信号に基づいてクロック信号蓄積数を決定する。つまり、クロック入力信号を受信するたびに、クロック信号蓄積数に1を加算する。
【0125】
初期状態では、スケジューリングサイクルの実際の時間長は初期時間長であり、第1のレジスタには第1のクロックカウント数が格納され、第2のレジスタと第3のレジスタは空である。これに基づいて、クロック信号蓄積数が第1のクロックカウント数に達するたびに、制御ロジックは、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力する。制御ロジックによって生成された2つの隣接するトリガ信号の間隔は、初期時間長である。
【0126】
スケジューリングサイクルの実際の時間長が目標時間長に更新されると、セッション管理モジュールは、Adjust_Counterを第3のレジスタに書き込み、Jitter_Adjustmentを第2のレジスタに書き込む。制御ロジックは、第2のレジスタおよび第3のレジスタにデータが書き込まれたことを知った後、第1のレジスタから第1のクロックカウント数を読み出し、第2のレジスタからJitter_Adjustmentを読み出し、第1のクロックカウント数とJitter_Adjustmentとに基づいて、目標時間長に対応する第2のクロックカウント数を決定する。これに基づいて、クロック信号蓄積数が第2のクロックカウント数に達するたびに、制御ロジックは、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力する。制御ロジックによって生成された2つの隣接するトリガ信号の間隔は、目標時間長である。
【0127】
例示的に、制御ロジックによって生成されたトリガ信号について、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの終了時刻とされ、かつ、当該トリガ信号の生成時刻は、現在のスケジューリングサイクルの次のスケジューリングサイクルの開始時刻とされる。トリガ信号は、トリガ信号に基づいてスケジューリングサイクルの開始時刻と終了時刻を決定できる限り、割り込み信号または他のタイプの信号であってもよく、特に限定しない。
【0128】
例示的に、制御ロジックは、第3のレジスタからAdjust_Counterを読み出し、第2のクロックカウント数に基づいてAdjust_Counter個のトリガ信号を生成した後、スケジューリングサイクルの実際の時間長を初期時間長に更新し、すなわち、目標時間長から初期時間長に戻してもよい。したがって、制御ロジックは、第1のレジスタから第1のクロックカウント数を読み出し、第1のクロックカウント数に基づいてトリガ信号を生成する。例えば、クロック信号蓄積数が第1のクロックカウント数に達するたびに、制御ロジックは、トリガ信号を生成して、スケジューリングサイクル管理モジュールに出力する。2つの隣接するトリガ信号の間隔は、初期時間長である。
【0129】
例示的に、
図7Eに示すように、制御ロジックの処理フローは、以下のステップを含み得る。
【0130】
ステップS31において、電源投入による初期化後、第1のクロックカウント数を第1のレジスタに書き込み、制御ロジックはAdjustEvent(調整イベント)を0に初期化する。制御ロジックは、第1のレジスタから第1のクロックカウント数を読み出してCounterValue(カウント値)に書き込み、CounterValueでトリガ信号を生成する。当該トリガ信号は、割り込み信号であってもよいし、他のタイプの信号でもよい。以下、割り込み信号を例に説明する。
【0131】
ステップS32では、実行において、制御ロジックは、第2のレジスタに対する書き込みが発生したか否かを判定する。書き込みがなければ、第2のレジスタに対する書き込みが発生したか否かを判断し続ける。書き込みがあれば、制御ロジックはAdjustEventを1に修正する。ここで、セッション管理モジュールは、Jitter_Adjustmentを第2のレジスタに書き込み、Adjust_Counterを第3のレジスタに書き込んでもよい。したがって、制御ロジックは第2のレジスタに対する書き込みを検出することができる。セッション管理モジュールは、まず第2のレジスタに対する書き込みを実行し、第2のレジスタに対する書き込みが完了した後、第3のレジスタに対する書き込みを実行してもよい。
【0132】
ステップS33において、制御ロジックは、割り込み信号が生成されると、AdjustEventが1であるか否かを判断し、AdjustEventが1であればAdjustEventを0に設定してステップS34を実行し、AdjustEventが1でなければ、ステップS36を実行する。
【0133】
ステップS34において、制御ロジックは、第3のレジスタからAdjust_Counterを読み出し、Adjust_CounterをAdjustCount(調整数)に書き込む。制御ロジックは、第1のレジスタから第1のクロックカウント数BaseCounterを読み出し、第2のレジスタからJitter_Adjustmentを読み出し、ステップS35を実行する。
【0134】
ステップS35において、Jitter_Adjustmentの最上位ビットが1である場合、制御ロジックは、BaseCounterから、最上位ビットを除いたJitter_Adjustmentを引いた値を第2のクロックカウント数として、CounterValueに書き込むことができる。Jitter_Adjustmentの最上位ビットが0である場合、制御ロジックは、BaseCounterに、最上位ビットを除いたJitter_Adjustmentを加えた値を第2のクロックカウント数として、CounterValueに書き込むことができる。
【0135】
ステップS36において、AdjustCountが0でない場合、制御ロジックは、CounterValueに基づいて割り込み信号を生成し(すなわち、クロック信号蓄積数がCounterValueの値に達したときに、割り込み信号を生成し)、AdjustCountを1減らす。AdjustCountが0である場合、制御ロジックは、第1のレジスタから第1のクロックカウント数を読み出してCounterValueに書き込み、CounterValueでトリガ信号を生成する。
【0136】
方法4において、
図7Fに示すように、第1のネットワークデバイスは、ハードウェアモジュール(例えば、制御ロジック)と、決定論的転送ユニットとを含み得る。制御ロジックはレジスタを含み得、クロック入力信号を受信するために使用される。制御ロジックは、クロック入力信号を受信するたびに、クロック入力信号に基づいてクロック信号蓄積数を決定し、クロック信号蓄積数をレジスタに格納する。方法4の実施形態は方法2と類似し、ハードウェアタイマを制御ロジックに置き換えればよいので、ここでは繰り返さない。
【0137】
以上の技術的解決手段からわかるように、本発明の実施形態では、CSQFに基づいて決定論的ネットワークのパケット伝送を実現し、決定論的ネットワークのスケジューリングサイクルの実際の時間長を調整する(すなわち、初期時間長から目標時間長まで調整する)ことにより、決定論的ネットワークのスケジューリングサイクルを動的に制御する。これにより、CSQFは厳密な周波数同期に依存せず、リンク伝送遅延の変動に適応できるようになり、広域ネットワークにおけるCSQFの適応性が大幅に向上する。CSQFを実現することで、進行中の伝送サービスに影響を与えることなく、決定論的伝送能力を提供することができる。隣接するネットワークデバイス間のサイクルマッピングの累積誤差を検知し定量化することで、累積誤差を調整するメカニズムを確立し、累積誤差を調整するプロセスがスムーズに行われるようにし、累積誤差がある閾値に達したとき、累積誤差を調整必要量に変換し、複数のスケジューリングサイクルの時間長調整をスムーズに実現し、調整数に達すると、スケジューリングサイクルの時間長を初期時間長に戻す。
【0138】
上述の方法と同様の思想に基づき、本発明の実施形態はさらに、ネットワークデバイスを提供し、当該ネットワークデバイスは、プロセッサと、機械可読記憶媒体とを含み、前記機械可読記憶媒体にはプロセッサによって実行可能な機械実行可能命令が記憶されており、前記プロセッサは、本発明の上記実施形態に開示されるスケジューリングサイクルを調整する方法を実施するように機械実行可能命令を実行するために使用される。
【0139】
上述の方法と同様の思想に基づき、本発明の実施形態はさらに、複数のコンピュータ命令が記憶されている機械可読記憶媒体を提供し、前記コンピュータ命令がプロセッサによって実行されると、本発明の上記実施形態に開示されるスケジューリングサイクルを調整する方法が実施され得る。
【0140】
ここで、上記機械可読記憶媒体は、任意の電子的、磁性的、光学的または他の物理的記憶装置であってもよく、実行可能な命令、データなどの情報を含むか、または記憶することができる。例えば、機械可読記憶媒体は、ランダムアクセスメモリ(RAM:Radom Access Memory)、揮発性メモリ、不揮発性メモリ、フラッシュメモリ、ストレージドライブ(ハードドライブなど)、ソリッドステートドライブ、任意の記憶ディスク(光ディスク、DVDなど)、または類似の記憶媒体や、これらの組み合わせであってもよい。
【0141】
上記実施形態で説明したシステム、装置、モジュールまたはユニットは、具体的には、コンピュータチップ、エンティティ、または何らかの機能を有する製品によって実現されてもよい。典型的な実現デバイスはコンピュータであり、コンピュータの具体的な形態はパーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲーム機、タブレット、ウェアラブルデバイス、またはこれらのデバイスの任意のいくつかの組み合わせであってもよい。
【0142】
なお、説明の便宜上、上記の装置を説明するときに機能によって様々なユニットに分けてそれぞれ説明する。もちろん、本発明を実施する際に、各ユニットの機能を同一または複数のソフトウェアおよび/またはハードウェアで実現することも可能である。
【0143】
当業者であれば分かるように、本発明の実施形態が、方法、システム、またはコンピュータプログラム製品として提供されてもよい。したがって、本発明は、ハードウェアだけからなる実施例、ソフトウェアだけからなる実施例、またはソフトウェアとハードウェアを組み合わせた実施例なる形態を用いてもよい。さらに、本発明の実施形態は、コンピュータで使用可能なプログラムコードを含む1つまたは複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0144】
本発明は、本発明の実施形態に係る方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図における各フローおよび/またはブロック、並びにフローチャートおよび/またはブロック図におけるフローおよび/またはブロックの組み合わせは、コンピュータプログラム命令によって実現されてもよいことが理解されるべきである。これらのコンピュータプログラム命令は、マシンを生成するために、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または他のプログラム可能なデータ処理デバイスのプロセッサに提供されてもよく、それにより、コンピュータまたは他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令により、フローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現するための装置が生成される。
【0145】
また、これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブル可能なデータ処理デバイスに特定の方法で動作するように指示することができるコンピュータ可読メモリに記憶されてもよく、その結果、当該コンピュータ可読メモリに記憶された命令は、フローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現するための命令装置を含む製品が生成される。
【0146】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理デバイスにロードされてもよく、それにより、一連の動作ステップがコンピュータまたは他のプログラム可能なデバイス上で実行されることで、コンピュータにより実施される処理が生成され、それによりコンピュータまたは他のプログラム可能なデバイス上で実行される命令はフローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現するためのステップを提供する。
【0147】
以上は、本発明の実施形態に過ぎず、本発明を限定するものではない。当業者にとって、本発明は様々な変更および変化が可能である。本発明の精神と原理の範囲内で行われたいかなる修正、同等な置換、向上などは、いずれも本発明の特許請求の範囲に含まれるものとするべきである。
【国際調査報告】