JP2024508220A - System and method for push data communication - Google Patents

System and method for push data communication Download PDF

Info

Publication number
JP2024508220A
JP2024508220A JP2023542986A JP2023542986A JP2024508220A JP 2024508220 A JP2024508220 A JP 2024508220A JP 2023542986 A JP2023542986 A JP 2023542986A JP 2023542986 A JP2023542986 A JP 2023542986A JP 2024508220 A JP2024508220 A JP 2024508220A
Authority
JP
Japan
Prior art keywords
data packets
networks
network
packet
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023542986A
Other languages
Japanese (ja)
Inventor
ダビッド プイ キョング ジー
イマド アザーム
ジョージ リチャード ジョーンズ
Original Assignee
デジェロ ラブス インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by デジェロ ラブス インコーポレイテッド filed Critical デジェロ ラブス インコーポレイテッド
Priority claimed from PCT/CA2022/050077 external-priority patent/WO2022155738A1/en
Publication of JP2024508220A publication Critical patent/JP2024508220A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

ルータ、ゲートウェイ、又はデータパケット通信を制御するように適合されたルータ若しくはゲートウェイに結合されたコントローラ回路などの、物理プッシュ型データパケット通信デバイスとして実装され得るデータパケット通信システムが記載される。データパケット通信システムは、監視される通信イベントの時点で複数のネットワークの各々のネットワーク容量を評価するように適合され、それに応じてデータパケットを割り当てる。【選択図】図1FA data packet communication system is described that can be implemented as a physical push data packet communication device, such as a router, a gateway, or a controller circuit coupled to a router or gateway adapted to control data packet communication. The data packet communication system is adapted to assess network capacity of each of the plurality of networks at the time of a monitored communication event and allocate data packets accordingly. [Selection diagram] Figure 1F

Description

相互参照
本出願は、2021年1月19日及び2021年5月4日に出願された、両方ともSYSTEMS AND METHODS FOR PUSH-BASED DATA COMMUNICATIONSと題された、米国特許出願第63/139286号及び第63/183952号の非仮出願であり、これらの優先権を含む全ての利益を主張するものであり、これらは、参照によりその全体が本明細書に組み込まれる。
CROSS REFERENCES This application is a reference to U.S. Patent Application No. 63/139,286 and No. No. 63/183,952 and claims all benefits, including priority, thereof, which are incorporated herein by reference in their entirety.

本出願は、参照により、以下の出願全体を組み込むものである:
「PACKET TRANSMISSION SYSTEM AND METHOD」と題された、2017年12月21日に出願された、PCT出願第PCT/CA2017/051584号。
This application incorporates by reference the following applications in their entirety:
PCT Application No. PCT/CA2017/051584, filed on December 21, 2017, entitled “PACKET TRANSMISSION SYSTEM AND METHOD”.

「SYSTEM AND METHOD FOR ASSESSING COMMUNICATION RESOURCES」と題された、2018年8月22日に出願された、PCT出願第PCT/CA2018/051012号。 PCT Application No. PCT/CA2018/051012, filed on August 22, 2018, entitled “SYSTEM AND METHOD FOR ASSESESSING COMMUNICATION RESOURCES”.

「SYSTEMS AND METHODS FOR MANAGING DATA PACKET COMMUNICATIONS」と題された、2020年8月7日に出願された、PCT出願第PCT/CA2020/051090号。 PCT Application No. PCT/CA2020/051090, filed on August 7, 2020, entitled “SYSTEMS AND METHODS FOR MANAGING DATA PACKET COMMUNICATIONS”.

本開示の実施形態は、電子データパケット通信の分野に関し、より具体的には、実施形態は、複数のネットワークコネクションが利用可能であるプッシュ型データパケット通信のためのデバイス、システム、及び方法に関する。 Embodiments of the present disclosure relate to the field of electronic data packet communications, and more specifically, embodiments relate to devices, systems, and methods for push data packet communications where multiple network connections are available.

序論
複数の利用可能なネットワークコネクションを介したデータパケットの伝送のための既存のデータパケット通信ソリューションは、コネクションを通してデータパケットをどのように伝達するかを決定するための静的ルーティングロジックに依拠している。例えば、システムは、利用可能なコネクションの各々に対してタイマを採用することができ、それぞれのタイマを使用して、タイマに関連付けられたコネクション上での伝送のために、入力キューからパケットをいつプルするかを決定する。これらのソリューションは、これらのコネクションが、実装の単純さのために性能を交換する同様の動作特性及び可用性を有し、直近に計時終了したタイマとのコネクションを介した伝送について次の利用可能なデータパケットをスケジュールすることを仮定している。タイマ手法は単純であるが、特定の状況では計算効率が損なわれる可能性がある。
Introduction Existing data packet communication solutions for the transmission of data packets over multiple available network connections rely on static routing logic to determine how to convey data packets across the connections. There is. For example, the system may employ a timer for each available connection and use each timer to determine when to remove packets from the input queue for transmission on the connection associated with the timer. Decide whether to pull. These solutions require that these connections trade performance for simplicity of implementation, have similar operational characteristics and availability, and use the next available transmission over a connection with the most recently expired timer. Assume that you want to schedule data packets. Although the timer approach is simple, it can compromise computational efficiency in certain situations.

複数のネットワークコネクションを同様の動作特性を有するコネクションの複数のインスタンスとして扱う通信システム(例えば、LACP、ML-PPP)は、特定のネットワークが十分に利用されない場合があるか、又は過度に利用される場合があるため、複数のネットワークが異なる動作特性を有する場合、複数のコネクションのあまり効果的でない使用につながり得る。この使用の不的確さは、データパケット配信のより大きなレイテンシ、より信頼性の低いデータパケット配信、より高価なデータパケット配信、スループットの低下などをもたらし得る。 Communication systems that treat multiple network connections as multiple instances of connections with similar operational characteristics (e.g., LACP, ML-PPP) may result in certain networks being underutilized or overutilized. As such, if multiple networks have different operating characteristics, it may lead to less effective use of multiple connections. This inaccuracy of use can result in greater latency of data packet delivery, less reliable data packet delivery, more expensive data packet delivery, reduced throughput, and so on.

コネクション管理ソリューションはまた、利用可能なコネクション又はこれらのコネクションの動作特性が経時的に変化するアプリケーションを処理する困難さに遭遇する。例えば、タイマベースのシステムは、各コネクションについてのタイマが独立して発動することから、ネットワーク性能の変化に不感応であり得るため、他の全てのコネクションのネットワーク性能を正確に見ているわけではない可能性がある。 Connection management solutions also encounter difficulties in handling applications where the available connections or the operational characteristics of these connections change over time. For example, timer-based systems can be insensitive to changes in network performance because the timer for each connection fires independently, so it does not provide an accurate view of network performance for all other connections. There is a possibility that there is no.

複数のコネクションをより効率的に利用して、より小さいレイテンシ時間、増加したスループットでデータパケットを伝送し、より信頼性の高いデータパケット配信又はより安価なデータパケット配信を可能にする、データ通信のためのシステム及び方法が望ましい。 A method of data communication that more efficiently utilizes multiple connections to transmit data packets with lower latency, increased throughput, and enables more reliable or less expensive data packet delivery. Systems and methods for this are desirable.

本明細書に記載されるシステム及び方法は、プッシュ型データパケット通信システムを含み、これは、ルータ、ゲートウェイ、又はデータパケット通信を制御するように適合されたルータ若しくはゲートウェイに結合されたコントローラ回路などの、物理プッシュ型データパケット通信デバイスとして実装され得る。別の実施形態では、システムは、プロセッサを有する通信コントローラボードなどの、電子ハードウェアで使用するためのソフトウェアとして、又は電子ハードウェアによって実行される命令セットとしてメモリ上に常駐するソフトウェアとして実装され得る。複数のコネクションのうちのコネクションに関連付けられた監視されるデータ通信特性(例えば、ネットワークトラフィック)に基づいて、プッシュ型データパケット通信システムを動作させて、複数のコネクションにわたるデータ通信(例えば、レイテンシ、信頼性、スループット、エラー訂正)を改善するための様々な実施形態が本明細書に記載される。データストレージ、コンピュータプロセッサ、及びコンピュータメモリと連携して動作する、対応するコンピュータ可読媒体(例えば、プロセッサ上での実行のための機械解釈可能命令セットを記憶した非一時的コンピュータ可読媒体)もまた、提供される。 The systems and methods described herein include push data packet communication systems, such as a router, a gateway, or a controller circuit coupled to a router or gateway adapted to control data packet communications. may be implemented as a physical push data packet communication device. In another embodiment, the system may be implemented as software for use with electronic hardware, such as a communications controller board with a processor, or as software resident in memory as a set of instructions executed by the electronic hardware. . The push data packet communication system operates to improve data communication across multiple connections (e.g., latency, reliability) based on monitored data communication characteristics (e.g., network traffic) associated with one of the connections. Various embodiments are described herein to improve performance (performance, throughput, error correction). A corresponding computer-readable medium (e.g., a non-transitory computer-readable medium storing a set of machine-interpretable instructions for execution on the processor) that operates in conjunction with the data storage, computer processor, and computer memory also includes: provided.

本明細書に記載される実施形態は、静的ルーティングテーブルの使用、プルスケジューリング(例えば、必ずしも同期されていないコネクション固有のタイマの使用)などの代替手法に対する技法的改善を提供する。例えば、LinuxカーネルTCPスタックは、「プル」モデルを使用して、再送されたパケットの回復時間を低減する。以下を参照されたい:https://groups.google.com/g/bbr-dev/c/d14XAcuTBxo/m/Pwui1o3MBAAJ。 Embodiments described herein provide technical improvements over alternative approaches such as the use of static routing tables, pull scheduling (eg, use of connection-specific timers that are not necessarily synchronized). For example, the Linux kernel TCP stack uses a "pull" model to reduce recovery time for retransmitted packets. See: https://groups. google. com/g/bbr-dev/c/d14XAcuTBxo/m/Pwui1o3MBAAJ.

本明細書に記載されるプッシュ型データパケット通信システムは、リモートピアへの混合されたコネクションに関連するコネクション特性のリアルタイム測定によって可能にされる、粒度が低いパケット型データ配布のためのコネクション(リンク)集約に適合させることができるルータを提供するように適合される。 The push data packet communication system described herein provides connection (link ) adapted to provide routers that can be adapted for aggregation.

本明細書における様々な実施形態に記載されるように、マルチパスコネクション集約システム(代替的に、混合されたコネクションシステムと称される)は、第1の入力キュー及びスケジューリングステージ、第2のコネクション特性監視ステージ(例えば、輻輳制御及びパケットバッファリングを提供し、ペーシング命令をカプセル化する)、並びにパケットをネットワークインターフェースに伝達する(例えば、第2のステージで提供された命令のペーシングに従って)ための第3の伝送ステージを有する、3ステージデータパイプラインとしてモデル化され得る。 As described in various embodiments herein, a multipath connection aggregation system (alternatively referred to as a mixed connection system) includes a first input queue and scheduling stage, a second connection a characteristic monitoring stage (e.g., providing congestion control and packet buffering, and encapsulating pacing instructions), and for delivering packets to the network interface (e.g., according to the pacing instructions provided in the second stage); It can be modeled as a three-stage data pipeline, with a third transmission stage.

プッシュ型データパケット通信システムは、監視される通信イベント(トリガイベントとも呼ばれる)に応答して、伝送のためのデータパケットをキューイングするように構成されたスケジューラを含む。(タイマ以外の)例示的なトリガイベントは、以前に伝送されたWANパケットのACK/NACK、入力キューへの新しいデータの到達、所与の時間量にわたるフィードバックの欠如などを含む。スケジューラは、トリガイベントの時点での監視される特性に基づいて、様々なネットワークにデータパケットを割り当てる。 Push data packet communication systems include a scheduler configured to queue data packets for transmission in response to monitored communication events (also referred to as trigger events). Example triggering events (other than timers) include ACK/NACK of previously transmitted WAN packets, arrival of new data to the input queue, lack of feedback for a given amount of time, etc. The scheduler allocates data packets to various networks based on monitored characteristics at the time of the trigger event.

個々のコネクションの監視される特性は、コネクションの動作特性のサブセットであり、推定されるスループット、測定及び/又は期待されるレイテンシ、測定されるパケット損失、並びに測定値又は期待値から導出され得る他の特性を含み得るが、これらに限定されない。明確な例では、動作特性は、推定されるスループット、測定及び/又は期待されるレイテンシ、測定されるパケット損失、並びに測定値又は期待値から導出され得る他の特性を含んでもよく、監視される特性は、推定されるスループットに限定されてもよい。 The monitored characteristics of an individual connection are a subset of the connection's operational characteristics, including estimated throughput, measured and/or expected latency, measured packet loss, and others that may be derived from the measured or expected values. may include, but are not limited to, the characteristics of In a clear example, the operational characteristics may include estimated throughput, measured and/or expected latency, measured packet loss, and other characteristics that may be derived from the measured or expected values and are monitored. The characteristics may be limited to estimated throughput.

プルスケジューラとは対照的に、プッシュスケジューラは、監視される通信イベントの時点で複数のネットワークの各々の監視される特性を評価し、利用可能な伝送容量を有するコネクションにデータパケットを割り当てる。例示的な実施形態では、プッシュスケジューラは、利用可能な伝送容量に加えて、データパケット(アプリケーション)要件、管理者によって構成されたネットワーク順序プリファレンス、コネクションの監視される特性(伝送容量以外)を考慮に入れる。プッシュスケジューラは、ネットワークに関連付けられた利用可能な伝送容量(利用可能な伝送容量は、割り当てられたデータパケットを反映するように継続的に更新される)があるとともに、伝送に利用可能なデータパケットがある場合に、利用可能なネットワークにデータパケットを割り当て続ける。このようにして、プッシュスケジューラは、プルスケジューラと比較してより大きな範囲で、複数のネットワークの利用可能な伝送容量を利用し得る。 In contrast to pull schedulers, push schedulers evaluate monitored characteristics of each of multiple networks at the time of a monitored communication event and allocate data packets to connections that have available transmission capacity. In an exemplary embodiment, the push scheduler determines, in addition to available transmission capacity, data packet (application) requirements, network ordering preferences configured by an administrator, and monitored characteristics (other than transmission capacity) of the connection. Take into consideration. The push scheduler determines whether there is available transmission capacity associated with the network (available transmission capacity is continuously updated to reflect the allocated data packets) and whether data packets are available for transmission. Continue to allocate data packets to available networks if available. In this way, push schedulers may utilize the available transmission capacity of multiple networks to a greater extent compared to pull schedulers.

プッシュスケジューラの一態様は、様々なネットワークコネクションへのデータパケットのルーティングを制御するためのソート順序を計算で決定又は確立するようにプッシュスケジューラを構成する方法である。ソート順序の決定に影響を与える要因には、パケットが複数のWANコネクションに不必要に分割されないように、ソート順序を可能な限り「安定」に保つこと(分割は、自己誘発の順不同イベント及びジッタイベントの機械を増加させる)と、コネクションの測定される特性と測定されない外部ディレクティブとの両方を考慮することと、を含む。 One aspect of the push scheduler is a method for configuring the push scheduler to computationally determine or establish a sort order for controlling the routing of data packets to various network connections. Factors that influence sort order decisions include keeping the sort order as "stable" as possible so that packets are not unnecessarily split across multiple WAN connections (splitting is subject to self-induced out-of-order events and jitter). events) and considering both measured characteristics of the connection and unmeasured external directives.

測定される特性は、3つの別個のスライディングウィンドウ(500ms、3s、30s)の間のパケット損失(3つのウィンドウの間の最悪の値として更にまとめられる)、現在のネットワークラウンドトリップ時間(RTT)、帯域幅及びラウンドトリップ伝播時間(BBRv1)パラメータ、RtProp(ネットワーク伝播遅延)、及びBtlBw(スループット推定値)を含むことができる。外部ディレクティブは、とりわけ優先順位(PR)ルールを含むことができるが、フロー固有のルール/要件を含むこともできる。 The measured characteristics are: packet loss during three separate sliding windows (500ms, 3s, 30s) (further summarized as the worst value between the three windows), current network round trip time (RTT), It may include bandwidth and round-trip propagation time (BBRv1) parameters, RtProp (network propagation delay), and BtlBw (throughput estimate). External directives can include priority order (PR) rules, among others, but can also include flow-specific rules/requirements.

いくつかの実施形態では、BBRv1の測定される特性は、元のBBRv1 IETFドラフトにおけるこれらの特性の設計とは異なる。例えば、システムの実行時間の一貫性が低いシステム上で作動し得る実施形態を考慮すると、BtlBwを計算するために使用されるスライディングウィンドウのサイズは、静的又は動的のいずれかで変化し得る。また、同様の実行一貫性の理由で、RtPropを計算するために使用される入力パラメータがわずかに修正され得る。 In some embodiments, the measured characteristics of BBRv1 are different from the design of these characteristics in the original BBRv1 IETF draft. For example, given embodiments that may operate on systems where the system execution times are less consistent, the size of the sliding window used to calculate BtlBw may vary either statically or dynamically. . Also, the input parameters used to calculate RtProp may be slightly modified for similar execution consistency reasons.

ネットワークインターフェースの使用を制御するためのネットワーキングルーティング順序を改善することに基づく具体的な改善が、ラウンドトリップ時間(RTT)及びパケット損失の複合特性を利用して、RTT、パケット損失、及びMSSを与えられたTCPスループットの上限を確立するためのMathis式(Mathis Equation)に基づくスループットを予測するいくつかの実施形態に記載されている。Mathis係数(Mathis factor)を利用して、ネットワーク化されたパケットをルーティングするためのソート順序を修正することができる。 A specific improvement based on improving the networking routing order to control the usage of network interfaces takes advantage of the combined characteristics of round trip time (RTT) and packet loss to give RTT, packet loss, and MSS. Some embodiments are described that predict throughput based on a Mathis Equation to establish an upper bound on TCP throughput. Mathis factors can be utilized to modify the sort order for routing networked packets.

いくつかの実施形態では、一定の期間にわたって、プッシュスケジューリングを、1つ以上の暗黙的なソートディメンションに沿ったソート順序を暗黙的に引き起こすように構成することもできる。暗黙的なソートディメンションは、周期的な不良イベント(例えば、輻輳に起因するレイテンシスパイク)に遭遇したコネクションを強制的にリストの最下位にバブルさせる。挙動に一貫性があるコネクションは、自然に最上位にバブルし、最上位付近に留まる。 In some embodiments, push scheduling may also be configured to implicitly trigger a sort order along one or more implicit sorting dimensions over a period of time. The implicit sorting dimension forces connections that encounter periodic bad events (eg, latency spikes due to congestion) to bubble to the bottom of the list. Connections with consistent behavior naturally bubble to the top and stay near the top.

プルスケジューリングは、互いに独立にトリガされるコネクション固有のタイマに基づいてプルが発生するため、ネットワーク容量の利用率の増大を可能にしない。プルスケジューラシステムは、複数の利用可能なネットワークの各ネットワークに関連付けられた共有プルスケジューラ及びタイマを含み、各タイマは、ウェイクアップ値を有する。タイマがウェイクアップして、プルスケジューラからパケットをプルすると、他のコネクションの潜在的なウェイクアップ時間が不明であるため、どのパケットがスケジューリングされるかについての決定は、現在のコネクションの監視される特性にのみ基づいて行われる。結果として生じるパケットスケジューリング決定は、プルイベントの時点で個々のコネクションごとにローカルに最適であるが、あるコネクション上のより早いプルイベントでスケジューリングされたパケットが、プル要求が差し迫っていた別個のコネクション上であればより最適にスケジューリングされていたであろう、グローバルに準最適な決定をもたらし得る。プルスケジューラは、対応するネットワークの推定されるビットレート及び各タイマウェイクアップ間の持続時間(例えば、1/50Hz、すなわち20ms)に基づくパケットの量を、入力キューからプルするように構成されている。 Pull scheduling does not allow for increased utilization of network capacity because pulls occur based on connection-specific timers that are triggered independently of each other. The pull scheduler system includes a shared pull scheduler and timer associated with each network of a plurality of available networks, each timer having a wake-up value. When the timer wakes up and pulls a packet from the pull scheduler, the decision about which packets are scheduled is made by monitoring the current connection, since the potential wake-up times of other connections are unknown. It is based solely on characteristics. The resulting packet scheduling decision is locally optimal for each individual connection at the time of the pull event, but packets scheduled at an earlier pull event on one connection may could result in globally suboptimal decisions that would have been more optimally scheduled. The pull scheduler is configured to pull an amount of packets from the input queue based on the estimated bit rate of the corresponding network and the duration between each timer wakeup (e.g., 1/50 Hz, or 20 ms). .

プッシュスケジューラに関連付けられた技術的課題は、特定のデータフロー(例えば、オーディオファイル、ビデオなどを含むパケット)に属するデータパケットが、単一のネットワーク、又はフローの要件を満たすことができる同様の監視される特性を共有する比較的安定したネットワークのセットを介して伝送されることを確実にすることである。例えば、異なるレイテンシを有する2つのネットワークにわたって単一のデータフローに属するオーディオパケットを伝送することは、シーケンサ(すなわち、伝送後にパケットを再構築することを担うハードウェア又はソフトウェア)がオーディオパケットをバッファリングし、並べ替えることを必要とし、場合によっては、レイテンシを追加するか、又は元の順序でデータパケットを配信することに失敗し、結果的に、アプリケーションは、高レイテンシの、一貫性がなくかつ不十分なネットワーキング遭遇を知覚する。同様の監視される特性を有するコネクションをグループ化するプッシュスケジューラは、フロー要件を最もよく満たすコネクションにデータパケットを割り当てるためのより直接的な制御を行う。 A technical challenge associated with push schedulers is that data packets belonging to a particular data flow (e.g., packets containing audio files, video, etc.) can only be monitored by a single network, or similar monitoring system, so that they can meet the requirements of the flow. The aim is to ensure that the network is transmitted over a relatively stable set of networks that share the same characteristics. For example, transmitting audio packets belonging to a single data flow across two networks with different latencies means that the sequencer (i.e., the hardware or software responsible for reassembling the packets after transmission) buffers the audio packets. reordering and, in some cases, adding latency or failing to deliver data packets in their original order, resulting in high-latency, inconsistent and Perceiving poor networking encounters. A push scheduler that groups connections with similar monitored characteristics provides more direct control to allocate data packets to connections that best meet flow requirements.

提案されたプッシュスケジューラは、いくつかの実施形態では、監視される特性(例えば、ラウンドトリップ時間、ボトルネック帯域幅など)とネットワーク動作特性の基準範囲(例えば、伝送の基準範囲)との比較に基づいて複数のネットワークを順序付けるように構成されており、範囲は、測定される動作特性の些細な変動に不感応であるように定義される。範囲の使用は、監視される特性のより小さな変動に対するある程度の不感応を構築しながら、プッシュスケジューラがネットワークの監視される特性の変化に応答し続けることを可能にする。 The proposed push scheduler, in some embodiments, relies on the comparison of monitored characteristics (e.g., round-trip time, bottleneck bandwidth, etc.) with reference ranges of network operating characteristics (e.g., reference ranges for transmission). The range is configured to order the plurality of networks based on the range defined to be insensitive to small variations in the measured operational characteristics. The use of ranges allows the push scheduler to remain responsive to changes in the monitored characteristics of the network while building a degree of insensitivity to smaller variations in the monitored characteristics.

提案されたプッシュスケジューラは、データパケットの順序付けに基づいて複数のネットワークにデータパケットを割り当て、特定のフローに属するデータパケットを、ネットワークの監視される特性に基づいてネットワークの単一の又は比較的安定したセットに割り当てることを促進するように構成され得る。例示的な実施形態では、プッシュスケジューラは、順序付けを記憶し、新しいか又は更新された監視される特性の結果として順序付けが更新されるまで、順序付けに従ってパケットを送信し続ける。 The proposed push scheduler allocates data packets to multiple networks based on data packet ordering and assigns data packets belonging to a particular flow to a single or relatively stable network based on monitored characteristics of the networks. may be configured to facilitate assignment to a given set. In an exemplary embodiment, the push scheduler remembers the ordering and continues to send packets according to the ordering until the ordering is updated as a result of new or updated monitored characteristics.

監視される特性は、ボトルネック帯域幅をラウンドトリップ伝播時間で除算することによって少なくとも部分的に定義される集約値である容量係数を含み得る。容量係数は、効率的なネットワークを示す、ラウンドトリップ伝播時間のミリ秒当たりのより高帯域幅を達成するコネクションを示し得る。更に、容量係数が、測定されるボトルネック帯域幅値の比較的大きな変化にのみ応答するように、容量係数は、ボトルネック帯域幅を最も近い桁(例えば、1、10、100、1000、10,000など)又はその整数倍(例えば、2、3...20、30など)に推定することによって決定されてもよい。同様に、容量係数は、測定されるラウンドトリップ伝播時間に関連付けられた、範囲を定めたラウンドトリップ伝播時間を使用して、測定されるラウンドトリップ伝播時間の変動に対する容量係数の感度を低減することによって決定され得る。 The monitored characteristics may include a capacity factor, which is an aggregate value defined at least in part by the bottleneck bandwidth divided by the round-trip propagation time. The capacity factor may indicate connections that achieve higher bandwidth per millisecond of round-trip propagation time, indicative of an efficient network. Additionally, the capacity factor scales the bottleneck bandwidth to the nearest digit (e.g., 1, 10, 100, 1000, 10 , 000, etc.) or an integer multiple thereof (eg, 2, 3...20, 30, etc.). Similarly, the capacity factor uses a bounded round-trip propagation time that is related to the measured round-trip propagation time to reduce the sensitivity of the capacity factor to variations in the measured round-trip propagation time. can be determined by

例示的な実施形態では、提案されたプッシュスケジューラは、ユーザ入力基準に基づいて複数のネットワークを更に順序付けてもよい。例えば、順序付けは、少なくとも部分的に、利用可能なネットワークの各々に優先順位を割り当てられたユーザに基づいてもよく、これにより、ユーザは、コスト、測定又は予測することができない将来の信頼性又は可用性に関する情報などの外部要因に基づいて、ネットワークを使用するべき順序についてのプリファレンスを提供することが可能になる。 In an exemplary embodiment, the proposed push scheduler may further order multiple networks based on user input criteria. For example, the ordering may be based, at least in part, on the user assigning a priority to each of the available networks, which allows the user to assign priorities to each of the available networks, such as costs, future reliability or It becomes possible to provide preferences as to the order in which networks should be used based on external factors such as information about availability.

より大きな量の既存のネットワーク伝送容量を利用するという技術的課題に応答して、プッシュスケジューラは、フロー分類エンジンを使用することによって、伝送のためにキューイングされたデータパケットに関連付けられた伝送要件を識別及び/又は利用するように構成され得る(例えば、システムは、特定のデータフロータイプを識別し、かつ識別されたデータフロータイプに関連付けられた予め定義された伝送要件を利用するために使用され得る基準を受信し得る)。データパケットの伝送要件を識別又は利用し、かつこれらの伝送要件を複数のネットワークの監視される特性と比較することによって、プッシュスケジューラは、好適な監視される特性を有するネットワークを介して伝送されるデータパケットの量を最大化するために、必要とされる伝送要件にマッチするネットワークにデータパケットを割り当てることが可能であり得る。監視される特性が伝送要件とマッチしないネットワークを介してパケットを伝送することは、依然として可能であり得るが、パケットの「遅延した」又は順不同の配信をネットワーク劣化として解釈し、それによって、試行されるサービスの品質を低下させるパケットを生成するアプリケーションをもたらし得る。例示的な伝送要件は、全体を通して必要とされるレイテンシなどを含むことができる。 In response to the technical challenge of utilizing greater amounts of existing network transmission capacity, push schedulers improve transmission requirements associated with data packets queued for transmission by using a flow classification engine. (e.g., the system can be configured to identify and/or utilize predefined transmission requirements associated with the identified data flow type and identify a particular data flow type. standards that can be used). By identifying or exploiting the transmission requirements of data packets and comparing these transmission requirements to the monitored characteristics of multiple networks, the push scheduler determines whether the data packets are transmitted over networks with preferred monitored characteristics. In order to maximize the amount of data packets, it may be possible to allocate the data packets to networks that match the required transmission requirements. Although it may still be possible to transmit packets over a network whose monitored characteristics do not match the transmission requirements, interpreting the "late" or out-of-order delivery of packets as network degradation and thereby preventing the attempted This can result in applications generating packets that degrade the quality of service provided. Exemplary transmission requirements may include required latency throughout, and the like.

例示的な実施形態では、プッシュスケジューラは、各フローが割り当てられた伝送要件のセットを有するフロー内に、フロー分類エンジンパケットを使用し得る。別の実施形態では、各フローは、フローの特性を形成する伝送要件を本来的に有する。このフローマッピングは、データパケットのヘッダ内の、又はデータパケットに関連付けられた、1つ以上の要素に基づく。次いで、これらのフロー伝送要件を使用して、同等の監視される特性を有する複数のコネクションのうちの1つにパケットを割り当て得る。データパケットがVPNデータフローとして分類されている例では、データが順番に配信されるという本来的な要件を有し、これらの要件は、特定の最小限の信頼性を有するコネクションで送信されるフロー伝送要件を含み得る。 In an example embodiment, the push scheduler may use flow classification engine packets within flows, each flow having an assigned set of transmission requirements. In another embodiment, each flow inherently has transmission requirements that form the characteristics of the flow. This flow mapping is based on one or more elements within or associated with the data packet's header. These flow transmission requirements may then be used to assign the packet to one of multiple connections with comparable monitored characteristics. In the example where data packets are classified as VPN data flows, they have an inherent requirement that the data be delivered in order, and these requirements dictate that a flow be sent over a connection with a certain minimum reliability. May include transmission requirements.

例えば、TCP/IPヘッダは、TCP/IP5タプル(例えば、送信元IPアドレス及び宛先IPアドレス、送信元ポート番号及び宛先ポート番号、並びにプロトコル)として識別される結果として、順序付けにより感応するデータフローである仮想プライベートネットワーク(VPN)データフローであると判定され得る。結果として、スケジューラは、この要件と矛盾する可能性のある個々のパケット上のDSCPタグなどの他のインジケータの存在にかかわらず、VPNデータフローのデータパケットの全てが順番に配信されることを要求するフロー分類エンジンから伝送要件を受信し得る。例えば、パケットのうちのいくつかは、低レイテンシを要求するDSCPタグを有し得るが、他のパケットは、高スループットを要求し得る。スケジューラは、カプセル化VPNデータフローの順序付け要件に違反しない限り、DSCPタグの特定の伝送要件を満たす監視される特性を有するコネクションにパケットをマッピングし(割り当て)得る。 For example, TCP/IP headers are identified as TCP/IP 5-tuples (e.g., source and destination IP addresses, source and destination port numbers, and protocol) in a data flow that is more sensitive to ordering. It may be determined that it is a virtual private network (VPN) data flow. As a result, the scheduler requires that all of the data packets of a VPN data flow be delivered in order, regardless of the presence of other indicators such as DSCP tags on individual packets that may conflict with this requirement. The transmission requirements may be received from a flow classification engine that provides a flow classification engine. For example, some of the packets may have a DSCP tag that requires low latency, while other packets may require high throughput. The scheduler may map (assign) packets to connections with monitored characteristics that meet the specific transmission requirements of the DSCP tag, as long as they do not violate the ordering requirements of the encapsulated VPN data flow.

別の例によれば、プッシュスケジューラは、フロー分類エンジンを使用して、伝送要件が信頼性又はスループットよりも低レイテンシを優先するフローにパケットをマッピングし得る(例えば、送信元は、増加したレイテンシに感応し得るライブビデオストリームなどのデータのタイプを示し得る)。 According to another example, a push scheduler may use a flow classification engine to map packets to flows whose transmission requirements prioritize low latency over reliability or throughput (e.g., sources may may indicate the type of data such as a live video stream that may be sensitive to).

更なる例示的な実施形態によれば、プッシュスケジューラは、フロー分類から導出された伝送要件とは独立して、優先順位伝送要件を個々のデータパケットに割り当て得る。例えば、プッシュスケジューラは、再送のためにキューイングされるパケットに最高レベルの優先順位を割り当てるように構成され得る(すなわち、パケットは、以前に伝送されて、失敗している)。 According to further exemplary embodiments, the push scheduler may assign priority transmission requirements to individual data packets independently of transmission requirements derived from flow classification. For example, the push scheduler may be configured to assign the highest level of priority to packets that are queued for retransmission (ie, the packets were previously transmitted and failed).

データフロー又はデータパケット優先順位伝送要件を実装するプッシュスケジューラに関連付けられた技術的課題は、非緊急データパケットが伝送キューから継続的に動かされて、システムにおける非緊急パケットの「飢餓」をもたらし得ることである。 The technical challenges associated with push schedulers implementing data flow or data packet priority transmission requirements are that non-urgent data packets are continually moved from the transmission queue, resulting in "starvation" of non-urgent packets in the system. That's true.

プッシュスケジューラは、非緊急パケットの飢餓に応答して、各データパケットへの伝送のための公称ウォールクロック時間を割り当てることによって、パケット伝送のレートをペーシングするように構成され得る。例示的な実施形態では、パケットは、輻輳を防止するために、推定されるボトルネック帯域幅及びデータパケットのサイズに基づいて、ウォールクロック時間を割り当てられる。 The push scheduler may be configured to pace the rate of packet transmission by allocating a nominal wall clock time for transmission to each data packet in response to a starvation of non-urgent packets. In an exemplary embodiment, packets are assigned wall clock time based on the estimated bottleneck bandwidth and the size of the data packet to prevent congestion.

データパケットがパイプラインステージで割り当てられたネットワークの出力キューは、優先順位パケットを優先して非緊急パケットを動かすことなく、データパケットの割り当てられた公称ウォールクロック時間に従ってデータパケットを伝送するように構成され得る。例えば、時間ゼロにおいて、非緊急データパケットは、時間3の伝送のための公称ウォールクロック時間を割り当てられ得る。緊急データパケットは、ネットワークでの利用可能な伝送容量の量に基づいて、時間3における伝送のためにスケジューリングされ得、この利用可能な伝送容量は、非緊急データパケットを組み込むために低減される。 The network output queue to which a data packet is allocated in a pipeline stage is configured to transmit the data packet according to the data packet's assigned nominal wall clock time, giving priority to priority packets and without moving non-urgent packets. can be done. For example, at time zero, a non-emergency data packet may be assigned a nominal wall clock time for transmission at time three. The urgent data packet may be scheduled for transmission at time 3 based on the amount of available transmission capacity in the network, which available transmission capacity is reduced to incorporate the non-urgent data packet.

例を続けると、プッシュスケジューラは、公称ウォールクロック時間が以後である後の伝送のために非緊急データパケットをキューイングするように構成され得る。例えば、時間0において、時間2において利用可能なネットワーク容量がある場合、プッシュスケジューラは、時間2における伝送のために、時間3のタイムスタンプを有する非緊急データパケットを送信し得る。続いて、非緊急データパケットは、より緊急の公称ウォールクロック時間を有するパケットを受信することに応答して、時間3で送信するために再スケジューリングされ得る。 Continuing with the example, the push scheduler may be configured to queue non-urgent data packets for later transmission after a nominal wall clock time. For example, at time 0, if there is network capacity available at time 2, the push scheduler may send a non-urgent data packet with a timestamp of time 3 for transmission at time 2. Subsequently, the non-urgent data packet may be rescheduled for transmission at time 3 in response to receiving a packet with a more urgent nominal wall clock time.

プッシュスケジューラに関連付けられた技術的な課題は、推定される利用可能なネットワーク伝送容量に基づいてデータパケットをプッシュした結果、システムが、ネットワーク障害又は許容できない量のネットワーク輻輳の場合に堅牢性を失い得ることである。 A technical challenge associated with push schedulers is that pushing data packets based on estimated available network transmission capacity results in the system becoming less robust in the event of network failures or an unacceptable amount of network congestion. It's about getting.

プッシュ型スケジューラは、利用可能なネットワークの各々に関連付けられたネットワーク動作特性を監視して、監視される特性が輻輳閾値を満たすかどうかを判定するように構成され得る。例示的な実施形態では、輻輳閾値は、各ネットワークに関連付けられたベースラインプロファイルから確立される。例えば、特定のネットワークを介して伝送されるパケットについて測定される最低レイテンシは、ネットワークのベースライン値を形成することができ、そのネットワークに沿った以後の伝送を、ベースライン値と比較することができる。別の例示的な実施形態では、閾値は、少なくとも部分的に、パケットのラウンドトリップ時間のベースラインに基づき得る。他の実施形態では、ベースラインは、最小レイテンシをとるよりも複雑な統計的手法を使用して計算され得る。 The push scheduler may be configured to monitor network operating characteristics associated with each of the available networks to determine whether the monitored characteristics meet a congestion threshold. In an exemplary embodiment, the congestion threshold is established from a baseline profile associated with each network. For example, the lowest latency measured for packets transmitted over a particular network can form a baseline value for the network, and subsequent transmissions along that network can be compared to the baseline value. can. In another example embodiment, the threshold may be based, at least in part, on a baseline of packet round-trip times. In other embodiments, the baseline may be calculated using more complex statistical techniques than taking minimum latency.

プッシュスケジューラの堅牢性を増加させるために、スケジューラは、ネットワーク障害又は許容できない量のネットワーク輻輳を検出することに応答して、伝送に利用可能であると定義される伝送容量の量を減少させるか、又は各監視される通信イベントに従う以外で利用可能な伝送容量を更新するように構成され得る。例示的な実施形態では、ネットワークの伝送容量は、以前に伝送されたデータパケットが受信されたという確認応答を受信することに応答して(例えば、ACKを受信することに応答して)のみ更新され得る。いくつかの実施形態によれば、例えば、定義される伝送容量は、ネットワークに関連付けられたバッファにパケットの動きのないキューを含まない理論的な伝送容量に減少される。更なる例示的な実施形態では、定義される伝送容量は、特定のネットワークの全体にわたるインフライトのデータパケットの量に等しいように低減される。 To increase the robustness of the push scheduler, the scheduler may reduce the amount of transmission capacity defined as available for transmission in response to detecting a network failure or an unacceptable amount of network congestion. , or may be configured to update available transmission capacity other than in accordance with each monitored communication event. In an exemplary embodiment, the transmission capacity of the network is updated only in response to receiving an acknowledgment that a previously transmitted data packet has been received (e.g., in response to receiving an ACK). can be done. According to some embodiments, for example, the defined transmission capacity is reduced to a theoretical transmission capacity that does not include a static queue of packets in buffers associated with the network. In a further exemplary embodiment, the defined transmission capacity is reduced to be equal to the amount of data packets in-flight across a particular network.

いくつかの例示的な実施形態では、複数のネットワークのうちのネットワークのうちの1つは、帯域幅オンデマンド(BOD)原理に従って動作し、ネットワーク管理者及び/又は自動化されたネットワーク監視エージェントは、以前の伝送、又は帯域幅に対する以前の要求に基づいて、送信機への伝送に利用可能な帯域幅を割り当てる。この割り当ては、管理者又はエージェントの以後の帯域幅使用の予測に応じて、割り当てられた帯域幅を増加又は減少させ得る。この帯域幅割り当てプロセスの間、パケット損失及び/又はレイテンシは、一時的に増加し、スケジューラがコネクションにパケットを割り当てるためのよりインテリジェントな決定を行うことを必要とし得る。例えば、より多くの帯域幅を要求するために使用されるプロービングパケットは、プロービングパケットがより低い優先順位であることを示すDSCPタグでマークされ得、したがって、必要であれば最初にドロップされる候補である。 In some exemplary embodiments, one of the networks of the plurality of networks operates according to Bandwidth on Demand (BOD) principles, and the network administrator and/or automated network monitoring agent: Allocate available bandwidth for transmissions to transmitters based on previous transmissions or previous requests for bandwidth. This allocation may increase or decrease the allocated bandwidth depending on the administrator's or agent's prediction of future bandwidth usage. During this bandwidth allocation process, packet loss and/or latency may temporarily increase, requiring the scheduler to make more intelligent decisions to allocate packets to connections. For example, probing packets used to request more bandwidth may be marked with a DSCP tag indicating that the probing packet is of lower priority and is therefore a candidate to be dropped first if necessary. It is.

プッシュスケジューラがデータパケットを帯域幅オンデマンドネットワークにプッシュすることに関連付けられた技術的課題は、帯域幅オンデマンドネットワークが伝送に利用可能な帯域幅をまれに更新し、利用可能な容量を利用することが困難になり得ることである。例えば、帯域幅オンデマンドネットワークは、利用可能な容量を有し得るが、割り振りの遅延の結果として、この容量は、使用されなくなり得る。代替的に、プッシュスケジューラがネットワーク上で十分な容量を一貫して使用するに至らない場合、管理者/エージェントは、割り振られた容量を低減することを選定し、潜在的に、ネットワークの監視される特性に重大な変化を与え得る。 The technical challenges associated with a push scheduler pushing data packets onto a Bandwidth-on-Demand network is that the Bandwidth-on-Demand network updates the available bandwidth for transmission infrequently and takes advantage of the available capacity. This can be difficult. For example, a bandwidth on demand network may have available capacity, but as a result of allocation delays, this capacity may go unused. Alternatively, if the push scheduler does not consistently use sufficient capacity on the network, the administrator/agent may elect to reduce the allocated capacity, potentially reducing the network's monitored capacity. can cause significant changes in the characteristics of

プッシュスケジューラは、帯域幅オンデマンドネットワークの伝送容量を、受信された割り当て付けられた伝送容量よりも大きいものとして定義し、帯域幅オンデマンドネットワークに関連付けられたバッファに過剰な伝送容量を格納し、帯域幅オンデマンドネットワークの管理者に、必要とされる量の帯域幅を過度にアドバタイズするように構成され得る。必要とされる帯域幅を過度にアドバタイズする結果、帯域幅オンデマンドネットワークは、より大きな量の未使用の帯域幅をプッシュスケジューラに割り当て始め得る。更に、伝送容量を受信された割り振られた伝送容量よりも大きいものとして定義する結果として、プッシュスケジューラは、以後に発生し得る受信された割り振られた伝送容量の任意の増加を利用するための伝送にデータパケットが利用可能であることを確実にすることができる。 The push scheduler defines the transmission capacity of the bandwidth-on-demand network as greater than the received allocated transmission capacity, and stores the excess transmission capacity in a buffer associated with the bandwidth-on-demand network; Bandwidth on Demand The network administrator may be configured to over-advertise the required amount of bandwidth. As a result of over-advertising the required bandwidth, the bandwidth-on-demand network may begin to allocate greater amounts of unused bandwidth to the push scheduler. Furthermore, as a result of defining the transmission capacity as being larger than the received allocated transmission capacity, the push scheduler does not limit the transmission capacity to take advantage of any increase in the received allocated transmission capacity that may occur subsequently. can ensure that data packets are available.

プルスケジューラシステムに関連付けられた更なる技術的課題は、指定された要件を有するデータパケットが、伝送に公正に配分されることが困難であることである。例えば、特定のタイプのデータパケットが特定のレイテンシを有するコネクション(例えば、ビデオフィード)を必要とする場合、プルスケジューラシステムは、レイテンシ要件を満たす利用可能なネットワークがウェイクアップするまで、当該パケットをバイパス又は遅延させ得る。このようにして、データパケットが入力キューにいつ入るかに応じて、レイテンシに感応するデータパケットが遅延され、レイテンシ問題を更に悪化させ得る。 A further technical challenge associated with pull scheduler systems is that data packets with specified requirements are difficult to be fairly allocated for transmission. For example, if a certain type of data packet requires a connection with a certain latency (e.g., a video feed), the pull scheduler system may bypass that packet until an available network that meets the latency requirement wakes up. or may be delayed. In this manner, depending on when the data packet enters the input queue, latency sensitive data packets may be delayed, further exacerbating the latency problem.

レートベースの輻輳制御は、典型的には、遅延及び損失に基づいてレートを調整する。輻輳検出は、遅延スパイクなどのスプリアス輻輳イベントに対する過度の反応を回避するために、一定のタイムラグを伴って行われる必要がある。2つ以上の輻輳指標があるという事実にもかかわらず、結果は、依然として、送信レートを調整するためのメカニズムが依然として1つしかないということである。これにより、高スループットと輻輳への迅速な対応との目標を同時に達成することが困難になる。 Rate-based congestion control typically adjusts rates based on delay and loss. Congestion detection needs to be performed with a certain time lag to avoid overreacting to spurious congestion events such as delay spikes. Despite the fact that there are more than one congestion indicators, the result is that there is still only one mechanism for adjusting the transmission rate. This makes it difficult to simultaneously achieve the goals of high throughput and rapid response to congestion.

図において、実施形態は、例として示される。説明及び図面は、例示の目的のためにのみ及び理解の補助としてのみであることが明示的に理解されるべきである。 In the figures, embodiments are shown by way of example. It is to be expressly understood that the description and drawings are for purposes of illustration only and as an aid to understanding only.

ここで、実施形態は、例としてのみ、添付の図面を参照して説明される。
プル通信システムの概略図である。 いくつかの例示的な実施形態による、プッシュ通信システムの概略図である。 いくつかの例示的な実施形態による、可用性に基づいて複数のネットワークにパケットをプッシュするためにデータパケットを伝送するための方法のフローチャートである。 いくつかの例示的な実施形態による、コネクションメタデータに基づいてコネクションを順序付けるためのデータパケットを伝送するための別の方法のフローチャートである。 いくつかの例示的な実施形態による、ネットワークにパケットを割り当てるためのネットワークの選択された順序に基づいてデータパケットを伝送するための更なる方法のフローチャートである。 いくつかの例示的な実施形態による、データパケットのルーティングを制御するためのネットワークコネクションをソートするために使用されるディメンションを例示するプロセスフローである。 いくつかの例示的な実施形態による、異なる優先順位レベルのデータパケットをスケジューリングする概略図である。 いくつかの例示的な実施形態による、異なる優先順位レベルのデータパケットをスケジューリングする、図1Bのプッシュ通信システムの一連の概略図である。 いくつかの例示的な実施形態による、図1Bのプッシュ通信システムとのコネクション選択の概略図である。 いくつかの例示的な実施形態による、図1Bのプッシュ通信システムを用いたデータパケット選択の概略図である。 いくつかの例示的な実施形態による、図1Bのプッシュ通信システムを用いたデータパケット割り当ての概略図である。 いくつかの例示的な実施形態による、図1Bのプッシュ通信システムを用いた別のデータパケット割り当ての概略図である。 いくつかの例示的な実施形態による、伝送のための2つの独立したデータフローをスケジューリングする図1Bのプッシュ通信システムの概略図である。 いくつかの例示的な実施形態による、伝送のための2つの従属データフローをスケジューリングする図1Bのプッシュ通信システムの概略図である。 例示的な実施形態による、データパケット伝送を管理するためのインターフェースの対応するスクリーンショットを示す。 例示的な実施形態による、データパケット伝送を管理するためのインターフェースの対応するスクリーンショットを示す。 例示的な実施形態による、データパケット伝送を管理するためのインターフェースの対応するスクリーンショットを示す。 例示的な実施形態による、データパケット伝送を管理するためのインターフェースの対応するスクリーンショットを示す。 例示的な実施形態による、データパケット伝送を管理するためのインターフェースの対応するスクリーンショットを示す。 いくつかの例示的な実施形態による、データパケット伝送の図である。 いくつかの例示的な実施形態による、単方向データパケット伝送の2つの図である。 いくつかの例示的な実施形態による、確認応答に応答して行われるデータパケット伝送の2つの図である。 いくつかの例示的な実施形態による、更なるデータパケットを送信するための確認応答を必要とせずに行われるデータパケット伝送の2つの更なる図である。 いくつかの例示的な実施形態による、インフライトグッドプットデータの図である。 いくつかの例示的な実施形態による、インフライトグッドプットデータの別の図である。 いくつかの例示的な実施形態による、インフライトグッドプットデータの更なる図である。 いくつかの例示的な実施形態による、コネクションが輻輳に遭遇しているデータパケット伝送を示す一連の図である。 いくつかの例示的な実施形態による、コネクションが輻輳に遭遇することに応答した伝送容量の調整後のデータパケット伝送を示す一連の図である。 いくつかの実施形態による、コンピューティングデバイスの例示的な概略図である。
Embodiments will now be described, by way of example only, with reference to the accompanying drawings.
1 is a schematic diagram of a pull communication system; FIG. 1 is a schematic diagram of a push communication system, according to some example embodiments; FIG. 2 is a flowchart of a method for transmitting data packets to push packets to multiple networks based on availability, according to some example embodiments. 2 is a flowchart of another method for transmitting data packets for ordering connections based on connection metadata, according to some example embodiments. 3 is a flowchart of a further method for transmitting data packets based on a selected order of networks for assigning packets to networks, according to some example embodiments. 2 is a process flow illustrating dimensions used to sort network connections to control the routing of data packets, according to some example embodiments. 2 is a schematic diagram of scheduling data packets of different priority levels according to some example embodiments; FIG. 1B is a series of schematic diagrams of the push communication system of FIG. 1B scheduling data packets of different priority levels, according to some example embodiments; FIG. 1B is a schematic diagram of connection selection with the push communication system of FIG. 1B, according to some example embodiments; FIG. 1B is a schematic diagram of data packet selection using the push communication system of FIG. 1B, according to some example embodiments; FIG. 1B is a schematic diagram of data packet allocation using the push communication system of FIG. 1B, according to some example embodiments; FIG. 1B is a schematic diagram of another data packet allocation using the push communication system of FIG. 1B, according to some example embodiments; FIG. 1B is a schematic diagram of the push communication system of FIG. 1B scheduling two independent data flows for transmission, according to some example embodiments; FIG. 1B is a schematic diagram of the push communication system of FIG. 1B scheduling two dependent data flows for transmission, according to some example embodiments; FIG. 5 shows a corresponding screenshot of an interface for managing data packet transmission, according to an example embodiment; FIG. 5 shows a corresponding screenshot of an interface for managing data packet transmission, according to an example embodiment; FIG. 5 shows a corresponding screenshot of an interface for managing data packet transmission, according to an example embodiment; FIG. 5 shows a corresponding screenshot of an interface for managing data packet transmission, according to an example embodiment; FIG. 5 shows a corresponding screenshot of an interface for managing data packet transmission, according to an example embodiment; FIG. FIG. 2 is a diagram of data packet transmission, according to some example embodiments. FIG. 3 is two diagrams of unidirectional data packet transmission, according to some example embodiments. FIG. 3 is two diagrams of data packet transmissions that occur in response to acknowledgments, according to some example embodiments. FIG. 7 is two further diagrams of data packet transmissions that occur without requiring acknowledgment to send further data packets, according to some example embodiments; FIG. 3 is an illustration of in-flight goodput data, according to some example embodiments. FIG. 2 is another illustration of in-flight goodput data, according to some example embodiments. FIG. 6 is a further illustration of in-flight goodput data, according to some example embodiments. 2 is a series of diagrams illustrating data packet transmission where a connection is experiencing congestion, according to some example embodiments; FIG. 2 is a series of diagrams illustrating data packet transmission after transmission capacity adjustment in response to a connection encountering congestion, according to some example embodiments; FIG. 1 is an example schematic diagram of a computing device, according to some embodiments. FIG.

伝送のための複数のコネクションが利用可能であり、代替的に混合されたルータ又は混合されたシステムと称される、データパケットを伝送するためのシステム、方法、及びデバイスが記載される。 Systems, methods, and devices are described for transmitting data packets in which multiple connections for transmission are available, alternatively referred to as mixed routers or mixed systems.

伝送のために複数の利用可能なコネクションを介してデータパケットを伝送するための既存のソリューションは、典型的には、「プル」型アーキテクチャとして実装され、データパケットは、複数の利用可能なコネクションに関連付けられた内部タイマなどの、デバイス又はシステムによって生成又は定義されるイベントに応答して伝送される。 Existing solutions for transmitting data packets across multiple available connections for transmission are typically implemented as "pull" architectures, where data packets are routed across multiple available connections. Transmitted in response to an event generated or defined by a device or system, such as an associated internal timer.

内部タイマは、様々なコネクションパラメータ(例えば、再送されたパケットの回復時間を低減するように構成されたタイマ持続時間)に応答し得るが、他の利用可能なコネクションのコネクションパラメータには応答しない。 The internal timer may be responsive to various connection parameters (e.g., a timer duration configured to reduce recovery time for retransmitted packets), but not to connection parameters of other available connections.

タイマイベントの独立性の結果として、プル型システムは、利用不足(例えば、タイマ値が長すぎる場合、アイドルコネクションをもたらす)、又は利用過剰(例えば、不十分な性能にもかかわらず、低信頼性のコネクションにデータパケットが割り当てられ得る)に悩まされる可能性があり、これにより、データパケットの配信におけるより大きなレイテンシ、低減されたスループット、低信頼性のデータパケット配信、より高価なデータパケット配信などがもたらされ得る。 As a result of the independence of timer events, pull-based systems can suffer from underutilization (e.g., if the timer value is too long, resulting in idle connections) or overutilization (e.g., poor performance but low reliability). data packets may be allocated to connections), which may result in greater latency in data packet delivery, reduced throughput, less reliable data packet delivery, more expensive data packet delivery, etc. can be brought about.

複数の利用可能なコネクションを介してデータパケットを伝送するためにプッシュ型アーキテクチャに従ってデータパケットを伝送する方法、システム、及びデバイスが本明細書で提案される。開示された方法、システム、及びデバイスは、監視される通信イベントに応答して、複数のコネクションの各々の動作特性(監視される特性)のサブセットを取得し、これらのコネクションの監視される特性に基づいて、伝送容量を有するように決定されたコネクションのいずれかへの伝送に利用可能なデータパケットを反復して割り当てるように構成されたスケジューラを含む。例示的な実施形態では、ネットワークの他の監視される特性を、データパケットに関連付けられた伝送要件と併せて使用して、データパケットをデータパケットの伝送要件にマッチするコネクションに割り当て得る。 Methods, systems, and devices for transmitting data packets according to a push architecture for transmitting data packets over multiple available connections are proposed herein. The disclosed methods, systems, and devices obtain a subset of operational characteristics (monitored characteristics) of each of a plurality of connections in response to a monitored communication event; and a scheduler configured to iteratively allocate available data packets for transmission to any of the determined connections based on the determined transmission capacity. In exemplary embodiments, other monitored characteristics of the network may be used in conjunction with the transmission requirements associated with the data packet to assign the data packet to a connection that matches the data packet's transmission requirements.

複数のコネクションが利用可能であるプッシュ型アーキテクチャでデータパケットをスケジューリングすることは、使用されてこなかった。典型的なマルチパスシステム(代替的に、混合されたコネクションシステムと称される)は、コネクションのフロー要件又は動作特性を考慮しないため、静的ベースでコネクションにパケット及びフローを割り当てる。例えば、マルチホーム型インターネットプロトコル(IP)ルータは、このルータの宛先ルーティングテーブルに対してマッチングする、パケットヘッダ内の宛先IPアドレスに純粋に基づいて、コネクションにパケットを割り当てる。コネクション割り当てが頻繁に変化しない場合、プル型アーキテクチャを実装する方が簡単である。例えば、プッシュスケジューラによってコネクションにパケットの大規模なキューが割り当てられたが、コネクションがオフラインになったためにリコール又は再割り当てされなければならなくなった場合を処理する必要はない。 Scheduling data packets in push architectures where multiple connections are available has not been used. Typical multipath systems (alternatively referred to as mixed connection systems) allocate packets and flows to connections on a static basis because they do not consider the flow requirements or operational characteristics of the connections. For example, a multihomed Internet Protocol (IP) router assigns packets to connections purely based on the destination IP address in the packet header, which matches against the router's destination routing table. If connection allocations do not change frequently, it is easier to implement a pull architecture. For example, there is no need to handle the case where a connection is assigned a large queue of packets by a push scheduler, but then has to be recalled or reallocated because the connection goes offline.

提案された方法、システム、及びデバイスは、入力コネクションを通して入力ネットワークから1つ以上のデータパケットを含むデータフローを受信する。 The proposed method, system, and device receive a data flow comprising one or more data packets from an input network through an input connection.

提案された方法、システム、及びデバイスは、リモートピアへの混合されたコネクションのセットを介してデータパケットを伝送する3ステージのデータパイプラインを含む。複数のコネクションを宛先とする新しいデータは、第1のパイプラインステージに渡され、そこで新しいデータがキューイングされ、その後、混合されたコネクションの各コネクションに関連付けられた第2のパイプラインステージに渡される。第2のパイプラインステージは、第2のパイプラインステージの基礎となるコネクションに関する統計をまとめ、パケットを第3のパイプラインステージに渡す。第2のステージは、パケットが次のパイプラインステージに利用可能であることを確実にするために、輻輳制御機能性及びパケットバッファリングを提供し得る。次いで、第3のステージは、場合によっては第2のステージによって提供されるペーシング又はタイミングヒントに従って、パケットをネットワークインターフェースに書き込む。 The proposed method, system, and device include a three-stage data pipeline that transmits data packets over a mixed set of connections to remote peers. New data destined for multiple connections is passed to a first pipeline stage where the new data is queued and then passed to a second pipeline stage associated with each connection in the mixed connection. It will be done. The second pipeline stage compiles statistics about the connections underlying the second pipeline stage and passes the packet to the third pipeline stage. The second stage may provide congestion control functionality and packet buffering to ensure that packets are available to the next pipeline stage. The third stage then writes the packet to the network interface, possibly according to pacing or timing hints provided by the second stage.

別の実施形態は、次いでパケットを第3のステージのインスタンスに提供する単一の第2のステージインスタンスを有してもよく、第3のステージの各々は、物理インターフェースカードを共有するネットワークインターフェースのセットでパケットの伝送を管理する。パイプラインステージの各々の異なる数のインスタンスを伴う他の実施形態が存在し得る。 Another embodiment may have a single second stage instance that then provides packets to the third stage instances, each of the third stages having a network interface that shares a physical interface card. Manage packet transmission in sets. Other embodiments may exist with different numbers of instances of each of the pipeline stages.

図1Aは、いくつかの例示的な実施形態による、プル通信システム100Aの概略図である。 FIG. 1A is a schematic diagram of a pull communication system 100A, according to some example embodiments.

各コネクションタイマ(例えば、コネクション110A、110B、及び110Nにそれぞれ関連付けられたタイマ108A、108B、及び108N)がウェイクアップすると、コネクションタイマは、プルスケジューラ130を呼び出し、データパケットの入力キュー102からの伝送のためのデータパケットを要求する。データパケットを、バーストで要求することができ、バーストサイズは、各タイマの対応するコネクションの推定されるビットレートで20ms(1/50Hz)相当のバイトを公称上反映する。そのようなプルタイマに関連付けられた制限は、各タイマのウェイクアップ時に要求されたバイト数が、コネクションの完全な輻輳ウィンドウ(例えば、「容量」を表す)を反映しないことである。 When each connection timer (e.g., timers 108A, 108B, and 108N associated with connections 110A, 110B, and 110N, respectively) wakes up, the connection timer invokes pull scheduler 130 to transfer data packets from input queue 102. request data packets for. Data packets may be requested in bursts, with the burst size nominally reflecting 20 ms (1/50 Hz) worth of bytes at the estimated bit rate of each timer's corresponding connection. A limitation associated with such pull timers is that the number of bytes requested upon wake-up of each timer does not reflect the complete congestion window (e.g., representing "capacity") of the connection.

各タイマは独立して発動することから、プルスケジューラ130は、グローバルに最適なスケジューリング決定を行うために、全体的な伝送状態への可視性を有していない。例えば、コネクション110Aは、地上ブロードバンドコネクションであってもよく、コネクション110Bは、帯域幅オンデマンド(BoD)衛星コネクションであってもよい。コネクション110Aは、経費、レイテンシなどの結果として、コネクション110Bよりも好ましい場合があるが、コネクション110Bタイマ108Bがウェイクしてプルスケジューラ130を呼び出すときに、プルスケジューラ130は、コネクション110Aタイマ108Aの次のウェイクアップ時間に対する可視性を有していない(タイマ108Aは独立して発動することから)。プルスケジューラ130は、コネクション110Aが入力キュー102内のデータパケットの全てを処理することができるかどうか、又は伝送を完了するためにコネクション110Bに更なるデータパケットを割り当て付けるべきかどうかを判定するための基礎を有していない。 Because each timer fires independently, pull scheduler 130 does not have visibility into the overall transmission status in order to make globally optimal scheduling decisions. For example, connection 110A may be a terrestrial broadband connection and connection 110B may be a bandwidth-on-demand (BoD) satellite connection. Connection 110A may be preferable to connection 110B as a result of expense, latency, etc., but when connection 110B timer 108B wakes up and calls pull scheduler 130, pull scheduler 130 uses the next It has no visibility into wake-up time (since timer 108A fires independently). Pull scheduler 130 determines whether connection 110A can process all of the data packets in input queue 102 or whether additional data packets should be assigned to connection 110B to complete the transmission. does not have the basis of

コネクション110Bが役立つ場合、プルスケジューラ130は、プルスケジューラ130のみがタイマへの可視性を含むため、伝送に利用可能なデータパケットのうちのいずれを伝送するためにいずれのコネクションが使用されるべきかを判定する手段を有していなくてもよい。 If connection 110B is useful, pull scheduler 130 determines which connection should be used to transmit which of the data packets available for transmission, since only pull scheduler 130 includes visibility into the timer. It is not necessary to have a means for determining.

データパケットは、コネクション全体にわたって伝送され、その後、コネクション114を介して受信機116によって受信される。受信機116は、伝送されたデータパケットを組み立てるためのシーケンサ118を含み、ローカルエリアネットワーク(LAN)120を介して、組み立てられたデータパケットを更に伝送し得る。 Data packets are transmitted across the connection and then received by receiver 116 via connection 114. Receiver 116 includes a sequencer 118 for assembling the transmitted data packets and may further transmit the assembled data packets via local area network (LAN) 120.

プル型アーキテクチャとは対照的に、提案されたシステムは、効率的なコネクション利用率を増加させるために特定のコネクションにデータパケットをスケジューリングすることが可能であり得る。 In contrast to pull-based architectures, the proposed system may be able to schedule data packets on specific connections to increase efficient connection utilization.

図1Bは、いくつかの例示的な実施形態による、プッシュ通信システム100Bの概略図である。例示的な実施形態では、システム100Bは、多重化技法を使用して共有通信チャネルに多元接続(MA)を提供するコネクションタイプを集約するように設計されている。例えば、符号分割多元接続(CDMA)ネットワークにおける各ノードに割り当てられた直交符号は、それらのノードが周波数のセットを共有し、かつ互いに干渉することなく同時に伝送することを可能にする。 FIG. 1B is a schematic diagram of a push communication system 100B, according to some example embodiments. In the exemplary embodiment, system 100B is designed to aggregate connection types that provide multiple access (MA) on a shared communication channel using multiplexing techniques. For example, orthogonal codes assigned to each node in a code division multiple access (CDMA) network enable the nodes to share a set of frequencies and transmit simultaneously without interfering with each other.

これらの多重化技法を使用するコネクションタイプの特性は、ネットワークにおけるノードへの利用可能な容量の再割り振りが迅速であり、典型的には、何十~何百ミリ秒のオーダーであることである。例示的な実施形態では、システム100Bは、この特性を念頭において設計されており、この時間スケールで利用可能なWANコネクションの間でトラフィックを再割り振りする。 A characteristic of connection types that use these multiplexing techniques is that the reallocation of available capacity to nodes in the network is rapid, typically on the order of tens to hundreds of milliseconds. . In the exemplary embodiment, system 100B is designed with this characteristic in mind and reallocates traffic among available WAN connections on this time scale.

対照的に、帯域幅オンデマンド(BoD)としても知られる、要求割り当て多元接続(DAMA)技法を使用するコネクションは、ノードに一定期間チャネルへのアクセスをネゴシエートさせることによって、通信チャネルを共有する。割り振られると、ノードは、ネゴシエートされた部分を専用に使用する。したがって、利用可能な容量の共有は、チャネルのネゴシエートされた部分を使用してシーケンシャルにノードを介して行われる。 In contrast, connections using demand allocation multiple access (DAMA) techniques, also known as Bandwidth on Demand (BoD), share a communication channel by having nodes negotiate access to the channel for a period of time. Once allocated, the node uses the negotiated portion exclusively. Therefore, sharing of the available capacity is done sequentially through the nodes using negotiated portions of the channel.

BoDコネクションを用いると、このネゴシエーションとその後のノード間の容量の再割り振りとは、典型的には、完了するのに秒のオーダー(一桁台中盤~二桁台前半)を要する。例示的な実施形態では、システム100Bは、これらのタイプのコネクションを効果的に使用するための変更(本明細書に記載される)を必要とするであろう。 With BoD connections, this negotiation and subsequent reallocation of capacity between nodes typically takes on the order of seconds (mid-single digits to low double digits) to complete. In an exemplary embodiment, system 100B will require modifications (described herein) to effectively use these types of connections.

長い再割り振り時間(関連付けられたパケット損失及び/又はレイテンシの増加を伴う)は、現在の実装態様では輻輳として解釈され、典型的な輻輳制御方法は、輻輳が検出されたコネクションに関する使用を減らして、これらのコネクションを過負荷にすることを回避する。しかしながら、BoDコネクションは、実際には、容量の増加した割り振りを要求し、かつ場合によっては取得するために、(少なくとも一時的に)反対の挙動を必要とする。 Long reallocation times (with associated increased packet loss and/or latency) are interpreted as congestion in current implementations, and typical congestion control methods reduce usage on connections where congestion is detected. , to avoid overloading these connections. However, BoD connections actually require the opposite behavior (at least temporarily) in order to request and possibly obtain increased allocation of capacity.

システム100Bは、伝送のために入力ネットワークから1つ以上のデータパケットを含むデータフローを受信する入力キュー102を含む。データフローの例は、ファイル転送、ビデオファイル転送、オーディオファイル転送、ボイスオーバーインターネットプロトコル(VoIP)通話、又は仮想プライベートネットワーク(VPN)に関連付けられたデータパケットであり得る。 System 100B includes an input queue 102 that receives a data flow containing one or more data packets from an input network for transmission. Examples of data flows may be file transfers, video file transfers, audio file transfers, voice over internet protocol (VoIP) calls, or data packets associated with a virtual private network (VPN).

入力キュー102はまた、(本明細書に記載されるような)スケジューラがLAN側クライアントから新しいパケットが到達するのと同じレートで入力キュー102にサービス提供することができない場合に、パケットにドロップポリシーを適用することを担う。このことは、典型的には、LANクライアントが集約WAN伝送容量よりも高いレートで伝送している場合に発生する。 Input queue 102 also has a drop policy on packets if a scheduler (as described herein) is unable to service input queue 102 at the same rate as new packets arrive from LAN-side clients. Responsible for applying. This typically occurs when LAN clients are transmitting at a higher rate than the aggregate WAN transmission capacity.

システム100Bは、プッシュ型アーキテクチャに従って、に混合されたコネクションセットを介してリモートピアにデータパケットを伝送するための3つのステージを含み、ステージは、代替的に、パイプライン又はパイプラインステージと称される。 System 100B includes three stages for transmitting data packets to a remote peer via a set of intermixed connections according to a push architecture, the stages alternatively referred to as pipeline or pipeline stages. Ru.

第1のステージ104は、フロー分類エンジン104A、スケジューラ104B(以降では、代替的に、プッシュスケジューラ104と称される)を含み、入力キュー102からデータパケットを受信し、第2のステージ106へと渡すためにデータパケットをキューイングする。例示的な実施形態では、第1のステージ104は、入力キュー102、フロー分類エンジン104A、及びスケジューラ104Bの全てを含む。 The first stage 104 includes a flow classification engine 104A, a scheduler 104B (hereinafter alternatively referred to as push scheduler 104), and receives data packets from the input queue 102 and forwards them to the second stage 106. Queue data packets for passing. In the exemplary embodiment, first stage 104 includes all of input queue 102, flow classification engine 104A, and scheduler 104B.

入力キュー102は、送信者のLAN側でクライアントから受信されたパケットをバッファリングし、場合によってはフロー分類エンジン104Aを利用するか、又はフロー分類エンジン104Aと協働することによって、データパケットをフローに分類する(代替的に、データパケットをフローにマッピングすると称される)ことを担う。入力キュー102は、データフローが第1のステージ104のスケジューラによって公正にサービス提供されることを確実にする。 Input queue 102 buffers packets received from clients on the sender's LAN side and, in some cases, utilizes or cooperates with flow classification engine 104A to route data packets to flows. (alternatively referred to as mapping data packets to flows). The input queue 102 ensures that data flows are serviced fairly by the first stage 104 scheduler.

例示的な実施形態では、第1のステージ104、又は第1のステージ104の支援フロー分類エンジン104Aは、コネクションへのデータパケットの割り当てに関連付けられたユーザ構成の設定の変更を監視するか、又は通知される。ユーザ構成の設定は、コネクションが優先順位レベルに、それらの優先順位レベルがアクティブになるべきであるときに、どのように割り当てられるべきかに関する情報、並びにフローに属するパケットに、特定の監視される特性を有するコネクションを好ませ得るユーザ構成可能なフロー分類ルールを含む(例えば、ビデオストリームクラスに属するパケットは、低レイテンシを有するコネクションを好み得るのに対して、ファイルダウンロードクラスに属するパケットは、より低い金銭的コストを有するコネクションを好み得る)。 In an exemplary embodiment, the first stage 104, or the auxiliary flow classification engine 104A of the first stage 104, monitors changes in user-configured settings associated with the assignment of data packets to connections; Be notified. User-configured settings provide information about how connections should be assigned to priority levels, when those priority levels should be activated, as well as specific monitored packets belonging to a flow. Contains user-configurable flow classification rules that may favor connections with characteristics (e.g., packets belonging to the video stream class may prefer connections with low latency, whereas packets belonging to the file download class may prefer connections with lower latency). may prefer connections that have lower monetary costs).

第1のステージ104は、混合されたリンクを含むWANコネクションに対応する(本明細書に記載されるように)複数のコネクション監視インスタンスの各々について、現在のメタデータ(例えば、動作特性)を定期的に通知される。このメタデータは、監視インスタンス106によって収集され、コネクションの推定されるボトルネック帯域幅、推定される最小ラウンドトリップ時間、最近の実際のラウンドトリップ時間、コネクションについての現在の輻輳ウィンドウ、及び以前に次のステージに送信されたパケットについての受信/損失ステータスを含み得る。このメタデータを使用して、第1のステージ104はまた、メタデータを拡張して、第1のステージ104がこのコネクション上でインフライトとしてスケジュールしたバイトの推定を追跡し、その合計を新しいバイト、再送バイト、又はダミー/プロービングバイトとして更に細分化してもよい。第1のステージ104によって収集及び追跡されたメタデータの全ては、監視される特性と称される。 A first stage 104 periodically updates current metadata (e.g., operational characteristics) for each of a plurality of connection monitoring instances (as described herein) corresponding to a WAN connection that includes mixed links. will be notified. This metadata is collected by monitoring instance 106 and includes the connection's estimated bottleneck bandwidth, estimated minimum round-trip time, recent actual round-trip time, current congestion window for the connection, and previously may include reception/loss status for packets sent to the stage. Using this metadata, the first stage 104 also extends the metadata to track an estimate of the bytes that the first stage 104 has scheduled in-flight on this connection, and adds that total to new bytes. , retransmission bytes, or dummy/probing bytes. All of the metadata collected and tracked by the first stage 104 is referred to as a monitored characteristic.

次いで、全ての利用可能な監視される特性を使用して、第1のステージ104は、パケットを次のステージに送信するべきかどうか、及びそうであれば、いずれのコネクションがパケットを受信するべきかを判定することとなる。コネクション監視インスタンスに提供されるパケットのセットは、(同じコネクション監視インスタンス又は異なるコネクション監視インスタンスのいずれかに)以前に送信されたパケットの複製を含み得る。代替的に、スケジューラは、所与のコネクション監視インスタンスが、そのインスタンスのコネクションが現在容量を有する場合であっても、パケットを受信するのに現在適格ではないと判定してもよい。特定のステージ3インスタンスへのパケットの割り当ては、この文書の他の箇所で議論される。 Using all available monitored characteristics, the first stage 104 then determines whether the packet should be sent to the next stage and, if so, which connection should receive the packet. The decision will be made as to whether or not. The set of packets provided to a connection monitoring instance may include duplicates of previously sent packets (either to the same connection monitoring instance or to a different connection monitoring instance). Alternatively, the scheduler may determine that a given connection monitoring instance is not currently eligible to receive packets even if that instance's connections currently have capacity. Assignment of packets to specific Stage 3 instances is discussed elsewhere in this document.

第2のステージ106は、複数の利用可能なコネクションの各コネクションについてのコネクション監視インスタンス(例えば、コネクション110A、110B、及び110Nにそれぞれ関連付けられたコネクション監視インスタンス106A、106B、及び106N)を含む。第2のステージ106のコネクション監視インスタンスは、関連付けられたコネクションを監視し、動作特性と呼ばれるコネクションの性能(例えば、レイテンシ)に関連付けられた統計を判定又は取得する。第2のステージ106は、パケットが次のステージに利用可能であることを確実にするために、輻輳制御機能性及びパケットバッファリングを提供し得る。第2のステージ106は、各コネクション(例えば、出力キュー108A、108B、及び108N)についての出力キューを含む第3のステージ108にパケットを渡す。次いで、第3のステージ108は、場合によっては第2のステージ106によって提供されるペーシング又はタイミングヒントに従って、パケットをネットワークインターフェースに書き込む。 The second stage 106 includes a connection monitoring instance for each of the plurality of available connections (eg, connection monitoring instances 106A, 106B, and 106N associated with connections 110A, 110B, and 110N, respectively). The connection monitoring instance of the second stage 106 monitors the associated connection and determines or obtains statistics associated with the connection's performance (eg, latency), referred to as behavioral characteristics. The second stage 106 may provide congestion control functionality and packet buffering to ensure that packets are available to the next stage. Second stage 106 passes the packet to third stage 108, which includes an output queue for each connection (eg, output queues 108A, 108B, and 108N). Third stage 108 then writes the packet to the network interface, possibly according to pacing or timing hints provided by second stage 106.

いくつかの実施形態では、第2のステージ106は、BoDコネクションのための帯域幅割り振りプロセスをよりよくサポートするために、1つ以上のR2RIプロトコル(例えば、PPPoE(RFC5578)、R2CP、DLEP(RFC8175))を実装し得る。 In some embodiments, the second stage 106 uses one or more R2RI protocols (e.g., PPPoE (RFC5578), R2CP, DLEP (RFC8175) to better support the bandwidth allocation process for BoD connections. )) can be implemented.

第2のステージ106は、第1のステージ104からパケットを受信し、これらのパケットをローカルにキューイングし、かつパケットのグループをバーストとして次のパイプラインステージに提供することを担う。第2のステージ106はまた、ピア又は受信者から受信された確認応答に基づいて、第2のステージ106の関連付けられたコネクションについてのメタデータを追跡する。 The second stage 106 is responsible for receiving packets from the first stage 104, queuing these packets locally, and providing groups of packets as bursts to the next pipeline stage. The second stage 106 also tracks metadata about the second stage's 106 associated connections based on acknowledgments received from peers or recipients.

第2のステージ106におけるキューの目的は、伝送のためにネットワークデバイスに書き込むために次のパイプラインステージに利用可能なパケットが常にあることを確実にすることである。いくつかの実施形態は、各パケット情報の一部として優先順位メタデータを含んでもよく、その結果、第1のステージ104から到達する新しいパケットは、より高い優先順位のパケットにプリファレンスを提供するためにキュー内で再順序付けされてもよい。 The purpose of the queue in the second stage 106 is to ensure that there is always a packet available to the next pipeline stage to write to the network device for transmission. Some embodiments may include priority metadata as part of each packet information so that new packets arriving from the first stage 104 provide preference to higher priority packets. may be reordered within the queue.

第2のステージ106が十分なパケットをバッファリングして、パケットが第3のステージ108に提供され得ることを確実にするために、第2のステージ106は、改変されたメタデータを第1のステージ104に提供し得る。例えば、いくつかの例示的な実施形態によれば、第2のステージ106は、第1のステージ104が、第3のステージ108が実際の輻輳ウィンドウパケットの書き込みを完了するときのために第2のステージ106でバッファリングされ得る追加のパケットを提供するように、より大きな輻輳ウィンドウを報告する(すなわち、「過度にアドバタイズする」)ことを選定し得る。 In order to ensure that the second stage 106 buffers enough packets so that the packets can be provided to the third stage 108, the second stage 106 transfers the modified metadata to the first may be provided to stage 104. For example, according to some example embodiments, the second stage 106 writes the second stage for when the first stage 104 completes writing the actual congestion window packet. may choose to report (i.e., "over-advertise") a larger congestion window to provide additional packets that may be buffered at stage 106 of.

第2のステージ106はまた、BoDコネクションにおける容量の割り振りの変更を容易にするために、改変されたメタデータを第1のステージ104に提供してもよい(すなわち、より高い容量を割り振るためにBoDコネクションをトリガするために、第1のステージ104に、第1のステージ104がより高い容量を有するかのように、このコネクション上のパケットをスケジューリングさせる)。この改変されたメタデータは、より高い容量を異なる要求されたタイプ/優先順位に分解する情報を含み得る。例えば、BoDコネクションをプローブするために使用されるより高い増分容量は、プローブパケットがBoDコネクションによってドロップされる可能性が高いことから、典型的には、冗長/ダミーパケットで構成されている。 The second stage 106 may also provide modified metadata to the first stage 104 to facilitate changing the allocation of capacity in the BoD connection (i.e., to allocate higher capacity). To trigger a BoD connection, have the first stage 104 schedule packets on this connection as if the first stage 104 had a higher capacity). This modified metadata may include information that breaks down the higher capacity into different requested types/priorities. For example, higher incremental capacity used to probe a BoD connection is typically comprised of redundant/dummy packets since probe packets are more likely to be dropped by the BoD connection.

第2のステージ106から第1のステージ104への容量のアドバタイズ又は過度のアドバタイズは、必ずしも即時により高い増分容量についてのプロービングをもたらす必要はない。第1のステージ104は、最終的には、パケットがコネクションにどのように割り当てられるかについての決定を依然として行う。一実施形態は、第2のステージ106にDAMA再割り振りプロセスを開始するように指示する前に、全ての非BoDコネクション上のCWNDが完全に消費される(又は完全な消費に近づく)まで待ち得る。 Advertising or over-advertising capacity from the second stage 106 to the first stage 104 need not necessarily result in immediate probing for higher incremental capacity. The first stage 104 ultimately still makes decisions about how packets are assigned to connections. One embodiment may wait until the CWND on all non-BoD connections is fully consumed (or close to fully consumed) before instructing the second stage 106 to begin the DAMA reallocation process. .

第2のステージ106におけるキューはまた、基礎となるネットワークコネクションに何かが起こった場合に、前のステージへの障害の高速通知を可能にする。第3のステージ108に提供され、かつネットワークに書き込まれたパケットは、ネットワークインターフェースがその後ダウンを報告した場合でも、転送中であると仮定されなければならず、それらのパケットが失われたとマークされ得る前にタイムアウトが発生しなければならないことを意味する。しかしながら、依然として第2のステージ106でキューイングされているパケットは、コネクションがもはや利用可能ではないことが第2のステージ106に通知されると、即時に失われたとしてマークされ得、これにより、これらのパケットは、優先された再送のために即時に適格となる。 The queue in the second stage 106 also allows for fast notification of failures to previous stages if something happens to the underlying network connection. Packets provided to the third stage 108 and written to the network must be assumed to be in transit, even if the network interface subsequently reports down, and those packets are marked lost. This means that a timeout must occur before you can get it. However, packets that are still queued in the second stage 106 may be marked as lost as soon as the second stage 106 is notified that the connection is no longer available, thereby These packets are immediately eligible for prioritized retransmission.

第3のステージ108に渡される前に、いくつかの実施形態は、次のステージがいつコネクションを介して当該パケットを送信することを試みるべきかを示す公称タイムスタンプを各パケットに割り当てることによって、パケット伝送のレートを明示的にペーシングすることを試み得る。そのようなタイムスタンプは、ネットワークボトルネックリンクにおいて、又はネットワークボトルネックリンクの前に、ネットワーク輻輳を防止するために、コネクション(例えば、パケットが割り当てられているコネクション)の推定されるボトルネック帯域幅、及びパケットサイズに基づいて決定され得る。 Before being passed to the third stage 108, some embodiments provide a time stamp to each packet that indicates when the next stage should attempt to send that packet over the connection. One may try to explicitly pace the rate of packet transmission. Such timestamps are used to determine the estimated bottleneck bandwidth of a connection (e.g., the connection to which the packet is being allocated) to prevent network congestion at or before the network bottleneck link. , and the packet size.

図2は、200において、第2のステージ106が優先されるパケットをサポートする実施形態の一例を示す。図2では、キューの先頭が右側に表示され、キューの末尾が左側に表示されている。図2の上部(例えば、第1のステップ)では、第1のステージ104は、第2のステージ106のコネクション監視インスタンスに、優先順位付けされたパケットの新しいリストを提供する。図2の下部(例えば、第2のステップ)は、これらの新しいパケットが優先順位順に優先順位キューに追加されたことを示し、それにより、全ての優先順位1のパケットは、任意の優先順位2のパケットがデキューされる前にデキューされる。同じ優先順位のパケットは、シーケンス順序で保持される。 FIG. 2 illustrates, at 200, an example embodiment in which the second stage 106 supports prioritized packets. In FIG. 2, the head of the queue is displayed on the right side, and the tail of the queue is displayed on the left side. At the top of FIG. 2 (eg, first step), the first stage 104 provides a new list of prioritized packets to the connection monitoring instance of the second stage 106. The bottom part of Figure 2 (e.g., the second step) shows that these new packets have been added to the priority queue in priority order, so that all priority 1 packets are replaced by any priority 2 packets. packets are dequeued before they are dequeued. Packets of the same priority are kept in sequential order.

図示されていない例示的な実施形態では、第2のステージ106は、次いでパケットを第3のステージのインスタンスに提供する単一のコネクション監視インスタンスを有し得、これらのインスタンスの各々は、物理インターフェースカードを共有するネットワークインターフェースのセットでパケットの伝送を管理する。パイプラインステージの各々の異なる数のインスタンスを伴う他の実施形態が存在し得る。 In an exemplary embodiment not shown, the second stage 106 may have a single connection monitoring instance that then provides packets to the third stage instances, each of which has a physical interface. Manages the transmission of packets across a set of network interfaces that share a card. Other embodiments may exist with different numbers of instances of each of the pipeline stages.

メタデータ又はコールバックの形態のフィードバックが、ステージから前のステージに送信され得るか、又はステージが、システムの異なる部分から通知を受信し得る。これらのアクションのいずれかが、次のステージにパケットを送信するステージをトリガ(すなわち、プッシュ)し得る。 Feedback in the form of metadata or callbacks may be sent from a stage to a previous stage, or a stage may receive notifications from different parts of the system. Any of these actions may trigger (ie, push) a stage to send a packet to the next stage.

第3のステージ108は、1つ以上のコネクション伝送インスタンス(例えば、コネクション110A、110B、及び110Nにそれぞれ関連付けられたコネクション伝送インスタンス108A、108B、及び108N)を介して、第2のステージ106からパケットを受信し、これらのパケットをネットワーク112に書き込む。いくつかの実施形態では、全ての第2のステージ106のコネクション監視インスタンスが、単一のコネクション伝送インスタンスにパケットを提供するか、又は各コネクション監視インスタンスが、コネクション伝送インスタンスに関連付けられ得る。 Third stage 108 transmits packets from second stage 106 via one or more connection transmission instances (e.g., connection transmission instances 108A, 108B, and 108N associated with connections 110A, 110B, and 110N, respectively). and writes these packets to network 112. In some embodiments, all second stage 106 connection monitoring instances may provide packets to a single connection transmission instance, or each connection monitoring instance may be associated with a connection transmission instance.

第3のステージ108のいくつかの実施形態は、キューイングメカニズムを使用して、前のステージがパケットをいつ送信するべきかに関するヒントを提供することを可能にし得る。例えば、ヒントは、メタデータとしてパケットに関連付けられた「公称送信時間」の形態で生じ得る。送信される次のパケットが以後の公称送信時間を有する場合、第3のステージ108は、そのパケットを送信する前にその時間まで待つこととなる。緊急パケットは、緊急パケットを他のキューイングされたパケットよりも先に送信させ得る即時タイムスタンプでフラグ付けされ得る。非緊急パケットの飢餓を防止するために、いくつかの実施形態は、過去の公称送信時間を有する非緊急パケットの後に緊急パケットをキューイングし得る。 Some embodiments of the third stage 108 may use a queuing mechanism to allow previous stages to provide hints as to when to send a packet. For example, a hint may occur in the form of a "nominal transmission time" associated with the packet as metadata. If the next packet to be transmitted has a later nominal transmission time, the third stage 108 will wait until that time before transmitting the packet. Urgent packets may be flagged with an immediate timestamp that may cause the urgent packet to be sent before other queued packets. To prevent starvation of non-urgent packets, some embodiments may queue urgent packets after non-urgent packets that have a past nominal transmission time.

いくつかの実施形態は、パケットが送信されたことを示すために第2のステージ106に対して通知をトリガするために使用され得るパケットメタデータの一部としてコールバック機能を含み得る。そのような通知を使用して、第2のステージ106から第3のステージ108にプッシュされるパケットの新しいバッチをトリガし得る。 Some embodiments may include a callback function as part of the packet metadata that may be used to trigger a notification to the second stage 106 to indicate that the packet has been sent. Such notifications may be used to trigger a new batch of packets to be pushed from the second stage 106 to the third stage 108.

図3は、300において、第2のステージ106によって提供されたパケットが、指定された時間の前に送信されないことを要求する「送信時」ヒント(公称送信時間)を含む実施形態の経時的な進行を示す。「送信時」が0の時間のパケットは、できるだけ早く送信されるべきである。図3は、これらのケースの全てについての例を例示している(例えば、緊急パケットについての過去の公称送信時間の使用、及びシステムが非緊急パケットの飢餓をどのように回避するか)。 FIG. 3 illustrates, at 300, a time course of an embodiment that includes an "on transmit" hint (nominal transmit time) requesting that packets provided by the second stage 106 not be transmitted before a specified time. Show progress. Packets with a "when sent" time of 0 should be sent as soon as possible. FIG. 3 illustrates examples for all of these cases (eg, the use of past nominal transmission times for urgent packets and how the system avoids starvation of non-urgent packets).

t=1で描示された状態では、第3のステージ108のインスタンスのパケットキューは、4つのパケットを含み、そのうちの3つは、現在、送信するのに適格であり、第2のステージ106のインスタンスは、4つの新しいパケットを提供するところであり、そのうちの第1のパケットは、シーケンス5(シーケンス順序5)を有し、即時に送信されるべきである。 In the state depicted at t=1, the packet queue of the third stage 108 instance contains four packets, three of which are currently eligible for transmission, and the second stage 106 An instance of is about to provide four new packets, the first of which has sequence 5 (sequence order 5) and should be sent immediately.

t=2で描示された状態では、新しいパケットは、第3のステージ108の優先順位キューに追加されている。この実施形態は、シーケンス5がキューイングされた時点で、シーケンス2が既に送信するのに適格であったため、シーケンス2を有するパケットの後に送信するためにシーケンス5でパケットをキューイングすることを選定したことに留意されたい。このようにして、パケットキューの先頭でパケットの順序をフリーズさせることは、即時に送信される新しい緊急パケットの一定のストリームが、最新の即時送信緊急パケットが到達するずっと前に送信するのに適格になった可能性があるにもかかわらず、非即時パケットが送信されるのを防止することができる場合に、飢餓を防止する。 In the state depicted at t=2, a new packet has been added to the third stage 108 priority queue. This embodiment chose to queue the packet with sequence 5 for transmission after the packet with sequence 2 because sequence 2 was already eligible for transmission at the time sequence 5 was queued. Please note that In this way, freezing the order of packets at the head of the packet queue means that a constant stream of immediately sent new urgent packets is eligible to be sent long before the most recent immediately sent urgent packet arrives. Prevent starvation if it is possible to prevent non-immediate packets from being sent even though they might have been.

t=3で描示された状態では、第3のステージ108は、出力キューから最初の4つのパケットをデキューし、これらのパケットをネットワークインターフェースに提供した。現在、時間t=4まで送信するのに適格であるパケットがないため、第3のステージ108インスタンスは、ネットワークインターフェース上に現在書き込み容量がある場合であっても、時間がt=4に進むまで、又は即時に又は時間t=3に送信されるべき新しいパケットが到達するまで、より多くのパケットを送信するのを待つ必要があろう。 In the situation depicted at t=3, the third stage 108 dequeued the first four packets from the output queue and provided these packets to the network interface. Since there are currently no packets eligible to be sent until time t=4, the third stage 108 instance will not write until time t=4, even if there is current write capacity on the network interface. , or it would be necessary to wait to send more packets until a new packet arrives that should be sent immediately or at time t=3.

パケットは、各ステージが最適であると判定する時点で順番に、あるステージから次のステージに渡され得る。 Packets may be passed from one stage to the next in turn at the time each stage determines to be optimal.

図1Aと同様に、データパケットは、コネクション全体にわたって伝送され、その後、コネクション114を介して受信機116によって受信される。受信機116は、伝送されたデータパケットを組み立てるためのシーケンサ118を含み、ローカルエリアネットワーク(LAN)120を介して、組み立てられたデータパケットを更に伝送し得る。 Similar to FIG. 1A, data packets are transmitted across the connection and then received by receiver 116 via connection 114. Receiver 116 includes a sequencer 118 for assembling the transmitted data packets and may further transmit the assembled data packets via local area network (LAN) 120.

システム100Aとは対照的に、プッシュ通信システム100Bは、各コネクションに関連付けられた独立したタイマを含まず、代わりに、コネクション上へのパケットのスケジューリングは、集中したロケーションで行われ、各コネクションの監視される特性にアクセスするプッシュスケジューラ104を含み、タイマに基づく以外で発生する1つ以上の監視されるイベントに応答してアクティブ化されるプッシュスケジューラ104を含む。例えば、1つ以上の監視される通信イベントは、以前に伝送されたデータパケットの受信者からの確認応答/否定確認応答(ACK/NACK)、又は入力キュー102への新しいデータパケットの到達などを含み得る。 In contrast to system 100A, push communication system 100B does not include an independent timer associated with each connection; instead, the scheduling of packets onto connections is done at a central location, and each connection is monitored. The push scheduler 104 includes a push scheduler 104 that accesses the properties of the push scheduler 104 that is activated in response to one or more monitored events that occur other than based on a timer. For example, one or more monitored communication events may include an acknowledgment/negative acknowledgment (ACK/NACK) from a recipient of a previously transmitted data packet, or the arrival of a new data packet to input queue 102. may be included.

例示的な実施形態では、伝送されているパケットの20msのみではなく、コネクション(輻輳ウィンドウ)CWND全体が、潜在的に、プッシュスケジューラ104によって消費されるか、又は割り付けられ得る。 In an exemplary embodiment, the entire connection (congestion window) CWND may potentially be consumed or allocated by the push scheduler 104, rather than just the 20ms of the packet being transmitted.

各コネクションの監視される特性へのアクセスを用いて、プッシュスケジューラ104は、パケットスケジューリング決定を最適化するように構成され得る。例えば、特定の伝送要件を有するデータフローは、タイマのウェイク順序に大部分基づいて割り当てられるのではなく、データフローに関連付けられた要件を満たすことができるコネクションに優先的に割り当てられ得る。例示的な一例では、第1のデータフローは、50ms未満のレイテンシを有する伝送を必要とする。 With access to the monitored characteristics of each connection, push scheduler 104 may be configured to optimize packet scheduling decisions. For example, data flows with specific transmission requirements may be preferentially assigned to connections that can meet the requirements associated with the data flow, rather than being assigned based largely on timer wake order. In one illustrative example, the first data flow requires transmission with a latency of less than 50 ms.

コネクション110A、110B、及び110Nは、それぞれ、5ms、45ms、及び80msのレイテンシを有する。プルスケジューラ130を用いて、コネクション110B(45msレイテンシ)のための50Hzタイマが最初にウェイクアップするとした場合、当該タイマは、コネクション110B上へのこの第1のデータフローのためのパケットをスケジューリングすることが可能になっているであろう。プッシュスケジューラ104を用いて、コネクション110AのCWNDがコネクション110B(45msレイテンシ)上にオーバーフローする前に完全に消費されるまで、データフローをコネクション110A(5msレイテンシ)上で優先的にスケジュールすることができる。 Connections 110A, 110B, and 110N have latencies of 5ms, 45ms, and 80ms, respectively. Using pull scheduler 130, if the 50Hz timer for connection 110B (45ms latency) wakes up first, then that timer schedules packets for this first data flow onto connection 110B. would be possible. Using the push scheduler 104, data flows can be preferentially scheduled on connection 110A (5ms latency) until the CWND of connection 110A is completely consumed before overflowing onto connection 110B (45ms latency). .

双方向通信を可能にするために、マルチパスエンドポイントの単一のインスタンスは、図1Bに記載される全てのコンポーネントを含むことができる。具体的には、他のマルチパスエンドポイントへのアップストリーム通信をサポートするための送信者100の1つ以上のインスタンスと、他のマルチパスエンドポイントからのダウンストリーム通信をサポートするための受信機116の1つ以上のインスタンスと、を含み得る。 To enable bidirectional communication, a single instance of a multipath endpoint can include all components described in FIG. 1B. Specifically, one or more instances of a sender 100 to support upstream communications to other multipath endpoints and a receiver to support downstream communications from other multipath endpoints. 116.

いくつかの実施形態によれば、例えば、利用可能なコネクションのうちの1つ以上は、BoDコネクションであり、プッシュスケジューラ104は、以下のような基準に基づいて、ネットワークからより多くの容量を要求するために、より多くのデータをBoDコネクションに割り振ることができる。 According to some embodiments, for example, one or more of the available connections is a BoD connection, and the push scheduler 104 requests more capacity from the network based on criteria such as: To do this, more data can be allocated to BoD connections.

コネクション110AのCWNDが完全に消費されている(又は完全な消費に近づいている)一方、より多くのパケットが、(例えば、フローごとのルールに基づいて)コネクション110B上で伝送されるのに適格である入力キュー102で利用可能である。 While the CWND of connection 110A is fully consumed (or approaching fully consumed), more packets are eligible to be transmitted on connection 110B (e.g., based on per-flow rules). is available in the input queue 102.

例示的な実施形態では、プッシュ通信システム100Bは、入力キュー102に適用される、より正確/公正なサービス品質(QoS)及びアクティブキュー管理(AQM)パケットドロッピングルールを可能にすることができる。前述の例を再び参照すると、50msのレイテンシ要件を有するフローは、決して80msのコネクションを利用することができない。プッシュスケジューラ104は、システム全体の一貫したスナップショットを有することから、80msのコネクションを除くフローの部分的な使用量及び総容量の公正なシェアを計算することができる。 In an exemplary embodiment, push communication system 100B may enable more accurate/fair quality of service (QoS) and active queue management (AQM) packet dropping rules applied to input queues 102. Referring again to the previous example, a flow with a 50ms latency requirement will never be able to utilize an 80ms connection. Since the push scheduler 104 has a consistent snapshot of the entire system, it can calculate the partial usage of flows excluding 80ms connections and their fair share of the total capacity.

プッシュ型スケジューリング手法の潜在的な利点は、ターゲットコネクションに最適にパケットを割り当てるために、混合されたリンクを含む複数のコネクションについてのメタデータの完全なセットがプッシュスケジューラ104に利用可能であることである。 A potential advantage of the push scheduling approach is that a complete set of metadata about multiple connections, including intermixed links, is available to the push scheduler 104 to optimally allocate packets to target connections. be.

図1Cは、いくつかの例示的な実施形態による、システム100B又は他のプッシュ通信システムを使用してデータパケットを伝送するための方法110Cのフローチャートである。 FIG. 1C is a flowchart of a method 110C for transmitting data packets using system 100B or other push communication systems, according to some example embodiments.

ブロック1130において、方法100Cは、入力キューが伝送に利用可能な未割り当てデータパケットを含むときを検知する。 At block 1130, method 100C detects when the input queue contains unallocated data packets available for transmission.

ブロック1132において、方法100Cは、未割り当てデータパケットの1つ以上のデータパケットを、好適な監視される特性を有する複数のネットワークの1つ以上の対応する出力キューに割り当てることを含む。 At block 1132, method 100C includes assigning one or more of the unallocated data packets to one or more corresponding output queues of a plurality of networks having suitable monitored characteristics.

ブロック1134において、方法100Cは、割り当てられた1つ以上のデータパケットを反映するように、対応する複数のネットワークの監視される特性を更新することを含む。 At block 1134, method 100C includes updating the monitored characteristics of the corresponding plurality of networks to reflect the assigned one or more data packets.

ブロック1136において、方法100Cは、複数のネットワークの各ネットワークに対応する出力キューから割り当てられたデータパケットを宛先デバイスに伝達する。 At block 1136, method 100C communicates the assigned data packet from the output queue corresponding to each network of the plurality of networks to the destination device.

例示的な実施形態では、システム100Bでデータパケットを伝送するための方法は、プッシュスケジューラ104が外部イベントによってトリガされるたびに、以下のステップのループを含む。
1.入力キュー102からのデータパケットを要求し、
2.受信されたパケットを伝送のためのコネクションに割り当て、
3.a)入力キュー102で利用可能なパケットがなくなるまで、又はb)アクティブなコネクションのいずれかに(例えば、輻輳ウィンドウ(CWND)メトリックによって定義されるような)利用可能な伝送容量がなくなるまで、ステップ1~2を繰り返す。
In an exemplary embodiment, the method for transmitting data packets in system 100B includes a loop of the following steps each time push scheduler 104 is triggered by an external event.
1. requesting a data packet from input queue 102;
2. Assigns received packets to connections for transmission,
3. a) until there are no packets available in the input queue 102, or b) until there is no available transmission capacity (e.g., as defined by a congestion window (CWND) metric) for any of the active connections. Repeat steps 1 and 2.

記載される方法は、プッシュスケジューラ104が任意のデータフロー固有の要件を考慮しないように実装され得る。そのような実施形態では、システム100Bは、コネクションの順序付けに基づいて、受信されたパケットを割り当てる。 The described method may be implemented such that the push scheduler 104 does not consider any data flow-specific requirements. In such embodiments, system 100B assigns received packets based on connection ordering.

順序付けは、コネクションの監視される特性に基づくことができ、例えば、輻輳制御アルゴリズムによって推定される動作特性のサブセットを含み得る。一実施形態では、BBRv1アルゴリズムが使用されるが、他の実施形態は、BoDなどの特定のコネクションタイプを処理するための、BBRv2、TCP Reno、TCP LEDBAT、独自の実装態様などの例を含み得る。BBRv1に特有の動作特性に関する後続の議論では、例示的な目的のみで、2つのエンドポイントが一連の相互接続されたパイプとしてモデル化され、各パイプセグメントが異なる直径及び長さを有することができる、パイプアナロジーに言及する。 The ordering may be based on monitored characteristics of the connections, and may include, for example, a subset of operational characteristics estimated by a congestion control algorithm. In one embodiment, the BBRv1 algorithm is used, but other embodiments may include examples such as BBRv2, TCP Reno, TCP LEDBAT, proprietary implementations, etc. to handle specific connection types such as BoD. . In the subsequent discussion of operational characteristics specific to BBRv1, for illustrative purposes only, the two endpoints are modeled as a series of interconnected pipes, where each pipe segment can have a different diameter and length. , referring to the pipe analogy.

動作特性は、伝送されたパケットが宛先エンドポイント(例えば、受信機)に到達し、(例えば、受信機から送信機へのACKメッセージを介して)確認応答されるのに必要とされる最小時間の尺度であり得る。この持続時間は、「ラウンドトリップ伝播遅延」(「RtProp」と略される)という名称であり、時間の単位(例えば、ミリ秒)で測定される。パイプアナロジーの観点では、この値は、送信機から受信機までの全てのパイプセグメントの全長を表す。 The operational characteristic is the minimum time required for a transmitted packet to reach the destination endpoint (e.g., receiver) and be acknowledged (e.g., via an ACK message from the receiver to the transmitter). It can be a measure of This duration is named "Round Trip Propagation Delay" (abbreviated as "RtProp") and is measured in units of time (eg, milliseconds). In terms of pipe analogy, this value represents the total length of all pipe segments from the transmitter to the receiver.

動作特性は、最小の直径を有するパイプセグメントに沿ってエンドポイント間でデータが移動することができる最大レートであり得る。「ボトルネック」セグメントと称される最小のパイプ直径は、データが送信機と受信機との間で移動することができる最大レートを決定し、これは「ボトルネック帯域幅」(「BtlBw」と略される)とも称される。例えば、BtlBwを推定するために使用される手法は、IETFドラフトに記載されている:https://tools.ietf.org/html/draft-cheng-iccrg-delivery-rate-estimation-00。 The operating characteristic may be the maximum rate at which data can move between endpoints along a pipe segment with a minimum diameter. The smallest pipe diameter, referred to as the "bottleneck" segment, determines the maximum rate at which data can move between transmitter and receiver, and this is referred to as the "bottleneck bandwidth" ("BtlBw"). (abbreviated)). For example, the method used to estimate BtlBw is described in the IETF draft: https://tools. ietf. org/html/draft-cheng-iccrg-delivery-rate-estimation-00.

表1は、WANコネクション及びWANコネクションの特性の例示的なセット、監視される特性になるようにスケジューラ104によって選定される動作特性の例示的なサブセット、並びに結果として生じるソート順序を示す。

表1:例示的なWANコネクション及びWANコネクションのソート順序

Figure 2024508220000002
Table 1 shows an exemplary set of WAN connections and characteristics of the WAN connections, an exemplary subset of operational characteristics selected by scheduler 104 to be the monitored characteristics, and the resulting sort order.

Table 1: Exemplary WAN Connections and WAN Connection Sort Order
Figure 2024508220000002

この例示的な方法は、以下のディメンションにわたってコネクションをソートし、現在のディメンションがコネクション間で等しいと比較された場合にのみ、次のディメンションに移動する。
1.嗜好優先順位レベルを増加させる
2.RtPropを増加させる
3.BtlBwを減少させる
4.インターフェース名を増加させる。
This example method sorts connections across the following dimensions and moves to the next dimension only if the current dimension compares as equal across connections.
1. Increase preference priority level 2. Increase RtProp 3. Decrease BtlBw 4. Increment interface name.

ソートディメンションが頻繁に変更されることが期待されない全てのパラメータであることから、ソート操作の結果がどのようにコネクションの順序を比較的安定に保つかに留意されたい。 Note how the result of the sort operation keeps the order of the connections relatively stable, since the sort dimension is a parameter that is not expected to change frequently.

この安定なソート順序は意図的なものであるため、入力キューに到達するパケットは、同じコネクションセット(リストの上部にソートされたもの)に対して「スティッキー」になる傾向があり、入力された要求が、より高くソートされたコネクションの総CWNDを超える場合にのみ、ソート順序がより低いコネクションに上に「オーバーフロー」する。 This stable sort order is intentional, so packets that arrive at the input queue tend to be "sticky" for the same set of connections (those sorted at the top of the list) and are A request "overflows" up to a lower sorted connection only if it exceeds the total CWND of the higher sorted connection.

この例におけるソート基準がどのようにフロー固有でないかに留意されたい。例えば、管理者又はエンドユーザは、高優先順位のアプリケーションフローが計測されたセル1コネクション及びセル0コネクション(伝送要件の一例)を介して伝送されることのみを望む場合があり、それらのフローは、セル1及びセル0をリストのより下位に配置する、結果として生じるソート順序を望むであろうことを意味する。同様に、最大レイテンシ制限を有するいくつかのフローが存在してもよく、例えば、レイテンシが150msを超える場合、エンドユーザが対話型会話のために最大レイテンシ制限を使用不可能とみなすVoIPコールなどである。これらのフローについては、RtPropを一次ソートディメンションとして使用する、結果として生じるソート順序を有することが望ましい場合がある。フロー特有であるようにソート基準を拡張する実施形態については、後続の段落で議論する。 Note how the sorting criteria in this example is not flow specific. For example, an administrator or end user may only want high-priority application flows to be transmitted over metered Cell 1 and Cell 0 connections (an example of a transmission requirement); , meaning that we would want the resulting sort order to place cell 1 and cell 0 lower in the list. Similarly, there may be some flows that have a maximum latency limit, for example in VoIP calls where the end user considers the maximum latency limit unusable for interactive conversations if the latency exceeds 150ms. be. For these flows, it may be desirable to have a resulting sort order that uses RtProp as the primary sorting dimension. Embodiments that extend the sorting criteria to be flow specific are discussed in subsequent paragraphs.

スケジューラはまた、パケットの再送信ポリシーを決定することを担う。例示的な実施形態では、システム100Bは、パケットが受信機によって欠落していると報告された場合、スケジューラが常にパケットを再送のためにマーキングするように、構成されている。このことは、多くのフローにとって望ましいが、他のフローは、このことをまったく望まない場合がある(追加のレイテンシ又は潜在的に順不同で到達するパケットがアプリケーションによってパケットを使用不可能にするため)か、又は特定の期間内の再送試行のみを望む場合がある。 The scheduler is also responsible for determining the packet retransmission policy. In an exemplary embodiment, system 100B is configured such that the scheduler always marks a packet for retransmission if the packet is reported as missing by the receiver. While this is desirable for many flows, other flows may not want this at all (due to additional latency or packets potentially arriving out of order making the packets unusable by the application). Or, you may only want retransmission attempts within a certain period of time.

図1Dは、いくつかの例示的な実施形態による、データパケットを伝送するための別の方法のフローチャートである。 FIG. 1D is a flowchart of another method for transmitting data packets, according to some example embodiments.

単純なスケジューリングループの一実施形態は、以下のとおりである。
1.コネクションメタデータの更新に必要な任意のアカウンティングを実行し、アクティブなコネクションのセットを判定する。
2.コネクションメタデータ(監視される特性)に基づいて、コネクションの好ましい順序付けを判定する。
3.送信するパケットがあり、アクティブなコネクションのセットに利用可能なネットワーク容量がある間:
a.送信される次のパケットを取得する。
b.利用可能な容量を有する順序付けにおける最初のコネクションで送信されるパケットをキューイングする。
c.スケジューリングされたパケットを反映するようにコネクションメタデータ(監視される特性)を更新する。
d.繰り返す。
4.キューイングされたパケットを有する各コネクションについて、そのコネクションについての次のパイプラインステージにそれらのパケットを送信する。
One embodiment of a simple scheduling loop is as follows.
1. Perform any accounting required to update connection metadata and determine the set of active connections.
2. Determining a preferred ordering of connections based on connection metadata (monitored characteristics).
3. While there are packets to send and there is network capacity available in the set of active connections:
a. Get the next packet to be sent.
b. Queue packets to be transmitted on the first connection in the ordering that has available capacity.
c. Update connection metadata (monitored characteristics) to reflect scheduled packets.
d. repeat.
4. For each connection that has queued packets, send those packets to the next pipeline stage for that connection.

そのような実施形態は、コネクションの好ましい順序付けの目的で、全てのパケットを同等のものとして扱う。この場合、パケットを、フローの同じクラスに属すると考えることができる(別個のパケットが論理的に別個のフローに属し得るとしても、スケジューラの観点からは、コネクション割り当ての目的でこれらのフロー間に区別はない)。 Such embodiments treat all packets as equivalent for purposes of connection preferred ordering. In this case, the packets can be considered to belong to the same class of flows (even though separate packets may belong to logically separate flows, from the scheduler's perspective there are no connections between these flows for connection allocation purposes). There is no distinction).

図1Eは、いくつかの例示的な実施形態による、データパケットを伝送する更なる方法のフローチャートである。 FIG. 1E is a flowchart of a further method of transmitting data packets, according to some example embodiments.

異なるクラスのフロー(すなわち、ICMPエコー要求/応答対ビデオストリーム対ファイル転送)間、及び更には同じクラス内の個々のフロー(ホストAとホストBとの間のビデオストリーム対ホストAとホストCとの間のビデオストリーム)間を区別することができるスケジューラの実施形態は、以下のように提供され得る。
1.ブロック1102において、コネクションメタデータの更新(監視される特性)について任意の必要なアカウンティングを実行し、アクティブなコネクションのセットを判定する。
2.アクティブなコネクションセットが容量を有する間(ブロック1114)、
a.ブロック1103において、現在アクティブなコネクションセットに基づいて、セレクタを構築する。
b.ブロック1105において、セレクタを使用して、利用可能なコネクションのうちの1つを介して送信するパケットを選定する。パケットが選択されていない場合、ループを抜ける。
c.ブロック1107において、コネクションメタデータ(監視される特性)と組み合わせて、パケットのフロー及びフロー分類に基づいて、アクティブなコネクションの順序付けを決定する。
d.ブロック1110において、利用可能な容量を有する順序付けにおける最初のコネクションで送信されるパケットをキューイングする。
e.ブロック1112において、スケジューリングされたパケットを反映するようにコネクションメタデータを更新する。
f.繰り返す。
3.ブロック1116において、キューイングされたパケットを有する各コネクションについて、そのコネクションについての次のパイプラインステージにそれらのパケットを送信する。
between flows of different classes (i.e., ICMP echo requests/responses vs. video streams vs. file transfers), and even between individual flows within the same class (video streams between hosts A and B vs. hosts A and C). An embodiment of a scheduler that can distinguish between video streams) may be provided as follows.
1. At block 1102, any necessary accounting of connection metadata updates (monitored characteristics) is performed to determine the set of active connections.
2. While the active connection set has capacity (block 1114);
a. At block 1103, a selector is constructed based on the currently active connection set.
b. At block 1105, a selector is used to select a packet to transmit over one of the available connections. If no packet is selected, exit the loop.
c. At block 1107, an ordering of active connections is determined based on the flow of packets and flow classification in combination with connection metadata (monitored characteristics).
d. At block 1110, packets are queued to be transmitted on the first connection in the ordering that has available capacity.
e. At block 1112, connection metadata is updated to reflect the scheduled packet.
f. repeat.
3. At block 1116, for each connection that has queued packets, those packets are sent to the next pipeline stage for that connection.

これらの2つのサンプル方法(図1D及び図1Eに示される方法)は、類似しており、図1Dに示される方法は、図1Eにおけるより一般的な方法の簡略化及び最適化されたバージョンである。 These two sample methods (the methods shown in Figures 1D and 1E) are similar, with the method shown in Figure 1D being a simplified and optimized version of the more general method in Figure 1E. be.

第1の方法は、単一のフロークラスを定義し、かつ全てのパケットにマッチするセレクタを定義することによって、第2の方法に変換され得る。このことを考慮して、第2の方法(図1E)をより詳細に議論し、同じ議論が、上記の制限に従って、第1の方法(図1D)に適用可能であろう。 The first method can be converted to the second method by defining a single flow class and defining a selector that matches all packets. With this in mind, the second method (FIG. 1E) will be discussed in more detail, and the same discussion will be applicable to the first method (FIG. 1D), subject to the above limitations.

第1のステップは、アクティブなコネクションのセットを判定するために、任意の保留中のメタデータアカウンティング(監視される特性)を更新することである。一実施形態では、アクティブなコネクションのセットは、信頼性がないコネクションバックオフ(すなわち、パケットを確実に配信するために、最近の失敗のために使用が制限されているコネクション)の対象とならないコネクションである。 The first step is to update any pending metadata accounting (monitored characteristics) to determine the set of active connections. In one embodiment, the set of active connections includes connections that are not subject to unreliable connection backoff (i.e., connections whose use has been restricted due to recent failures to ensure packet delivery). It is.

他の実施形態は、例えば、メタデータ(監視される特性)が現在定義されているフロークラス要件のいずれにもマッチしないコネクションを排除することによって、アクティブなコネクションのセットを更に制限し得る(すなわち、全てのパケットが1つの定義されるフロークラスにマッチしなければならないと仮定すると、コネクションが任意のフロークラスによって選択されることがない場合には、コネクションは、非アクティブとみなされ得、例えば、全てのフロークラスが最大500msのRTTを指定した場合、RTT>500msのコネクションは、非アクティブとみなされ得る)。 Other embodiments may further limit the set of active connections, e.g., by eliminating connections whose metadata (monitored characteristics) do not match any of the currently defined flow class requirements (i.e. , assuming that all packets must match one defined flow class, a connection can be considered inactive if it is never selected by any flow class, e.g. , if all flow classes specify a maximum RTT of 500ms, connections with RTT > 500ms may be considered inactive).

アクティブなコネクションのセットは、セット内の少なくとも1つのコネクションが、利用可能なCWND(輻輳ウィンドウ)を有する場合、パケットを送信する容量を有し、このコネクションについてスケジューラによって現在追跡されているインフライトバイト数が、このコネクションについて決定されたCWNDを超えないことを意味する。一実施形態では、コネクションのためのCWNDは、次のパイプラインステージによって報告されたCWNDであってもよいし、スロットリング又は優先順位ルーティングが有効である場合、スケジューラは、報告されたCWNDを低減することを選定してもよい。 A set of active connections has the capacity to send packets if at least one connection in the set has an available CWND (congestion window) and in-flight bytes currently tracked by the scheduler for this connection. means that the number does not exceed the CWND determined for this connection. In one embodiment, the CWND for the connection may be the CWND reported by the next pipeline stage, and if throttling or priority routing is enabled, the scheduler reduces the reported CWND. You may choose to do so.

一実施形態では、特定のレートにスロットルされているコネクションは、ボトルネック帯域幅にわたってスロットルレートと同じ係数によってコネクションのCWNDを減少させる(又は、スロットルレートが帯域幅推定値よりも高い場合、CWNDは、変更されない)。同様に、コネクションのCWNDは、このCWNDが優先順位ルーティングの対象となる場合、低減され得る(ここで、この実施形態は、より高い優先順位レベルの全てのコネクションの総グッドプット(オーバーヘッドを除くスループット)が、アクティブ化されるレベルのための構成された閾値を下回るときにアクティブ化される優先順位レベルへのコネクショングループ化をサポートする)。これらのシナリオにおけるCWND低減を決定するための様々な方法については、図8及び図9に関連して後述する。 In one embodiment, a connection that is throttled to a particular rate has its CWND reduced by the same factor as the throttle rate over the bottleneck bandwidth (or, if the throttle rate is higher than the bandwidth estimate, the CWND is , unchanged). Similarly, the CWND of a connection may be reduced if this CWND is subject to priority routing (where this embodiment reduces the total goodput (throughput excluding overhead) of all connections of higher priority level ) supports connection grouping into priority levels that are activated when the level is below a configured threshold for the activated level). Various methods for determining CWND reduction in these scenarios are discussed below in connection with FIGS. 8 and 9.

非アクティブである優先順位レベルに割り当てられたコネクション(より高い優先順位レベルの全てのコネクションについての総グッドプット+未使用ビットレートは、優先順位レベルについてのアクティブ化ビットレートを満たすか、又は超える)は、ゼロの有効なCWNDを有し、非一次である優先順位レベルのコネクションは、現在アクティブな優先順位レベルのセット内の全てのコネクションの推定される総グッドプットビットレートが、最も低いアクティブな優先順位のアクティブ化閾値を満たすか、又は超える場合、これらのコネクションのCWNDをゼロに設定する。 Connections assigned to priority level that are inactive (total goodput + unused bitrate for all connections at higher priority level meets or exceeds activation bitrate for priority level) has an effective CWND of zero and is a non-primary priority level connection whose estimated aggregate goodput bitrate of all connections in the currently active priority level set is the lowest active If the priority activation threshold is met or exceeded, set the CWND of these connections to zero.

優先順位ルーティングを使用する他の実施形態では、非一次レベルのコネクションは、これらのコネクションが、構成されたアクティブ化閾値へのギャップを閉じるのに十分に寄与するだけであるように、これらのコネクションのボトルネック帯域幅よりも低いレートでキャップされ得る。このことを、例えば、非一次コネクションが緊急時にのみ使用されることを意図したより高価なコネクションである場合、コスト削減のために行うことができる。スロットリングと同様に、CWNDは、これらのコネクションが送信されるべきキャップされたレートを反映するように低減される。 In other embodiments using priority routing, non-primary level connections are configured such that these connections only contribute enough to close the gap to the configured activation threshold. may be capped at a rate lower than the bottleneck bandwidth of This can be done to reduce costs, for example, if the non-primary connection is a more expensive connection intended to be used only in emergencies. Similar to throttling, CWND is reduced to reflect the capped rate at which these connections should be sent.

方法のステップ2におけるループは、アクティブなセット内のコネクションが容量を有する限り、実行動作することができる。 The loop in step 2 of the method can run as long as the connections in the active set have capacity.

ステップ2a(ブロック1103)は、アクティブな容量を有するアクティブなコネクションのうちの1つで送信されるのに適格であるパケットを見つけるために使用されるセレクタを構築する。いくつかの実施形態では、セレクタは、容量を有する現在のアクティブなコネクションのセットと同等であるフロークラスのセットからなる。 Step 2a (block 1103) constructs a selector that is used to find packets that are eligible to be transmitted on one of the active connections with active capacity. In some embodiments, the selector consists of a set of flow classes that are equivalent to a set of currently active connections with capacity.

例えば、フロークラスが500msの最大レイテンシを有するコネクションを必要とし、かつ利用可能な容量を有するアクティブなコネクションが全て500msを上回るレイテンシを有する場合には、そのフロークラスは、セレクタから除外されるであろう。いくつかの実施形態は、実施形態が、そのようなパケットの基準を満たすコネクション(利用可能な容量の有無にかかわらず、アクティブ又は非アクティブ)が現在存在しないと判定することができる場合、アクティブなコネクションの基準に通常はマッチしないであろうフロークラスをセレクタに含めることを選定し得る。その場合、実施形態は、パケットがタイムアウトしてドロップされるまでパケットを保持するのではなく、パケットを送信することを支持するマッチ基準に違反することを選定し得る。他の実施形態は、適格なコネクションを有していないフロークラスにマッチするパケットが送信されることはない厳密なマッチポリシーを執行することを選定し得る。 For example, if a flow class requires connections with a maximum latency of 500ms, and all active connections with available capacity have latencies greater than 500ms, that flow class may be excluded from the selector. Dew. Some embodiments determine that an active You may choose to include flow classes in the selector that would not normally match the connection's criteria. In that case, embodiments may choose to violate the match criteria in favor of transmitting the packet rather than holding the packet until it times out and is dropped. Other embodiments may choose to enforce a strict match policy in which packets matching flow classes that do not have eligible connections are not sent.

図1Fのプロセスフローにおける例示的なソート順序で示される別の実施形態では、様々なネットワークコネクションへのデータパケットのルーティングを制御するためのソート順序を計算で決定又は確立するための代替手法を利用することができる。 Another embodiment, illustrated in the exemplary sort order in the process flow of FIG. 1F, utilizes alternative techniques for computationally determining or establishing a sort order for controlling the routing of data packets to various network connections. can do.

入力パラメータのうちのいくつか又は全てを、ソート順序決定で使用される前に丸める/バケット化することができる。丸め及びバケット化からの技術的改善は、ソート順序の変化が常には発生しないように、ソート順序を可能な限り「安定」に保つことである(例えば、丸め及びバケット化がないと、2つのクローズ値は、それらの値が経時的に変動するにつれてソート変化を連続的に有することによって「ジッタ」を引き起こし得る。 Some or all of the input parameters may be rounded/bucketized before being used in sort order determination. The technical improvement from rounding and bucketing is to keep the sort order as "stable" as possible so that changes in sort order do not occur all the time (e.g., without rounding and bucketing, two Close values can cause "jitter" by continuously having sort changes as their values vary over time.

ソート順序の決定に影響を与える要因には、パケットが複数のWANコネクションに不必要に分割されないように、ソート順序を可能な限り「安定」に保つこと(分割は、自己誘発の順不同イベント及びジッタイベントの機械を増加させる)と、コネクションの測定される特性と測定されない外部ディレクティブとの両方を考慮することと、を含む。 Factors that influence sort order decisions include keeping the sort order as "stable" as possible so that packets are not unnecessarily split across multiple WAN connections (splitting is subject to self-induced out-of-order events and jitter). events) and considering both measured characteristics of the connection and unmeasured external directives.

丸めるための値として、以下のものが挙げられ得る:。
●レイテンシ関連値(RtProp、RTT)は、丸めから1ms後のフロアを施されて、50msの最も近い倍数に丸められる。
●スループット関連値(BtlBw)は、「最も近い桁」に丸められる。
●パケット損失(3つのスライディングウィンドウの間の最悪の値)は、最も近い桁に丸められる。ここでの未加工値は、範囲[0,100]に制限されているため、出力値は、セット(0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100)に制限されていることに留意されたい。
The following values may be mentioned for rounding:.
- Latency related values (RtProp, RTT) are floored 1ms after rounding and rounded to the nearest multiple of 50ms.
●Throughput-related values (BtlBw) are rounded to the "nearest digit".
● Packet loss (worst value between three sliding windows) is rounded to the nearest digit. The raw values here are restricted to the range [0,100], so the output values are set (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20 , 30, 40, 50, 60, 70, 80, 90, 100).

最も近い桁に丸める一例が、以下の表に提供されている。未加工値、未加工値の計算された桁数、次いで、結果として得られる丸め値が示されている。

Figure 2024508220000003
An example of rounding to the nearest digit is provided in the table below. The raw value, the calculated number of digits of the raw value, and then the resulting rounded value are shown.
Figure 2024508220000003

ネットワークインターフェースの使用を制御するためのネットワーキングルーティング順序を改善することに基づく具体的な改善が、ラウンドトリップ時間(RTT)及びパケット損失の複合特性を利用して、RTT、パケット損失、及びMSSを与えられたTCPスループットの上限を確立するためのMathis式に基づくスループットを予測するいくつかの実施形態に記載されている。Mathis係数を利用して、ネットワーク化されたパケットをルーティングするためのソート順序を修正することができる。 A specific improvement based on improving the networking routing order to control the usage of network interfaces takes advantage of the combined characteristics of round trip time (RTT) and packet loss to give RTT, packet loss, and MSS. Some embodiments are described that predict throughput based on the Mathis equation to establish an upper bound on TCP throughput. Mathis coefficients can be utilized to modify the sort order for routing networked packets.

測定される特性は、3つの別個のスライディングウィンドウ(500ms、3s、30s)の間のパケット損失(3つのウィンドウの間の最悪の値として更にまとめられる)、現在のネットワークラウンドトリップ時間(RTT)、帯域幅ラウンドトリップ伝播時間(BBRv1)パラメータ、RtProp(ネットワーク伝播遅延)、及びBtlBw(スループット推定値)を含むことができる。外部ディレクティブは、とりわけ優先順位(PR)ルールを含むことができるが、フロー固有のルール/要件を含むこともできる。 The measured characteristics are: packet loss during three separate sliding windows (500ms, 3s, 30s) (further summarized as the worst value between the three windows), current network round trip time (RTT), It may include Bandwidth Round Trip Propagation Time (BBRv1) parameters, RtProp (Network Propagation Delay), and BtlBw (Throughput Estimate). External directives can include priority order (PR) rules, among others, but can also include flow-specific rules/requirements.

いくつかの実施形態では、BBRv1の測定される特性は、元のBBRv1 IETFドラフトにおけるこれらの特性の設計とは異なる。例えば、実施形態の実行時間に一貫性に欠けるシステム上で実行され得る実施形態を考慮するために、BtlBwを計算するために使用されるスライディングウィンドウのサイズは、長い持続時間をカバーするために増加され得る(実行非一貫性に起因する可変性を隠す)が、ネットワーク損失又はレイテンシ増加イベントが発生した場合、それらのイベントは、BtlBwが実際に変更され得、かつスライディングウィンドウにおける任意の長い履歴を忘れなければならないことを示すことから、ウィンドウ持続時間もまた即時に短縮され得る。 In some embodiments, the measured characteristics of BBRv1 are different from the design of these characteristics in the original BBRv1 IETF draft. For example, to account for embodiments that may be executed on systems where the execution times of embodiments are inconsistent, the size of the sliding window used to calculate BtlBw is increased to cover longer durations. (hiding variability due to execution inconsistencies), but if network loss or latency increase events occur, those events may cause BtlBw to actually change and hide any long history in the sliding window. The window duration can also be shortened immediately, indicating that it must be forgotten.

同様の実行非一貫性の理由で、RtPropを測定するために使用される入力パラメータは、ネットワーク伝播遅延よりも多くを含むように変更され、実行/処理時間の一部分を追加し得、それは、その時間が、些末でない可能性があり、かつパケットを伝送して応答を待つときに遭遇する実際の遅延に一貫して寄与することによるいくつかの実施形態では、このことは、ネットワーク伝播遅延のみからなる「ネットワークRtProp」とは対照的に、「システムRtProp」と称される。これらの実施形態では、「システムRtProp」及び「ネットワークRtProp」は、意図された目的に応じて、様々な計算のために使用され得る。例えば、CWNDを計算する際、パイプラインが処理遅延を考慮するのに十分なデータインフライトに含むように、「システムRtProp」が適切である。しかしながら、パケットルーティングを決定するためにネットワークコネクションをソートする場合、好ましいルーティング決定がシステム実行遅延とは独立していることから、「ネットワークRtProp」がより適切である。 For similar execution inconsistency reasons, the input parameters used to measure RtProp may be changed to include more than the network propagation delay, adding a fraction of the execution/processing time, which In some embodiments, this may be due to the time being potentially non-trivial and contributing consistently to the actual delay encountered in transmitting a packet and waiting for a response, from network propagation delays alone. ``System RtProp'' as opposed to ``Network RtProp''. In these embodiments, "System RtProp" and "Network RtProp" may be used for various calculations depending on the intended purpose. For example, "System RtProp" is appropriate so that the pipeline includes enough data in flight to account for processing delays when calculating CWND. However, when sorting network connections to determine packet routing, "Network RtProp" is more appropriate because the preferred routing decision is independent of system execution delay.

パケット損失、レイテンシ、及びスループットは、完全に独立した変数ではない。それらの3つの組み合わせは、アプリケーションの輻輳制御挙動に応じて互いに影響する。これは、例えば、TCPを用いると、より高いパケット損失は、送信者がDUP ACK又はRTOが発生するのを待つ際に、より長期間の無線「沈黙」(利用不足のチャネル)をもたらすからである。 Packet loss, latency, and throughput are not completely independent variables. Those three combinations influence each other depending on the congestion control behavior of the application. This is because, for example, with TCP, higher packet loss results in longer periods of radio "silence" (underutilized channels) as the sender waits for a DUP ACK or RTO to occur. be.

したがって、いくつかの複合属性が決定され、最終的なソート手法で使用される。具体的には、
Mathis係数:この複合属性は、RTT及びパケット損失を考慮してスループットを予測し、RTT、パケット損失、及びMSSを考慮したTCPスループットの上限を与えるMathis関係(Mathis Relation)に基づく。任意の2つのネットワークコネクションの属性を比較してこれらのネットワークコネクションのソート順序を決定する場合、MSSを定数とみなすことができるため、この関係は、期待されるスループットが(RTT*sqrt(パケット損失))の逆数に比例することを示している。この関係は、この例では、ネットワークコントローラ又はルータの動作を直接制御する際に利用される係数を確立するための実用的な実装態様として利用される。各コネクションについて、システムは、Mathis係数を以下のように決定する:MAX(丸められたRtt,1ms)*sqrt(丸められたまとめられたパケット損失)Mathis係数値が小さいコネクションほど良いとみなされる。計算は、2つの独立に測定される特性の関数であるため、これらの特性の間の関係は、コネクションが互いをどのように比較するかを決定する。Mathis係数は、各コネクションに関連付けられた対応するMathis係数データ値などのデータオブジェクトに保持及び格納され、例えば、他の監視される特性とともにデータ値の配列に格納され得る。
Therefore, several composite attributes are determined and used in the final sorting method. in particular,
Mathis Factor: This composite attribute is based on the Mathis Relation that predicts throughput considering RTT and packet loss and provides an upper bound on TCP throughput considering RTT, packet loss, and MSS. When comparing the attributes of any two network connections to determine the sort order of these network connections, this relationship indicates that the expected throughput is (RTT*sqrt(packet loss )) is proportional to the reciprocal of This relationship is utilized in this example as a practical implementation for establishing coefficients that are utilized in directly controlling the operation of a network controller or router. For each connection, the system determines the Mathis coefficient as follows: MAX (Rounded Rtt, 1 ms) * sqrt (Rounded Summated Packet Loss) Connections with smaller Mathis coefficient values are considered better. Because the calculation is a function of two independently measured characteristics, the relationship between these characteristics determines how the connections compare to each other. Mathis coefficients are maintained and stored in data objects, such as corresponding Mathis coefficient data values associated with each connection, and may be stored, for example, in an array of data values along with other monitored characteristics.

例えば、一方の極端な場合、パケット損失が0%の2つのコネクションは、常に同じMathis係数を有するようになっており、これらのコネクションの実際のRTT値は、関係ない。このシナリオでは、Mathis係数は、ソート順序に影響せず、後続の測定される属性と複合属性との比較によって決定される。 For example, at one extreme, two connections with 0% packet loss will always have the same Mathis coefficient, and the actual RTT values of these connections are irrelevant. In this scenario, the Mathis coefficient does not affect the sort order and is determined by subsequent comparisons of the measured attribute and the composite attribute.

他方の極端な場合、2つのコネクションが100%のパケット損失を有する(丸められたまとめられたパケット損失=1.0)場合、これらのコネクションの丸められたRtt値のみが互いを比較する方法を決定するようになっている。いくつかの実施形態では、これは望ましくないため、パケット損失が100%のコネクションは、より早い段階で利用可能な選定からフィルタリングされる。 At the other extreme, if two connections have 100% packet loss (rounded aggregated packet loss = 1.0), then only the rounded Rtt values of these connections have a way of comparing with each other. It is supposed to be decided. In some embodiments, this is undesirable, so connections with 100% packet loss are filtered from the available selections earlier.

2つの極端の間で、低RTT及び低パケット損失の両方を有するコネクションは、より高い値を有するコネクションよりも良好であると比較されるようになっている。しかしながら、損失が高パーセンテージであるコネクションは、依然として低いRTTを有することによって補償することが可能であり、損失が低パーセンテージであるコネクションと同じMathis係数を有することができる。例えば、
コネクションA:100msRTT、0.01(1%)損失=>Mathis係数=10
コネクションB:19msRTT、0.25(25%)損失=>Mathis係数=9.5
Between the two extremes, connections with both low RTT and low packet loss are to be compared better than connections with higher values. However, connections with a high percentage of losses can still compensate by having a low RTT and can have the same Mathis coefficient as connections with a low percentage of losses. for example,
Connection A: 100ms RTT, 0.01 (1%) loss => Mathis coefficient = 10
Connection B: 19ms RTT, 0.25 (25%) loss => Mathis coefficient = 9.5

この例では、コネクションBが著しく高い損失(1%に対して25%)を有していても、コネクションBのより低いRTTは、それを補償し、コネクションAよりも良好なMathis係数に匹敵させる。このための説明は、コネクションBのより低いRTTは、失われたパケットについてのパケット確認応答(肯定及び否定)を交換し、かつコネクションAがより小さいパーセンテージの損失を有していても、より高いRTTを有するコネクションAよりも速く、任意の必要なパケット再送を完了することを可能にする。 In this example, even though connection B has significantly higher loss (25% versus 1%), connection B's lower RTT compensates for it and makes it match a better Mathis factor than connection A. . The explanation for this is that connection B's lower RTT exchanges packet acknowledgments (positive and negative) for lost packets, and even though connection A has a smaller percentage loss, the higher Allows any necessary packet retransmissions to be completed faster than connection A with RTT.

容量係数:この複合属性は、BtlBw及びRtPropを考慮し、以下のように決定される:丸められたBtlBw/MAX(丸められたRtProp、1ms)。単位は、「ミリ秒当たりのバイト/秒」であり、物理的な意味はないが、RtPropの単位当たりにコネクションが達成することができる帯域幅を正規化する方途を提供する。言い換えれば、コネクションのRtPropのミリ秒当たりにより多くの帯域幅を達成することができるコネクションは、より少ない帯域幅を達成するコネクションよりも効率的であるとみなされる。このコンテキストにおける効率的な伝送は、伝播遅延(RtProp)のミリ秒当たりにより多くの帯域幅を達成するコネクションを意味する。 Capacity Factor: This composite attribute considers BtlBw and RtProp and is determined as follows: Rounded BtlBw/MAX (Rounded RtProp, 1ms). The unit is "bytes per millisecond/second", which has no physical meaning, but provides a way to normalize the bandwidth that a connection can achieve per unit of RtProp. In other words, a connection that can achieve more bandwidth per RtProp millisecond of the connection is considered more efficient than a connection that achieves less bandwidth. Efficient transmission in this context means connections that achieve more bandwidth per millisecond of propagation delay (RtProp).

未加工入力の全てが処理され、かつ上述したように複合プロパティが計算されると、実際のソートメカニズムは、以下のように連続的に実行動作することができる。 Once all of the raw input has been processed and the composite properties have been computed as described above, the actual sorting mechanism can operate sequentially as follows.

ある比較から次の比較への移行は、前の行の全てが等しいと比較された場合にのみ行われる。比較が等しくない場合、比較の残りは、無関係であり、省略される。いくつかの実施形態では、比較の選定は、フロー分類ベースで行われ(例えば、VPN対VoiP対pingパケット対FECパケット)、各異なるフローについて、比較基準リストは、異なり得る(例えば、各々は、異なる予め定義された最も重要な特性、第2の最も重要な特性、第3の最も重要な特性などを有し得る)。コネクション自体をソートして順序シーケンスに入れることができるまで、これらの特性の各々を、最も重要なものなどから次々に反復することができる。いくつかの実施形態では、フロー分類に応じて、第1の事前ステップは、フロー分類におけるデータパケットのタイプを送信するのに好適であるコネクションのサブセットを選択することであり、次いで、パケット割り当てが実行される前に順序がそれらに付与される。
1.完全にダウンしているコネクション(100%のまとめられた損失)は、100%未満のまとめられた損失を有するコネクションよりも悪いコネクションとみなされる。
2.PR優先順位(優先順位が高いほど良好である)
3.Mathis係数(低いほど良好である)
4.丸められたRTT(低いほど良好である)
5.容量係数(高いほど良好である)
6.丸められたRtProp(低いほど良好である)
7.丸められたBtlBw(高いほど良好である)
8.コネクションID(低いほど良好である)
The transition from one comparison to the next occurs only if all previous rows compare equal. If the comparison is not equal, the remainder of the comparison is irrelevant and is omitted. In some embodiments, the selection of comparisons is made on a flow classification basis (e.g., VPN vs. VoiP vs. ping packets vs. FEC packets), and for each different flow, the comparison criteria list may be different (e.g., each may have different predefined most important characteristics, second most important characteristics, third most important characteristics, etc.). Each of these characteristics can be iterated one after the other, most important first, etc., until the connections themselves can be sorted into an ordered sequence. In some embodiments, depending on the flow classification, the first preliminary step is to select a subset of connections that are suitable for transmitting the types of data packets in the flow classification, and then the packet allocation is An order is given to them before they are executed.
1. A connection that is completely down (100% aggregated loss) is considered a worse connection than a connection that has less than 100% aggregated loss.
2. PR priority (the higher the priority, the better)
3. Mathis coefficient (lower is better)
4. Rounded RTT (lower is better)
5. Capacity coefficient (the higher the better)
6. Rounded RtProp (lower is better)
7. Rounded BtlBw (higher is better)
8. Connection ID (lower is better)

ソートメカニズムのレンダリングを図1Fに示す。例示的なソートメカニズムでは、リアルタイムフローは、最初にRTT/RtPropの比較を含み、次いで、等しい比較を含み、次いで、リアルタイムフローは、信頼性を比較し、次いで、やはり等しい場合には、伝送レートなどを比較する。フロータイプに応じて、異なるソート順序があり得る。例えば、スループットを望むフローは、最初に伝送レートを比較し得る。等しい場合には、信頼性で比較する。やはり等しい場合、リアルタイムフローは、他に何も評価せず、かつ単に随意に選定することを決定し得る。 A rendering of the sorting mechanism is shown in Figure 1F. In an exemplary sorting mechanism, the real-time flows first include a comparison of RTT/RtProp, then an equal comparison, then the real-time flows compare the reliability, and then, if also equal, the transmission rate Compare etc. Depending on the flow type, there can be different sort orders. For example, a flow desiring throughput may first compare transmission rates. If they are equal, compare based on reliability. If still equal, the real-time flow may decide to evaluate nothing else and simply choose at will.

いくつかの実施形態では、フロー要件(例えが、リアルタイム対スループット)は、比較の順序及び数を決め得る。例えば、リアルタイムフローは、他の全ての属性を無視して、丸められたRTT及び丸められたRtPropのみを比較することを優先し得る。スループットフローは、Mathis係数と容量係数とのみを比較することを決定し得る。 In some embodiments, flow requirements (eg, real-time vs. throughput) may determine the order and number of comparisons. For example, a real-time flow may prioritize comparing only rounded RTT and rounded RtProp, ignoring all other attributes. The throughput flow may be determined to compare only the Mathis coefficient and the capacity coefficient.

上述の手法は、明示的なソートディメンションに関する。また、典型的なアプリケーショントラフィックパターンの副産物として発生する傾向がある暗黙のソートディメンションもある。 The techniques described above relate to explicit sorting dimensions. There are also implicit sorting dimensions that tend to arise as a by-product of typical application traffic patterns.

ほとんどのアプリケーショントラフィックは、バースト性又は適応性がある傾向があるため、全てのWANコネクションの使用を必要としない。このことは、現在ソート順序の最下位にあるコネクションは、これらのコネクションでトラフィックを伝送されない場合があることを意味する。これらのコネクションがそうではない場合、これらのコネクションの明示的なソートディメンションは更新されないため、これらのコネクションは、ソート順序の最下位近くにこれらのコネクションの位置を維持する傾向がある。 Most application traffic tends to be bursty or adaptive and therefore does not require the use of all WAN connections. This means that connections currently at the bottom of the sort order may not carry traffic on these connections. If these connections are not, then their explicit sorting dimensions are not updated, so these connections tend to maintain their position near the bottom of the sort order.

いくつかの実施形態では、一定の期間にわたって、プッシュスケジューリングを、1つ以上の暗黙的なソートディメンションに沿ったソート順序を暗黙的に引き起こすように構成することもできる。暗黙的なソートディメンションは、周期的な不良イベント(例えば、輻輳に起因するレイテンシスパイク)に遭遇したコネクションを強制的にリストの最下位にバブルさせる。挙動に一貫性があるコネクションは、自然に最上位にバブルし、最上位付近に留まる。 In some embodiments, push scheduling may also be configured to implicitly trigger a sort order along one or more implicit sorting dimensions over a period of time. The implicit sorting dimension forces connections that encounter periodic bad events (eg, latency spikes due to congestion) to bubble to the bottom of the list. Connections with consistent behavior naturally bubble to the top and stay near the top.

このことは、一般に、アルゴリズムの良い属性とみなされるが、将来的に外部要因によって影響されるように修正され得る。例えば、フローが、現在ソート順序の最上位に近いコネクションによって満たすことができない特定の要件を有する場合、最下位に近いコネクションでプロービングトラフィックを生成して、これらコネクションの明示的なソートディメンションをリフレッシュすることは理にかなっている場合がある。 This is generally considered a good attribute of the algorithm, but it can be modified in the future to be influenced by external factors. For example, if a flow has specific requirements that cannot currently be met by connections near the top of the sort order, generate probing traffic on connections near the bottom to refresh the explicit sorting dimensions of those connections. Sometimes that makes sense.

図4Aは、400Aにおいて、予め定義されたフロークラス及び現在のコネクション状態を使用してセレクタが生成される実施形態を描示している。 FIG. 4A depicts an embodiment in which, at 400A, a selector is generated using a predefined flow class and current connection state.

この例では、監視される特性のセットを各々が有する3つのコネクションがあり、マッチ基準及びマッチ基準を満たすコネクションをソートするためのプリファレンスを各々が定義する3つの予め定義されたフロークラスがある。 In this example, there are three connections, each with a set of monitored characteristics, and three predefined flow classes, each defining match criteria and preferences for sorting connections that meet the match criteria. .

この実施形態では、セレクタは、マッチ基準が利用可能な容量を有する少なくとも1つのコネクションにマッチするフロークラスのセットからなる。この例では、フロークラス1及びフロークラス2は、両方とも、コネクション1及びコネクション2にマッチするマッチ基準を有する一方、フロークラス3は、いずれのコネクションにもマッチせず、セレクタに含まれない。 In this embodiment, the selector consists of a set of flow classes whose match criteria match at least one connection with available capacity. In this example, flow class 1 and flow class 2 both have match criteria that match connection 1 and connection 2, while flow class 3 does not match any connections and is not included in the selector.

コネクション1及びコネクション2の両方がマッチしても、コネクション2は、利用可能な輻輳ウィンドウを有しておらず、現在パケットを送信することができないため、セレクタから除外される。セレクタを構築する際に、利用可能な輻輳ウィンドウを有するマッチするコネクションが見つかるとすぐにフロークラスを含めることができるため、一実施形態は、コネクション1のみを調べて、コネクション2がマッチすることを確認する必要なく、フロークラス1及びフロークラス2をセレクタに含めることができると判定し得る。 Even if both connection 1 and connection 2 match, connection 2 is excluded from the selector because it does not have an available congestion window and cannot currently send packets. When constructing the selector, one embodiment examines only connection 1 to ensure that connection 2 matches, since the flow class can be included as soon as a matching connection with an available congestion window is found. It may be determined that flow class 1 and flow class 2 can be included in the selector without the need for confirmation.

ステップ2b(ブロック1105)は、ステップ2aからのセレクタを使用して、容量を有するアクティブなコネクションで(再)送信されるのに適格である再送キュー又は送信キュー上のパケットを見つける。そのようなパケットが見つからない場合には、ループが終了する。いくつかのアクティブなコネクションが容量を有し、入力キュー又は再送キュー上にパケットが存在する場合でも、このことが発生する可能性がある。 Step 2b (block 1105) uses the selector from step 2a to find packets on the retransmission or transmission queues that are eligible to be (re)transmitted on active connections that have capacity. If no such packet is found, the loop ends. This can occur even if some active connections have capacity and there are packets on the input or retransmission queues.

図4Bは、400Bにおいて、順序付けられたフローのセットである優先順位入力キューを有する一実施形態を示しており、ここで、キューの右側のフローは、左側のフローの前にパケットを送信すべきである。各フローは、フローIDを有し、各フローは、予め定義されたフロークラスのうちの1つに属する。各フローはまた、順序付けられたパケットのキューを含むため、フローが選定された場合には、キューの先頭にあるパケットが除去される。 FIG. 4B illustrates an embodiment with a priority input queue that is an ordered set of flows at 400B, where flows on the right side of the queue should send packets before flows on the left side. It is. Each flow has a flow ID and each flow belongs to one of predefined flow classes. Each flow also includes an ordered queue of packets, so if a flow is selected, the packets at the head of the queue are removed.

この例では、図4Aからのセレクタを使用して、入力キュー内のフローを右から左に評価し、セレクタは、セレクタにリストされているフロークラスを有する最初のフローを選定する。この場合、ID5及びID2を有するフローは、これらのフローが両方とも、セレクタからのフロークラスのうちの1つではないフロークラス3を有するため、評価及び拒否される。次いで、フロー7が評価され、フロー7はセレクタにおけるフロークラスのうちの1つであるフロークラス1に属するため、マッチする。次いで、フロー7のパケットキューの先頭からパケットが抽出され、フローメタデータでスタンプされる。 In this example, the selector from FIG. 4A is used to evaluate the flows in the input queue from right to left, and the selector selects the first flow that has the flow class listed in the selector. In this case, flows with ID5 and ID2 are evaluated and rejected because they both have flow class 3, which is not one of the flow classes from the selector. Flow 7 is then evaluated and matches because it belongs to flow class 1, which is one of the flow classes in the selector. A packet is then extracted from the head of the packet queue for flow 7 and stamped with flow metadata.

パケットが選択されると、ステップ2c(ブロック1105)は、アクティブなコネクションの順序付けを構築する。選定される順序付けは、実施形態がそれをサポートする場合、又はそうでなければ一般に許容される順序付けで、フロークラスの定義で提供されるルールに基づくようになっている。いくつかの実施形態は、フロークラスにマッチする全てのフローについて同じ順序付けを使用し得、いくつかの実施形態は、順序付けをフロー依存にし得る(例えば、全てのフローが同じコネクションにスティッキーであることを必要とせずに、フロー内の全てのパケットを所与のコネクションにスティッキーにする)。順序付けは、ステップ2におけるループの各反復で必要に応じて構築されてもよいし、いくつかの実施形態は、順序付けを構築するために使用される基準が変更された場合(すなわち、メタデータ更新で)、順序付けをキャッシュし、かつキャッシュをクリアすることを選定してもよい。 Once a packet is selected, step 2c (block 1105) builds an ordering of active connections. The ordering chosen is such that it is based on the rules provided in the flow class definition, if the embodiment supports it, or otherwise generally acceptable ordering. Some embodiments may use the same ordering for all flows that match a flow class, and some embodiments may make the ordering flow dependent (e.g., all flows are sticky to the same connection). (makes all packets in a flow sticky to a given connection without the need for The ordering may be built as needed at each iteration of the loop in step 2, and some embodiments may ), you may choose to cache the ordering and clear the cache.

一実施形態は、コネクション上のパケットをスケジューリングすることによって容量をゼロに低減し得るか、又は異なるコネクション上のパケットをスケジューリングすることが、以前に使用されなかった優先順位レベルでコネクションのセットをアクティブ化するのに十分にメタデータミックスを変更することを起こす場合、ゼロの現在の値を上回って容量を増加させ得ることから、コネクションが現在容量を有するかどうかを無視して順序付けを構築する。このようにして順序付けを構築することで、変化する唯一の項目がコネクションについての有効なCWND及びインフライトバイトカウントである場合、順序付けをキャッシュ及び再利用することが可能になる。 One embodiment may reduce capacity to zero by scheduling packets on a connection, or scheduling packets on a different connection may activate a set of connections at a previously unused priority level. The ordering is constructed ignoring whether the connection currently has a capacity, since if we happen to change the metadata mix enough to cause the Building the ordering in this way allows the ordering to be cached and reused if the only items that change are the effective CWND and in-flight byte count for the connection.

システム100Bを横断するフローは、そのフローのパケットが可能なときはいつでも同じWANコネクションを横断する場合に、より良く挙動する傾向がある。したがって、一実施形態は、コネクションのうちの1つ以上の監視される特性が著しく変化しない限り、同じフローに対して作成された順序付けが一貫しているように、安定なソート基準を使用して順序付けを構築するのがよい。したがって、RTT及びRtPropなどの動作特性、並びに帯域幅は、それらが短期間にわたって変動して、ソート順序を不安定にし得るため、不十分な選定である。 Flows that traverse system 100B tend to behave better if the flow's packets traverse the same WAN connection whenever possible. Therefore, one embodiment uses a stable sorting criterion so that orderings created for the same flow are consistent unless the monitored characteristics of one or more of the connections change significantly. It's good to build an ordering. Therefore, operating characteristics such as RTT and RtProp, as well as bandwidth, are poorly chosen because they can vary over short periods of time, making the sort order unstable.

「ノイズが多い」未加工の動作特性から監視される特性への変換は、統計的フィルタリング方法を使用して行われ得る。統計的フィルタリング方法は、平均、分散、ANOVAなどの従前の尺度から、(量子化された)ランク順序統計(ランク順序フィルタリング)の分野まで及び得る。例えば、監視される特性は、未加工の動作特性の範囲であり得、その範囲は、特定の値(例えば、1~100ms)、又は桁数などによって定義され得る。具体的な例は、表2に示される例を含む、後続の段落に続く。 The conversion from "noisy" raw operating characteristics to monitored characteristics may be performed using statistical filtering methods. Statistical filtering methods can range from traditional measures such as mean, variance, ANOVA, etc., to the field of (quantized) rank-order statistics (rank-order filtering). For example, the monitored characteristic may be a range of raw operating characteristics, and the range may be defined by a particular value (eg, 1-100 ms), an order of magnitude, or the like. Specific examples follow in subsequent paragraphs, including the examples shown in Table 2.

いくつかの実施形態は、機械学習技法を使用して、動作特性から監視される特性に変換することができる。例えば、訓練されたモデルは、コネクションの差し迫った障害を予測するために開発され得、その結果、リストの最後にマッチするコネクションをソートする順序付けを構築することができる。別の例示的なモデルを使用して、コネクションのタイプ(例えば、有線、セルラ、WiFi、衛星、BoDなど)を検出し、それを使用して、リアルタイムで容易に測定することができない新しい監視される統計(例えば、バッファ肥大化に対する感受性)の基礎を形成することができる。 Some embodiments may use machine learning techniques to convert operational characteristics to monitored characteristics. For example, a trained model can be developed to predict impending failure of a connection, so that an ordering can be constructed that sorts the matching connections to the end of the list. Another exemplary model is used to detect the type of connection (e.g., wired, cellular, WiFi, satellite, BoD, etc.) and use it to detect new monitored connections that cannot be easily measured in real time. statistics (e.g., susceptibility to buffer bloat).

一実施形態は、全てのパケットについて以下の順序を使用する(後の基準は、以前の全ての基準が等しい場合にのみ使用される)。 One embodiment uses the following order for all packets (later criteria are only used if all earlier criteria are equal).

「バケット化」されたドロップ確率。コネクションは、パケットカウントベース又はサイズベース(例えば、バイト単位)のドロップ確率の範囲によって定義されるバケットにグループ化され得る。ドロップ確率範囲がより小さいバケット内のコネクションは、順序付けの最初に現れ、ドロップ確率範囲がより大きいバケット内のコネクションは、順序付けの後の方に現れる。 "Bucketed" drop probability. Connections may be grouped into buckets defined by packet count-based or size-based (eg, bytes) drop probability ranges. Connections in buckets with smaller drop probability ranges appear first in the ordering, and connections in buckets with larger drop probability ranges appear later in the ordering.

コネクション優先順位グループ(管理者又はエンドユーザによって提供される)。より高い優先順位のコネクションは、より早くランク付けされます(一次>二次>三次など) Connection priority group (provided by administrator or end user). Connections with higher priority are ranked faster (primary > secondary > tertiary, etc.)

「バケット化された」RTT。レイテンシは、50msの最も近い倍数に丸められる。レイテンシ値のバケット化により、レイテンシの通常の変動を順序付けから隠すことが可能になると同時に、レイテンシの大幅な変化を順序付けに反映させることが可能になる。 "Bucketed" RTT. Latency is rounded to the nearest multiple of 50ms. Bucketing latency values allows normal variations in latency to be hidden from the ordering, while allowing large changes in latency to be reflected in the ordering.

「容量係数」。これは、「1ミリ秒当たりの1秒当たりのバイト」で測定される集約値であり、ボトルネック帯域幅推定値を最も近い桁数又は最も近い桁数の整数倍に丸め(例えば、1から1に丸める、10及び11から10に丸める、15から20に丸める、86000から90000に丸める)、それを最も近い50msにバケットされたRtPropで除算することによって計算される。RtPropの1ms当たりのより高い帯域幅を達成するコネクションは、RtPropの1ms当たりのより低い帯域幅を有するコネクションよりも良好であるとみなされる。 "Capacity factor". This is an aggregate value measured in "bytes per second per millisecond," rounding the bottleneck bandwidth estimate to the nearest digit or an integer multiple of the nearest digit (e.g., from 1 to 1, 10 and 11 to 10, 15 to 20, 86000 to 90000) and dividing it by RtProp bucketed to the nearest 50ms. A connection that achieves a higher bandwidth per ms of RtProp is considered better than a connection that has a lower bandwidth per ms of RtProp.

未加工のBtlBW及びRtProp値の容量係数を決定することは、高度に可変であるが、BtlBWを最も近い桁数又は最も近い桁数の整数倍に丸め、かつRtPropをバケット化することによって容量係数を安定化することは、大きな変化が観察されない限り、経時的に値を安定化する。表2は、バケット化、丸め、及び容量係数計算のいくつかの例を示す。この実施形態では、容量係数は、最も近い整数に丸められ、容量係数の計算の目的で、0のバケット化されたRtProp値は、1として扱われることに留意されたい。 Determining the capacity factor for the raw BtlBW and RtProp values is highly variable, but the capacity factor can be determined by rounding BtlBW to the nearest digit or an integer multiple of the nearest digit and bucketing RtProp. Stabilizing stabilizes the value over time unless large changes are observed. Table 2 shows some examples of bucketing, rounding, and capacity factor calculations. Note that in this embodiment, the capacity factor is rounded to the nearest integer, and a bucketed RtProp value of 0 is treated as 1 for purposes of capacity factor calculation.

「バケット化された」RtProp。最も近い50msにバケット化されたRtPropのより低い値は、より高い値よりも好ましい。 "Bucketed" RtProp. Lower values of RtProp bucketed to the nearest 50 ms are preferred over higher values.

「丸められた」BtlBW。より低い値よりも、最も近い桁数又は最も近い桁数の整数倍に丸められたBtlBWのより高い値が好ましい。 "Rolled" BtlBW. Higher values of BtlBW rounded to the nearest digit or an integer multiple of the nearest digit are preferred over lower values.

前述の基準の全てが等しいと比較される場合、コネクションID(コネクションが列挙されたときに割り当てられた)を使用して、決定論的に均衡を破る。他の実施形態は、より複雑なタイブレイクメカニズム、例えば、フローの属性を均衡するコネクションの数の整数モジュロにハッシュ化することを使用し得る。
表2:バケット化、桁数丸め、及び容量係数の例

Figure 2024508220000004
If all of the above criteria compare equal, the connection ID (assigned when the connection was enumerated) is used to break the balance deterministically. Other embodiments may use more complex tie-breaking mechanisms, such as hashing the attributes of a flow into an integer modulo of the number of connections to balance.
Table 2: Examples of bucketing, rounding, and capacity factors
Figure 2024508220000004

フロータイプどうしを区別する一実施形態は、例えば、フロータイプの伝送要件に応じて、上記の順序を修正して、ファイル転送フローのためのより低レイテンシのコネクションよりも、高容量係数のコネクションを優先し、ビデオストリームのための高帯域幅コネクションよりも低レイテンシコネクションを優先し得る。 One embodiment that differentiates between flow types may modify the above order to favor connections with higher capacity factors over lower latency connections for file transfer flows, e.g., depending on the flow type's transmission requirements. and may prioritize low-latency connections over high-bandwidth connections for video streams.

コネクション(又はコネクションのセット)への厳密なフローピニングを実行する一実施形態は、コネクションIDの完全マッチのみを許可することを選定し得る(場合によっては、他のコネクションを順序付けから完全に除外する)。このようなピニングルールは、典型的には、管理者又はエンドユーザによって提供され、監視される特性によって決定される全ての順序付け決定をオーバーライドすることが意図されている。したがって、監視される特性が、コネクションが使用不可能であるか、又は失敗したことを示す場合であっても、フローは、同じ順序付けを継続することとなり、したがって、マルチパスシステム100Bを通したコネクティビティを有さなくなる。 One embodiment that performs strict flow pinning to a connection (or set of connections) may choose to only allow exact matches of connection IDs (possibly excluding other connections from ordering altogether). ). Such pinning rules are typically provided by administrators or end users and are intended to override any ordering decisions determined by the monitored characteristics. Therefore, even if the monitored characteristics indicate that the connection is unavailable or has failed, flows will continue to have the same ordering and therefore connectivity through multipath system 100B. will no longer have.

いくつかの実施形態は、他の監視される特性又は動作特性の複合体である監視される特性を作成し、これらの複合材料を使用して、順序付けを決定し得る。例えば、バケット化されたドロップ確率、(実行中の)レイテンシ(RtProp)分散、及び(実行中の)スループットを組み合わせて、コネクションについての全体的な信頼性を表す重み付けメトリックにする複合信頼性メトリックを作成し得る。このメトリックで高ランクとなるコネクションであれば、高信頼性を必要とするフローに確保されるであろう(高信頼性は、高速を意味しない場合がある)。 Some embodiments may create monitored characteristics that are composites of other monitored characteristics or operational characteristics and use these composites to determine the ordering. For example, a composite reliability metric that combines bucketed drop probability, (running) latency (RtProp) variance, and (running) throughput into a weighted metric that represents the overall reliability for a connection. can be created. Connections that rank high in this metric will be reserved for flows that require high reliability (high reliability may not mean high speed).

一般に、パケットを選定することを可能にするセレクタが生成される場合には、そのパケットは、セレクタを生成するために使用されたいくつかのコネクション上でパケットをスケジュールすることを可能にする順序付けを生成するべきである。 In general, if a selector is generated that allows a packet to be selected, then that packet has an ordering that allows the packet to be scheduled on some connection that was used to generate the selector. should be generated.

図4Cは、400Cにおいて、パケットのフロークラスをどのように使用してコネクションの順序を構築することができるかの一例を示す。描示される実施形態では、パケットのメタデータにおけるフロークラスを使用して、フロークラス定義を参照する。フロークラスのマッチ基準は、いずれのコネクションを構築された順序付けに含めるべきであるかを選定するために使用され(言い換えれば、フロークラスは、特定のフロークラスに関連付けられ得る一連の伝送要件を定義する)、この場合、コネクション1及びコネクション2が両方ともマッチする一方、コネクション3は、マッチしない。コネクション2は、利用可能な輻輳ウィンドウを有していない(すなわち、現在、パケットを送信するのに適格でない)にもかかわらず、含まれることに留意されたい。このことは、順序付けをキャッシュし、かつ利用可能な輻輳ウィンドウの状態が変化すべき場合でも順序付けを再利用することを可能にすることを容易にする(例えば、スケジューラが、コネクションの優先順位が低いためにコネクションでの送信を初期に阻止しているが、その後、有効なコネクション上の現在のデータミックスが最小システムスループットを満たしていないために、コネクションを再度有効にすることを決定した場合)。 FIG. 4C shows an example of how packet flow classes can be used to construct connection ordering at 400C. In the illustrated embodiment, the flow class in the packet's metadata is used to reference the flow class definition. Flow class match criteria are used to select which connections should be included in the constructed ordering (in other words, a flow class defines a set of transmission requirements that can be associated with a particular flow class). ), in this case connection 1 and connection 2 both match, while connection 3 does not match. Note that connection 2 is included even though it does not have a congestion window available (ie, is currently not eligible to send packets). This makes it easy to cache orderings and allow them to be reused even if the state of the available congestion window should change (e.g., when the scheduler (if you initially prevent sending on a connection because of a problem, but then decide to re-enable the connection because the current data mix on the enabled connection does not meet the minimum system throughput).

コネクションのセットが選定されると、フロークラスからの順序付け基準(例えば、フロークラスに関連付けられた伝送要件のサブセット)を使用して、マッチするコネクションを順序付きリストにソートする。この例では、第1の基準は、容量係数である。両方のコネクションは、同じ容量係数を有する。第2の基準は、RTTであり、両方のコネクションは、同じRTTを有する。第3の基準は、BtlBW(ボトルネック帯域幅)であり、コネクション2は、より高い値を有するため、順序付けにおいてコネクション1の前に現れる。 Once the set of connections is selected, the ordering criteria from the flow class (eg, a subset of the transmission requirements associated with the flow class) is used to sort the matching connections into an ordered list. In this example, the first criterion is the capacity factor. Both connections have the same capacity factor. The second criterion is RTT, both connections have the same RTT. The third criterion is BtlBW (bottleneck bandwidth), where connection 2 appears before connection 1 in the ordering because it has a higher value.

フロークラスにおける順序基準のセット(例えば、伝送要件)は、属するフローのタイプに対して最も最適である利用可能なコネクション上でパケットをスケジュールすることを可能にする。例えば、「ビデオエンコーダ」フロークラスに属するパケットは、最も低いレイテンシを有するコネクションを優先的に使用することができる一方、「ファイル転送」フローに属するパケットは、レイテンシが高いか、又は高度に可変である場合でも、高スループットコネクションを優先し得る。 A set of ordering criteria (eg, transmission requirements) in a flow class allows packets to be scheduled on the available connections that are most optimal for the type of flow to which they belong. For example, packets belonging to the "Video Encoder" flow class may preferentially use connections with the lowest latency, while packets belonging to the "File Transfer" flow may have higher or highly variable latencies. In some cases, high throughput connections may be prioritized.

コネクションについて順序付けが決定されると、ステップ2d(ブロック1107)は、順序付けを使用して、利用可能な帯域幅を有するコネクションにパケットを割り当てる。パケットは、コネクションのための送信キュー上に配置される。 Once the ordering is determined for the connections, step 2d (block 1107) uses the ordering to allocate packets to connections that have available bandwidth. The packet is placed on the transmit queue for the connection.

図4Dは、400Dにおいて、図4Cからの順序付けを使用して所与のパケットについてのコネクションを選択することを示す。この例では、順序付けにおける第1のコネクションは、コネクション2であるが、コネクション2は、利用可能な輻輳ウィンドウを有していないため、現在、パケットを送信するのに適格ではない。次いで、コネクション1がチェックされ、パケットを送信することができるため、コネクション1が選択され、パケットは、コネクション1についてのステージ3パイプラインに送信されるためにキューイングされる。 FIG. 4D shows, at 400D, using the ordering from FIG. 4C to select a connection for a given packet. In this example, the first connection in the ordering is connection 2, but connection 2 is not currently eligible to send packets because it does not have an available congestion window. Connection 1 is then checked and selected as it can send the packet, and the packet is queued to be sent to the stage 3 pipeline for connection 1.

次いで、インフライトバイトのコネクションメタデータ(監視される特性)は、ステップ2eの一部として調整される。いくつかの実施形態では、これは、コネクションについてのCWND消費を追跡するときに、グッドプットバイトと再送/ダミー/プロービングバイトとを区別することを含む。そのような調整は、ステップ2におけるループの次の反復で次の優先順位レベルのコネクションをアクティブ化し得る、優先順位グループについてのグッドプット及び/又は潜在的なグッドプットに影響を与え得る。ボリュームの単位(CWNDバイト)からレート(グッドプット)への変換のための様々な方法が、図8及び図9についての説明に続いて議論される。 The in-flight byte's connection metadata (monitored characteristics) is then adjusted as part of step 2e. In some embodiments, this includes distinguishing between good put bytes and retransmission/dummy/probing bytes when tracking CWND consumption for a connection. Such adjustments may affect the goodput and/or potential goodput for the priority group that may activate the next priority level connection in the next iteration of the loop in step 2. Various methods for converting units of volume (CWND bytes) to rates (goodput) are discussed following the discussion of FIGS. 8 and 9.

ステップ3に達すると、各コネクションについての利用可能なCWNDが満杯であるか、又は伝送に適格なパケットがないかのいずれかである。ステップ2でコネクションごとの出力キューにキューイングされたパケットは、次いで、パイプラインの次のステージの適切なインスタンスに送信される。 When step 3 is reached, either the available CWND for each connection is full or there are no packets eligible for transmission. The packets queued in the per-connection output queue in step 2 are then sent to the appropriate instance of the next stage of the pipeline.

いくつかの実施形態では、明示的な目標関数を使用して、同じ優先順位を有するが、競合する要件を有するフロークラスに属する複数のフローがあるときに、所望のトレードオフを決定することができる。 In some embodiments, an explicit objective function can be used to determine the desired tradeoff when there are multiple flows belonging to flow classes with the same priority but with competing requirements. can.

図4A~図4Dに記載される実施形態は、同じ優先順位でフロー間の公正性を実装する目標関数を示す。セレクタは、フロークラスにマッチするフローの各々にラウンドロビン方式でサービス提供する。 The embodiments described in FIGS. 4A-4D illustrate objective functions that implement fairness between flows with equal priority. The selector services each flow that matches the flow class in a round-robin manner.

この実施形態における公正な実装態様は、RFC8290に記載された不足ラウンドロビンスケジューリングアルゴリズムを使用する。このアルゴリズムの簡単な概要は、このアルゴリズムが「バイトクレジット」スキームを利用し、キュー全体にわたるラウンドの反復の各ラウンドにおける各キューにバイトクレジットのクォンタムを割り当てることである。 A fair implementation in this embodiment uses the scarcity round robin scheduling algorithm described in RFC 8290. A brief overview of this algorithm is that it utilizes a "byte credit" scheme, allocating a quantum of byte credits to each queue in each round of round iterations across queues.

各ラウンドにおける各キューからの伝送のために取得され得るバイト数は、公称上、キューが有する利用可能なクレジット数に制限される。各キューについてのバイトクレジットクォンタムが等しい場合、公正性が自然に生じる。 The number of bytes that can be obtained for transmission from each queue in each round is nominally limited to the number of available credits the queue has. Fairness naturally arises if the byte credit quantum for each queue is equal.

いくつかの実施形態では、目標関数は、管理者又はエンドユーザによって意図的な不公正性が構成されることを可能にし得る。例えば、マッチングフロー上に重みが構成され得、このことは、最終的に、各反復でキューに与えられる等しくないバイトクレジットクォンタムをもたらし得る。 In some embodiments, the objective function may allow intentional unfairness to be configured by an administrator or end user. For example, weights may be configured on the matching flows, which may ultimately result in unequal byte credit quantum given to the queue at each iteration.

例えば、5つの異なる重みレベルがあり得る:
●最高(5)
●高(4)
●標準(3)
●低(2)
●最低(1)
For example, there can be five different weight levels:
●Best (5)
●High (4)
●Standard (3)
●Low (2)
●Minimum (1)

各重みに割り当てられた値は、これらのキューのバイトクレジットクォンタム間の比率を表す。例えば、標準に対応するクォンタムが30KBである場合、低とマークされたフローであれば、各ラウンドで(2/3)*30KB=20KBのクォンタムを受け取るであろう。最高にマークされたフローであれば、(5/3)*30KB=50KBを受け取るであろう。 The value assigned to each weight represents the ratio between the byte credit quantum of these queues. For example, if the quantum corresponding to the standard is 30KB, a flow marked low will receive (2/3)*30KB=20KB quantum in each round. The highest marked flow would receive (5/3)*30KB=50KB.

この例における絶対数は重要ではないことに留意されたい。標準クォンタムが30KBではなく5KBであるとした場合、重みは、依然として他の優先順位レベルについての相対クォンタムを適切にスケーリングするであろうし、最終的な結果は、全体的な公正性の点で同じとなろう。 Note that the absolute numbers in this example are not important. If the standard quantum were 5KB instead of 30KB, the weights would still scale the relative quantum appropriately for other priority levels, and the end result would be the same in terms of overall fairness. Let's become.

他の実施形態は、重みは、上記の例における5つの固定値ではなく、随意の整数であることを可能にし得る。これにより、管理者又はエンドユーザは、必要に応じて、目標関数にフロー間の更に大きな不公正性を構成することが可能になるであろう。 Other embodiments may allow the weights to be arbitrary integers rather than the five fixed values in the example above. This would allow administrators or end users to configure even greater inequity between flows in the objective function if desired.

また、全てのサービス品質(QoS)と同様に、これらの重み設定は、利用可能なWAN容量についての競合がある場合にのみ重要であることに留意されたい。競合がない場合、全てのキュー内のデータが利用可能な容量内に完全に収まることを意味するため、キューの使用量間の比率は、アプリケーションが異なるボリュームのデータを生成することからの自然な比率である。 Also note that, like all quality of service (QoS), these weight settings are only important when there is contention for available WAN capacity. Since the absence of contention means that the data in all queues fits perfectly within the available capacity, the ratio between queue usage is a natural deviation from applications generating different volumes of data. It is a ratio.

他の実施形態は、公正性をまったく考慮しない、完全に異なる目標関数を有し得る。例えば、
●最大数のフローが利用可能なWAN容量によって満たされることを保証するか、
●サービス提供されたフローによって達成された総スループットを最大化するか、又は
●BoDコネクション上の現在の帯域幅割り振りの変更を最小限に抑える。
Other embodiments may have completely different objective functions that do not consider fairness at all. for example,
● Guarantee that the maximum number of flows is satisfied by the available WAN capacity, or
● Maximize the total throughput achieved by the served flows, or ● Minimize changes to the current bandwidth allocation on BoD connections.

いくつかの実施形態では、WANコネクションが使用される方途は、WANコネクションの属性を改変することができ、WANコネクションを、特定のフロークラスにサービス提供するのに不適格にすることができる。例えば、いくつか部のタイプのコネクションは、高スループットを達成することができるが、より高いRTTを引き起こすことを犠牲にする。 In some embodiments, the method in which the WAN connection is used can modify the attributes of the WAN connection, making it ineligible to service a particular flow class. For example, some types of connections can achieve high throughput, but at the cost of incurring a higher RTT.

スループットを最大化しようとする目標関数を有する実施形態であれば、高スループット要件を有するフローにサービス提供することを選定するであろうし、このことは、WANコネクションRTTを増加させ、WANコネクションを、低レイテンシ要件を有するフロークラスにサービス提供するのに不適格にするであろう。 An embodiment with an objective function that seeks to maximize throughput would choose to service flows with high throughput requirements, which would increase the WAN connection RTT and reduce the WAN connection to This would make it unsuitable to service flow classes with low latency requirements.

逆に、最大数のフローにサービス提供しようとする目標関数を有する実施形態であれば、低レイテンシフロークラスがこのWANコネクションによってサービス提供され続け得るように、反対のトレードオフを選定し得る。 Conversely, embodiments with a goal function that seeks to serve the maximum number of flows may choose the opposite trade-off so that low-latency flow classes can continue to be served by this WAN connection.

いくつかの実施形態では、個別のスケジューラのコネクションソート順序は、全てのフローについてグローバルではなく、フローごとに維持される。 In some embodiments, the connection sort order of individual schedulers is maintained per flow rather than globally for all flows.

このことは、フローのパケットがコネクションのニーズを満たす方途でコネクションに割り当てられるように、フロー固有の要件がソート順序に影響を与えることを可能にする。 This allows flow-specific requirements to influence the sorting order so that the flow's packets are assigned to connections in a way that meets the needs of the connections.

例えば、150msの好ましい最大レイテンシ公差許容値を有するVoIPフローは、リストの最下位に150msを超えるRTTを有するコネクションを配置するソート基準を望むであろう。逆に、特定のレイテンシ要件を有していないTCPフローは、代わりに、RTTを完全に無視するか、又はRTTを多くの二次基準のうちの1つとしてのみ使用するかのいずれかで、このTCPフローのソート基準においてコネクションスループットを優先することを望むであろう。 For example, a VoIP flow with a preferred maximum latency tolerance tolerance of 150ms would want a sorting criterion that places connections with RTTs greater than 150ms at the bottom of the list. Conversely, TCP flows that do not have specific latency requirements may instead either ignore RTT completely or use RTT only as one of many secondary criteria. One would want to prioritize connection throughput in this TCP flow sorting criterion.

いくつかの実施形態では、これらのフロー要件及びプリファレンスは、マッチ基準及び結果的な挙動からなるルールの形態で構成されている。 In some embodiments, these flow requirements and preferences are configured in the form of rules consisting of match criteria and resulting behaviors.

例えば、マッチ基準は、IP3タプル(プロトコル、送信元IP、及び宛先IP)又はIP5タプル(プロトコル、送信元IP、送信元ポート、宛先IP、及び宛先ポート)の形態をとることができる。挙動は、レイテンシ又はスループットについての明示的なプリファレンスの形態をとり、いずれかについてのターゲットの好ましい値を有する。 For example, the match criteria can take the form of an IP3-tuple (protocol, source IP, and destination IP) or an IP5-tuple (protocol, source IP, source port, destination IP, and destination port). Behavior takes the form of explicit preferences for latency or throughput, with target preferred values for either.

他のヒューリスティックベースのマッチ基準の例としては、以下のものが挙げられ得る:
●DSCPタグ
●IP(v4又はv6)ヘッダで利用可能な他のヘッダフィールドのいずれか
●TCPヘッダ又はUDPヘッダ内の他のヘッダフィールドのいずれか
●伝送されたデータの累積ボリューム、例えばボリューム閾値を超えるTCPフローは、「バルクデータ転送」としてマッチする可能性があるのに対して、そうでないものは、インタラクティブなSSH/telnetセッションとしてマッチしない可能性がある
●フローの累積持続時間
●パケットペイロードに対する正規表現マッチ
●TLSハンドシェイクから抽出されたクリアテキストパラメータ(例えば、SNI、CN、SubjectAltName)
Examples of other heuristic-based match criteria may include:
● DSCP tag ● Any other header field available in the IP (v4 or v6) header ● Any other header field in the TCP header or UDP header ● The cumulative volume of data transmitted, e.g. a volume threshold TCP flows that exceed the cumulative duration of the flow may match as "bulk data transfers" while those that do not may not match as interactive SSH/telnet sessions. Regular expression match Clear text parameters extracted from TLS handshake (e.g. SNI, CN, SubjectAltName)

スケジューラソート順序に影響を与える可能性がある他の動作の例としては、以下のものが挙げられる:
●コネクション順序についての特定のプリファレンス(例えば、ユーザは、低優先順位フローについて、リストの最下位に高価なコネクションをソートすることを優先し得る)
●ジッタ許容公差
●最大レイテンシ許容公差
●所望の冗長性の量(例えば、FEC)
●失われたパケットの再送が所望されるかどうか、及びその場合に、再送の試みが停止するべき最大時間制限があるかどうか
●明示的なパケットペーシングが所望されるかどうか
●例えば、毎秒30フレームでビデオを伝送するリアルタイムビデオアプリであれば、ビデオのビデオフレームを正確に33.3ミリ秒間隔で伝送し得、マルチパスシステム100Bがペーシングを変更することを望まないであろう。
●対照的に、バーストアプリケーションであれば、スケジューラに集約WANレートでビデオのバーストを明示的にペーシングさせることから利益を受け得る。
●所望のスループット(例えば、最小、ターゲット、最大)
Examples of other operations that can affect scheduler sort order include:
● Specific preferences for connection order (e.g., the user may prefer sorting expensive connections to the bottom of the list for low priority flows)
● Jitter tolerance ● Maximum latency tolerance ● Desired amount of redundancy (e.g. FEC)
● Whether retransmission of lost packets is desired, and if so, whether there is a maximum time limit at which retransmission attempts should stop ● Whether explicit packet pacing is desired ● For example, 30 per second A real-time video application that transmits video in frames may transmit video frames of video exactly 33.3 milliseconds apart and would not want multipath system 100B to change the pacing.
- In contrast, bursty applications may benefit from having the scheduler explicitly pace bursts of video at the aggregate WAN rate.
● Desired throughput (e.g. minimum, target, maximum)

トラフィックパターンを分析する機械学習技法を使用して、ルール(マッチ基準及び動作の両方)が自動生成され得る。 Rules (both match criteria and actions) can be automatically generated using machine learning techniques that analyze traffic patterns.

ML法への入力(特徴量)としては、以下のものが挙げられ得る:
i.伝送されたデータの累積ボリューム
ii.パケットのサイズ分布(ヒストグラム)
iii.パケット間の間隔(ペーシング及びジッタの両方)
iv.パケットの頻度及びグループ化
v.パケットヘッダフィールド(イーサネット、IP、TCP、UDPなど)
vi.パケットの内容(ペイロード)
vii.IPアドレッシングだけでなく、パケットの意図された宛先(例えば、TLSハンドシェイク及び交換された証明書におけるSNI、CN、及びSubjectAltNameフィールド)
viii.フローの累積持続時間
ix.時刻
x.同じ宛先への、又は同じ送信元からの同時フロー数
xi.同じ宛先への、又は同じ送信元からの任意の同時フローの現在又は履歴の予測(ラベル)(例えば、いくつかのアプリケーションは、複数のフローを開き、1つを制御プレーンとして、別の1つをデータプレーンとして開き、既存の制御プレーンフローが存在することを知ることは、データプレーンフローの予測に役立ち得る)
Inputs (features) to the ML method may include the following:
i. Cumulative volume of data transmitted ii. Packet size distribution (histogram)
iii. Inter-packet spacing (both pacing and jitter)
iv. Packet frequency and grouping v. Packet header fields (Ethernet, IP, TCP, UDP, etc.)
vi. Packet content (payload)
vii. IP addressing as well as the intended destination of the packet (e.g. SNI, CN, and SubjectAltName fields in the TLS handshake and exchanged certificates)
viii. Cumulative duration of flow ix. Time x. Number of simultaneous flows to the same destination or from the same source xi. Current or historical predictions (labels) of any simultaneous flows to the same destination or from the same source (e.g., some applications open multiple flows, one as a control plane and one as a control plane) as a data plane and knowing that there is an existing control plane flow can help predict the data plane flow)

ML法からの予測(ラベル)としては、訓練コーパスの挙動に基づいて決定された、前述の挙動のうちのいずれかが挙げられるであろう。 Predictions (labels) from the ML method may include any of the aforementioned behaviors, determined based on the behavior of the training corpus.

いくつかの実施形態では、ルールは、依然として親ルールによって管理されながら、更なるマッチ基準及びより具体的な挙動を適用する従属ルールの概念を有することができる。例えば、
●IP5タプルによって識別されるVPNフローであれば、マッチ基準及び動作で定義されたルールを有し得る。これは、「親」ルールとみなされるであろう。
●VPNは、VPN内で、VPNによって保護されているアプリケーションからの多くの内部フローを搬送するであろう。通常、これらの内部フローは、(VPNによって暗号化された)マッチ基準から完全に隠されるであろう。
●ただし、いくつかのVPNは、内部(クリアテキスト)パケットのプリファレンスに対応する暗号化されたパケット上にDSCPタグを設定することにより、内部フローに関する限られた情報セットを公開することを選定し得る。
In some embodiments, a rule may have the concept of a subordinate rule that applies further matching criteria and more specific behavior while still being managed by a parent rule. for example,
- Any VPN flow identified by an IP5 tuple may have rules defined with match criteria and actions. This would be considered the "parent" rule.
- A VPN will carry many internal flows within the VPN from applications protected by the VPN. Normally these internal flows would be completely hidden from the match criteria (encrypted by the VPN).
However, some VPNs choose to expose a limited set of information about internal flows by setting a DSCP tag on encrypted packets that corresponds to a preference for internal (clear text) packets. It is possible.

DSCPタグにマッチする従属ルールを作成し得るが、結果として得られる利用可能な挙動は、依然として親ルールによって管理されるであろう。例えば、
a.一般に、VPNは、パケットを順番に配信することを必要とする(VPNは、順序の誤りを許容することができるが、小さなウィンドウまでである)。
b.DSCPタグにマッチする従属ルールで構成された挙動は、親ルールが著しく順不同でパケットを配信する結果となってはならない。
Although dependent rules may be created that match DSCP tags, the resulting available behaviors will still be governed by the parent rule. for example,
a. Generally, VPNs require packets to be delivered in order (VPNs can tolerate out-of-order, but only up to a small window).
b. The behavior configured by subordinate rules that match DSCP tags must not result in parent rules delivering packets significantly out of order.

例えば、150msの最大レイテンシ制限を要求する従属ルール、及び最大スループットを要求する第2の従属ルールは、これらの2つの従属ルールからのインターリーブされたパケットが大幅に異なるレイテンシを有するコネクションに割り当てられる可能性があることから、親ルールの順序付け要件に違反する可能性がある。 For example, a dependent rule requiring a maximum latency limit of 150 ms and a second dependent rule requiring maximum throughput may allow interleaved packets from these two dependent rules to be assigned to connections with significantly different latencies. may violate the ordering requirements of the parent rule.

図5Aは、それぞれのルール及び挙動が完全に独立している2つの独立したフローを例示している。この例では、SIPフローは、低レイテンシを必要とするため、挙動は、スケジューラ104Bにコネクション1でSIPフローのパケットのみを伝送させる。逆に、FTPフローは、高スループットを必要とするため、スケジューラ104Bは、コネクション2でFTPフローのパケットのみを伝送する。 FIG. 5A illustrates two independent flows whose rules and behavior are completely independent. In this example, since SIP flows require low latency, the behavior causes scheduler 104B to transmit only packets for SIP flows on connection 1. Conversely, FTP flows require high throughput, so scheduler 104B transmits only packets for FTP flows on connection 2.

これらの2つのフローについてパケットが無線で伝送され、シーケンサ118に到達すると、これらのパケットは、順序通りに戻され、最終的な宛先に独立に伝送される。この例では、シーケンサ118は、パケットが依然として無線を介して伝送中であるFTPフローの状態にかかわらず、既に到達しており、かつ正しい順序であるSIPフローに属するパケットを伝送している。 When packets are transmitted over the air for these two flows and reach sequencer 118, they are put back in order and transmitted independently to their final destination. In this example, sequencer 118 is transmitting packets belonging to a SIP flow that have already arrived and are in the correct order, regardless of the state of the FTP flow in which the packets are still being transmitted over the air.

図5Bは、従属フローの概念を例示している。この例では、同じSIPフロー及びFTPフローが存在するが、スケジューラ104Bがこれらのフローを見る前に、これらのフローは、暗号化及びカプセル化のためにVPNクライアントを通過する。 FIG. 5B illustrates the concept of dependent flows. In this example, the same SIP and FTP flows exist, but before scheduler 104B sees these flows, they pass through the VPN client for encryption and encapsulation.

VPNクライアントから出てくると、両方のフローからのパケットは、同じIP5タプルを有するため、スケジューラ104B及びシーケンサ118は、これを親フローとして扱い、親フローの要件によって制約される。 When coming out of the VPN client, the packets from both flows have the same IP5 tuple, so the scheduler 104B and sequencer 118 treat it as the parent flow and are constrained by the requirements of the parent flow.

従属フロー(SIP及びFTP)の存在は、DSCPタグを使用して伝達され、DSCPタグは、スケジューラ104Bが伝送のためにコネクション1及び2にどのようにパケットを割り当てるかを制御する。この例では、割り当ては、図5Aにおけるものと同じである。 The presence of dependent flows (SIP and FTP) is communicated using DSCP tags, which control how scheduler 104B assigns packets to connections 1 and 2 for transmission. In this example, the assignments are the same as in FIG. 5A.

しかしながら、親フロー制約は、パケットがスケジューラ104Bに到達したのと同じ順序でシーケンサ118から伝送されることを必要とする。したがって、この例では、従属SIPフローに属するパケットがシーケンサ118に既に到達していても、従属FTPフローに属するパケットが到達し、かつ最初に伝送されるまで、従属SIPフローに属するパケットを伝送することができない。 However, parent flow constraints require that packets be transmitted from sequencer 118 in the same order as they arrive at scheduler 104B. Therefore, in this example, even if the packets belonging to the subordinate SIP flow have already reached the sequencer 118, the packets belonging to the subordinate SIP flow are transmitted until the packets belonging to the subordinate FTP flow arrive and are transmitted first. I can't.

図6Aは、600Aにおいて、ルール管理ページのサンプル実施形態である。構成されたルールを表に表示し、各行が、マッチ基準及び挙動をまとめている。ルールがリストされている順序は、パケットがルールとマッチする順序である。図6Bは、600Bにおいて、ルールの順序を変更するためのワークフローを示す。 FIG. 6A, at 600A, is a sample embodiment of a rules management page. The configured rules are displayed in a table, with each row summarizing match criteria and behavior. The order in which the rules are listed is the order in which packets match the rules. FIG. 6B shows a workflow for changing the order of rules at 600B.

図6Cは、600Cにおいて、マッチ基準及び挙動の詳細、並びにこのルールにマッチするシステムを通過する現在アクティブなフローを示すために、テーブル内の各行をどのように拡張することができるかを示す。 FIG. 6C shows how each row in the table can be expanded at 600C to show details of the match criteria and behavior, as well as the currently active flows through the system that match this rule.

表における各ルールは、編集及び削除のアイコンを含む。 Each rule in the table includes edit and delete icons.

図6Dは、600Dにおいて、編集ボタンがクリックされたときに現れるダイアログを示す。ルールについてのマッチ基準及び挙動を、このダイアログで変更することができる。 Figure 6D shows the dialog that appears when the edit button is clicked at 600D. Match criteria and behavior for the rule can be changed in this dialog.

メインのルール管理画面には、別個の[ルール追加]リンクがあり、図6Eは、600Eにおいて、クリックすると現れるモードダイアログを示す。 There is a separate Add Rule link on the main rules management screen, and FIG. 6E shows the mode dialog that appears when clicked at 600E.

いくつかの実施形態では、ルールは、送信機側で構成されるようになっており、受信機に自動プッシュされるようになっている。デフォルトでは、ルールは、対称かつ双方向となっている。つまり、ルールが追加され、かつルールの挙動が構成されると、マッチするペアルールが透過的に追加されるようになっているが、送信元及び宛先のマッチ基準はスワップされるようになっている。高度な構成画面を介して、非対称ルール(同じフローのいずれかの方向に対して異なる挙動)を追加することが可能であろう。 In some embodiments, rules are configured at the sender and automatically pushed to the receiver. By default, rules are symmetric and bidirectional. This means that once a rule is added and the rule behavior is configured, matching pair rules are now added transparently, but the source and destination match criteria are now swapped. There is. It would be possible to add asymmetric rules (different behavior for either direction of the same flow) via the advanced configuration screen.

一実施形態では、スケジューラは、複数のコネクションの様々なネットワーク特性をプローブし(各コネクションについての測定される特性を判定するために)、測定される特性を伝送要件と組み合わせて使用して、パケット伝送に関する決定を行う。 In one embodiment, the scheduler probes various network characteristics of the plurality of connections (to determine the measured characteristics for each connection) and uses the measured characteristics in combination with transmission requirements to Make transmission decisions.

例えば、1つのそのような決定は、特定のコネクションで伝送するパケットの数及びこれらのパケットをいつ伝送するかを決定することである。 For example, one such decision is determining how many packets to transmit on a particular connection and when to transmit these packets.

いくつかの実施形態は、ボリュームベースである。そのような実施形態は、特定のコネクションで伝送され得るデータのボリュームに対する制限(例えば、バイト又はパケットの単位)を決定することによって動作する。そのボリュームの量で十分なパケットが伝送されると、これらのパケットに関するいくつかのフィードバックが受信されるまで伝送が停止する。完全なボリューム制限が伝送される前にフィードバックが受信された場合、フィードバックが受信されていない送信されたデータのボリュームが決定されたボリューム制限を超えない限り、伝送を停止せずに継続することができる。 Some embodiments are volume-based. Such embodiments operate by determining a limit on the volume of data (eg, in bytes or packets) that can be transmitted over a particular connection. Once enough packets have been transmitted for that amount of volume, transmission will stop until some feedback regarding these packets is received. If feedback is received before the full volume limit has been transmitted, the transmission may continue without stopping as long as the volume of data transmitted for which no feedback has been received exceeds the determined volume limit. can.

一実施形態では、データのボリュームは、コネクションの輻輳ウィンドウ(CWND)となるように選定される。簡単に言えば、CWNDは、任意のフィードバックを受信する前に、コネクションで、そのコネクションに著しい輻輳を引き起こさずに送信することができる最大のデータのボリュームである。CWNDを推定するための多数の方法が存在する。スケジューラは、1つのそのような方法にアクセスし、その方法を介してCWNDの推定値を受け取ることができると仮定される。 In one embodiment, the volume of data is chosen to be the congestion window (CWND) of the connection. Simply put, CWND is the maximum volume of data that can be sent on a connection without causing significant congestion on the connection before any feedback is received. There are many methods for estimating CWND. It is assumed that the scheduler has access to one such method and can receive an estimate of CWND via that method.

いくつかの実施形態では、スケジューラは、(例えば、1秒当たりのバイトの単位で)データが伝送されているレートを決定することが必要とされる。次いで、このレートを使用して、パケット伝送に関する他の決定を行うことができる。 In some embodiments, a scheduler is required to determine the rate at which data is being transmitted (eg, in bytes per second). This rate can then be used to make other decisions regarding packet transmission.

例えば、一実施形態では、現在アクティブなネットワークコネクション(複数可)で伝送されているデータのレートが、伝送のために送信元アプリケーションから受信されているデータのレートよりも小さい場合、スケジューラは、より多くのコネクションをアクティブ化して、アプリケーションレートに対応するために集約伝送レートを増加させることを決定することができる。 For example, in one embodiment, if the rate of data being transmitted on the currently active network connection(s) is less than the rate of data being received from the source application for transmission, the scheduler may A decision may be made to activate more connections to increase the aggregate transmission rate to accommodate the application rate.

別の例では、一実施形態は、保証された伝送レートの観点から表すことができるサービス品質(QoS)要件を満たさなければならない場合がある。集約レートが必要とされるレベルを下回った場合、スケジューラは、QoS要件を満たすために集約伝送レートを増加させるために、より多くのコネクションをアクティブ化することを決定することができる。 In another example, an embodiment may have to meet quality of service (QoS) requirements, which can be expressed in terms of guaranteed transmission rates. If the aggregate rate falls below the required level, the scheduler may decide to activate more connections to increase the aggregate transmission rate to meet the QoS requirements.

また別の例では、一実施形態が、アプリケーション性能レベルを保証し、性能を最適化し、報告するなどの目的で、グッドプット(すなわち、アプリケーションデータがネットワークを正常に通過するレート)を測定するために必要とされ得る。 In yet another example, an embodiment may measure goodput (i.e., the rate at which application data is successfully passed through a network) for purposes such as ensuring application performance levels, optimizing performance, reporting, etc. may be required.

一実施形態では、TCP性能は、複数のコネクションによって達成される集約レートで、送信されるパケットをペーシングすることによって最適化され得る。例えば、PCT出願第PCT/CA2020/051090号を参照されたい。 In one embodiment, TCP performance may be optimized by pacing transmitted packets at an aggregate rate achieved by multiple connections. See, for example, PCT Application No. PCT/CA2020/051090.

いくつかの機能にレートが必要とされる実施形態では、ボリュームベースのスケジューラは、伝送されるデータのボリュームをレートに変換する方法を必要とする。 In embodiments where rates are required for some functionality, a volume-based scheduler requires a way to convert the volume of data being transmitted into a rate.

ボリュームを伝送された時間の持続時間で除算することによってボリュームをレートに変換する些末な手法は、一般に、不正確な結果をもたらす。そのような手法は、実際のレートデータではなく、送信機での伝送レートがネットワークを通して移動していることを測定する。データがネットワークを通して移動する実際のレートは、一般にネットワークのボトルネックと称されるマルチリンクネットワークの最も遅いリンクでのレートによって真に判定される。 The trivial technique of converting volume to rate by dividing the volume by the transmitted time duration generally yields inaccurate results. Such techniques measure the transmission rate at the transmitter moving through the network, rather than the actual rate data. The actual rate at which data moves through a network is truly determined by the rate at the slowest link in a multi-link network, commonly referred to as the network bottleneck.

ネットワークのボトルネックリンクの特性は、特にマルチリンクネットワークがいつでも、送信機及び受信機に対して透過的に使用されるリンクの組み合わせを変更することができることを知っている送信機又は受信機には利用可能でない。しかしながら、輻輳制御方法は、送信機及び受信機で観測された性能に基づいて、推定値を生成することができる。 The characteristics of bottleneck links in a network are particularly important to transmitters or receivers, who are aware that multi-link networks can change the combination of links used at any time, transparently to the transmitter and receiver. Not available. However, congestion control methods can generate estimates based on observed performance at the transmitter and receiver.

いくつかの実施形態では、輻輳制御方法は、ボトルネックリンクの伝送レートの推定を提供することができる。これは、ネットワークのボトルネック帯域幅BtlBwと称されることがある。 In some embodiments, the congestion control method may provide an estimate of the transmission rate of a bottleneck link. This is sometimes referred to as the network bottleneck bandwidth BtlBw.

いくつかの実施形態では、ネットワークのラウンドトリップ伝播時間RtPropを、パケットが送信されるときとパケットに関するフィードバックが受信されるときとの間の時間をサンプリングすることによって推定することができる。 In some embodiments, the network round-trip propagation time RtProp may be estimated by sampling the time between when a packet is sent and when feedback regarding the packet is received.

BtlBwとRtPropとの組み合わせを使用して、以下のように、帯域幅遅延積BDPと称されるネットワーク属性を判定することができる。
BDP=BtlBw×RtProp
The combination of BtlBw and RtProp can be used to determine a network attribute called bandwidth-delay product BDP as follows.
BDP=BtlBw×RtProp

BDPについての最も一般的な単位は、バイトである。これらの量については、以下の単位が仮定される:(i)BtlBwについては1秒当たりのバイト、(ii)RtPropについては秒、及びしたがって(iii)BDPについてはバイト。 The most common unit for BDP is the byte. The following units are assumed for these quantities: (i) bytes per second for BtlBw, (ii) seconds for RtProp, and thus (iii) bytes for BDP.

BDPは、データが常に送信に利用可能であると仮定して、理想的な条件で動作している場合にネットワーク(インフライト)に存在するであろうデータの量を意味する。このネットワークは、ネットワークの公称レートBtlBwでデータを転送し、そのパケットを送信するRtProp時間のちょうど後に、あらゆるパケットに関するフィードバックを提供するであろう。図7は、700において2つの例を示す。図7の上半分は、BDPが16個の等サイズのパケットからなる例を使用して、この概念を例示している。実際には、総サイズがBDPを使用して計算される値に等しい限り、パケットの量及びサイズは、異なり得る。 BDP refers to the amount of data that would be present in a network (in-flight) when operating under ideal conditions, assuming that data is always available for transmission. This network will transfer data at the network's nominal rate BtlBw and will provide feedback on every packet just after the RtProp time to send that packet. FIG. 7 shows two examples at 700. The top half of Figure 7 illustrates this concept using an example in which the BDP consists of 16 equally sized packets. In reality, the amount and size of the packets can be different as long as the total size is equal to the value calculated using BDP.

いくつかのボリュームベースの実施形態では、BDPを使用して、様々なデータ転送レートを推定することができ、そのうちのいくつかの例については、先述した。 In some volume-based embodiments, BDP can be used to estimate various data transfer rates, some examples of which are described above.

検討中のインフライトボリュームについて、理想的な条件を仮定して、ボリュームがBDPよりも小さい場合、ネットワークの公称レートの分数値であるBtlBwを達成することができるにすぎない。この分数値を、BDPに対するボリュームの比として計算することができる。結果として得られる達成レートは、以下のように決定される:
インフライトボリュームに対応する達成レート=ボリューム/BDP×BtlBw
For the in-flight volume under consideration, assuming ideal conditions, BtlBw, which is only a fraction of the network's nominal rate, can be achieved if the volume is smaller than the BDP. This fractional value can be calculated as the ratio of volume to BDP. The resulting achieved rate is determined as follows:
Achieved rate corresponding to in-flight volume = Volume/BDP x BtlBw

実際には、ネットワークが理想的な状況下で動作することはめったにない。例えば、パケットが、受信端に配信される前に一時的にバッファリングされる場合があるし、フィードバックが、受信機で又はネットワークによって遅延し得る。いくつかの場合では、パケットが失われ、受信側に到達することがなく、それによって、フィードバックがトリガされない場合がある。他の場合では、フィードバック自体が失われる場合がある。損失は、例えば、新しいパケットのフィードバックが受信されたとき、又はタイマ期限切れに基づいて推定され得る。 In reality, networks rarely operate under ideal conditions. For example, packets may be temporarily buffered before being delivered to the receiving end, and feedback may be delayed at the receiver or by the network. In some cases, packets may be lost and never reach the receiver, thereby not triggering feedback. In other cases, the feedback itself may be lost. Loss may be estimated based on, for example, when new packet feedback is received or on timer expiration.

遅延したフィードバック(到達してもしなくてもよい)が次の伝送イベントをトリガするのを待つことは、ネットワークでの達成可能なレートを人為的に制限し得る。 Waiting for delayed feedback (which may or may not arrive) to trigger the next transmission event may artificially limit the achievable rate in the network.

図8Aは、図800Aにおいて、フィードバックを集約し、かつ受信された4パケットごとに1回確認応答を送信者に返信する受信機の一例を示す。 FIG. 8A shows an example of a receiver in FIG. 800A that aggregates feedback and sends an acknowledgment back to the sender once for every four packets received.

図8Bは、図800Bにおいて、例えば、確認応答の集約が、全体的なスループットがネットワークの能力よりも小さいことをどのようにもたらすかを続いて例証している。送信者は、次のパケットグループの送信を開始するまで、より長い時間待つ。全体として、送信機は、最終的に、図7の理想的な場合と同じ量のパケットを送信するが、より長い期間にわたって送信するため、スループットの低下をもたらす。 FIG. 8B continues to illustrate in diagram 800B how, for example, aggregation of acknowledgments results in the overall throughput being less than the capacity of the network. The sender waits longer before starting to send the next group of packets. Overall, the transmitter ends up transmitting the same amount of packets as in the ideal case of FIG. 7, but over a longer period of time, resulting in reduced throughput.

一実施形態では、この人工的な制限は、以前に送信されたパケットのフィードバックがまだ受信されていない場合でも、送信するデータの追加の許容量を指定することによって克服される。このことは、インフライトのデータのボリュームがBDPを超え得ることを意味する。しかしながら、そのような場合、上記の達成されたレート式の適用が示唆し得るように、ネットワークは、実際にはより高いレートではデータを転送していない。追加の許容量は、送信機がより長い期間にわたってBtlBwに等しい一定のレートを維持することを単に可能にする。したがって、手元のボリュームの推定される転送レートは、BtlBwにキャップされる。 In one embodiment, this artificial limitation is overcome by specifying an additional allowed amount of data to transmit even if feedback of previously transmitted packets has not yet been received. This means that the volume of in-flight data can exceed the BDP. However, in such a case, the network is not actually transferring data at the higher rate, as application of the achieved rate formula above may suggest. The additional allowance simply allows the transmitter to maintain a constant rate equal to BtlBw for a longer period of time. Therefore, the estimated transfer rate of the volume at hand is capped at BtlBw.

図8Cは、図800Cにおいて、例えば、確認応答が受信される前に、送信機がパケットを送信し続けるためにそのような追加の送信許容量をどのように使用するかを続いて例証している。インフライトのデータのボリューム、19パケットは、16パケットのBDPを超えている。しかしながら、実際のレートは、ネットワークの能力とマッチし、計算されたレートのキャッピングは、インフライトのボリュームの最小値とBDPとを使用することによって、同じ結果を達成する。 FIG. 8C continues to illustrate in diagram 800C how a transmitter may use such additional transmission allowance to continue transmitting packets, e.g., before an acknowledgment is received. There is. The volume of in-flight data, 19 packets, exceeds the BDP of 16 packets. However, the actual rate matches the network capacity, and the calculated rate capping achieves the same result by using the in-flight volume minimum and BDP.

いくつかの実施形態では、同様の手法を使用して、以後、潜在的なグッドプットと称される、場合によってはネットワーク上で達成され得るグッドプットを推定することができる。 In some embodiments, similar techniques can be used to estimate the goodput that may be achieved on the network, hereinafter referred to as potential goodput.

データの特定のボリュームを、グッドプット部分と他の部分とに分割することができる。グッドプット部分は、新しく伝送されたアプリケーションデータを含む。他方の部分は、新しく伝送されたアプリケーションデータとしてカウントすることができないデータ、例えば、以前に失われたデータ、制御データ、プロービングデータなどの再送を含む。 A particular volume of data can be divided into a goodput portion and other portions. The goodput portion contains newly transmitted application data. The other part includes retransmissions of data that cannot be counted as newly transmitted application data, such as previously lost data, control data, probing data, etc.

データの全ボリュームがBDPよりも大きい場合、パケット及び/又はフィードバック遅延は、上記のように仮定される。追加のグッドプットに利用可能な余分なスペースはないと仮定する。結果として得られる(潜在的な)グッドプットレートは、以下のように推定される:
グッドプットレート=グッドプット部分/全ボリューム×BtlBw
If the total volume of data is larger than BDP, packet and/or feedback delays are assumed as above. Assume there is no extra space available for additional goodput. The resulting (potential) good put rate is estimated as follows:
Good put rate = Good put portion/total volume x BtlBw

例えば、図9Aは、900Aにおいて、16パケットのBDPを有するネットワークを示す。ネットワークの能力に等しいスループットを達成するために、インフライトとされたボリュームは、19パケットである。しかしながら、14個のパケットのみがグッドプットであり、ネットワークの能力の7/8のグッドプットレートをもたらす。データのボリュームがBDPよりも小さい場合、差は、追加のグッドプットに利用可能と仮定される余分なスペースであるとみなされる。 For example, FIG. 9A shows a network with a 16-packet BDP at 900A. To achieve a throughput equal to the network capacity, the volume taken in-flight is 19 packets. However, only 14 packets are goodput, resulting in a goodput rate of 7/8 of the network's capacity. If the volume of data is less than the BDP, the difference is considered to be extra space that is assumed to be available for additional goodput.

図9Bは、900Bにおいて、3パケットのみがインフライトであり、潜在的なグッドプットレートを計算するときにグッドプットであると仮定することができる13パケットの余分なスペースをもたらす一例を示す。この余分なスペースは、輻輳制御方法が決定するCWNDによって制限されなければならない。任意の時点で、輻輳制御が許容する追加のボリュームは、CWNDと全ボリュームとの間の差である。グッドプットの余分なスペースがこの輻輳制御許容量を超える場合、スペースは、単に輻輳制御許容量に制限される。 FIG. 9B shows an example in 900B where only 3 packets are in-flight, resulting in an extra space of 13 packets that can be assumed to be good put when calculating the potential good put rate. This extra space must be limited by the CWND determined by the congestion control method. At any given time, the additional volume that congestion control allows is the difference between CWND and total volume. If the extra space in the goodput exceeds this congestion control allowance, the space is simply limited to the congestion control allowance.

図9Cは、900Cにおいて、CWNDが11パケットに低減された例を示しており、これは、追加のグッドプットに利用可能と仮定される余分なスペースを8パケットに制限する。 FIG. 9C shows an example where CWND is reduced to 11 packets in 900C, which limits the extra space assumed available for additional goodput to 8 packets.

結果として得られる潜在的なグッドプットレートは、以下のように推定される:
潜在的なグッドプットレート=(グッドプット部分+制限されたグッドプットの余分なスペース)/BDP×BtlBw
The resulting potential goodput rate is estimated as follows:
Potential goodput rate = (goodput portion + limited goodput extra space) / BDP x BtlBw

上記の例を続けると、図9B及び図9Cは、上記の潜在的なグッドプット式が、図9Cにおけるシナリオについてのより低い潜在的なグッドプットレートをどのようにもたらすかを示しており、これは、輻輳制御方法によって執行されるCWND低減を考慮して期待されるとおりである。 Continuing with the example above, Figures 9B and 9C show how the potential goodput equations above result in a lower potential goodput rate for the scenario in Figure 9C, which is as expected considering the CWND reduction enforced by congestion control methods.

上記の手法は、グッドプット及び潜在的なグッドプットレートについて記載されているが、この手法を、全ボリュームを部分的に構成する任意のタイプのデータのレート又は潜在的なレートを計算するように容易に修正することができる。 Although the above technique is described for goodput and potential goodput rates, the technique can be extended to calculate the rate or potential rate of any type of data that partially constitutes a total volume. Can be easily modified.

以下は、LTEセルラネットワークを介して遭遇するものに典型的な属性を有するネットワークに先述の式を適用する数値例である。
BtlBw=10Mbps
RtProp=60ms
BDP=10Mbps*60ms=75KB
CWND=60KB
グッドプット部分=25KB
他の部分=10KB
全ボリューム=25KB+10KB=35KB
グッドプットの余分なスペース=BDP-全ボリューム=75KB-35KB=40KB
輻輳制御許容量=CWND-全ボリューム=60KB-35KB=25KB
制限されたグッドプットの余分なスペース=
Min(グッドプットの余分なスペース,輻輳制御許容量)=
Min(40KB,25KB)=25KB
潜在的なグッドプットレート=
(グッドプット部分+制限されたグッドプットの余分なスペース)/BDPxBtlBw=
(25KB+25KB)/75KBx10Mbps=50/75x10Mbps=6.67Mbps
Below is a numerical example applying the above equation to a network with attributes typical of those encountered over LTE cellular networks.
BtlBw=10Mbps
RtProp=60ms
BDP=10Mbps*60ms=75KB
CWND=60KB
Goodput part = 25KB
Other parts = 10KB
Total volume = 25KB + 10KB = 35KB
Goodput extra space = BDP - Total volume = 75KB - 35KB = 40KB
Congestion control allowance = CWND - total volume = 60KB - 35KB = 25KB
Limited Goodput Extra Space =
Min (goodput extra space, congestion control allowance) =
Min (40KB, 25KB) = 25KB
Potential good put rate =
(Goodput portion + limited goodput extra space)/BDPxBtlBw=
(25KB+25KB)/75KBx10Mbps=50/75x10Mbps=6.67Mbps

IPネットワークを介して通信するシステムは、多くの場合、同様の輻輳制御メカニズムを採用する全てのネットワークノードによる公正なネットワーク利用を達成しようとする輻輳制御メカニズムを実装する。 Systems that communicate over IP networks often implement congestion control mechanisms that seek to achieve fair network utilization by all network nodes employing similar congestion control mechanisms.

輻輳制御メカニズムは、多くの場合、ネットワーク上で発生する通信を監視し、場合によっては、必要に応じてネットワークをプロービングし、かつその結果に基づいてネットワーク属性を導出することによって動作する。ネットワークを表すモデルが作成され、このモデルに基づいて以後の通信が導かれる。例えば、このモデルは、達成された現在の最大スループット、パケットの現在及び最小のラウンドトリップ時間、パケット損失イベントなどのネットワーク属性を追跡することができる。 Congestion control mechanisms often operate by monitoring communications occurring on a network, possibly probing the network as necessary, and deriving network attributes based on the results. A model representing the network is created, and subsequent communications are guided based on this model. For example, the model can track network attributes such as current maximum throughput achieved, current and minimum round trip times for packets, packet loss events, etc.

作成されたモデル及び追跡された情報に基づいて、輻輳制御メカニズムは、ネットワークが輻輳に遭遇している可能性があることを示す、ネットワークが性能不足であるときを判定することができる。次いで、輻輳制御メカニズムは、ネットワーク輻輳を低減又は除去し、かつ望ましいネットワーク性能を復元することを目的とする是正措置を講じ得る。 Based on the created model and tracked information, the congestion control mechanism can determine when the network is underperforming, indicating that the network may be experiencing congestion. The congestion control mechanism may then take corrective actions aimed at reducing or eliminating network congestion and restoring desired network performance.

従前の輻輳制御実施形態(例えば、TCP)では、パケット損失は、ネットワーク輻輳の指標として使用され、損失に応答して是正措置(例えば、CWNDを低減する)が行われる。 In traditional congestion control implementations (eg, TCP), packet loss is used as an indicator of network congestion, and corrective action (eg, reducing CWND) is taken in response to the loss.

一実施形態では、パケットのレイテンシ、すなわち、パケットが送信機から受信機までネットワークを通過するのに必要とされる時間は、ネットワーク性能の指標である。高レイテンシのパケットは、場合によっては、受信機にとって役に立たず、破棄され、これらのパケットの伝送が無駄になる可能性がある。例えば、参加者間の低い会話遅延を必要とするリアルタイムVoIPアプリケーションは、最大許容会話遅延よりも古い音声データを搬送するパケットを使用しないようになっている。 In one embodiment, packet latency, ie, the time required for a packet to traverse a network from a transmitter to a receiver, is an indicator of network performance. High latency packets may, in some cases, be of no use to the receiver and may be discarded, wasting the transmission of these packets. For example, real-time VoIP applications that require low conversational delays between participants are designed to avoid using packets carrying voice data that are older than the maximum allowed conversational delay.

そのような実施形態では、輻輳制御メカニズムは、パケットのレイテンシが許容レベルを超えないように、パケットのレイテンシを監視し、レイテンシを制御しようとし得る。 In such embodiments, the congestion control mechanism may monitor packet latency and attempt to control the latency so that the packet latency does not exceed an acceptable level.

一実施形態では、パケットについて測定される最低レイテンシは、ベースライン値を形成することができ、以後の測定値をこのベースライン値と比較することができる。以後の測定値がベースライン値の関数である閾値を超える場合、輻輳制御メカニズムは、ネットワークが輻輳に遭遇しているとみなす。 In one embodiment, the lowest latency measured for a packet may form a baseline value to which subsequent measurements may be compared. If subsequent measurements exceed a threshold that is a function of the baseline value, the congestion control mechanism considers the network to be experiencing congestion.

別の実施形態では、同様の手法が、レイテンシの代わりに、パケットを送信することと、そのことに関する確認応答を受信することと、の間で経過する時間であるパケットのラウンドトリップ時間を使用する。 In another embodiment, a similar technique uses a packet's round-trip time, which is the time that elapses between sending a packet and receiving an acknowledgment for it, instead of latency. .

一実施形態では、輻輳制御メカニズムが、増加したパケット遅延に基づいてネットワークが輻輳に遭遇していると判定すると、輻輳ウィンドウ(CWND)は、何らのフィードバックも受信することなくこのネットワークで送信され得るデータの量を制限するように低減される。目的は、パケット遅延の増加の一般的な原因である、ネットワークによってバッファリングされることとなるか、又は現在バッファリングされているデータのボリュームを低減することである。 In one embodiment, when a congestion control mechanism determines that a network is experiencing congestion based on increased packet delay, a congestion window (CWND) may be transmitted on this network without receiving any feedback. Reduced to limit the amount of data. The objective is to reduce the volume of data that will be or is currently buffered by the network, which is a common cause of increased packet delay.

一実施形態では、輻輳ウィンドウは、ネットワークの帯域幅遅延積(BDP)に低減される。理論的には、BDPは、パケットがネットワークのスループット(BtlBw)を反映する一定のペースで送信機によって伝送されると仮定して、そのバッファ内にパケットの動きのないキューを形成することなく、ネットワークが配信することができるはずであるデータのボリュームを表す。したがって、これは、ネットワークが少なくとも部分的に回復し、パケット遅延を許容レベルに低減し戻すことを可能にすると期待される。 In one embodiment, the congestion window is reduced to the bandwidth-delay product (BDP) of the network. In theory, BDP assumes that packets are transmitted by the transmitter at a constant pace that reflects the network throughput (BtlBw), without forming a static queue of packets in its buffer. Represents the volume of data that a network should be able to deliver. This is therefore expected to allow the network to at least partially recover and reduce packet delays back to acceptable levels.

例えば、16パケットのBDPを有するネットワークと、確認応答集約を考慮するために24パケットのCWNDを決定した輻輳制御メカニズムと、を仮定する。図10Aは、1000Aにおいて、他のネットワークノードからの輻輳が、どのようにして送信機にネットワークを制するようにさせることができるかを例示している。この場合、送信機は、送信機の輻輳ウィンドウを低減せず、全量をインフライトにする。これにより、ネットワークバッファが満杯になり、バッファリングできない余分なパケットがドロップされる。輻輳が解消され、かつネットワークバッファの通常の排出が継続した後でも、図10Aは、どのようにすれば、以後の全てのパケットのラウンドトリップ時間を増加させ、かつネットワークバッファを満杯にすることをより容易にする動きのないキューがネットワークバッファの内部に形成されたであろうかを例示している。 For example, assume a network with a BDP of 16 packets and a congestion control mechanism that has determined a CWND of 24 packets to account for acknowledgment aggregation. FIG. 10A illustrates how congestion from other network nodes can cause a transmitter to dominate the network at 1000A. In this case, the transmitter does not reduce the transmitter's congestion window and takes the entire amount in-flight. This causes the network buffer to fill up and drop extra packets that cannot be buffered. Even after congestion has cleared and normal draining of network buffers continues, Figure 10A shows how to increase the round-trip time of all subsequent packets and keep the network buffers full. It illustrates how a static queue could be formed inside the network buffer to make it easier.

この例を続けると、図10Bは、1000Bにおいて、送信機の輻輳ウィンドウをBDPに低減する送信機が、どのようにしてパケットドロップと動きのないキューの形成との両方を回避するかを例示している。送信機は、例えば、送信機が過去の伝送で測定したフィードバックについてのベースライン持続時間を超える期間フィードバックが受信されていないことを検出することによって、輻輳が発生していると判定することができる。別の例では、送信機は、過去の伝送で遭遇したベースライン損失を超える以前に送信されたパケットの量が受信機に配信されていないことを示すフィードバックを受信することによって、輻輳が発生していると判定することができる。この輻輳の判定に応答して、BDPにマッチする輻輳ウィンドウの低減は、インフライトとされることとなるパケットの量を低減する。結果的に、このことは、以前はパケットドロップにつながっていたネットワークバッファを満杯にする可能性を低減する。更に、BDPパケットのみをインフライトにすることは、送信機からの新しいパケットが再びネットワークのバッファに到達する前に、ネットワークは、ネットワークのバッファを完全に排出することを可能にする(ネットワーク属性が変更されていないと仮定する)。 Continuing with this example, FIG. 10B illustrates how a transmitter reducing the transmitter's congestion window to BDP at 1000B avoids both packet drops and the formation of a static queue. ing. The transmitter may determine that congestion is occurring, for example, by detecting that no feedback has been received for a period that exceeds a baseline duration for feedback that the transmitter has measured in past transmissions. . In another example, a transmitter detects congestion by receiving feedback indicating that the amount of previously transmitted packets that exceed the baseline loss encountered in past transmissions is not being delivered to the receiver. It can be determined that In response to this congestion determination, reducing the congestion window matching the BDP reduces the amount of packets that will be taken in-flight. Consequently, this reduces the possibility of filling up network buffers, which previously led to packet drops. Additionally, bringing only BDP packets in-flight allows the network to completely drain the network buffer before a new packet from the transmitter reaches the network buffer again (if the network attribute is (assuming no changes).

別の実施形態では、輻輳ウィンドウは、現在インフライトのパケットのボリュームに等しくなるように低減される。 In another embodiment, the congestion window is reduced to be equal to the volume of packets currently in flight.

輻輳制御メカニズムが許容レベルの性能が復元されたと判定すると、ネットワークは輻輳に遭遇しなくなったとみなされる。 Once the congestion control mechanism determines that an acceptable level of performance has been restored, the network is considered to no longer experience congestion.

一実施形態では、閾値を下回るパケット遅延の低減は、ネットワーク性能が復元されたという指標である。 In one embodiment, a reduction in packet delay below a threshold is an indication that network performance has been restored.

一実施形態では、その閾値は、ベースライン遅延値の関数として決定される。 In one embodiment, the threshold is determined as a function of the baseline delay value.

別の実施形態では、何らの損失を招くことなく特定のボリュームのデータを伝送することは、ネットワーク性能が復元されたという指標である。 In another embodiment, transmitting a particular volume of data without incurring any loss is an indication that network performance has been restored.

一実施形態では、そのデータのボリュームは、BDPに等しい。 In one embodiment, the volume of data is equal to the BDP.

別の実施形態では、そのデータのボリュームは、輻輳に応答して輻輳制御メカニズムによって低減される前の輻輳ウィンドウの元の値に等しい。 In another embodiment, the volume of data is equal to the original value of the congestion window before it was reduced by a congestion control mechanism in response to congestion.

プッシュ型アーキテクチャは、最も一般的なアプリケーションタイプの非BoDコネクションでのシステム性能を改善する。表3は、実験的に観測された改善をまとめたものである。
表3:プッシュ型スケジューラに起因するアプリケーション性能改善

Figure 2024508220000005
Push architecture improves system performance with non-BoD connections for the most common application types. Table 3 summarizes the improvements observed experimentally.
Table 3: Application performance improvement due to push scheduler
Figure 2024508220000005

プッシュ型スケジューリング方法はまた、優先順位ルーティング挙動をより直感的にする。例えば、一実施形態では、より低い優先順位のコネクションを係わらせるかどうかの決定は、これらのコネクションのBtlBwが構成された閾値とどのように比較されるかにのみ依存する。 The push scheduling method also makes the priority routing behavior more intuitive. For example, in one embodiment, the decision whether to engage lower priority connections depends solely on how the BtlBw of those connections compares to a configured threshold.

例えば,以下のシナリオを考える:
wan0
●優先順位:一次
●ターゲット閾値:該当なし
●BtlBw:10Mbps
wan1
●優先順位:二次
●ターゲット閾値:15Mbps
●BtlBw:30Mbps
For example, consider the following scenario:
wan0
●Priority: Primary ●Target threshold: Not applicable ●BtlBw: 10Mbps
wan1
●Priority: Secondary ●Target threshold: 15Mbps
●BtlBw: 30Mbps

プル型スケジューラを用いると、wan1の50Hzタイマがウェイクアップしてパケットを要求するたびに、スケジューラは、所望のターゲット閾値(15Mbps)はwan0が単独で提供することができる閾値(10Mbps)よりも大きいことがスケジューラに分かることから、wan1に伝送用のパケットを提供する。 With a pull scheduler, each time WAN1's 50Hz timer wakes up and requests a packet, the scheduler will determine that the desired target threshold (15Mbps) is greater than the threshold that WAN0 alone can provide (10Mbps). Since the scheduler knows this, it provides packets for transmission to WAN1.

しかしながら、スケジューラは、パケットが入力に到達するレートにかかわらず、このことを行う。例えば、入力レートが10Mbpsを超えない場合、トラフィックがwan0単独で完全に収まることができることから、wan1が関わらなかった場合に、より最適となろう。 However, the scheduler does this regardless of the rate at which packets arrive at the input. For example, if the input rate does not exceed 10 Mbps, it would be more optimal if WAN1 was not involved, since the traffic can be completely contained by WAN0 alone.

プッシュ型スケジューラを用いると、wan0は、リストの最上位にソートされることとなり、閾値が、wan1がアクティブであるべきことを示していても、wan0 CWNDが完全に消費された後にのみパケットがwan0上にスケジューリングされる。結果として、より低い優先順位のコネクションの期待されない使用が少なくなり、性能が改善する。 With a push scheduler, WAN0 would be sorted to the top of the list, and packets would be sent to WAN0 only after the WAN0 CWND is completely consumed, even though the threshold indicates that WAN1 should be active. scheduled on. As a result, there is less unintended use of lower priority connections, improving performance.

まとめると、マルチパスシステムのスケジューラは、プル型(100A)又はプッシュ型(100B)のいずれかとして実装され得る。スケジューラは、ターゲットコネクションが伝送する準備ができているレートによって駆動されるのではなく、自己決定の律動でパケットスケジューリング決定を行うことができるため、プッシュ型が優れている。この自己決定の律動は、パケットを生成したアプリケーション、及び/又はシステムのユーザにとって重要である全ての要因を考慮することを可能にする。 In summary, a multipath system scheduler can be implemented as either a pull type (100A) or a push type (100B). Push is better because the scheduler can make packet scheduling decisions in a self-determined rhythm, rather than being driven by the rate at which the target connection is ready to transmit. This self-determining rhythm allows consideration of all factors that are important to the application that generated the packet and/or the user of the system.

例えば、最大のスループットを必要とするTCPベースのアプリケーションによって生成されたパケットは、そのパケットが最良のMathis係数から最悪のMathis係数まで順序付けられたコネクション上にスケジューリングされることを優先するであろう。 For example, packets generated by a TCP-based application that requires maximum throughput will prefer that the packet be scheduled on connections that are ordered from best Mathis coefficient to worst Mathis coefficient.

また、同じTCPベースのアプリケーションを用いるより複雑な例を考え、ただし、ユーザは、優先順位ルーティングルールでマルチパスシステム100Bを構成しており、110Bで達成可能なグッドプットが5Mbpsを下回って降下しない限り、他の全てのコネクション110Nよりもコネクション110Bを優先する。110Bが高スループット、低レイテンシ、ただし高パケット損失を有する仮定のシナリオでは、110Bは、他の全てのコネクション110Nよりも悪いMathis係数を有するであろう。 Consider also a more complex example using the same TCP-based application, but where the user has configured multipath system 100B with priority routing rules and the achievable goodput at 110B does not drop below 5 Mbps. connection 110B is given priority over all other connections 110N. In a hypothetical scenario where 110B has high throughput, low latency, but high packet loss, 110B would have a worse Mathis factor than all other connections 110N.

プッシュ型スケジューラ100Bは、最初にコネクション110Bを使用するためのユーザプリファレンスを尊重する複雑なスケジューリング決定を行い、また、コネクション110BのインフライトCWNDをビットレートに変換し、かつそれを使用してコネクション110Bの利用可能なグッドプットを推定することによって、110Bで達成可能なグッドプットを計算することができるであろう。この可用性が、構成された5Mbps閾値を下回って降下する場合、110Bは、最良のMathis係数から最悪のMathis係数まで順序付けられた残りのコネクション110N上にパケットをスケジュールすることができる。 Push scheduler 100B makes complex scheduling decisions that initially respect user preferences for using connection 110B, and also converts the in-flight CWND of connection 110B to a bit rate and uses it to By estimating the available goodput of 110B, one could calculate the achievable goodput of 110B. If this availability drops below the configured 5 Mbps threshold, 110B can schedule packets on the remaining connections 110N, ordered from best Mathis coefficient to worst Mathis coefficient.

図11は、一実施形態による、システム100Bを実装するために使用され得るコンピューティングデバイス1100の概略図である。 FIG. 11 is a schematic diagram of a computing device 1100 that may be used to implement system 100B, according to one embodiment.

描写されるように、コンピューティングデバイス1100は、少なくとも1つのプロセッサ1102、メモリ1104、少なくとも1つのI/Oインターフェース1106、及び少なくとも1つのネットワークインターフェース1108を含む。 As depicted, computing device 1100 includes at least one processor 1102, memory 1104, at least one I/O interface 1106, and at least one network interface 1108.

各プロセッサ1102は、例えば、マイクロプロセッサ又はマイクロコントローラ(例えば、専用のマイクロプロセッサ又はマイクロコントローラ)、デジタル信号処理(DSP)プロセッサ、集積回路、フィールドプログラマブルゲートアレイ(FPGA)、リコンフィギュラブルプロセッサ、プログラマブル読み取り専用メモリ(PROM)、又はそれらの様々な組み合わせであり得る。 Each processor 1102 may include, for example, a microprocessor or microcontroller (e.g., a dedicated microprocessor or microcontroller), a digital signal processing (DSP) processor, an integrated circuit, a field programmable gate array (FPGA), a reconfigurable processor, a programmable readout It may be a special purpose memory (PROM) or various combinations thereof.

メモリ1104は、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、コンパクトディスク読み取り専用メモリ(CDROM)、電気光学メモリ、磁気光学メモリ、消去可能プログラマブル読み取り専用メモリ(EPROM)、及び電気消去可能プログラマブル読み取り専用メモリ(EEPROM)、強誘電性RAM(FRAM)などの内部又は外部のいずれかに位置する様々なタイプのコンピュータメモリの組み合わせを含み得る。 Memory 1104 may include, for example, random access memory (RAM), read only memory (ROM), compact disk read only memory (CDROM), electro-optical memory, magneto-optical memory, erasable programmable read-only memory (EPROM), and electrically erasable programmable read-only memory (EPROM). It may include a combination of various types of computer memory, located either internally or externally, such as Enabled Programmable Read Only Memory (EEPROM), Ferroelectric RAM (FRAM), etc.

各I/Oインターフェース1106は、コンピューティングデバイス1100が、キーボード、マウス、カメラ、タッチスクリーン、及びマイクロフォンなどの1つ以上の入力デバイス、又はディスプレイ画面及びスピーカなどの1つ以上の出力デバイスと相互接続することを可能にする。 Each I/O interface 1106 interconnects the computing device 1100 with one or more input devices, such as a keyboard, mouse, camera, touch screen, and microphone, or with one or more output devices, such as a display screen and speakers. make it possible to

各ネットワークインターフェース1108は、コンピューティングデバイス1100が、インターネット、イーサネット、プレーンオールドテレフォンサービス(POTS)回線、公衆交換電話ネットワーク(PSTN)、統合サービスデジタルネットワーク(ISDN)、デジタル加入者回線(DSL)、同軸ケーブル、光ファイバ、衛星、モバイル、無線(例えば、Wi-Fi、WiMAX)、SS7信号通信ネットワーク、固定回線、ローカルエリアネットワーク、ワイドエリアネットワーク、及びこれらの様々な組み合わせを含む他のものを含むデータを搬送し得るネットワーク(又は複数のネットワーク)にコネクションすることによって、他の構成要素と通信し、他の構成要素とデータを交換し、ネットワークリソースにアクセス及びコネクションし、アプリケーションを提供し、他のコンピューティングアプリケーションを実行することを可能にする。 Each network interface 1108 can be used to connect the computing device 1100 to the Internet, Ethernet, Plain Old Telephone Service (POTS) lines, public switched telephone network (PSTN), integrated services digital network (ISDN), digital subscriber line (DSL), coaxial Data including cable, fiber optic, satellite, mobile, wireless (e.g., Wi-Fi, WiMAX), SS7 signaling networks, fixed line, local area networks, wide area networks, and others, including various combinations thereof. Communicate with other components, exchange data with other components, access and connect to network resources, provide applications, and connect other components by connecting to a network (or networks) that may carry Enables you to run computing applications.

単純化のみのために、1つのコンピューティングデバイス1100が示されているが、システム100Bは、複数のコンピューティングデバイス1100を含んでもよい。コンピューティングデバイス1100は、同じ又は異なるタイプのデバイスであり得る。コンピューティングデバイス1100は、直接結合される、ネットワークを介して間接的に結合される、広地理的領域にわたって分散される、ネットワーク(「クラウドコンピューティング」と称され得る)を介して接続されることを含む様々な方法で接続され得る。 Although one computing device 1100 is shown for simplicity only, system 100B may include multiple computing devices 1100. Computing devices 1100 may be the same or different types of devices. Computing devices 1100 may be directly coupled, indirectly coupled via a network, distributed over a wide geographic area, or connected via a network (which may be referred to as "cloud computing"). may be connected in a variety of ways, including.

例えば、限定されないが、コンピューティングデバイス1100は、サーバ、ネットワークアプライアンス、セットトップボックス、組み込みデバイス、コンピュータ拡張モジュール、パーソナルコンピュータ、ラップトップ、パーソナルデータアシスタント、携帯電話、スマートフォンデバイス、UMPCタブレット、ビデオディスプレイ端末、ゲームコンソール、又は本明細書に記載される方法を実行するように構成することが可能な様々な他のコンピューティングデバイスであり得る。 For example, and without limitation, computing device 1100 may include a server, network appliance, set-top box, embedded device, computer expansion module, personal computer, laptop, personal data assistant, mobile phone, smartphone device, UMPC tablet, video display terminal. , a game console, or various other computing devices that can be configured to perform the methods described herein.

出願人は、記載された実施形態及び実施例が例示的であり、非限定的であることを強調しておく。特徴の実用的な実装態様は、態様のいくつか又は全ての組み合わせを組み込んでもよく、本明細書に記載される特徴は、将来的又は既存の製品計画の指標と捉えられるべきではない。 Applicants emphasize that the described embodiments and examples are illustrative and non-limiting. Practical implementations of the features may incorporate combinations of some or all of the features, and the features described herein should not be taken as an indicator of future or existing product plans.

「接続された」又は「結合された」という用語は、直接結合(互いに結合された2つの要素が互いに接触する)及び間接結合(少なくとも1つの追加の要素が2つの要素の間に位置する)の両方を含み得る。 The terms "connected" or "coupled" refer to both direct couplings (two elements joined to each other are in contact with each other) and indirect couplings (at least one additional element is located between the two elements). may include both.

実施形態は詳細に説明されているが、本明細書では、範囲から逸脱することなく、種々の変更、置換、及び改変を行うことができることを理解されたい。更に、本出願の範囲は、本明細書に記載されるプロセス、機械、製造、物質の組成、手段、方法及びステップの特定の実施形態に限定されることを意図しない。 Although embodiments have been described in detail, it should be understood that various changes, substitutions, and modifications can be made herein without departing from the scope. Furthermore, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification.

前述の説明を通して、パケットコントローラ、サーバ、インスタンス、インターフェース、ポータル、プラットフォーム、又はコンピューティングデバイスから形成された他のシステムに関して、多数の参照がなされ得る。そのような用語の使用は、コンピュータ可読有形非一時的媒体に記憶されたソフトウェア命令を実行するように構成された少なくとも1つのプロセッサを有する1つ以上のコンピューティングデバイスを表すとみなされることを理解されたい。例えば、パケットコントローラは、ソフトウェア製品の形態で、記載された実施形態の技術的ソリューションを実装し得る。ソフトウェア製品は、CD-ROM、USBフラッシュディスク、又はハードディスク(リムーバブル又はその他)であり得る不揮発性又は非一時的記憶媒体に記憶され得る。ソフトウェア製品は、コンピュータデバイス(例えば、パケットコントローラ、又はネットワークデバイス)が実施形態によって提供される方法を実行することを可能にするいくつかの命令を含む。 Throughout the foregoing description, numerous references may be made to packet controllers, servers, instances, interfaces, portals, platforms, or other systems formed from computing devices. It is understood that use of such term is deemed to refer to one or more computing devices having at least one processor configured to execute software instructions stored on computer-readable tangible non-transitory media. I want to be For example, a packet controller may implement the technical solution of the described embodiments in the form of a software product. The software product may be stored on a non-volatile or non-transitory storage medium, which may be a CD-ROM, a USB flash disk, or a hard disk (removable or otherwise). The software product includes a number of instructions that enable a computing device (eg, a packet controller or a network device) to perform the methods provided by the embodiments.

理解され得るように、上記に記載され、例示される実施例は、例示的なものにすぎないことが意図される。 As can be understood, the embodiments described and illustrated above are intended to be exemplary only.

Claims (42)

各々が複数の出力キューからの対応する出力キューを有する複数のネットワークコネクションに結合されたパケット通信コントローラであって、前記パケット通信コントローラが、プロセッサであって、
データオブジェクトにおいて、前記複数のネットワークの各ネットワークに関連付けられたネットワーク特性を、前記複数のネットワークの各ネットワークが前記ネットワーク特性に基づく順序シーケンスで順序付けされ得るように、監視及び維持し、
トリガイベントが発生したと判定すると、
前記ネットワーク特性に基づいて、ネットワークコネクションの選択されたセットのネットワークコネクションについて前記順序シーケンスを確立し、
入力キューの未割り当てデータパケットのうちの1つ以上のデータパケットを、可用性及び前記順序シーケンスに基づいて、前記1つ以上のデータパケットを連続した利用可能なネットワークコネクションに割り当てることによって、前記複数のネットワークの1つ以上の対応する出力キューに割り当て、
前記割り当てられた1つ以上のデータパケットを反映するように、前記対応する複数のネットワークの前記監視される特性を更新し、かつ
前記割り当てられたデータパケットを前記複数の出力キューから宛先デバイスに伝達するように構成されている、プロセッサを含む、パケット通信コントローラ。
a packet communications controller coupled to a plurality of network connections, each having a corresponding output queue from a plurality of output queues, the packet communications controller being a processor;
monitoring and maintaining, in a data object, network characteristics associated with each network of the plurality of networks such that each network of the plurality of networks can be ordered in an ordered sequence based on the network characteristics;
When it is determined that a trigger event has occurred,
establishing the ordered sequence for network connections of the selected set of network connections based on the network characteristics;
one or more of the unallocated data packets of the input queue by assigning the one or more data packets to consecutive available network connections based on availability and the ordering sequence; assigned to one or more corresponding output queues of the network;
updating the monitored characteristics of the corresponding plurality of networks to reflect the assigned one or more data packets, and communicating the assigned data packets from the plurality of output queues to a destination device. A packet communications controller, including a processor configured to.
前記パケット通信コントローラが、プッシュスケジューラであり、前記プロセッサは、前記複数のネットワークの監視される特性が好適であるかどうかを判定するために、
前記複数のネットワークコネクションの各々の伝送容量を測定するように更に構成されており、
前記コントローラは、前記複数のネットワークコネクションのうちの1つ以上の前記伝送容量が使い尽くされない間に、前記1つ以上のデータパケットを割り当てるように構成されている、請求項1に記載のパケット通信コントローラ。
the packet communication controller is a push scheduler, and the processor is configured to: determine whether monitored characteristics of the plurality of networks are favorable;
further configured to measure transmission capacity of each of the plurality of network connections;
The packet communication of claim 1, wherein the controller is configured to allocate the one or more data packets while the transmission capacity of one or more of the plurality of network connections is not exhausted. controller.
前記プロセッサは、前記入力キューに新しいデータパケットを検知したとき、又は1つ以上の以前のデータパケットが前記宛先デバイスで受信されたという確認応答を受信したときに、前記1つ以上のデータパケットを割り当てるように更に構成されている、請求項1に記載のパケット通信コントローラ。 The processor transmits the one or more data packets upon detecting a new data packet in the input queue or upon receiving an acknowledgment that one or more previous data packets were received at the destination device. The packet communications controller of claim 1, further configured to allocate. 前記プロセッサが、
前記複数のネットワークコネクションの各々について、前記監視される特性を、
ボトルネックリンクの伝送レート、ラウンドトリップ時間、及びラウンドトリップ伝播時間のうちの少なくとも1つを推定することと、
推定されたラウンドトリップ伝播時間、前記推定されたラウンドトリップ時間、及び前記推定された伝送レートのうちの前記少なくとも1つを、ラウンドトリップ伝播時間、ラウンドトリップ時間の基準範囲、及び伝送の基準範囲のうちの少なくとも1つのそれぞれの基準範囲と比較して、考慮中の、推定されたラウンドトリップ伝播時間、前記推定されたラウンドトリップ時間、及び前記推定された伝送レートのうちの前記少なくとも1つの各々についてのスコア値を確立することと、
前記複数のネットワークの各々についての前記スコア値に基づいて、前記順序シーケンスで前記複数のネットワークを順序付けることとによって、測定するように更に構成されている、請求項1に記載のパケット通信コントローラ。
The processor,
For each of the plurality of network connections, the monitored characteristic:
estimating at least one of a transmission rate, a round trip time, and a round trip propagation time of the bottleneck link;
The at least one of the estimated round-trip propagation time, the estimated round-trip time, and the estimated transmission rate is defined as a round-trip propagation time, a reference range of round-trip times, and a reference range of transmission. for each of the at least one of the estimated round-trip propagation time, the estimated round-trip time, and the estimated transmission rate under consideration, as compared to a respective reference range of at least one of the establishing a score value for;
The packet communications controller of claim 1, further configured to measure by ordering the plurality of networks in the ordered sequence based on the score value for each of the plurality of networks.
ボトルネックリンクの伝送レート、ラウンドトリップ時間、及びラウンドトリップ伝播時間のうちの前記少なくとも1つの前記推定が、前記ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、及び前記ラウンドトリップ伝播時間のうちの少なくとも2つについての複数のスコア値の推定を含み、前記順序シーケンスが、予め定義された最も重要な特性に対応する前記スコア値の比較に基づいており、前記予め定義された最も重要な特性に対応する前記スコア値同士が等しい場合、比較のために、予め定義された次に最も重要な特性に進む、請求項4に記載のパケット通信コントローラ。 The estimate of the at least one of the transmission rate, round-trip time, and round-trip propagation time of the bottleneck link is one of the transmission rate, the round-trip time, and the round-trip propagation time of the bottleneck link. estimating a plurality of score values for at least two, said ordered sequence is based on a comparison of said score values corresponding to a predefined most important characteristic, and said ordered sequence is based on a comparison of said score values corresponding to said predefined most important characteristic; 5. The packet communication controller of claim 4, wherein if the corresponding score values are equal, proceed to the next predefined most important characteristic for comparison. 前記プロセッサが、前記未割り当てデータパケットのフロー分類を行うように構成されており、前記フロー分類に基づいて、前記予め定義された最も重要な特性及び前記予め定義された次に最も重要な特性が識別される、請求項5に記載のパケット通信コントローラ。 The processor is configured to perform a flow classification of the unallocated data packets, and based on the flow classification, the predefined most important characteristic and the predefined next most important characteristic are determined. 6. The packet communication controller of claim 5, wherein the packet communication controller is identified. 前記プロセッサが、
前記複数のネットワークコネクションの各々について、システムオーバーヘッド処理時間を含む修正された監視される特性を測定し、かつ元の特性又は前記修正された特性のいずれかを利用して、
ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、前記ラウンドトリップ伝播時間、帯域幅遅延積(BDP)、及び輻輳ウィンドウ、の推定値のうちの少なくとも1つを決定し、
前記複数のネットワークの前記順序が、ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、前記ラウンドトリップ伝播時間、前記BDP、又は前記輻輳ウィンドウ、の前記推定値のうちの前記少なくとも1つに更に基づく、請求項4に記載のパケット通信コントローラ。
The processor,
measuring modified monitored characteristics, including system overhead processing time, for each of the plurality of network connections, and utilizing either the original characteristics or the modified characteristics;
determining at least one of an estimate of the transmission rate, the round trip time, the round trip propagation time, a bandwidth delay product (BDP), and a congestion window of a bottleneck link;
The ordering of the plurality of networks is further based on the at least one of the estimates of the transmission rate of a bottleneck link, the round trip time, the round trip propagation time, the BDP, or the congestion window. The packet communication controller according to claim 4.
前記プロセッサが、
前記複数のネットワークコネクションの各々について、前記ラウンドトリップ時間におけるパケット損失又は前記ラウンドトリップ時間の変化のうちの少なくとも1つを含む他の測定される特性に基づいて、1つ以上の対応するスライディングウィンドウ履歴の持続時間を動的に調整することによって、前記測定される特性を修正するように更に構成されている、請求項7に記載のパケット通信コントローラ。
The processor,
one or more corresponding sliding window histories for each of the plurality of network connections based on other measured characteristics including at least one of packet loss in the round trip time or change in the round trip time; 8. The packet communications controller of claim 7, further configured to modify the measured characteristic by dynamically adjusting the duration of the packet communication controller.
前記プロセッサが、
前記ネットワークコネクションのラウンドトリップ時間及びパケット損失を考慮して、前記複数のネットワークコネクションのうちの前記ネットワークコネクションで達成可能なスループットの相対的な上限を示すMathis係数データ値を推定し、
前記推定されたMathis係数データ値をMathis係数データ値の基準範囲と比較するように更に構成されており、
前記複数のネットワークの前記順序付けられたシーケンスは、前記推定されたMathis係数データ値と前記基準範囲との前記比較に更に基づく、請求項4に記載のパケット通信コントローラ。
The processor,
estimating a Mathis coefficient data value indicating a relative upper limit of achievable throughput for the network connection of the plurality of network connections, taking into account the round-trip time and packet loss of the network connection;
further configured to compare the estimated Mathis coefficient data value to a reference range of Mathis coefficient data values;
5. The packet communications controller of claim 4, wherein the ordered sequence of the plurality of networks is further based on the comparison of the estimated Mathis coefficient data values and the reference range.
前記プロセッサが、前記未割り当てデータパケットのフロー分類を行うように構成されており、前記フロー分類に基づいて、前記予め定義された最も重要な特性及び前記予め定義された次に最も重要な特性が識別される、請求項7~9のいずれか一項に記載のパケット通信コントローラ。 The processor is configured to perform a flow classification of the unallocated data packets, and based on the flow classification, the predefined most important characteristic and the predefined next most important characteristic are determined. A packet communication controller according to any one of claims 7 to 9, wherein the packet communication controller is identified. 前記複数のネットワークを順序付けるために、前記プロセッサが、
前記ボトルネックリンクの前記伝送レートの基準範囲を前記ラウンドトリップ伝播時間の基準範囲で除算することによって、少なくとも部分的に定義される、効率的な伝送を示す容量係数を推定し、
前記推定された容量係数を容量係数の基準範囲と比較し、かつ
前記容量係数の前記比較に基づいて、前記複数のネットワークを順序付けるように更に構成されている、請求項4に記載のパケット通信コントローラ。
In order to order the plurality of networks, the processor:
estimating a capacity factor indicative of efficient transmission defined at least in part by dividing the reference range of transmission rates of the bottleneck link by the reference range of round-trip propagation times;
5. The packet communication of claim 4, further configured to compare the estimated capacity factor to a reference range of capacity factors, and order the plurality of networks based on the comparison of the capacity factors. controller.
前記伝送容量を定義するために、前記プロセッサが、
前記複数のネットワークのうちの1つ以上が、要求割り当て多元接続(DAMA)方法を使用して伝送容量を割り振るかどうかを判定し、
前記1つ以上のDAMAネットワークの前記伝送容量を、前記DAMAネットワークから受信された割り振られた伝送容量よりも大きくなるように定義するように構成されており、
前記プロセッサが、
1つ以上のDAMAネットワークの前記受信された割り振られた伝送容量が現在使い尽くされているが、要求のデモンストレーションを通じて割り振られ得るより多くの潜在的な容量を有するという判定に応答して、1つ以上のプローブデータパケットを、前記1つ以上のDAMAネットワークが潜在的な伝送容量を有することに対応する前記1つ以上の出力キューに割り当てるように更に構成されている、請求項2に記載のパケット通信コントローラ。
In order to define the transmission capacity, the processor:
determining whether one or more of the plurality of networks allocates transmission capacity using a demand allocation multiple access (DAMA) method;
configured to define the transmission capacity of the one or more DAMA networks to be greater than an allocated transmission capacity received from the DAMA network;
The processor,
In response to determining that the received allocated transmission capacity of one or more DAMA networks is currently exhausted but has more potential capacity that can be allocated through demonstration of a request, one The packet of claim 2, further configured to allocate the probe data packets or more to the one or more output queues corresponding to the one or more DAMA networks having potential transmission capacity. communication controller.
前記プロセッサが、
前記複数のネットワークの各々が利用可能な好適な監視される特性を有するための公称時間を維持し、
前記1つ以上のデータパケットを前記1つ以上の出力キューに割り当てる間、前記維持された公称時間を前記1つ以上のデータパケットの各々に付加し、かつ
前記それぞれのデータパケットに関連付けられた前記公称時間に基づいて、前記それぞれの出力キューからプッシュするためのデータパケットをスケジューリングするように構成されている、請求項1に記載のパケット通信コントローラ。
The processor,
maintaining a nominal time for each of the plurality of networks to have available preferred monitored characteristics;
while assigning the one or more data packets to the one or more output queues, appending the maintained nominal time to each of the one or more data packets; and The packet communications controller of claim 1, configured to schedule data packets for pushing from the respective output queues based on a nominal time.
前記プロセッサが、
再送のためのパケットとして識別された前記1つ以上のデータパケットに、優先順位付けされた公称時間を付加するように構成されている、請求項12に記載のパケット通信コントローラ。
The processor,
13. The packet communications controller of claim 12, configured to add a prioritized nominal time to the one or more data packets identified as packets for retransmission.
前記1つ以上のデータパケットの各々が、1つ以上のデータフローに関連付けられ、前記プロセッサが、
前記1つ以上のデータパケットを、
前記1つ以上のデータパケットに関連付けられたヘッダに基づいて、前記データパケットの各々に関連付けられたデータパケット分類を推定することと、
前記推定されるデータパケット分類に関連付けられた1つ以上の伝送要件を判定することと、
前記1つ以上のデータパケットを、前記1つ以上のデータパケットの前記対応する1つ以上の伝送要件を満たす前記複数のネットワークに割り当てることとによって割り当てるように構成されている、請求項1に記載のパケット通信コントローラ。
each of the one or more data packets is associated with one or more data flows, and the processor:
the one or more data packets;
estimating a data packet classification associated with each of the data packets based on a header associated with the one or more data packets;
determining one or more transmission requirements associated with the estimated data packet classification;
2. The network according to claim 1, configured to allocate the one or more data packets by allocating the one or more data packets to the plurality of networks that satisfy the corresponding one or more transmission requirements of the one or more data packets. packet communication controller.
前記プロセッサが、
サービスされるいくつかのデータフローのうちの1つを最大化すること、伝送出力を最大化すること、又は前記複数のネットワークの1つ以上のDAMAネットワークについての現在の帯域幅割り振りの変化を最小化することのうちの1つを含む目標関数に基づいて、前記複数のネットワークにデータパケットを割り当てるように構成されている、請求項12に記載のパケット通信コントローラ。
The processor,
maximizing one of several data flows serviced, maximizing transmission power, or minimizing changes in current bandwidth allocation for one or more DAMA networks of said plurality of networks; 13. The packet communications controller of claim 12, configured to allocate data packets to the plurality of networks based on an objective function including one of:
前記プロセッサが、
前記1つ以上のデータパケットが、1つ以上の以前に割り当てられたデータパケットを含む1つ以上のデータフローに関連付けられているかどうかを判定し、かつ
前記1つ以上のデータパケットが、1つ以上の以前に割り当てられたデータパケットを含む1つ以上のデータフローに関連付けられていると判定することに応答して、前記1つ以上のデータパケットを、前記以前に割り当てられたデータパケットに関連付けられた前記複数のネットワークに割り当てるように構成されている、請求項12に記載のパケット通信コントローラ。
The processor,
determining whether the one or more data packets are associated with one or more data flows that include one or more previously allocated data packets, and the one or more data packets are associated with one or more previously allocated data packets; associating the one or more data packets with the previously allocated data packet in response to determining that the one or more data packets are associated with one or more data flows including the previously allocated data packet; 13. The packet communication controller of claim 12, wherein the packet communication controller is configured to allocate to the plurality of networks.
前記伝送容量が、BDP、CWND、又はインフライトデータパケットによって少なくとも部分的に定義される、請求項2に記載のパケット通信コントローラ。 3. The packet communications controller of claim 2, wherein the transmission capacity is at least partially defined by BDP, CWND, or in-flight data packets. 前記プロセッサが、
グッドプット及びスループットのうちの少なくとも1つによって測定されるレート測定値に対する、BDP、CWND、及びインフライトデータのうちの少なくとも1つを含むボリューム測定値との間の変換を含む、各ネットワークについてのベースラインの監視される特性を維持することと、
前記更新された監視される特性が前記ベースライン動作特性から閾値量だけ変動するかどうかを判定することと、
前記更新された監視される特性が監視される前記ベースライン動作から前記閾値量だけ変動することに応答して、前記それぞれのネットワークについて、
前記1つ以上のデータパケットを、他の利用可能なネットワークの1つ以上の出力キューに割り当てることと、を更に行うように構成されている、請求項15に記載のパケット通信コントローラ。
The processor,
for each network, including a conversion between a rate measurement measured by at least one of goodput and throughput, and a volume measurement including at least one of BDP, CWND, and in-flight data. maintaining baseline monitored characteristics;
determining whether the updated monitored characteristic varies by a threshold amount from the baseline operating characteristic;
for each network in response to the updated monitored characteristic varying by the threshold amount from the baseline operation being monitored;
16. The packet communications controller of claim 15, further configured to: assign the one or more data packets to one or more output queues of other available networks.
前記プロセッサが、
各ネットワークについてのベースラインの監視される特性を維持し、
前記更新された監視される特性が前記ベースライン動作特性から閾値量だけ変動するかどうかを判定し、かつ
前記更新された監視される特性が監視される前記ベースライン動作から前記閾値量だけ変動することに応答して、前記それぞれのネットワークについて、
前記ネットワークのそれぞれの伝送容量を損失回復能力として定義し、
前記損失回復能力に基づいて、前記1つ以上のデータパケットを前記ネットワークの前記対応する出力キューに割り当てるように構成されている、請求項1に記載のパケット通信コントローラ。
The processor,
maintain baseline monitored characteristics for each network;
determining whether the updated monitored characteristic varies by a threshold amount from the baseline operating characteristic, and the updated monitored characteristic varies by the threshold amount from the baseline operating characteristic. In response, for each of said networks:
Define the transmission capacity of each of the networks as loss recovery capacity,
The packet communications controller of claim 1, configured to assign the one or more data packets to the corresponding output queue of the network based on the loss recovery capability.
各々が複数の出力キューからの対応する出力キューを有する複数のネットワークコネクションに結合されたパケット通信コントローラを使用するパケット通信のための方法であって、
データオブジェクトにおいて、前記複数のネットワークの各ネットワークに関連付けられたネットワーク特性を、前記複数のネットワークの各ネットワークが前記ネットワーク特性に基づく順序シーケンスで順序付けされ得るように、監視及び維持することと、
トリガイベントが発生したと判定すると、
前記ネットワーク特性に基づいて、ネットワークコネクションの選択されたセットのネットワークコネクションについて前記順序シーケンスを確立することと、
入力キューの未割り当てデータパケットのうちの1つ以上のデータパケットを、可用性及び前記順序シーケンスに基づいて、前記1つ以上のデータパケットを連続した利用可能なネットワークコネクションに割り当てることによって、前記複数のネットワークの1つ以上の対応する出力キューに割り当てることと、
前記割り当てられた1つ以上のデータパケットを反映するように、前記対応する複数のネットワークの前記監視される特性を更新することと、
前記割り当てられたデータパケットを前記複数の出力キューから宛先デバイスに伝達することと、を含む、方法。
A method for packet communication using a packet communication controller coupled to a plurality of network connections, each having a corresponding output queue from a plurality of output queues, the method comprising:
monitoring and maintaining, in a data object, network characteristics associated with each network of the plurality of networks such that each network of the plurality of networks can be ordered in an ordered sequence based on the network characteristics;
When it is determined that a trigger event has occurred,
establishing the ordered sequence for network connections of the selected set of network connections based on the network characteristics;
one or more of the unallocated data packets of the input queue by assigning the one or more data packets to consecutive available network connections based on availability and the ordering sequence; assigning to one or more corresponding output queues of the network;
updating the monitored characteristic of the corresponding plurality of networks to reflect the assigned one or more data packets;
communicating the assigned data packets from the plurality of output queues to a destination device.
前記パケット通信コントローラが、プッシュスケジューラであり、前記方法が、
前記複数のネットワークコネクションの各々の伝送容量を測定することを含み、
前記1つ以上のデータパケットの前記割り当てが、前記複数のネットワークコネクションのうちの対応するコネクションの前記伝送容量が使い尽くされていない場合にのみ、前記1つ以上のデータパケットを前記複数のネットワークコネクションのうちの前記対応するコネクションに割り当てることを含む、請求項21に記載の方法。
The packet communication controller is a push scheduler, and the method includes:
measuring the transmission capacity of each of the plurality of network connections;
The allocation of the one or more data packets may include assigning the one or more data packets to the plurality of network connections only if the transmission capacity of the corresponding one of the plurality of network connections is not exhausted. 22. The method of claim 21, comprising assigning to the corresponding connection of:
前記入力キューに新しいデータパケットを検知すると、又は1つ以上の以前のデータパケットが前記宛先デバイスで受信されたという確認応答を受信すると、前記1つ以上のデータパケットの前記割り当てが行われる、請求項21に記載の方法。 The allocation of the one or more data packets is performed upon detecting a new data packet in the input queue or upon receiving an acknowledgment that one or more previous data packets have been received at the destination device. The method according to item 21. 前記複数のネットワークコネクションの各々について、前記監視される特性を、
ボトルネックリンクの伝送レート、ラウンドトリップ時間、及びラウンドトリップ伝播時間のうちの少なくとも1つを推定することと、
推定されたラウンドトリップ伝播時間、前記推定されたラウンドトリップ時間、及び前記推定された伝送レートのうちの前記少なくとも1つを、ラウンドトリップ伝播時間、ラウンドトリップ時間の基準範囲、及び伝送の基準範囲のうちの少なくとも1つのそれぞれの基準範囲と比較して、考慮中の、推定されたラウンドトリップ伝播時間、前記推定されたラウンドトリップ時間、及び前記推定された伝送レートのうちの前記少なくとも1つの各々についてのスコア値を確立することと、
前記複数のネットワークの各々についての前記スコア値に基づいて、前記順序シーケンスで前記複数のネットワークを順序付けることと、によって測定することを更に含む、請求項21に記載の方法。
For each of the plurality of network connections, the monitored characteristic:
estimating at least one of a transmission rate, a round trip time, and a round trip propagation time of the bottleneck link;
The at least one of the estimated round-trip propagation time, the estimated round-trip time, and the estimated transmission rate is defined as a round-trip propagation time, a reference range of round-trip times, and a reference range of transmission. for each of the at least one of the estimated round-trip propagation time, the estimated round-trip time, and the estimated transmission rate under consideration, as compared to a respective reference range of at least one of the establishing a score value for;
22. The method of claim 21, further comprising: ordering the plurality of networks in the ordered sequence based on the score value for each of the plurality of networks.
ボトルネックリンクの伝送レート、ラウンドトリップ時間、及びラウンドトリップ伝播時間のうちの前記少なくとも1つの前記推定が、前記ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、及び前記ラウンドトリップ伝播時間のうちの少なくとも2つについての複数のスコア値の推定を含み、前記順序シーケンスが、予め定義された最も重要な特性に対応する前記スコア値の比較に基づいており、前記予め定義された最も重要な特性に対応する前記スコア値同士が等しい場合、比較のために、予め定義された次に最も重要な特性に進む、請求項24に記載の方法。 The estimate of the at least one of the transmission rate, round-trip time, and round-trip propagation time of the bottleneck link is one of the transmission rate, the round-trip time, and the round-trip propagation time of the bottleneck link. estimating a plurality of score values for at least two, said ordered sequence is based on a comparison of said score values corresponding to a predefined most important characteristic, and said ordered sequence is based on a comparison of said score values corresponding to said predefined most important characteristic; 25. The method of claim 24, wherein if the corresponding score values are equal, proceed to the next predefined most important characteristic for comparison. 前記未割り当てデータパケットのフロー分類を行うことを更に含み、前記フロー分類に基づいて、前記予め定義された最も重要な特性及び前記予め定義された次に最も重要な特性が識別される、請求項25に記載の方法。 4. The method of claim 1, further comprising performing a flow classification of the unallocated data packets, and based on the flow classification, the predefined most important characteristic and the predefined next most important characteristic are identified. 25. The method described in 25. 前記複数のネットワークコネクションの各々について、システムオーバーヘッド処理時間を含む修正された監視される特性を測定し、元の特性又は前記修正された特性のいずれかを利用して、
ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、前記ラウンドトリップ伝播時間、帯域幅遅延積(BDP)、及び輻輳ウィンドウ、の推定値のうちの少なくとも1つを決定し、
前記複数のネットワークの前記順序シーケンスが、ボトルネックリンクの前記伝送レート、前記ラウンドトリップ時間、前記ラウンドトリップ伝播時間、前記BDP、及び前記輻輳ウィンドウ、の前記推定値のうちの前記少なくとも1つに更に基づく、請求項24に記載の方法。
measuring modified monitored characteristics, including system overhead processing time, for each of the plurality of network connections, utilizing either the original characteristics or the modified characteristics;
determining at least one of an estimate of the transmission rate, the round trip time, the round trip propagation time, a bandwidth delay product (BDP), and a congestion window of a bottleneck link;
The ordered sequence of the plurality of networks further comprises: the at least one of the estimates of the transmission rate of a bottleneck link, the round-trip time, the round-trip propagation time, the BDP, and the congestion window; 25. The method according to claim 24, based on.
前記複数のネットワークコネクションの各々について、前記ラウンドトリップ時間におけるパケット損失又は前記ラウンドトリップ時間の変化のうちの少なくとも1つを含む他の測定される特性に基づいて、1つ以上の対応するスライディングウィンドウ履歴の持続時間を動的に調整することによって、前記測定される特性を修正することを更に含む、請求項27に記載の方法。 one or more corresponding sliding window histories for each of the plurality of network connections based on other measured characteristics including at least one of packet loss in the round trip time or change in the round trip time; 28. The method of claim 27, further comprising modifying the measured characteristic by dynamically adjusting the duration of. 前記ネットワークコネクションのラウンドトリップ時間及びパケット損失を考慮して、前記複数のネットワークコネクションのうちの前記ネットワークコネクションで達成可能なスループットの相対的な上限を示すMathis係数データ値を推定することと、
前記推定されたMathis係数データ値をMathis係数データ値の基準範囲と比較して、Mathis係数スコアを決定することと、を更に含み、
前記複数のネットワークの前記順序付けられたシーケンスが、前記推定されたMathis係数データ値と前記基準範囲との前記比較に更に基づく、請求項24に記載の方法。
estimating a Mathis coefficient data value indicating a relative upper limit of achievable throughput for the network connection of the plurality of network connections, taking into account the round trip time and packet loss of the network connection;
further comprising: comparing the estimated Mathis coefficient data value to a reference range of Mathis coefficient data values to determine a Mathis coefficient score;
25. The method of claim 24, wherein the ordered sequence of the plurality of networks is further based on the comparison of the estimated Mathis coefficient data values and the reference range.
前記複数のネットワークを順序付けるために、前記方法が、
前記ボトルネックリンクの前記伝送レートの基準範囲を前記ラウンドトリップ伝播時間の基準範囲で除算することによって、少なくとも部分的に定義される、効率的な伝送を示す容量係数を推定することと、
前記推定された容量係数を容量係数の基準範囲と比較して、推定される容量係数スコアを確立することと、
前記容量係数の前記比較に基づいて、前記複数のネットワークを順序付けることと、を更に含む、請求項24に記載の方法。
In order to order the plurality of networks, the method includes:
estimating a capacity factor indicative of efficient transmission defined at least in part by dividing the reference range of transmission rates of the bottleneck link by the reference range of round-trip propagation times;
comparing the estimated capacity factor to a reference range of capacity factors to establish an estimated capacity factor score;
25. The method of claim 24, further comprising: ordering the plurality of networks based on the comparison of the capacity factors.
前記プロセッサが、前記未割り当てデータパケットのフロー分類を行うように構成されており、前記フロー分類に基づいて、前記予め定義された最も重要な特性及び前記予め定義された次に最も重要な特性が識別される、請求項27~30のいずれか一項に記載の方法。 The processor is configured to perform a flow classification of the unallocated data packets, and based on the flow classification, the predefined most important characteristic and the predefined next most important characteristic are determined. 31. A method according to any one of claims 27 to 30, wherein said method is identified. 前記伝送容量を定義するために、前記方法が、
前記複数のネットワークのうちの1つ以上が、要求割り当て多元接続(DAMA)方法を使用して伝送容量を割り振るかどうかを判定することと、
前記1つ以上のDAMAネットワークの前記伝送容量を、前記DAMAネットワークから受信された割り振られた伝送容量よりも大きくなるように定義することと、
1つ以上のDAMAネットワークの前記受信された割り振られた伝送容量が現在使い尽くされているが、要求のデモンストレーションを通じて割り振られ得るより多くの潜在的な容量を有するという判定に応答して、1つ以上のプローブデータパケットを、前記1つ以上のDAMAネットワークが潜在的な伝送容量を有することに対応する前記1つ以上の出力キューに割り当てることと、を更に含む、請求項22に記載の方法。
In order to define the transmission capacity, the method comprises:
determining whether one or more of the plurality of networks allocates transmission capacity using a demand allocation multiple access (DAMA) method;
defining the transmission capacity of the one or more DAMA networks to be greater than the allocated transmission capacity received from the DAMA networks;
In response to determining that the received allocated transmission capacity of one or more DAMA networks is currently exhausted but has more potential capacity that can be allocated through demonstration of a request, one 23. The method of claim 22, further comprising assigning the one or more probe data packets to the one or more output queues corresponding to the one or more DAMA networks having potential transmission capacity.
前記複数のネットワークの各々が利用可能な好適な監視される特性を有するための公称時間を維持することと、
前記1つ以上のデータパケットを前記1つ以上の出力キューに割り当てる間、前記維持された公称時間を前記1つ以上のデータパケットの各々に付加することと、
前記それぞれのデータパケットに関連付けられた前記公称時間に基づいて、前記それぞれの出力キューからプッシュするためのデータパケットをスケジューリングすることと、を更に含む、請求項21に記載の方法。
maintaining a nominal time for each of the plurality of networks to have available preferred monitored characteristics;
adding the maintained nominal time to each of the one or more data packets while assigning the one or more data packets to the one or more output queues;
22. The method of claim 21, further comprising: scheduling data packets for pushing from the respective output queues based on the nominal time associated with the respective data packets.
再送のためのパケットとして識別された前記1つ以上のデータパケットに、優先順位付けされた公称時間を付加することを更に含む、請求項33に記載の方法。 34. The method of claim 33, further comprising adding a prioritized nominal time to the one or more data packets identified as packets for retransmission. 前記1つ以上のデータパケットの各々が、1つ以上のデータフローに関連付けられ、
前記1つ以上のデータパケットの前記割り当てが、
前記データパケットに関連付けられたヘッダに基づいて、前記データパケットの各々に関連付けられたデータパケット分類を推定することと、
前記推定されるデータパケット分類に関連付けられた1つ以上の伝送要件を判定することと、
前記1つ以上のデータパケットを、前記1つ以上のデータパケットの前記対応する1つ以上の伝送要件を満たす前記複数のネットワークに割り当てることと、を含む、請求項21に記載の方法。
each of the one or more data packets is associated with one or more data flows;
The allocation of the one or more data packets comprises:
estimating a data packet classification associated with each of the data packets based on a header associated with the data packets;
determining one or more transmission requirements associated with the estimated data packet classification;
22. The method of claim 21, comprising: assigning the one or more data packets to the plurality of networks that satisfy the corresponding one or more transmission requirements of the one or more data packets.
前記複数のネットワークへの前記1つ以上のデータパケットの前記割り当てが、サービスされるいくつかのデータフローのうちの1つを最大化すること、伝送出力を最大化すること、又は前記複数のネットワークの前記1つ以上のDAMAネットワークについての現在の帯域幅割り振りの変化を最小化することのうちの1つを含む目標関数に基づく、請求項31に記載の方法。 The assignment of the one or more data packets to the plurality of networks maximizes one of several data flows served, maximizes transmission power, or maximizes the transmission power of the plurality of networks. 32. The method of claim 31, based on an objective function comprising one of: minimizing a change in current bandwidth allocation for the one or more DAMA networks. 前記1つ以上のデータパケットが、1つ以上の以前に割り当てられたデータパケットを含む1つ以上のデータフローに関連付けられているかどうかを判定することと、
前記1つ以上のデータパケットを、前記以前に割り当てられたデータパケットに関連付けられた前記複数のネットワークに割り当てることが、前記1つ以上のデータパケットが、1つ以上の以前に割り当てられたデータパケットを含む1つ以上のデータフローに関連付けられていると前記判定することに応答して行われる、請求項33に記載の方法。
determining whether the one or more data packets are associated with one or more data flows that include one or more previously allocated data packets;
assigning the one or more data packets to the plurality of networks associated with the previously assigned data packets, wherein the one or more data packets are assigned to the one or more previously assigned data packets; 34. The method of claim 33, wherein the method is performed in response to the determining that the data flow is associated with one or more data flows including:
前記伝送容量が、BDP、CWND、又はいくつかのインフライトデータパケットによって少なくとも部分的に定義される、請求項22に記載の方法。 23. The method of claim 22, wherein the transmission capacity is at least partially defined by BDP, CWND, or a number of in-flight data packets. 前記方法が、
グッドプット及びスループットのうちの少なくとも1つによって測定されるレート測定値に対する、BDP、CWND、及びインフライトデータのうちの少なくとも1つを含むボリューム測定値との間の変換を含む、各ネットワークについてのベースラインの監視される特性を維持することと、
前記更新された監視される特性が前記ベースライン動作特性から閾値量だけ変動するかどうかを判定することと、を更に含み、
前記それぞれのネットワークについて、前記更新された監視される特性が、監視される前記ベースライン動作から前記閾値量だけ変動することに応答して、他の利用可能なネットワークの1つ以上の出力キューへの前記1つ以上のデータパケットの前記割り当てが実行される、請求項21に記載の方法。
The method includes:
for each network, including a conversion between a rate measurement measured by at least one of goodput and throughput, and a volume measurement including at least one of BDP, CWND, and in-flight data. maintaining baseline monitored characteristics;
further comprising determining whether the updated monitored characteristic varies by a threshold amount from the baseline operating characteristic;
for each of the networks, in response to the updated monitored characteristic varying by the threshold amount from the baseline behavior monitored to one or more output queues of other available networks; 22. The method of claim 21, wherein the allocation of the one or more data packets is performed.
前記方法が、
各ネットワークについてのベースラインの監視される特性を維持することと、
前記更新された監視される特性が前記ベースライン動作特性から閾値量だけ変動するかどうかを監視することと、
前記更新された監視される特性が監視される前記ベースライン動作から前記閾値量だけ変動することに応答して、前記それぞれのネットワークについて、
前記ネットワークのそれぞれの伝送容量を損失回復能力として定義することと、を更に含み、
前記ネットワークの前記対応する出力キューへの前記1つ以上のデータパケットの前記割り当てが、前記損失回復能力に基づく、請求項21に記載の方法。
The method includes:
maintaining baseline monitored characteristics for each network;
monitoring whether the updated monitored characteristic varies by a threshold amount from the baseline operating characteristic;
for each network in response to the updated monitored characteristic varying by the threshold amount from the baseline operation being monitored;
further comprising: defining the transmission capacity of each of the networks as a loss recovery capability;
22. The method of claim 21, wherein the assignment of the one or more data packets to the corresponding output queue of the network is based on the loss recovery capability.
コンピュータ解釈可能命令を記憶した非一時的コンピュータ可読媒体であって、前記コンピュータ解釈可能命令が、プロセッサによって実行されるときに、前記プロセッサに、請求項21または請求項22に記載の方法を実行させる、非一時的コンピュータ可読媒体。 A non-transitory computer-readable medium having computer-interpretable instructions stored thereon, the computer-interpretable instructions, when executed by a processor, causing the processor to perform the method of claim 21 or claim 22. , a non-transitory computer-readable medium. 複数のネットワークコネクションを用いるパケット通信のためのシステムであって、
1つ以上の監視されるパケット通信イベントを検知することに応答して、
前記複数のネットワークコネクションの各々の伝送容量を定義し、
入力キューが伝送に利用可能な未割り当てデータパケットを含むか、又は前記複数のネットワークコネクションのうちの1つ以上の更新された伝送容量が使い尽くされていないと判定することに応答して、
前記入力キューから前記未割り当てデータパケットのうちの1つ以上のデータパケットを要求し、
前記1つ以上のデータパケットを、利用可能な伝送容量を有する前記複数のネットワークの1つ以上の対応する出力キューに割り当て、
前記割り当てられた1つ以上のデータパケットを反映するように前記伝送容量を更新し、かつ
前記複数のネットワークの各ネットワークに対応する前記出力キューからの前記割り当てられたデータパケットを宛先デバイスに伝達するように構成された受信機と、
前記伝達された割り当てられたデータパケットを受信し、かつ
前記受信されたデータパケットを再構築するように構成された受信機と、を備える、システム。
A system for packet communication using multiple network connections,
in response to detecting one or more monitored packet communication events;
defining a transmission capacity of each of the plurality of network connections;
In response to determining that the input queue contains unallocated data packets available for transmission or that the updated transmission capacity of one or more of the plurality of network connections is not exhausted;
requesting one or more data packets of the unallocated data packets from the input queue;
assigning the one or more data packets to one or more corresponding output queues of the plurality of networks having available transmission capacity;
updating the transmission capacity to reflect the assigned one or more data packets, and communicating the assigned data packets from the output queue corresponding to each network of the plurality of networks to a destination device. a receiver configured to:
a receiver configured to receive the communicated assigned data packets and reconstruct the received data packets.
JP2023542986A 2021-01-19 2022-01-19 System and method for push data communication Pending JP2024508220A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163139286P 2021-01-19 2021-01-19
US63/139,286 2021-01-19
PCT/CA2022/050077 WO2022155738A1 (en) 2021-01-19 2022-01-19 Systems and methods for push-based data communications

Publications (1)

Publication Number Publication Date
JP2024508220A true JP2024508220A (en) 2024-02-26

Family

ID=90010606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023542986A Pending JP2024508220A (en) 2021-01-19 2022-01-19 System and method for push data communication

Country Status (1)

Country Link
JP (1) JP2024508220A (en)

Similar Documents

Publication Publication Date Title
JP2023002774A (en) Packet transmission system and method
AU2011279353B2 (en) System, method and computer program for intelligent packet distribution
Alizadeh et al. DCTCP: Efficient packet transport for the commoditized data center
Rojas-Cessa et al. Schemes for fast transmission of flows in data center networks
EP3031184B1 (en) Performing quality-of-service on unknown bandwidths through rate estimating tcp congestion controllers
US20190149475A1 (en) Unified streamlining for data traffic
US8341265B2 (en) Hybrid server overload control scheme for maximizing server throughput
US20220294727A1 (en) Systems and methods for managing data packet communications
US20240098155A1 (en) Systems and methods for push-based data communications
Zhang et al. Congestion control and packet scheduling for multipath real time video streaming
Alipio et al. TCP incast solutions in data center networks: A classification and survey
Lu SED: An SDN-based explicit-deadline-aware TCP for cloud Data Center Networks
Zhang et al. Aequitas: Admission control for performance-critical rpcs in datacenters
CN113783785A (en) ECN (engineering-centric networking) water line value configuration method and device and network equipment
JP2024508220A (en) System and method for push data communication
WO2019124290A1 (en) Transmit data volume control device, method, and recording medium
Paschos et al. Multirate multicast: Optimal algorithms and implementation
Samiayya et al. An efficient congestion control in multimedia streaming using adaptive BRR and fuzzy butterfly optimization
Sood et al. Hybrid Congestion Control Mechanism in Software Defined Networks
Reddy et al. A Combined TCP-friendly Rate control with WFQ Approach for Congestion Control for MANET
WO2023235988A1 (en) Systems and methods for communications using blended wide area networks
Zhou et al. Flow-aware explicit congestion notification for datacenter networks
Fesehaye Finishing Flows Faster with A Quick congestion Control Protocol (QCP)
Lin et al. URLM: Utilising reinforcement learning to schedule subflows in MPTCP
Wang et al. An Incast-Coflow-Aware Minimum-Rate-Guaranteed Congestion Control Protocol for Datacenter Applications

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20240423