JP5982002B2 - トラフィックスケジューリングを使用したネットワーク帯域幅調整 - Google Patents

トラフィックスケジューリングを使用したネットワーク帯域幅調整 Download PDF

Info

Publication number
JP5982002B2
JP5982002B2 JP2014538989A JP2014538989A JP5982002B2 JP 5982002 B2 JP5982002 B2 JP 5982002B2 JP 2014538989 A JP2014538989 A JP 2014538989A JP 2014538989 A JP2014538989 A JP 2014538989A JP 5982002 B2 JP5982002 B2 JP 5982002B2
Authority
JP
Japan
Prior art keywords
data
packet
transmission
network
traffic management
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.)
Active
Application number
JP2014538989A
Other languages
English (en)
Other versions
JP2014531179A (ja
JP2014531179A5 (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 フォースウォール・メディア・インコーポレーテッド
Publication of JP2014531179A publication Critical patent/JP2014531179A/ja
Publication of JP2014531179A5 publication Critical patent/JP2014531179A5/ja
Application granted granted Critical
Publication of JP5982002B2 publication Critical patent/JP5982002B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/147Network analysis or design for predicting network behaviour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/062Generation of reports related to network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/196Integration of transport layer protocols, e.g. TCP and UDP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/781Centralised allocation of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/801Real time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/822Collecting or measuring resource availability data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、一般的には、ネットワーク帯域幅を調整するシステムおよび方法に関する。より具体的には、さまざまな実施形態が、トラフィックレポーティングおよび帯域幅予約メカニズムに関する。
インターネットからケーブルTV、IPTV、モバイルブロードバンド、ワイファイ、ホームネットワークまでのコミュニケーションネットワークの継続的な普及およびこれらのネットワークを経由して送信されるデータについてのますます高まる要求に伴い、ネットワークの混雑に関する懸念が、より浸透してきている。より大きなパイプを提供できるのと同じくらい速く、ユーザ要求は、それらを満たすと脅かしている。インターネットを支えるこれらのような、データ配信のための最善努力メカニズムは、しばしば、不十分であると分かります。
ネットワーク混雑の懸念は、ケーブルTVネットワークのアウトオブバンド(OOB)チャネルのような狭くて非対称なチャネルにとって、特に重大であろう。OOBケーブルチャネルは、エンハンスドTVバイナリーインターチェンジフォーマット(EBIF)またはオープンケーブルアプリケーションプラットフォーム(OCAP)規格を使用して実施されるもののようなエンハンスドTVアプリケーションにより発生されるトラフィックを処理するための要求によって、ますます緊張している。そのようなトラフィックは、ボーティングとポーリングデータ、ユーザ嗜好と統計トラフィック、Tコマース情報およびその他のデータを含むだろう。DSLとモバイルブロードバンドのネットワーク上でのデータ配信は、同様な課題に直面している。
帯域制限されたネットワーク上でのネットワーク混雑の課題に対処するために、さまざまなアプローチが記述されてきた。いくつかのアプローチは次のものを含む。すなわち、(「テールドロップ」または活発な待ち行列管理を経由した)パケットドロッピング、TCP混雑回避、明示的混雑通知、ウィンドウシェーピング、トラフィックシェーピング(すなわち、パケット遅延)、サービス(QoS)スキームの品質、および、関連した帯域幅予約技術。
必要とされるものは、データを送信および受信するために待機しながら、長いメッセージ、過剰なハンドシェイクまたはその他のQoSタイプのオーバヘッドを要求しないで、ノードがプロセシングし続けるのを許容する方法にて混雑を減らすために、ネットワーク帯域幅を調整するシステムおよび方法である。
さまざまな実施形態において、トラフィックレポーティングおよび帯域幅予約メカニズムを利用して、ネットワークトラフィックをモニタリングし、ネットワーク負荷を予測し、トラフィックをスケジューリングすることを含むネットワーク帯域幅を調整するために、システムおよび方法が提供されるだろう。トラフィックレポーティングは、メッセージを送信および受信する適切な回数を指示するネットワークノードへ制御メッセージをブロードキャストすることを含むだろう。ネットワークノードは、ネットワークでのその使用を積極的に調整するために、トラフィックレポート(例えば、制御メッセージ)を使用するだろう。予約は、同期または非同期方法にて実施されるだろう。前記予約メカニズムは、従来のストリームソケットAPIをエミュレートするだろう。
別の実施形態では、前記トラフィックレポートブロードキャストに加えて、クライアントノードが、メッセージまたはその他のデータを送信または受信する前に、帯域幅予約を行うだろう。
いくつかの実施形態では、システムおよび方法が、デジタルケーブルTVアウトオブバンド(OOB)ネットワークにおいて、ユーザデータグラムプロトコル(UDP)上で帯域幅調整および軽量の送信制御プロトコル(TCP)機能性を提供するだろうし、そこでは、エンハンスドテレビジョン(ETV)プラットフォームサーバーが、複数のセットトップボックス(STB)が動作するエンハンスドTVバイナリーインターチェンジフォーマット(EBIF)ユーザエージェントを有するUDPを使用してインターチェンジされるハイパーテキストトランスファープロトコル(HTTP)ペイロードを経由して、コミュニケーションしている。
他の実施例は、TCPやその他のプロトコルを利用するネットワーク、インバンドケーブルTV、DSLおよびセルラー/モバイルネットワークのようなネットワーク、および、その他のアーキテクチャーやコンポーネントに基づいたネットワークを有している。
別の実施形態では、帯域幅調整が、EBIFアプリケーションにとって明白であろう方法にて、EBIFユーザエージェントにより実施されるだろう。他の実施例では、前記トラフィックスケジュールが、ネットワークアプリケーションにさらされるだろうし、それが、それから、前記開示されたトラフィックスケジューリングメカニズムを使用でき、ユーザ側の動作を適切に調整できる。
別の実施形態では、帯域幅調整サーバーが、適切にマネージされるために、外部イベント(例えば、時刻または時季帯域幅予測、おそらくトラフィックストームを示す緊急ニュース速報)に応答しているだろう。
上述の一般的な記述および以下の詳細な記述の双方が、例示的で説明のみであり、特許請求される本発明を制限するものではないことが理解されるべきである。添付の図面は、この明細書の一部を構成し、本発明のいくつかの実施例を例示しており、詳細な記述とともに、本発明の原理を説明する役割を果たしている。
本発明は、添付の図面とともに、以下の詳細な記述を読むことによって、もっと完全に理解することができ、添付図面では、同様な参照表示が同様な要素を指定するために使用されており、また、次のようになっている。すなわち、
は、ケーブルシステムのアウトオブバンドネットワークにおける帯域幅調整を提供するシステムの一実施例を描写している例示的なアーキテクチャー図である。
は、本発明の実施形態によるトラフィックマネージメントサーバーの一実施例を描写している例示的なアーキテクチャー図である。
は、本発明の実施形態によるトラフィックマネージメントクライアントの一実施例のプログラマー図を描写している例示的なアーキテクチャー図である。
は、従来技術のHTTPのTCP/ストリームソケット実装を描写しているフローチャートである。
は、本発明の一実施形態によるHTTPの同期(ブロッキング)仮想ソケット実装を描写しているフローチャートである。
は、本発明の一実施形態によるHTTPの非同期(非ブロッキング)仮想ソケット実装を描写しているフローチャートである。
は、例示的な情報パケットのグラフィック表示である。
は、例示的なデータパケットのグラフィック表示である。
は、例示的なACKパケットのグラフィック表示である。
は、例示的なプローブパケットのグラフィック表示である。
は、仮想ソケット構造のグラフィック表示である。
は、仮想ソケットテーブル構造のグラフィック表示である。
は、予約待ち行列構造のグラフィック表示である。
は、帯域幅調整無しのネットワーク負荷のシミュレーションを描写しているグラフである。
は、帯域幅調整有りのネットワーク負荷のシミュレーションを描写しているグラフである。
は、帯域幅調整有りと無しのシミュレーションされたネットワーク負荷間の相違を描写しているグラフである。
図1に例示されているように、本開示は、トラフィックマネージメント(TM)システム100および方法のコンテキストにおいて、トラフィックスケジューリングを使用するネットワーク帯域幅調整に関する。より具体的には、一実施形態が、デジタルケーブルTVアウトオブバンド(OOB)ネットワークのコンテキストにおいて開示され、そこでは、エンハンスドテレビジョン(ETV)プラットフォームサーバー200が、エンハンスドTVバイナリーインターチェンジフォーマット(EBIF)ユーザエージェント410を起動する複数のセットトップボックス(STB)400を有するユーザデータグラムプロトコル(UDP)を使用して互いにやりとりされるハイパーテキストトランスファープロトコル(HTTP)ペイロードを経由して、コミュニケーションする。帯域幅調整を提供するのに加えて、開示されたTMシステム100および方法は、保証された配信、パケットシーケンシング、フロー制御およびデータ圧縮をサポートするUDPを使用する軽量の送信制御プロトコル(TCP)機能性を提供するだろう。
ここにて記述されたシステムおよび方法は、また、TCPおよび他のプロトコルを利用するトラフィックとともに使用のためや、インバンドケーブルTV、DSLおよびセルラー/モバイルネットワークのようなその他のネットワークのためやその他のアーキテクチャーおよびコンポーネントに基づいたネットワークのために適切であろう。
本実施形態では、TMシステム100および方法は、デジタルケーブルOOBネットワークの以下の特性を考慮に入れている。すなわち、
非対称性:ダウンストリームネットワーク帯域幅(ヘッドエンド→STB)がアップストリームより広い。
低帯域幅:いずれの方向での帯域幅がMbpsではなくKbpsで測定される。
長い待ち時間:ハイブリッドファイバー同軸(HFC)ネットワーク上のトンネリングインターネットプロトコル(IP)が遅延を発生する。
TCPよりも優先されるUDP:帯域幅とタイムを節約し、全てのケーブルOOBネットワークがTCPを提供しているのではない。
HTTPが優位に立つ:ほとんどのトラフィックはHTTPリクエスト/応答上でモデル化されるが、例外があるだろう。
リクエスト/応答2分法:ほとんどのトラフィックが一方向または他方向に移動するデータからなり、リクエスト方向がはるかに少ないデータを運ぶ傾向にある。
脆弱性:アップストリーム混雑がネットワーク上のOOBネットワークおよびSTBをクラッシュさせるだろう。
混合された前景/背景:いくつかのリクエストがタイムリーな応答を必要とする一方で、その他のリクエストはそれを必要としない。
仮定および定義
現在の実施形態の記述を容易にするために、基本的なネットワークについて、以下の仮定がなされるだろう。すなわち、
ケーブルOOBネットワークは、IPv6ではなく、IPv4を排他的に使用する。
IPパケットヘッダーは、20バイトを専有する。
UDPパケットヘッダーは、8バイトを専有する。
メディアアクセス制御(MAC)レイヤーセルは、少なくとも34バイト(サイズは変わります)のペイロードを有する。
IPおよびUDPヘッダーの28バイトと共に一つのMACセルに収まり得る最大UDPメッセージサイズは、34−28=6バイトである。これが、TMパケットヘッダーのサイズを駆動する。
ハイブリッドファイバー同軸ネットワークノード(HFCノード、すなわち、デモジュレータ)当たりの合計アップストリーム帯域幅が、500〜2000STBで共有されて、256Kbpsである。
スロットされたアロハネットワークが、衝突により、36.8%の理論的な最大効率を有する。
モジュレータ当たりの合計のダウンストリーム帯域幅が、32,000STBまで共有されて、2Mbpsである。
現在の実施例の性能は、実装に使用されるであろう以下の数値定数に基づいているだろう。代表値は、実験と以下の配備環境の特性に基づいて変化する可能性が指摘されている。すなわち、
MTU:TMアップストリームトラフィックのための最大送信ユニット(すなわち、UDPパケットサイズ)は、244バイトまたは1952ビットだろう。これが、IPおよびUDPヘッダーの28バイトを含む6個のMACセル(272バイト)内に、一つのMTUが正確に収まることを可能としている。全アップストリームメッセージの99%が、1MTUに収まるべきである。ダウンストリームは、MTUがより大きいだろうし、最大987バイトまである。
SLOT:256Kbps、または、0.008秒(8ミリ秒)で、一つのMTUを送信するために要求されるタイム。
SLOTS_PER_SECOND:一定の125(すなわち、1000ms/sec/8ms/SLOT)。
SlotID:00:00:00で01/01/2000のときから、一つのSLOT(すなわち、8ミリ秒時間スライス)をユニークに識別する6バイト(またはより大きい)署名の無い整数。つまり、0のSlotIDは、00:00:00.000で01/01/2000にスタートして、00:00:00.008で01/01/2000に終わる、8ミリ秒時間スライスを指し、SlotID2は、00:00:00.008で01/01/2000に始まって、00:00:00.016で01/01/2000に終わる等の次回の時間スライスを指す。例えば、2010年5月8日3:21:04AMの日付時刻のための34番目のSLOTのSlotIDは、40825508034である。この日付の100年記念秒を表す最初のSLOTのSlotIDは、242007908000である。
VPORT:全TMトラフィック用に使用される実際のポート数(1962)。この数は、BIAP社に登録されている。
VSEND_WASTE:データ送信関数(例えば、vsend())がブロックし続けるべきであるパケット間のミリ秒の最大数。最初は、100ミリ秒に設定されている。
VSEND_TRIES:vsend()が戻る前に試みるべきであるパケット再送信の最大数。最初は、5に設定される。
VRECV_WASTE:データ受信関数(例えば、VRECV())がデータパケットを待ってブロックし続けるべきであるミリ秒の最大数。最初は、100ミリ秒に設定される。
トラフィックマネージメントアーキテクチャー
図1は、ケーブルシステムのOOBネットワークにおける帯域幅調整を提供するシステム100の一実施例を描写している例示的なアーキテクチャー図である。描写されたTMクライアント420およびTMサーバー210コンポーネントは、内蔵された帯域幅調整を有するUDP上で、TCPのような機能性を提供するだろう。
本実施例は、木と枝のトポロジーにて複数のハブ(図示せず)およびHFCノード300を介して接続された顧客構内に設置された複数のSTB400とコミュニケーションするケーブルオペレータヘッドエンドに設置された一つまたはそれ以上のETVプラットフォームサーバー(EPS)200から成るだろう。EPS200は、HTTP/TCPを経由してアパッチHTTPサーバー220へHTTPペイロードからなる着信TM/UDPトラフィックをリレーし、それから、中間HFCノード300とハブを介してM/UDP経由でHTTP/TCP応答を逆に送信元のSTB400へリレーする、高性能UDPプロキシサーバーであろうTMサーバー210を具備するだろう。
STB(すなわち、クライアントノード)400は、STB400上で作動しているEBIFアプリケーション(図示せず)のデータネットワーキングニーズをサポートするためにTMクライアント420を利用するEBIFユーザエージェント410を具備するだろう。TMクライアントコンポーネント420は、単一の実データグラムソケット/ポートのみを使用しながら複数の同時「仮想」ストリームソケットおよび接続を提供する、TCPネットワーキング用の標準ストリームソケットアプリケーションプログラミングインターフェース(API)を模倣する、静的ライブラリであろう。
示されたTM/UDPプロトコルは、メッセージ配信を保証するために、簡単なパケットフラグメンテーション、シーケンシングおよびアクノリッジメントスキームを使用するだろう。帯域幅調整は、ネットワークの負荷を予測するためにアップストリームトラフィックをモニターするであろうTMサーバー210によって制御され、TMクライアント420に、アップストリームメッセージをどのようにスケジュールするかを(例えば、帯域幅予約を経由して)告げるSTB400へ制御メッセージをブロードキャストするだろう。ダウンストリーム帯域幅調整は、TMサーバー210内にて、完全に達成されるだろう。
図1に描写されたアーキテクチャーを考慮すると、支援される3つの運用モードがあるだろうし、その一つのみが、任意の特別ケーブルオペレータ用に使用されるだろう。どのモードが支援されるかは、(a)負荷情報のSTB400へのUDPブロードキャスト用のダウンストリーム帯域幅の連続的なトリクルの利用可能性、(b)クライアントシステム上での一つのソケット/ポート常駐割り当ての(a)および(b)に依存するだろう。これらのモードは以下であろう。すなわち、
モード1:(a)と(b)双方が利用可能な時は、TMサーバー210は、情報パケット(以下を参照のこと)を、全STB400に周期的に、例えば、重い負荷状態の間に10秒毎かもっと頻繁にブロードキャストするだろう。これは、約30bps(0.03Kbps)を必要とすべきである。
モード2:(a)は利用可能だが(b)が利用可能でなく、TMクライアント420が任意のメッセージを送信する前に情報パケットを待たなければならない時は、これらのパケットは、もっと頻繁に送信されなければならない。これは、約270bps(0.27Kbps)を必要とすべきである。
モード3:(a)が利用可能でない時は、すべてのメッセージを送信する前に、プローブパケット(以下に記述される)は、「なりゆきを見る」ために使用されなければならない。これは、構成された制限を越えて、簡潔な帯域幅スパイクを引き起こし、従って、その他のモードよりも好ましくない。
トラフィックマネージメントサーバー
図2は、トラフィックマネージメント(TM)サーバー210の一実施形態を描写している例示的なアーキテクチャー図である。
TMサーバー210は、配信プロトコルおよびOOB帯域幅調整を保証したTMを実装する高性能のUDP→TCPリレーサーバーだろう。着信接続およびデータは、UDPリッスナープロセス214を経由して受信されるだろうし、接続/パケットは、アジェンダ218上にタスクとして配置されるだろう。図2に破線で描写されているように、アジェンダ218は、いくつかのプロセスによって読み取られるだろう。
データまたはプローブパケットが、IPアドレス、ポートおよびConnID(以下のパケットフォーマットセクションを参照のこと)ヘッダーフィールドの新しい組み合わせで到達するたびに、接続が、暗黙のうちに「オープンされる」だろう。それぞれが複数のワーカースレッドを実施する複数のチャイルドプロセス216が、これらのパケットを、それらの到達につれて、プロセスするだろうし、それらをオリジナルメッセージへと適切な順番で再構成し、必要に応じてクライアントへACKパケットを返す。完成したメッセージは、それから、標準HTTP/TCP/IP接続を経由して、アパッチHTTPサーバー220へ送信されるだろう。アパッチからのHTTP応答は、それから、「オープン」仮想接続を経由して(すなわち、ダウンストリームデータパケットを経由して)、対応するクライアントへ戻されるだろう。
帯域幅調整プロセス212は、着信パケッリトを、リアルタイムにて、モニターするだろう。この情報とその変化率が、負荷傾向を推定するのに使用されるだろう。この推定から、対応する送信確率が演算されるだろう。この送信確率およびクロック同期情報が、UDPを経由して、全TMクライアント420へ周期的にブロードキャストされるだろう。
トラフィックレポーティング
このセクションは、負荷情報をTMクライアント420へコミュニケーションするための例示的な方法を記述している。
TMサーバー210およびTMクライアント420は、メッセージを送信するのに使用されるタイムを広げることにより、アップストリームOOB帯域幅をマネージするだろう。すべてのメッセージは、複数の固定サイズのデータパケットに分割されるだろうし、各パケットは、ランダム遅延により、バインドされるだろう。例えば、もし、現在の広域送信確率(すなわち、可変send_probability)が32767ならば、(SLOTでの)遅延は、次のように計算されるだろう。すなわち、
tm_random()%(131072.0/32768+0.5)
=tm_random()%4
これは、0と3の間の値という結果になる。例えば、もし、tm_random()が446を返すならば、その時は、446%4=2である。TMクライアント420上のチャネル/スロット予約関数への呼出が、呼出元へ、16ミリ秒の予約遅延(すなわち、8*2で、そこでは、各々SLOTが8ミリ秒である)を返すであろう。この情報は、また、現在のSlotID値に2だけ遅延して可変であるreservation_slotを更新するのに使用されるだろう。これは、TMクライアント420により維持された予約待ち行列内の最初の仮想接続が、今から16ミリ秒(すなわち、2SLOT)後に送信するためのパケットを有するということを意味すると解釈される。その時、予約関数への後続の呼出は、予約されたタイムが、到来したことを理解して、その後にメッセージを送信する呼出元に、0を返すでしょう。send_probability値は、次の如く設定されるだろう。すなわち、
(1)それは、16,387のデフォルト値に初期化される。
(2)モード1および2では、その値は、TMサーバー210によりブロードキャストされた情報パケットから直接受信される。この値は、任意のより古いsend_probability値に取って代わる。モード3では、プローブパケットが、対応するACKパケットを発生するために、可能な限り早く送信される。
(3)すべてのACKパケットは、send_probability値の更新を含有する。この値は、任意のより古いsend_probability値に取って代わる。
(4)送信されたパケットアクノリッジメントがタイムアウトする(すなわち、パケットがアクノリッジされない)度に、send_probabilityは半分にされる(最小1)。send_probabilityがこのようにして半分にされることなしで経過する秒毎に、send_probabilityは、最大値16,387まで、100増やされるようにされる。
上記のように、モード1は、ダウンストリーム帯域幅約0.03Kbpsを必要とする情報パケットのブロードキャストストリームを発生する。モード2は、0.27Kbpsを必要とする。モードに依存して、クライアントは、真のソケットが利用可能の後に、できる限り早く、情報パケットのリッスニングをスタートすべきである。
ランダム数発生
このセクションは、本発明のさまざまな実施形態のメッセージ遅延とその他のニーズを計算するために適切なランダム数発生器(すなわち、tm_random()とtm_randomize())の例示的な実施を提示する。すなわち、
staticユニット32 tm_seed=19610508;

ユニット32 tm_random(){
constトユニット32 a=16807;
constユニット32 m=2147483647;
constユニット32 q=127773、/*m/a*/
constユニット32 r=2836、/*m%a*/
int32 lo、hi、テスト;

hi=tm_seed/q;
lo=tm_seed%q;
テスト=a*lo−r*hi;
もし(if)、(テスト>0)であれば
tm_seed=テスト;
それ以外であれば(else)、
tm_seed=テスト+m;
リターン tm_seed;


void tm_randomize(ユニット32 s){
tm_seed=s、
tm_randomize(<ip_address>)は、起動時に正確に一度呼出されるべきであり、そこでは、<ip_address>が、STBのIPv4アドレスのユニット32(4バイト)値である。
クライアントクロック同期
このセクションは、本発明のさまざまな実施形態に好適なクライアントクロック同期の例示的な方法を記述する。
TMサーバー210からの情報パケットブロードキャストは、send_probability更新と共に、タイミング同期情報を含有するだろう。タイミング情報は、情報パケットの2つのフィールドに入るだろう。すなわち、
SynchSecond(1バイト):0..119の範囲の値であって、パケットが、どの秒に、サーバークロックにより送信されたかを識別する。この値は、最新の偶数分のスタートからのオフセットである。
SynchPhase(1バイト):このパケットを送信する前の同期秒内に経過したSLOT(0..124)の数。
例えば、もし、情報パケットがTMサーバー210上で構築されるタイムが、1秒の何分の1を含んで、13:23:43.728GMTならば、SynchSecondフィールドに割り当てられる値は103であろう。分の値23が奇数なので、直近の偶数分は22である。13:22:00から13:23:43までのオフセットは、01:43または103秒である。
一旦この秒が識別されると、残りの0.728秒(728ミリ秒)が考慮されなければならない。一つのSLOTが0.008秒(8ミリ秒)を専有すると仮定すると、スロットの数は728/8=91として計算される。この値(例えば、91)は、情報パケット内のSynchPhaseフィールドに割り当てられる。
TMクライアント420が情報パケットを受信するたびに、それは、time_offset_msec変数を更新するために、以下のステップを実行するだろう。すなわち、
(1)浮動小数点変数current_time内のいくつかのエポック以来の秒として現在の日付/時刻(GMT)を計算する。
(2)浮動小数点変数current_time内で同じエポック以来の秒として情報パケット(GMT)で見出された2つのフィールドにより定義されたタイムを計算する。
(3)浮動小数点変数synch_offset_msec=(synch_time–current_time)*1000、ミリ秒での最新のオフセット、を計算する。
(4)time_offset_msec=time_offset_msec*0.9+synch_offset_msec*0.1を設定する。これは、条件がタイムとともに変化してタイムオフセットの低速移動平均を発生する。任意の情報パケットの受信に先立って、time_offset_msecをゼロ(0)に初期化する。
モード1では、time_offset_msecを情報パケット毎に更新することは必要ではないだろう。1分毎の一つの更新で十分であろう。モード2では、このタイムオフセットは、望ましくは、情報パケット毎に計算されるだろう。
「現在タイム」が参照されるたびに、それが、STB(GMT)の現在タイム、プラス、適切なタイムユニット(すなわち、もし「現在タイム」が秒にてレポートされるならば、time_offset_msec*1000)にスケーリングされたtime_offset_msec値、であると仮定されるだろう。
トラフィックマネージメントクライアント
図3は、本発明の実施形態によるトラフィックマネージメントクライアント420の一実施例のプログラマー図を描写している例示的なアーキテクチャー図である。それは、クライアントデバイス(例えば、STB)400により提供されるハードウェアおよびオペレーテイングシステム(O/S)450のその他の能力と共にSTBミドルウェア440のソケット媒介能力を利用することで複数のEBIFアプリ430用のトラフィックマネージメントサービスを提供するために、TMクライアント420がEBIFユーザエージェント410によりどのように利用されるだろうかを示している。さらに記述されるように、TMクライアント420は、標準ストリームソケットAPIを利用し、トラフィックスケジューリングを使用する帯域幅調整のために同期および非同期両モードを提供し、クライアントおよびサーバー両接続を許容し、複数の「仮想」ソケット/ポートをサポートし、保証された配信を提供し、データ圧縮を提供し、そして、先験的な帯域幅制限はなにも課さないだろう。
ネットワークAPI
図4(a)は、ネットワーキングクライアントにより使用されるだろうHTTPの従来技術のTCP/ストリームソケット実装を描写している例示的なフローチャートである。スタート(ステップ500)すると、socket()は、新しいソケットidを得るために、呼出されるだろう(ステップ502)。次に、IPアドレスおよびポート数により定義されたサーバーとの接続が、connect()を呼出すことにより得られるだろう(ステップ504)。リクエストストリングが、それから、send()関数によって、サーバーへ送信されるだろう(ステップ506)し、全リクエストをプロセスするために、おそらく、send()に複数の呼出を要求する(ステップ508)。全てのデータが送信された(すなわち、全て送信した?=Yes(ステップ508))後に、応答を待つために、recv()へ呼出がなされるだろう(ステップ510)。send()(ステップ506、508)と同様に、recv()への複数の呼出が、全HTTP応答を検索するために要求される(すなわち、全て受信した?=Yesとなるまで繰り返し適用される)だろう(ステップ512)。最後に、close()が、接続をクローズするために呼出されるだろうし(ステップ516)、その後に、プロセスがストップする(ステップ518)。また、全部のHTTP応答は受信されないことが生じるだろうが、接続はクローズされる(ステップ514)。この例では、プロセスをストップさせる(ステップ518)のためにclose()が呼出されるだろう(ステップ516)。このタイプの同期HTTPクライアントを実装することは、当業者により知られているであろう。
図4(b)および図4(c)は、本発明の一実施形態によるHTTPの仮想ソケット実装の実施形態を描写している。図4(b)におけるフローチャートは、同期(ブロッキング)バージョンを描写している。図4(c)におけるフローチャートは、非同期(非ブロッキング)バージョンを描写している。
これらの図に示されているように、標準ストリームソケットAPI呼出は、仮想等価(例えば、send()506がvsend()612になる)であろうし、よく知られている方法でプログラマーにとってストリームソケットが使用できるようにする。影付きブロックで示されているように、少数の追加関数が存在するだろう。本発明のさまざまな実施形態によれば、全アップストリームトラフィックが、ネットワークの現在負荷状況に基づいて、望ましくはスケジュールされるだろう。ネットワーク負荷が低い時、データは、直ちにではなくとも、迅速に送信されるだろう。ネットワーク負荷がより高い時、遅延があるだろう。TMクライアント420は、vreserve()606のリターン値から、予期された遅延を推定でき、どのように進むか進まないかを決定でき、そして、他のタスクのために介在するサイクルを使用することができる。
示されたAPI呼出は、静的ライブラリを経由して提供され、Cヘッダーファイル(.h)にプロトタイプされるだろう。そのようなヘッダーファイルは、従来のストリームソケットAPIをそれらのトラフィックマネージメントアナログへとマッピングするマクロを#defineするだろう。そのようなマクロは、現存するソケットコードがトラフィックマネージメントシステムおよび方法と共に働くことを許容するであろうし、送信呼出および非同期プロセシングのスケジューリングのために些細な変更のみを要求する。
以下の段落では、開示されたステップのコンテキスト中で、図4(b)および図4(c)に描写された仮想呼出の詳細が提供される。記述されたすべてのAPI呼出について、パラメータとリターンのタイプは、従来のソケットAPIにて使用されるのと同じタイプを一般的に参照するであろうし、従って、ここではそれらを記述していない。文字「v」で始まる名称は、ここにて記述されたシステムおよび方法に固有である。標準(すなわち、非TM)ソケットAPIは、htonl()、ntohl()、getaddrinfo()等のように同様に利用可能であると仮定されている。その他の従来のソケットAPIは、poll()、select()およびshutdown()のように、トラフィックマネージメントを使用する時に、アナログを持っていないであろう。
図4(b)は、本発明の一実施形態によるHTTPの同期(ブロッキング)仮想ソケット実装を描写している例示的なフローチャートである。
プロセスがスタート(ステップ600)の後、最初の呼出はvsocket()であり、仮想ソケット記述子を割り当てる(ステップ602)だろう。この関数により返された記述子は、vlisten()、vbind()、vsend()およびその他の関数への後続の呼出用に使用されるだろう。TMクライアント420での実装は、仮想ソケットテーブルにおける新しい空の仮想ソケット構造を割り当てることと、そのエントリーのテーブルインデックスを仮想ソケット記述子として返すことを含むだろう。モード2では、この呼出が、また、tm_socketのオープニングおよび初期化を引き起こすだろうし、従って、それは情報パケットをリッスンし始めることができる。
次のステップにおいて、リクエストノードが、vconnect()(ステップ604)を呼出して、仮想ソケットをTMサーバー210に接続するだろう。vconnect()604に渡す関連するパラメータは、仮想ソケット記述子と、IPアドレスと、接続先サーバのポート番号を含むだろう。もし、呼出プログラムが、どんなローカルポートが接続に使用されるかを特定することを望むならば、vbind()への呼出がなされるだろう(図4(b)には描写されていない)。vbind()は、特定された仮想ソケット記述子をローカルIPアドレスおよび明示的なローカルポート数と関連付けるだろう。仮想ソケットのポート数は、仮想ソケット記述子によりインデックスを付された仮想ソケット構造テーブルエントリーに保存されるだろう。もし、vbind()が、ソケット記述子上で、前もって呼出されていなかったならば、示されたソケット記述子は、ローカルノードのIPアドレスおよびランダムローカルポートに自動的にバインドされるだろう。ノードは、たぶん、どのローカルポートが使用されるのかを気にしないので、呼出ノードがサーバーでないならば、これは容認されるべきである。一旦仮想ソケットが接続されると、vsend()およびvrecv()は、データを送信および受信するために、必要に応じて、呼出されることができる。サーバーのホストIPアドレスとポートは、sockfdによりインデックスを付された仮想ソケット構造用の仮想ソケットテーブルに保存されるだろう。
次に、vreserve()(ステップ606)への呼出が、データアップストリームを送信するための予約を行うためになされるだろう。vreserve()606は、仮想ソケット記述子(vsockfd)を受け入れ、(vsend()を使用して)メッセージを送信する以前に待機するために、ミリ秒の数を返すだろう。vreserve()606がゼロを返す(すなわち、送信準備できている?=Yes(ステップ608))際に、メッセージは、ブロックされる最小の確率にて送信できる。予約されたスロットを待ちながら、呼出プログラムは、その他のタスクを実行するだろう。vreserve()606は、予約ステータスをチェックするために、周期的に呼出されるだろう。
次のステップにおいて、vsend()が、vsocket()呼出によって返された仮想ソケットを経由して、前もって接続されたサーバーへメッセージを送信するために、使用されるだろう(ステップ612)。vsend()612は、接続された仮想ソケット記述子(vsock)、送信されるデータを含有するバッファー(buf)へのポインターおよび送信するバイトの数(len)を示す入力として、パラメータを受け入れるだろう。それは、実際に送信されたバイトの数を返すだろう。図4(a)(ステップ506)に描写された従来のsend()呼出と同様に、vsend()は、同期(すなわち、ブロッキング)呼出であり、全てのデータが送信される以前(すなわち、全て送信した?=No(ステップ614))に、返すだろう。これにより、vsend()は、vreserve()への追加の呼出と連動して繰り返し呼出されるだろう(ステップ612および614)。大きなメッセージ用、または、ネットワークが重く負荷される時に、これが、たぶん、そのケースであろう。
もし、vsend()612が呼出されて、特定された仮想ソケット用になんの予約も見出されないならば、vsend()612は、内部的にvreserve()606を呼出し、予約が到達するまでブロックし(すなわち、スリープし)、それから、送信し始めるだろう。もし、vsend()612が、予約なしで呼出されるならば、または、vreserve()606がゼロを返す以前は、vsend()606は、データを送信できるまでブロックするだろう。そのような場合、介在するタイム、たぶん、数秒が、浪費されるであろう。
アップストリームメッセージスケジューリングは、与えられたメッセージのためのvreserve()606への最初の呼出で、または、問題の仮想ソケットのためになんの予約もされて来なかった時のvsend()612への呼出で、生じるだろう。vsend()612APIは、(a)その仮想ソケットのための予約テーブル内に予約が存在するまで、および、(b)reservation_slot内のSlotIDが現在のSlotIDとマッチするまでは、仮想ソケットのためのデータを実際に送信することはないだろう。メッセージスケジューリングプロセスは、以下のように、機能するだろう。
呼出がvreserve(vsocket_descriptor)へなされると仮定すると、次のようになる。すなわち、
(1)現在タイムのSlotIDを計算し、そこでは、current_slot_id=#_of_whole_seconds_since_01/01/00_00:00:00*125+fraction_of_current_second/0.008である。
(2)もし、vsocket_descriptorが、予約待ち行列内の位置Xにて見出されるならば、queue_pos=Xに設定して、スキップしてステップ5に進む。そうでなければ、queue_pos=size_of_reservation_queue+1に設定する。
(3)もし、queue_pos==1(すなわち、待ち行列が空)ならば、reservation_slot=current_slot_id+(tm_random()%(131072.0/send_probability+0.5)に設定する。
(4)予約待ち行列にvsocket_descriptorを加える。
(5)vreserve()の結果として(8*(reservation_slot–current_slot_id)*queue_pos)を返す。
図4(b)に戻って参照すると、vsend()を使用して全データが送信された後(すなわち、全て送信した?=Yes(ステップ614))に、前もって接続された仮想ソケットを経由してサーバーからメッセージを受信するために、呼出が、vrecv()になされるだろう(ステップ616)。vrecv()呼出(ステップ616)は、接続された仮想ソケット記述子(vsock)、受信データブッファー(buf)へのポインター、および、受信データバッファーのバイトでのサイズ(len)を示す入力パラメータを受け入れるだろう。もし、サーバーへの仮想接続が任意の理由によってクローズするならば、それは、実際に受信されたバイトの数またはゼロ(0)を返すだろう。実際に受信されたバイトの数は、バッファーのサイズよりも小さいであろうから、vrecv()616は、全てのメッセージが受信完了(すなわち、全て受信した?=Yes(ステップ618))まで、繰り返して呼出されるだろう。もし、全てのデータが受信完了でなく(すなわち、全て受信した?=No(ステップ618))、サーバーとの接続がクローズされなかった(すなわち、接続がクローズした?=No(ステップ620))ならば、vrecv()は再び呼出されるだろう(ステップ616)。
vrecv()616の場合には、TMクライアント420が適切なACKパケットを発生して、それをTMサーバー210に返送しなければならないことを除いて、vrecv()616の実装は、vsend()612と類似しているだろう。また、vrecv()616は非同期的に動作できるので、TMサーバー210からデータパケットを受信することなくVRECV_WASTEミリ秒が経過した後か、または、提供された受信バッファーが充填完了時に、それは、呼出元に返すべきである。
図4(b)に戻って、もし、全てのデータが受信完了した(すなわち、全て受信した?=Yes(ステップ618))、または、サーバー接続がクローズされた(すなわち、接続がクローズされた?=Yes(ステップ620))ことが決定されるならば、クライアントノードが仮想ソケットをクローズするためにvclose()を呼出すだろうし(ステップ622)、プロセスはストップする(ステップ624)。小さな数の利用可能な仮想ソケットがあるだろうから、必要とされない時にそれらをクローズすることは、重要である。vclose()622の実装は、vsockfdによりインデックスを付された仮想ソケットテーブル内の仮想ソケット構造を解放することを必要とするだろう。
図4(b)に描写された同期(ブロッキング)HTTPトランザクションは、受信されるべき応答を待ちながら追加のプロセシングを行う必要がない多くのアプリケーションに対しては、十分であろう。しかし、データを待ちながらその他のタスクを実行しなければならないアプリケーションに対しては、非同期(非ブロッキング)コールバックメカニズムが、図4(c)に描写されたように実装されるだろう。この非同期メカニズムは知られているselectAPIとは異なるだろうが、使用して実装するためにははるかに簡単であろう。
さて、図4(c)を参照すると、初期のステップは図4(b)のこれらと同一である。プロセスをスタートする時(ステップ600)、vsocket()が仮想ソケット記述子を割り当てるために呼出される(ステップ602)。そして、vconnect()が仮想ソケットをTMサーバー210に接続するために呼出される(ステップ604)。
次に、vasynch()が、仮想ソケットを非同期コールバック関数と関連させるために、呼出される(ステップ605)。この関数は、vsocket()を経由して得られた仮想ソケット記述子(vsockfd)と、および、vsockfd、メッセージコード(msg)と任意のアクティビティ特有の情報(データ)を参照するコールバック関数への参照とを受け入れるだろう。仮想ソケット上の全ての将来アクティビティ(例えば、エラー、予約、受信されたデータなど)は、コールバック関数を起動してアクティビティを識別する適切なメッセージコードを特定するだろう。メッセージコードは以下の如くであろう。すなわち、
VAERROR:実際のエラーコードに対して、verrnoをチェックする。
VARESOPEN:vreserve()を経由してオープンされる予約が、ここではオープンである。vsend()を経由してデータを送信する。
VAGOTDATA:データがこの仮想ソケットに対して受信された。それを得るために、vrecv()を呼出す。
VAGOTCONN:新しい接続がこの仮想ソケット上に到達した。それを得るために、accept()を呼出す。
vasynch()605の実装は、仮想ソケット記述子によりインデックスを付された仮想ソケット構造テーブルエントリーに仮想ソケットのコールバック関数を保存することを必要とするだろう。もし、接続が確立完了し、メッセージがアップストリームを送信したならば、パケットヘッダー内のConnIDが、受信仮想ソケットを識別するために使用されるだろう。アラートメッセージに対して、ConnIDとSeqNum用のヘッダースペースがTMサーバー210により取り込まれ、ポート数を保存するために使用されるだろう。このポートが、アラートを受信するために、バインドされたソケットを識別するのに使用されるだろう(ConnID、SeqNumおよびパケットヘッダーについての更なる情報に対しては、以下のパケットフォーマットセクションを参照のこと)。
図4(c)を続けると、vasynch()が呼出された(ステップ605)後、vreserve()への呼出が、示されたソケット上でトラフィック予約をなすためになされるだろう(ステップ606)し、プロセスがストップする(ステップ607)。
図4(c)に示されているように、送信および受信するプロセスは非同期であり、それぞれのプロセスをスタートするためにコールバック関数(すなわち、my_callback())に依存する。図の点線矢印は、その他のタスクがコールバック起動間で実行されるであろう期間を描写している。具体的には、データを送信するプロセスがmy_callback()(ステップ610)により示されるコールバック関数でスタートし(ステップ609)、vsend()への呼出(ステップ612)が続き、それからプロセスがストップする(ステップ613)。データを受信するプロセスは、同様である。それは、コールバック関数(すなわち、my_callback()610)で、スタート(ステップ615)し、図4(b)に記述された同じデータ受信ステップが続く。vrecv()は、全データが受信される(ステップ618)か、サーバー接続がクローズされる(ステップ620)まで、呼出される(ステップ616)だろうし、それから、vclose()への呼出(ステップ622)がなされるだろうし、プロセシングがストップする(ステップ624)。
図4(b)または図4(c)に描写されていなくて、有用であろう2個の追加の関数は、vlisten()とaccept()を含んでいる。vlisten()呼出は、示された(すなわち、通過された)バインドされた仮想ソケット(vsockfd)上で着信接続をリッスンするためにサーバーとして動作する必要のあるノードによって、使用されるだろう。そのような機能性は、アプリケーションサーバー(例えば、アラートメッセージ用)からの接続を待つノード用に適切であろう。vlisten()を呼出す前に、vsocket()とvbind()への呼出が、仮想ソケットを割り当てて、その上で(それぞれ)リッスンするポートを定義するために、なされるべきである。同期リッスンニングが多くのアプリケーション(例えば、OOBケーブルネットワークでのSTB)においてなにも意味をなさないだろうから、asynch()への呼出が、仮想ソケット非同期をなすために必要とされるだろう。vlisten()呼出は、直ちに返すでしょうし、非同期コールバック関数が、接続が到達する時に、VGOTCONNメッセージで起動されるでしょう。vaccept()呼出が定義され、そのような新しい接続を受け入れるために使用されるだろう。vbind()を経由してポートにバインドされる任意の非同期仮想ソケットは、接続が到達する時に、VGOTCONNメッセージを受信するでしょう。vaccept()呼出は、接続を受け入れて、データを送信および受信するために使用できる新しい同期仮想ソケット記述子を返すだろう。元のリッスニングソケット記述子(vsockfd)は、変化しないで、依然としてリッスンしているだろう。vaccept()によって返された仮想ソケット記述子は、もはや必要ではない時は、vclose()を使用してクローズされるだろう。
本発明の一実施形態によるHTTPの仮想ソケット実装の別の実施形態では、vreserve()606により提供される予約関数が、vsend()612とvrecv()616、および、提供されないvreserve()606呼出に含まれるだろう。この実施例では、(それぞれ)送信または受信されたバイト数を返すvsend()612とvrecv()616に加えて、各呼出は、帯域幅予約を透過的になして、データが直ちに送信または受信され得ない場合に、送信または受信スロットが利用可能になるまでミリ秒数を表す負の数を返すだろう。これは、図4(b)に描写されたvreserve()606〜vsend()612ループに示されたそれと同じ方法で、データを受信するために待機する間にクライアントノード上で追加のプロセシングが発生するのを許可することにより、vrecv()616のブロッキング実装での使用に対して有利であるだろう。それは、また、一つの非標準呼出(vreserve()606)を除去することによりAPIを簡略化するだろう。
パケットフォーマット
単一パイプ上で複数の種類のトラフィックをマネージするために、本発明の一実施形態は、図5(a)〜図5(d)に関して以下に特定されるように4個の別々のメッセージパケットタイプを定義するだろう。これらは図1に示されたTM/UDPプロトコルを含むだろう。
情報パケット
図5(a)は、例示的な情報パケット700のグラフィック描写である。TMサーバー210は、システム負荷状況とタイミング同期についての情報をコミュニケーションするために、これらの小さなUDPメッセージを全STB400に同時にブロードキャストするだろう。情報パケット700は以下のものを含むだろう。すなわち、
PacketType702(1バイト):有効なTMパケットを識別して、それが4つのタイプのいずれであるかを特定するであろう定数。全てのTMPacketType値702は、フィルターマスクとして使用できる高位の6ビット0xA8を含有するだろう。低位の2ビットはパケットタイプによって変化する。情報パケット700に対して、これらのビットは、情報パケット700PacketType0XA8&0x00=0XA8用の値をなす0x00である。
SynchSecond704(1バイト):0..119の範囲の値であって、パケットが、どの秒に、サーバークロックにより送信されたかを識別する。この値は、最新の偶数分のスタートからのオフセットであろう。
SynchPhase706(1バイト):このパケットを送信する前の同期秒内に経過したスロット(0..124)の数。
SendProb708(2バイト):送信パケット毎に課されるランダム遅延を計算するために使用されるだろう16ビット数。
データパケット
図5(b)は、例示的なデータパケット710のグラフィック描写である。データ送信アップストリームは、そのような、それぞれが単一スロット以内で送信されるのに十分小さいMTUサイズのパケットに分割されるだろう。ダウンストリームデータは、同じパケットフォーマットを使用するだろうが、ダウンストリームMTUサイズは、より大きいだろう。データパケット以下のものを含むだろう。すなわち、
PacketType722(1バイト):有効なTMパケットを識別して、それが4つのタイプのいずれであるかを特定するであろう定数。データパケット710に対して、PacketType値712は0xA9である。
ConnID714(1バイト):すべての仮想接続と関係付けられた仮想ソケットに対応するユニークな接続ID。
SeqNum716(1バイト):このフィールドの値は、メッセージ(フラグフィールドを参照のこと)内のパケットの位置に依存するだろうし、次の如くである。すなわち、
(1)もし(IF)、これがメッセージ内の最初のパケットでありパケット数が>1ならば、この値がメッセージ(1..256)マイナス1内のパケットの全数である(これは、最大アップストリームメッセージサイズが256*(MTU−4)、または、61,440バイトであることを意味する)。
(2)それ以外で、もし(ELSE・IF)、これがメッセージ内の最後のパケットであれば、この値がこのパケットのペイロードのサイズ(1..MTU−4)マイナス1を定義する(これは、受信が、最後のパケットを受信するまで、実際のメッセージサイズを知らないが、パケットカウントに基づく推定が多くてもMTU−5バイト、または、0.39%を浪費することを意味する)。
(3)それ以外であれば(ELSE)、この値はパケットのシーケンス数マイナス1である。
Flag718(1バイト):以下のビットフラッグを含有するビットベクトル。すなわち、
FirstPacket:もし、これがメッセージ内の最初のパケットであれば、(例えば、=1)に設定する。
LastPacket:もし、これがメッセージ内の最後のパケットであれば、(例えば、=1)に設定する。
Resend:もし、これが、このパケットが送信される初回ではないならば、(例えば、=1)に設定する。
Alert:もし、これがサーバー側送信元の「アラート」メッセージならば、(例えば、=1)に設定する。
残りの4フラッグビットは、将来使用のために予約されるだろう。
サーバー送信元のメッセージ(すなわち、アラート)に対しては、IPアドレスがSTB400を識別するために使用されるだろう。ConnID614とSeqNum616用のヘッダースペースは、2バイトを提供するために組み合わされ、そこでは、TMサーバー210がポート数を保存するだろう。このポートは、それから、ポートバインディングに基づいて、どの仮想接続がアラートを受信するかを識別するために、使用される。アラートメッセージは、Flagフィールド618内のAlertビットを経由して識別される。全アラートメッセージは、(ダウンストリームMTU−5)バイト以内に収まらなければいけない。
SeqNum616の定義における「マイナス1」に関しては、例示的なメッセージが、いつも1個と256個のパケットの間で構成されているが、1個のバイトが0と255の間の整数を表わす。従って、SeqNum値616は、いつもそれが表わす値より1小さい。
ACKパケット
図5(c)は、例示的なACKパケット720のグラフィック描写である。データパケット710の受信が、これらのパケットの一つを返信することによりアクノリッジされるだろう。ACKパケット720は以下のものを含むだろう。すなわち、
PacketType722(1バイト):有効なTMパケットを識別して、4つのタイプのどれであるかを特定するだろう定数。ACKパケット720に対して、PacketType値722は0xAAである。
ConnID724(1バイト):受信されたデータパケット710からのConnID値714。
SoFarCt726(1バイト):最初の欠落パケット以前に、これまでに受信されたメッセージのパケット数。
ACKビット728(1バイト):パケット#SoFarCt後の、8パケットまでのアクノリッジメント。全ての送信されたデータと同様に、それは、高位のビットによりアクノリッジされたSoFarCt後の最初のパケットおよび低位のビットによりアクノリッジされたSoFarCt後の8番目のパケットと共にネットワークバイト順であろう。
SendProb729(2バイト):送信パケット毎に課されるランダム遅延を計算するために使用される16ビット数。
プローブパケット
図5(d)は、例示的なプローブパケット730のグラフィック描写である。通常、メッセージ内の全データパケット710は、最後のパケットを除いて、最大サイズのペイロード(MTU−6)を含有しなければならない。これが、パケットサイズを推定することを容易にする。しかしながら、負荷情報が利用できない時は、メッセージの最初のパケットが、対応するACK内の負荷情報を得るために、プローブとして送信される必要があるだろう。プローブパケット730は、望ましくは、小さいだろうし、一つのMACセルペイロード(34バイト)以内に収まるだろう。従って、プローブパケット730は、(PacketType=0xAB付きであるが)ペイロード無しのメッセージ732の最初のデータパケットと同じ6バイトのヘッダー情報を含有する。SeqNum値736は、後続の1〜256データパケットのみをカウントして、任意のバッファー長計算において、プローブをパケットとしてカウントしない(予測ネットワーク負荷におけるプローブデータの更なる使用の記述に対するTMサーバーセクションを参照のこと)。
TMクライアントデータ
図6(a)〜図6(c)は、記述されたAPIをサポートするためにTMクライアント420の一実施形態において使用されるだろう構造を描写している。TMクライアント420(図には描写されていない)により利用されるであろう、それらとその他のデータタイプと変数は、次の如くであろう。すなわち、
(1)図6(a)に描写されるように、仮想ソケット構造810は、仮想ストリームソケットを実装するために必要とされる全情報を含有するだろう。これは、状態情報812、ポートバインディング813、非同期コールバック情報814、リモートホストIP815とポート816、および、プロセスされる現在メッセージ817についての情報を含むだろう。
(2)tm_socket変数は実際のデータグラムソケット記述子を含有して、着信メッセージをリッスンするために使用されるポートのVPORTにバインドされるだろう。このソケットは、もし可能ならば、クライアントノードエージェントまたはアプリケーション(例えば、EBIFユーザエージェント410)がアクティブである限りオープンのままであるべきである。そうでなければ、ソケットはオープンされて、必要に応じて初期化されるだろう。一般的に、このソケットは標準ソケットAPIを経由して作成される。しかしながら、いくつかの実装では、他のソケット取得APIが提供されるだろう。
(3)send_probability変数は、vsend()612を経由してパケット送信をスケジュールするために、vreserve()606により使用される送信確率を表す値を含有するだろう。浮動小数点数(すなわち、0と1の間の値)として確率を表すよりはむしろ、この値は、一番近い整数へ切り上げた、送信確率と65,536の積として、もっと便利に表されるだろう。この変数に含有される値が、情報700とACKパケット720の両方内にてTMサーバー210により送出されるだろう。
(4)図6(b)に描写されているように、仮想ソケットテーブル820は、S仮想ソケット構造810を含有するテーブル(すなわち、アレイやリストなど)であろうし、そこでは、Sは利用可能なスペースに基づいた実装固有であるが、現在の実施形態に従って最大で16である。ソケットIDは、TMパケットヘッダー内のConnID(すなわち、接続ID)フィールド714、724、734であるように、このテーブル内へのインデックス(例えば、1..Sまたは0..S−1)である。ソケットIDは、また、仮想ソケット記述子として知られるだろう。
(5)verrno変数が、プログラマーにエラーをレポートするために、TM仮想ソケットにより使用されるだろう。この変数は、標準ソケットAPIにより使用されるerrno変数に加えられるだろう。
(6)図6(c)に描写されているように、予約待ち行列800は、送信するためのパケットを持つ仮想ソケット820をそれぞれが識別する予約のアレイ(待ち行列)であろう。新しいパケットが予約待ち行列800に加えられるか、または、待ち行列内の最初のパケットが送信されるたびに、待ち行列内の次回のパケットを送信する時間が計算されて、reservation_slotに保存されるだろう。この計算は、以下において、reservation_slotの定義にて与えられ、そこでは、current_slot_IDは、計算時のSlotIDを指す。
(7)reservation_slot変数はSlotID(または、それと等価)だろうし、そこでは、次回のパケットが送信されることになる(予約待ち行列を参照のこと)。新しいsend_probabilityが、ACK720または情報パケット700のいずれかを介してクライアントに到達するたびに、reservation_slotの値が再計算されなければならない。
reservation_slot=current_slot_ID+(tm_random() %
(131072.0/send_probability+0.5))
(8)time_offset_msec変数は、タイムオフセットを示すだろうし、それは、クライアントノード(例えば、STB)上の内部クロックタイム(GMT)に付加される時に、時刻を、TMサーバー210およびその他のクライアントノードと同期させる。SlotIDを正確に計算するため、および、要求されるだろうその他の能力のために、正確な時刻が必要とされる。
メッセージの保証された配信
以下の段落では、メッセージの保証された配信を実施する一実施形態について、さらなる詳細が提供される。まず、予約が特定の仮想ソケットに対して既に存在しており予約されたSlotIDが到達したと仮定して、モード1のコンテキストにおけるvsend()612について、詳細が提供される。そして、その他のモードにとって必要であろう追加の記述がなされる。
上記したように、vsend()612は、そのBSDソケットカウンターパートやsend()506のように、一つの呼出にて全メッセージを送信することを保証されていないので、それは、メッセージ(または、部分メッセージ)が送信されるまで、ブロックするでしょう。これは、send()506の問題ではないであろう。しかし、本発明のさまざまな実施形態は、スロット衝突を回避するように経時的にメッセージパケットを広めるので、アプリケーションが、返答するためにvsend()612を待っている多くの秒期間に、ブロックされ得る。このため、もしデータパケットのための予約タイムが長いならば、vsend()612が、呼出元に、制御を返すでしょう。全メッセージが送信されない時に、vsend()612は、現在のsend_probability値に基づいて、次回のvsend()612呼出のための予約を作成するだろう。
一つの例示的な実施において、vsend()612は、メッセージを(MTU−5)バイト(または、最後のパケットに対してはより少ないバイト)のパケットに分解して、vreserve()606によってスケジュールされるように、それらのパケットを送信する。vsend(vsocket_descriptor、message_ptr、message_length)をプロセシングすることが、次の如く生じるであろう。すなわち、
(1)data_sent=−1を設定し、resend_count=0を設定する。
(2)wait_time=vreserve(vsocket_descriptor)を設定する。
(3)もし(IF)、wait_time>VSEND_WASTEならば、verrno=VSENDLATERを設定し、data_sentを返す。
(4)もし(IF)、resend_count>=VSEND_TRIESならば、verrno=VMAXRESENDSを設定し、data_sentを返す。
(5)もし(IF)、wait_time>0ならば、wait_timeミリ秒の期間スリープし、それから、ステップ2に戻る。
(6)もし(IF)、vsocket_descriptorに対して現在進行中のメッセージが送信(send)状態であり、そのメッセージバッファーがmessage_ptr[message_length]を含有しているならば、スキップしてステップ8に進む。
(7)仮想ソケットテーブル(図6(b)と関係付けられた議論を参照)内のvsocket_descriptorに対するメッセージプログレスデータを初期化する。
(8)もし(IF)、メッセージの全てのパケットが、未だ一度も送信完了していなければ、送信するために次回のパケットを構築し、それに応じて仮想ソケット構造を更新し、そして、スキップしてステップ11に進む。
(9)もし(IF)、全ての送信されたパケットが、未だアクノリッジ完了していなければ、最小数の否定応答されたパケットを再構築し、再送信(resend)フラッグビットを設定し、それに応じてメッセージ構造を更新し、resend_countをインクリメントし、そして、スキップしてステップ11に進む。
(10)仮想ソケットのメッセージ情報を更新し、message_lengthを返す。
(11)次回のSLOT境界を待って、必要ならば、(再)構築されたパケットを送信する。
(12)data_sent=SoFarCt*(MTU−4)を設定して、ステップ2に戻る。
vsend()612のこの定義は、vsend()612がプロセシングしている間に、情報700とACKパケット720の両方の受領が、非同期信号割り込みを介して取り扱われることを前提としている。特に、それは、情報パケット700がsend_probability708とreservation_slotを更新すること、および、ACKパケット720がSoFarCt726とConnID724によって定義された仮想ソケット構造810におけるACKビット728フィールドを更新することとを前提としている。すべてのデータパケットが、ACKパケット720によって、アクノリッジされる必要はない。実際に、ACK720の頻度は、サーバー負荷(すなわち、send_probability)における変化率とアウトオブシーケンスパケットの受信比率に反比例するだろう。理想的には、軽い負荷の下で、ACK720は、4番目の受信パケット毎に送信されるだろう。さまざまな実施形態において、唯一の要求は、ACKパケット720がメッセージの最初と最後のパケットの両方に対して発生されなければならないことであろう。
モード2において、仮想ソケットがvsocket()602でオープンされるまでtm_socketが割り当てられずにポートのVPORTにバインドされることを除いて、上記変更は何もないし、send_probability708を定義するために情報パケット700が受信されるまでは、vreserve()606がブロックするでしょう。
モード3において、send_probabilityがデフォルト送信確率値であると仮定すると、vreserve()606、および/または、vsend()612は、メッセージに対してプローブパケット730を送信しなければならないし、先に進む前にプローブ(実際の送信確率値を提供している)に対してACKパケット720を受信しなければならない。短いタイムアウト(例えば、3秒)以前のこのプローブのACK720の受信失敗は、呼出を失敗させて、verrnoにて適切なエラーを設定する。
仮想ソケット
以下の段落では、仮想ソケット実装の一実施形態がさらに記述される。
本発明のさまざまな実施形態によるトラフィックマネージメントは、単一のデータグラムソケット(すなわち、tm_socket記述子)を使用して以下の要求を満足するように努めるだろう。すなわち、
(1)複数のストリームソケットの効果を模擬する、
(2)TMサーバー210からのブロードキャストである情報パケット700をリッスンする、および、
(3)アプリケーションサーバーからクライアントノード(例えば、STB400)へのユニキャストであるアラートメッセージをリッスンする。これは、全ての3つのモードにおいてトゥルーである。相違は、いかに長いデータグラムソケットがリッスニングのスタート上で保持されるかだけである。
vsend()612とvrecv()616以外のTMクライアントAPIは、tm_socketで何もしないであろう。その代わりに、それは、データパケットを送信または受信する時に後続して使用される仮想ソケットテーブル820(または、予約待ち行列800)にて、情報を修正するだろう。例えば、ACKパケット720またはデータパケット710が受信される時に、パケット内のヘッダーフィールドは、どのソケットが、そして、これによりどのコールバック関数が実際のパケットの受領者であるかを決定するために、仮想ソケットテーブル820にてデータとマッチングされるだろう。
割り当てられたtm_socketがVPORT(すなわち、1962)にバインドされ、信号メカニズムを経由して着信トラフィックに対して「リッスンする」。着信パケットのpacket_typeフィールド702、712、722、732が、非TMパケットをフィルター除去するため、および、受信されるだろうさまざまなパケットタイプを適切に取り扱うための両方のために、検査される。情報パケット700は、トラフィックレポーティングとクライアントクロック同期セクションに開示されているように、TMサーバー210とTMクライアント420により内部的に取り扱われるだろう。ACK720とデータ710パケット(アラート以外)は、パケットが所属する仮想ソケット接続を識別するConnIDフィールド714、724(仮想ソケットテーブルへのインデックス)を含有するだろう。アラートメッセージは、FlagフィールドビットとAlertにより識別されるだろうし、ConnIDとSeqNumビットは、2バイトポート数を定義するために組み合わされて、そのポート数にバインドされた仮想ソケットがメッセージの受領者である。
TMクライアント420は、tm_socketのソケット上のアクティビティ(またはエラー)がある時に、さまざまなTM内部ルティーンを呼び出すために、非同期I/O信号通信(SIGIO)に依存するだろう。例えば、(vasynch()605を経由して)仮想ソケットと関係付けられたTM非同期コールバック関数は、信号取扱者により呼出されるだろう。
データの送信および受信のためのさまざまな実施形態が、メッセージセクションの保証された配信において、より詳細に記述される。
メッセージデータ圧縮
ケーブルOOBネットワーキングコンテキストの一つの特異性は、99%のトラフィックがHTTPメッセージからなるであろうことである。これにより、シンプルな静的圧縮方法が、著しい節約を生み出すことができる。静的テーブルベースのスキームは、以下と同様に、トランスポートに先立って全メッセージを圧縮するために採用されるだろう。解凍は簡潔であるべきである。
char*string[128]={
「HTTP」, /*他のHTTPキーワードを加える*/
「コンテンツ長」, /*他のヘッダーストリングを加える*/
「&」, /*他のエンティティを加える*/
「amr」, /*他のIAMキーワードを加える*/
「¥r¥n」, /*他の共通のマルチ文字ストリングを加える*/
/*123以上のストリングを必要とする*/
/*一度、全ての前記ストリングが定義される、a*/
/*高速スイッチベースのルックアップメカニズム*/
/*実装できる*/
},

static char output[MAX_MSG];
static int outlen;

void compress(char*message、 int inlen) {
int pos, code;

outlen=0;
for (pos=0; pos<inlen; code<0?pos++:0) {
for (code=0; code<128; code++) {
if ( (code[0]==message[pos])
&& !strncmp(&(message[pos]), string[code]、 strlen(string[code]))
) {
output[outlen++]=(char) −code;
break;



/*結果は長さを有する‘output’である、‘outlen’*/
この圧縮スキームは、2進数データを破損しないよう意図されている。これにより、それは、また、必ずしもテキストデータを送信しないであろう非HTTPプロトコルに対して適切だろう。
送信確率を計算する
以下の段落では、送信確率値を計算する例示的な方法が記述される。
TMクライアント420との実際のコミュニケーションを取り扱うTMサーバー210と帯域幅調整コード間のインターフェースが、以下のように、単一のAPI呼出を使用することにより実施されるだろう。すなわち、
int got_packet(int size,int isOutOfOrder)
TMサーバー420が任意のクライアントからパケットを受信するたびに、それは、got_packet()を直ちに呼出すべきである。パケットのサイズ(すなわち、ヘッダー+ペイロード)は、サイズパラメータで渡されるだろう。もし、パケットのシーケンス数が期待値(すなわち、前回のシーケンス数+1)でなければ、その時は、非ゼロ(トゥルー)値がisOutOfOrderで渡されるだろうし、そうでなければ、0(フォールス)値が、このパラメータで渡されるだろう。
got_packet()のリターン値は、0か、または、正の非ゼロの整数かのいずれかだろう。もしリターン値が0であるならば、さらなるアクションは要求されない。しかしながら、もし値が非ゼロであるならば、リターン値は新しい送信確率として使用されるべきであり、ACK720と情報パケット700を経由して全TMクライアント420にコミュニケーションされるべきである。
一実施形態において、送信確率値は、(HFCノード当たりの)ターゲット帯域幅と直近の将来に対する(HFCノード当たりの)期待帯域幅との間の比であろう。ターゲット帯域幅は、単に、最大直下の結果を保持するために小さい調節因子(例えば、0.9)を乗算した、(HFCノード当たりの)構成最大帯域幅である。期待帯域幅は、さらなるパケットを送信するであろう各HFCノードにおける「アクティブ」STB(すなわち、クライアントノード)の数である。これは、2*P/SPoldとして推定されるだろうし、そこでは、PはSLOT当たりの受信されたパケットの計算平均数であり、SPoldは送信確率の前の値である。
また、調節因子、K、は、システム構成値と時折の過渡効果における不正確さを考慮して、定期的に計算されるだろう。
情報パケットのブロードキャスト頻度
以下の段落では、情報パケット700のブロードキャスト頻度を決定する例示的な方法が記述される。
情報パケット700発生の頻度は、got_packet()のリターン値により御されるだろう。この関数が非ゼロ値を返すたびに、新しい情報パケット700がブロードキャストされるべきである。情報パケット700ブロードキャストの頻繁すぎか、または、擬似的な発生を防ぐために、注意が払われるべきである。
具体的には、got_packet()が、下記のたびに、別の情報パケットブロードキャストを経由して展開するように、非ゼロsend_probability値を返すであろう。すなわち、
(a)最後の情報パケットブロードキャストから10秒が経過した、または、
(b)最後の情報パケット情報パケット700ブロードキャストから少なくとも0.5秒が経過し、アウトオブオーダパケットが見られる、または、
(c)最後の情報パケットブロードキャストから少なくとも0.5秒が経過し、パケット/第二レートが増加傾向である。
そうでなければ、got_packet()が、ゼロ(0)を返すだろうし、send_probabilityの前の値が有効のままである。
帯域幅調整のシミュレーション
このセクションは、本発明の一実施形態による帯域幅調整方法の一実施形態のシミュレーションの記述を提示する。どのようにシミュレーションが行われたかの記述が、図7(a)〜図7(c)に描写されているように、結果の記載と共に提示される。
シミュレーションはQPSKネットワークのモデリングを含み、そこでは、TMサーバー210が、ネットワークを経由して、複数のTMクライアント420とコミュニケーションする。QPSKネットワークモデルが、アップストリームとダウンストリームスループットをモニターし、帯域幅制限を越えるいずれかの方向のパケットを捨てる。
スループットが理論的帯域幅制限に近づくにつれて、パケット損失の確率は1に近づく。理論的最大パケットスループットアップストリームを(1/e)*256,000bps=94,000bpsとし、全アップストリームパケット(TMヘッダーと28バイトのUDP/IPヘッダーを含む)の総サイズが、Sバイト(または、s=S*8ビット)と仮定すると、その時は、失われて(そして完全に無視される)次回のパケットの確率が、Ppacket_loss(s)=(s/94,000)として与えられる。プログラム的に、以下のIF条件が、これをテストする。すなわち、
もし(if) ((tm_random()%94000)<s)であれば、{
;/*パケットが失われる*/
} それ以外であれば(else) {
;/*パケットをプロセスする*/
図7(a)〜図7(c)に描写されたシミュレーション結果において、大きな(構成可能)数のSTB400とHFCノード300が、構成可能なテスト期間(そこでは、1時間に設定)の各秒において、全125SLOTに対してシミュレーションされた。
図7(a)は、帯域幅調整無しのネットワーク負荷のシミュレーションを描写しているグラフであり、そこでは、(HFCノード300当たりの)生の帯域幅負荷が、1時間シミュレーションの各秒で平均化される。
図7(b)は、帯域幅調整有りのネットワーク負荷のシミュレーションを描写しているグラフであり、図7(a)のように同じ生の帯域幅トラフィックにさらされている時の、HFCノード300当たりの最大40Kbpsに対して、構成されている。尚、平均のトラフィック負荷は、ここでは、40Kbpsで制限され、高負荷の期間は、それぞれの場合において、数秒長い。
図7(c)は、帯域幅調整有りと無しのシミュレーションされたネットワーク負荷間の相違を描写しているグラフである。このグラフは、前の2つのグラフを重ねており、帯域幅マネージされたトラフィックに対する60・秒動作平均を示す線を含む。この線は、本明細書に記載されているように、本発明のさまざまな実施形態の帯域幅調整態様の有益な影響を示している。
本明細書中に開示された、実施例または実施例の一部分は、専用目的のコンピューター、マイコンを有するコンピューターシステム、ミニコン、または、メインフレーム、例えば、プログラムされたマイクロプロセッサ、マイクロ・コントローラー、周辺用集積回路要素、CSIC(顧客専用集積回路)またはASIC(アプリケーション専用集積回路)またはその他の集積回路、ロジック回路、デジタル信号プロセッサ、FPGAやPLDやPLAまたはPALのようなプログラマブルロジックデバイス、または、本明細書中に記載されたプロセスの任意のステップを実施できる任意のその他のデバイスまたはデバイスの配置を含む、多彩な技術のいずれかを利用するだろう。
本明細書中に記載された任意のオペレーションを実行するためにコンピューターオペレーテイングシステムを構成する一連のインストラクション(例えば、コンピューターソフトウェア)は、要望により、多彩なメディアまたは媒体のいずれかに含有されるであろうことが、理解されるべきである。さらに、一連のインストラクションによりプロセスされる任意のデータは、また、多彩なメディア又は媒体のいずれかに含有されるだろう。つまり、一連のインストラクションを保持するために利用される特別な媒体(例えば、メモリー)または本明細書中に記載された実施例において使用されるデータは、例えば、様々な物理形式または送信のいずれかを呈するだろう。例示的には、媒体は、コンパクトディスク、DVD、集積回路、ハードディスク、フロッピーディスク、光学ディスク、磁気テープ、RAM、ROM、PROM、EPROM、配線、ケーブル、ファイバー、コミュニケーションチャンネル、サテライト送信または他のリモート送信、並びに、任意の他の媒体またはコンピューターにより読み取られるだろうデータのソースの形式であろう。
コンピューター実行中の実行可能なコンピューターソフトウェアのような、本明細書中に記載されたさまざまなコンポーネントは、リモート的に設置されるだろうし、一つ以上のコンピュータネットワーク上で電子送信を介して互いにコミュニケーションするであろうことが、また、理解されるべきである。本明細書中で言及したように、ネットワークは、制限されるものではないが、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、インターネットのようなグローバルネットワーク、公衆電話交換回線網ネットワークのような電話ネットワーク、ワイヤレスコミュニケーションネットワーク、携帯電話ネットワーク、イントラネットなど、または、それらの任意の組み合わせを含むだろう。さまざまな実施形態において、ネットワークは、スタンドアロンネットワークとしてまたは互いに協力して動作している、一つまたは任意の数の、上述のネットワークの例示的なタイプを含むだろう。本明細書中の用語ネットワークの使用は、ネットワークを単一のネットワークに制限することを意図するものではない。
本発明が、広い実用性と用途に敏感であることは、当業者により容易に理解されるでしょう。本明細書中に記載された以外の、本発明の多くの実施例と適応、並びに、多くの変更、修正および等価配置が、発明の本質または範囲から逸脱することなく、本発明とその前述の説明により、明らであるか、または、合理的に示唆されるでしょう。
前に述べたことは、この発明の実施形態を例示して記述しているが、本発明がそこにて開示された構成に限定されないことが、理解されるべきである。本発明は、その精神または本質的な属性から逸脱しないで、他の特定の形式において具体化できる。

Claims (24)

  1. 集中型のトラフィックマネージメントサーバー少なくとも一つのクライアントノードによって送信される着信パケットのサンプル連続的にモニターするように、前記トラフィックマネージメントサーバーを使用してネットワーク経由でデータトラフィックをモニターすることと、
    前記トラフィックマネージメントサーバー着信パケットの前記サンプルの頻度、変化率およびコンテンツに基づい負荷情報を演算するように、ネットワーク負荷を予測することと、
    前記トラフィックマネージメントサーバーと前記少なくとも一つのクライアントノードとがデータパケットの今後の送信用にスケジュールされた時間を決定するメッセージを交換するように、ネットワークトラフィックをスケジューリングすることと、
    前記少なくとも一つのクライアントノード前記スケジュールされた時間に前記ネットワーク経由前記データパケットを送信するように、データを送信することと、
    を含むコミュニケーションネットワークの帯域幅を調整する方法。
  2. 必要ならば、さらに、前記データパケットを再送信することを含み、もし、前記トラフィックマネージメントサーバーからアクノリッジメントが受信されないならば、前記少なくとも一つのノードが前記データパケットを再送信することを特徴とする請求項1に記載の方法。
  3. 前記ネットワークが、インタラクティブなデジタルケーブルテレビネットワークであることを特徴とする請求項1に記載の方法。
  4. 前記ケーブルテレビネットワークが、ユーザデータグラムプロトコル(UDP)上のハイパーテキストトランスファープロトコル(HTTP)を使用して、複数のセットトップボックスと、アウトオブバンドチャネルを経由にてコミュニケーションするエンハンスドテレビジョンプラットフォームサーバーを含むことを特徴とする請求項3に記載の方法。
  5. 前記セットトップボックスが、EBIFユーザエージェント上で作動しているエンハンスドテレビジョンバイナリーインターチェンジフォーマット(EBIF)を使用して実施されるインタラクティブなアプリケーションを起動することを特徴とする請求項4に記載の方法。
  6. 前記トラフィックが、インタラクティブなアプリケーションコミュニケーション、ボーティングとポーリングデータ、テレビ利用状況データ、ユーザ嗜好と統計トラフィック、および、Tコマース情報の内の少なくとも一つを含むことを特徴とする請求項1に記載の方法。
  7. 前記スケジューリングすることと前記送信することが、
    前記トラフィックマネージメントサーバー上のネットワークトラフィック状況に応じて送信・確率の値を設定することと、
    前記送信・確率の値およびクロック同期情報を、前記トラフィックマネージメントサーバーから前記少なくとも一つのクライアントノードへ送信することと、
    前記送信・確率の値および同期情報を、前記少なくとも一つのクライアントノードにおいて、ランダム化したデータ送信タイムを演算するために利用することと、
    前記演算されるランダム化したデータ送信タイムに、前記少なくとも一つのクライアントノードにより、データパケットを送信することと、
    前記トラフィックマネージメントサーバーによって前記少なくとも一つのクライアントノードへアクノリッジメントパケットを発生して送信し、そこでは、前記アクノリッジメントが前回の送信の成功を示して次回の送信用の新しい送信・確率の値を提供していることと、
    もしアクノリッジメントパケットが受信されなかったならば、新しいデータ送信タイムに、前記少なくとも一つのクライアントノードよって前記データパケットを再送信することと、
    を含むことを特徴とする請求項1に記載の方法。
  8. 前記送信・確率の値が、タイムウィンドウに反比例しており、前記次回のパケットが送信されるべきで、前記ランダム化したデータ送信タイムが前記ウィンドウ内でランダムタイムであり、前記アクノリッジメントパケットとデータパケットの各々が、前記ウィンドウ内で、ディスクリートなタイムスロット境界上で送信されることを特徴とする請求項7に記載の方法。
  9. 前記送信・確率の値が、伝送エラーおよびアクノリッジメントタイムアウトなしで、時間の経過とともに、前記少なくとも一つのクライアントノードにて、漸進的に増加されることを特徴とする請求項7に記載の方法。
  10. 前記送信確率が、送信エラーとアクノリッジメントタイムアウトの内の少なくとも一つに応じて減少されることを特徴とする請求項7に記載の方法。
  11. 前記トラフィックマネージメントサーバーから送信・確率の値およびクロック同期情報を前記送信することが、前記少なくとも一つのクライアントノードへの周期的なブロードキャストを経由して行われることを特徴とする請求項7に記載の方法。
  12. 前記トラフィックマネージメントサーバーから送信・確率の値およびクロック同期情報を前記送信することが、少なくとも一つの個別にアドレスされたクライアントノードへのナローキャストを経由して行われることを特徴とする請求項7に記載の方法。
  13. 前記トラフィックマネージメントサーバーから送信・確率の値およびクロック同期情報を前記送信することが、前記少なくとも一つのクライアントノードが前記トラフィックマネージメントサーバーへ前記データパケットを送信する権利をリクエストするプローブデータパケットを送信した後に、生じることを特徴とする請求項7に記載の方法。
  14. 前記ネットワークが、インバンドケーブルテレビ、DSL、または、モバイルブロードバンドネットワークであることを特徴とする請求項1に記載の方法。
  15. 前記ネットワークが、ユーザデータグラムプロトコル(UDP)、または、送信制御プロトコル(TCP)を利用することを特徴とする請求項1に記載の方法。
  16. 前記トラフィックマネージメントサーバーが、トラフィックマネージメント情報を具備する少なくとも一つのUDPパケットを少なくとも一つのTCPパケットへ変換するUDP→TCPリレーサーバーとしての役割を果たすことを特徴とする請求項1に記載の方法。
  17. 前記少なくとも一つのクライアントノード上で作動しているトラフィックマネージメントクライアントが、トラフィックをスケジューリングすることとデータを送信すること、および、クライアントアプリケーションをサポートしてデータを再送信することとをマネージすることを特徴とする請求項2に記載の方法。
  18. 前記トラフィックマネージメントクライアントが、前記クライアントアプリケーション用の標準ストリームソケットアプリケーションプログラミングインターフェースを模倣して、単一データグラムソケットまたはポートを使用しながら、複数の同時仮想ストリームソケットおよび接続を提供することを特徴とする請求項17に記載の方法。
  19. 前記クライアントアプリケーションが前記データを送信する前の前記スケジュールされたデータ送信時間を待つように、データの前記送信および再送信が、同期方式で実施されることを特徴とする請求項17に記載の方法。
  20. 前記ネットワークがデータ送信の準備ができた時に、コールバックが前記トラフィックマネージメントクライアントによって前記クライアントアプリケーションへ発行されるように、データの前記送信および再送信が、非同期方式で実施されることを特徴とする請求項17に記載の方法。
  21. 前記スケジューリングし、送信し、再送信するステップが、前記少なくとも一つのクライアントノード上で作動している少なくとも一つのアプリケーションにさらされており、ユーザ側の動作を調整するために使用されることを特徴とする請求項2に記載の方法。
  22. データの前記送信および再送信が、さらに、静的テーブルを使用して前記データを圧縮することを含み、そこでは、ストリング値を有する複数の標準HTTPメッセージエレメントに、それぞれ、テーブルインデックスが割り当てられ、前記インデックスが前記ストリング値の代わりに送信され、前記ストリング値が前記静的テーブルを利用することで受信時に再構築されることを特徴とする請求項2に記載の方法。
  23. さらに、外部イベントに積極的に応答する帯域幅調整サーバーを含み、前記外部イベントが、時刻帯域幅負荷、時季帯域幅負荷および緊急ニュース速報の中から選択されることを特徴とする請求項1に記載の方法。
  24. ネットワークと、
    少なくとも一つのクライアントノードと、
    集中型のトラフィックマネージメントサーバーと、
    を含み、
    前記トラフィックマネージメントサーバーは、
    前記トラフィックマネージメントサーバー前記少なくとも一つのクライアントノードによって送信される着信パケットのサンプル連続的にモニターするように、前記ネットワーク経由でデータトラフィックをモニターし、
    前記トラフィックマネージメントサーバー着信パケットの前記サンプルの頻度、変化率およびコンテンツに基づい負荷情報を演算するように、ネットワーク負荷を予測し、
    前記トラフィックマネージメントサーバーと前記少なくとも一つのクライアントノードとがデータパケットの今後の送信用にスケジュールされた時間を決定するメッセージを交換するように、ネットワークトラフィックをスケジューリングする、
    ように構成されている、
    コミュニケーションネットワークの帯域幅を調整するシステム。
JP2014538989A 2011-10-25 2012-10-25 トラフィックスケジューリングを使用したネットワーク帯域幅調整 Active JP5982002B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161551203P 2011-10-25 2011-10-25
US61/551,203 2011-10-25
PCT/US2012/061844 WO2013063218A1 (en) 2011-10-25 2012-10-25 Network bandwidth regulation using traffic scheduling

Publications (3)

Publication Number Publication Date
JP2014531179A JP2014531179A (ja) 2014-11-20
JP2014531179A5 JP2014531179A5 (ja) 2016-08-25
JP5982002B2 true JP5982002B2 (ja) 2016-08-31

Family

ID=48135896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014538989A Active JP5982002B2 (ja) 2011-10-25 2012-10-25 トラフィックスケジューリングを使用したネットワーク帯域幅調整

Country Status (6)

Country Link
US (2) US8937866B2 (ja)
EP (1) EP2772020B1 (ja)
JP (1) JP5982002B2 (ja)
KR (1) KR101973590B1 (ja)
CA (1) CA2851825C (ja)
WO (1) WO2013063218A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012078190A1 (en) * 2010-12-09 2012-06-14 Checkpoints Llc Systems, apparatuses and methods for verifying consumer activity and providing value to consumers based on consumer activity
KR101385784B1 (ko) * 2011-11-30 2014-04-30 삼성에스디에스 주식회사 데이터 송신장치 및 그 방법과 전송률 결정 방법
US8873403B2 (en) 2012-02-21 2014-10-28 Avaya Inc. System and method for automatic DSCP tracing for XoIP elements
US9438524B2 (en) * 2012-02-29 2016-09-06 Avaya Inc. System and method for verifying multiprotocol label switching contracts
US8924581B1 (en) * 2012-03-14 2014-12-30 Amazon Technologies, Inc. Managing data transfer using streaming protocols
US9088612B2 (en) * 2013-02-12 2015-07-21 Verizon Patent And Licensing Inc. Systems and methods for providing link-performance information in socket-based communication devices
US9736041B2 (en) * 2013-08-13 2017-08-15 Nec Corporation Transparent software-defined network management
US9686180B2 (en) 2013-11-05 2017-06-20 Cisco Technology, Inc. Managing routing information for tunnel endpoints in overlay networks
US11695847B2 (en) 2014-08-14 2023-07-04 Nokia Solutions And Networks Oy Throughput guidance based on user plane insight
US10367738B2 (en) 2014-08-14 2019-07-30 Nokia Solutions And Networks Oy Throughput guidance based on user plane insight
US10225761B2 (en) * 2014-11-06 2019-03-05 At&T Intellectual Property I, L.P. Enhanced network congestion application programming interface
US10116493B2 (en) 2014-11-21 2018-10-30 Cisco Technology, Inc. Recovering from virtual port channel peer failure
US10142163B2 (en) 2016-03-07 2018-11-27 Cisco Technology, Inc BFD over VxLAN on vPC uplinks
US10333828B2 (en) 2016-05-31 2019-06-25 Cisco Technology, Inc. Bidirectional multicasting over virtual port channel
US11509501B2 (en) 2016-07-20 2022-11-22 Cisco Technology, Inc. Automatic port verification and policy application for rogue devices
CN107786454B (zh) * 2016-08-24 2020-04-07 中国电信股份有限公司 用于网络流量调度的方法和装置
US10193750B2 (en) 2016-09-07 2019-01-29 Cisco Technology, Inc. Managing virtual port channel switch peers from software-defined network controller
US20180123927A1 (en) * 2016-10-27 2018-05-03 Nanning Fugui Precision Industrial Co., Ltd. Method and device for detecting network packet loss based on software defined network
US10547509B2 (en) 2017-06-19 2020-01-28 Cisco Technology, Inc. Validation of a virtual port channel (VPC) endpoint in the network fabric
CN109936510B (zh) 2017-12-15 2022-11-15 微软技术许可有限责任公司 多路径rdma传输
CN109617719B (zh) * 2018-12-07 2021-07-02 上海云屹信息技术有限公司 一种移动宽带网络和固定宽带网络的协同管控的方法
US11076022B2 (en) * 2018-12-31 2021-07-27 Lyft, Inc. Systems and methods for implementing robotics frameworks
CN110166368B (zh) * 2019-04-30 2022-11-08 广州微算互联信息技术有限公司 一种云存储网络带宽控制系统及方法
US11425657B2 (en) 2019-04-30 2022-08-23 Dialog Semiconductor Korea Inc. Method and apparatus for transmitting sensor data with low power
CN110601887B (zh) * 2019-09-06 2021-11-26 苏州浪潮智能科技有限公司 一种带外管理的方法、服务器、计算机存储介质及终端
CN110620778B (zh) * 2019-09-25 2021-11-30 北京简约纳电子有限公司 一种同时支持socket同步和异步通信方式的方法
US11496925B2 (en) 2020-04-30 2022-11-08 The Nielsen Company (Us), Llc Methods and apparatus to determine virtual WiFi data rate
CN114647505B (zh) * 2020-12-21 2025-01-21 北京达佳互联信息技术有限公司 业务系统的容量管理方法、装置和电子设备及存储介质
CN112839240B (zh) * 2020-12-31 2022-03-22 福州大学 一种基于视频流的带宽探测方法与系统
KR20220144142A (ko) * 2021-04-19 2022-10-26 삼성전자주식회사 네트워크 상태 및 처리량의 모니터링에 기초하여 문제 발생시 회복 루틴을 수행하는 프로세서 및 이를 포함하는 전자 장치
CN115078811A (zh) * 2022-05-07 2022-09-20 深圳市科陆电子科技股份有限公司 一种基于linux平台的ADC交直流采样方法
US12238179B2 (en) * 2023-05-04 2025-02-25 Mellanox Technologies, Ltd. Systems and methods of message-based packets

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4229397A (en) * 1996-07-25 1998-02-20 Hybrid Networks, Inc. High-speed internet access system
US5991633A (en) 1997-02-07 1999-11-23 Telefonaktiebolaget Lm Ericsson Method of dynamically controlling the length of a R-- DATA messages on a random access channel
US6578077B1 (en) * 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
US6452915B1 (en) * 1998-07-10 2002-09-17 Malibu Networks, Inc. IP-flow classification in a wireless point to multi-point (PTMP) transmission system
US6381228B1 (en) 1999-01-15 2002-04-30 Trw Inc. Onboard control of demand assigned multiple access protocol for satellite ATM networks
US7333495B2 (en) 1999-10-27 2008-02-19 Broadcom Corporation Method for scheduling upstream communications
AU2001240077A1 (en) 2000-05-19 2001-12-03 Channelogics, Inc. Allocating access across shared communications medium
US7499453B2 (en) 2000-05-19 2009-03-03 Cisco Technology, Inc. Apparatus and methods for incorporating bandwidth forecasting and dynamic bandwidth allocation into a broadband communication system
CA2443930A1 (en) 2001-04-13 2002-10-24 Comsat Corporation Method for dynamic load management of random access shared communications channels
KR100369325B1 (ko) * 2001-04-16 2003-01-24 한국전자통신연구원 유/무선망에서의 프레임 구조를 갖는 단말보조에 의한퍼지기반 음성/데이터 통합 임의접속 제어 시스템 및 그방법
EP1421744B1 (en) * 2001-07-20 2008-09-03 Thomson Licensing Dynamic traffic bandwidth management system and method for a communication network
US7443873B1 (en) 2001-08-21 2008-10-28 Juniper Networks, Inc. Virtual upstream channel provisioning and utilization in broadband communication systems
KR100401305B1 (ko) 2001-11-28 2003-10-10 엘지전자 주식회사 브이오아이피 스케쥴링 방식의 변경 방법
JP2003298604A (ja) * 2002-03-29 2003-10-17 Mitsubishi Electric Corp 通信システム及び通信帯域管理方法
US7590099B2 (en) * 2003-09-25 2009-09-15 Qualcomm Incorporated Managing traffic in communications system having dissimilar CDMA channels
US7911946B2 (en) 2003-11-17 2011-03-22 General Instrument Corporation Method and apparatuses for using packet data to manage a data stream in a broadband communications system
EP1686807A1 (fr) * 2005-01-27 2006-08-02 Nagra France Sarl Méthode de répartition de la charge d'un centre de gestion transmettant des informations à un grand nombre d'unités d'utilisateur
US7724660B2 (en) 2005-12-13 2010-05-25 Alcatel Lucent Communication traffic congestion management systems and methods
US20090070468A1 (en) * 2006-01-10 2009-03-12 Matsushita Electric Industrial Co., Ltd. Communication system and communication method
US20070271106A1 (en) * 2006-05-19 2007-11-22 Lee David H System and method for secure internet channeling agent
US7769028B2 (en) 2006-06-21 2010-08-03 Harris Corporation Systems and methods for adaptive throughput management for event-driven message-based data
JP2008172517A (ja) * 2007-01-11 2008-07-24 Nec Corp 輻輳制御システム、輻輳制御方法、輻輳制御プログラム、及び、プログラム記録媒体
WO2008098066A2 (en) 2007-02-06 2008-08-14 Entropic Communications Inc. A layer-2 management entity messaging framework in a network
EP2458801A1 (en) 2007-02-14 2012-05-30 Entropic Communications Inc. Parameterized quality of service in a network
US9111285B2 (en) * 2007-08-27 2015-08-18 Qurio Holdings, Inc. System and method for representing content, user presence and interaction within virtual world advertising environments
KR100991518B1 (ko) 2007-12-14 2010-11-04 한국전자통신연구원 상향 대역 할당 방법
US7916644B2 (en) 2008-02-08 2011-03-29 Cisco Technology, Inc. Dynamic allocation of upstream channel resources among multiple RF domains
US8948189B2 (en) 2008-04-03 2015-02-03 Entropie Communications, Inc. System and method for scheduling reservation requests for a communication network
US8549576B2 (en) * 2008-11-19 2013-10-01 Fourtwall Media, Inc. Dynamic application insertion for MPEG stream switching
WO2010099513A2 (en) * 2009-02-27 2010-09-02 Coach Wei Adaptive network with automatic scaling
JP2010283759A (ja) * 2009-06-08 2010-12-16 Sumitomo Electric Ind Ltd ネットワークシステム、コンピュータプログラム、及び、通信方法
US8396055B2 (en) * 2009-10-20 2013-03-12 Time Warner Cable Inc. Methods and apparatus for enabling media functionality in a content-based network
CN102088729B (zh) * 2009-12-02 2014-06-25 华为技术有限公司 网络接入的方法、装置及系统
US9844073B2 (en) * 2010-01-11 2017-12-12 Qualcomm Incorporated Methods and apparatus for contention-based uplink access in wireless communication systems
US8069465B1 (en) * 2011-01-05 2011-11-29 Domanicom Corp. Devices, systems, and methods for managing multimedia traffic across a common wireless communication network

Also Published As

Publication number Publication date
EP2772020A4 (en) 2015-06-24
CA2851825A1 (en) 2013-05-02
JP2014531179A (ja) 2014-11-20
US9577899B2 (en) 2017-02-21
US20130100810A1 (en) 2013-04-25
WO2013063218A1 (en) 2013-05-02
EP2772020B1 (en) 2020-06-10
CA2851825C (en) 2019-07-16
US20150207707A1 (en) 2015-07-23
EP2772020A1 (en) 2014-09-03
KR101973590B1 (ko) 2019-04-29
KR20140091019A (ko) 2014-07-18
US8937866B2 (en) 2015-01-20

Similar Documents

Publication Publication Date Title
JP5982002B2 (ja) トラフィックスケジューリングを使用したネットワーク帯域幅調整
CN111034254B (zh) 降低网络延迟的方法和装置
US11064330B2 (en) Methods for enabling delay-awareness in the constrained application protocol (CoAP)
US10355997B2 (en) System and method for improving TCP performance in virtualized environments
CN101461194B (zh) 用于远程访问网络中的装置的方法和系统
CN112631788B (zh) 数据传输方法及数据传输服务器
JP2010522468A (ja) Tcpackの管理によるlanにおけるスループット改善
CN106664440B (zh) 用于在多媒体系统中接收和发送信息的方法和设备
US7991905B1 (en) Adaptively selecting timeouts for streaming media
Herrero Analysis of the constrained application protocol over quick UDP internet connection transport
CN105516262A (zh) 应用程序远程操控方法及系统
US20250374313A1 (en) Systems, devices, and methods related to configuring multi-stream network with stream-aware scheduling
US20100054215A1 (en) Adaptive time allocation in a tdma mac layer
US8375139B2 (en) Network streaming over multiple data communication channels using content feedback information
US9130843B2 (en) Method and apparatus for improving HTTP adaptive streaming performance using TCP modifications at content source
CN113438218A (zh) 基于some/ip协议的通信方法及装置、存储介质、终端
CN114051030A (zh) 通讯方法、通讯装置、智慧社区系统和存储介质
Gu et al. Performance evaluation of dccp: A focus on smoothness and tcp-friendliness
TWI880671B (zh) 多協議開放式無線電存取網路的系統
JP2013013093A (ja) Tcpackの管理によるlanにおけるスループット改善
CN117880347A (zh) 一种OpenWrt路由器有线用户流量获取方法及系统
CN120825727A (zh) 基于MQTT协议的LoRa网关自适应通信优化系统
WO2023045901A1 (zh) 一种数据的传输方法及设备
CN114268979A (zh) 一种网管终端北向接口的安全通信方法
CN116724544A (zh) 用于虚拟化核心源的ipdr通信系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160414

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20160705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160729

R150 Certificate of patent or registration of utility model

Ref document number: 5982002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250