(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6293283
(24)【登録日】2018年2月23日
(45)【発行日】2018年3月14日
(54)【発明の名称】ソフトウェア定義ネットワークにおけるオフラインクエリ
(51)【国際特許分類】
H04L 12/841 20130101AFI20180305BHJP
H04L 12/717 20130101ALI20180305BHJP
H04L 12/70 20130101ALI20180305BHJP
【FI】
H04L12/841
H04L12/717
H04L12/70 D
【請求項の数】7
【全頁数】10
(21)【出願番号】特願2016-539266(P2016-539266)
(86)(22)【出願日】2014年12月17日
(65)【公表番号】特表2016-541202(P2016-541202A)
(43)【公表日】2016年12月28日
(86)【国際出願番号】US2014070749
(87)【国際公開番号】WO2015095277
(87)【国際公開日】20150625
【審査請求日】2016年8月1日
(31)【優先権主張番号】61/917,072
(32)【優先日】2013年12月17日
(33)【優先権主張国】US
(31)【優先権主張番号】14/571,778
(32)【優先日】2014年12月16日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】504080663
【氏名又は名称】エヌイーシー ラボラトリーズ アメリカ インク
【氏名又は名称原語表記】NEC Laboratories America, Inc.
(74)【代理人】
【識別番号】100123788
【弁理士】
【氏名又は名称】宮崎 昭夫
(74)【代理人】
【識別番号】100127454
【弁理士】
【氏名又は名称】緒方 雅昭
(72)【発明者】
【氏名】ホイ・チャン
(72)【発明者】
【氏名】ベヘナーズ・アルザニ
(72)【発明者】
【氏名】フランジョ・イヴァンチッチ
(72)【発明者】
【氏名】ジュンフアン・リー
(72)【発明者】
【氏名】ニプン・アローラ
(72)【発明者】
【氏名】グオフェイ・ジアン
【審査官】
野元 久道
(56)【参考文献】
【文献】
国際公開第2013/106386(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/841
H04L 12/70
H04L 12/717
(57)【特許請求の範囲】
【請求項1】
ネットワークにおいてパケットのルーティングパスを見つけるための方法であって、
コントローラによってソフトウェア定義ネットワーク(SDN)における1つ又は2つ以上のスイッチに送信される制御メッセージをインターセプトすることと、
要求された時点で前記SDNの状態をエミュレートすることと、
前記エミュレートされたSDNにおける1つ又は2つ以上のエミュレートされたスイッチに前記インターセプトされた制御メッセージを再生することによって、前記エミュレートされたSDNを通る1つ又は2つ以上の可能なルーティングパスを特定することと、を含み、
前記1つ又は2つ以上の可能なルーティングパスが、前記要求された時点で前記SDNに投入される要求されたパケットに対応し、
1つ又は2つ以上の可能なルーティングパスを特定することが、前記インターセプトされた制御メッセージ及び往復時間(RTT)情報に基づいて、前記1つ又は2つ以上のエミュレートされたスイッチのフローテーブル状態を再構築することを含む、方法。
【請求項2】
パケット、及び前記パケットが前記SDNに入った時点を特定するタイムスタンプT0を含むクエリを受信することを更に含み、前記クエリが、初期スイッチ、及び前記パケットが前記SDNに入ったポートを更に含む、請求項1に記載の方法。
【請求項3】
前記パケット及び前記パケットフィールド上の着信ポートに一致するスイッチに送信されるあらゆる制御メッセージについて、前記制御メッセージが以下を満たす記録されたタイムスタンプT
iを有する場合、スイッチ状態が前記パケットに対するルーティング決定に影響を及ぼさない前の時間として定義される開始時間T
sをT
s=T
0と判定することを更に含み、
【数1】
式中、E
RTTが、平均RTTであり、σ
RTTが、前記RTTの差異であり、T
0が、入力タイムスタンプであり、kが、統計的信頼区間におけるZ値であり、そうでなければ、
【数2】
であり、T
xが、前記パケットに一致し、かつ上記の条件に反する最も早い制御メッセージの前記タイムスタンプである、請求項
1に記載の方法。
【請求項4】
ネットワークにおいてパケットのパスを見つけるためのシステムであって、
コントローラによってソフトウェア定義ネットワーク(SDN)における1つ又は2つ以上のスイッチに送信された制御メッセージをインターセプトするように構成されたプロキシと、
要求された時点で前記SDNの状態をエミュレートし、かつ前記エミュレートされたSDNにおける1つ又は2つ以上のエミュレートされたスイッチに前記インターセプトされた制御メッセージを再生することによって、前記エミュレートされたSDNを通る1つ又は2つ以上の可能なルーティングパスを特定するように構成されたプロセッサを備えるネットワークエミュレータと、を備え、
前記1つ又は2つ以上のルーティング可能なパスが、前記要求された時点で前記SDNに挿入される要求されたパケットに対応し、
前記ネットワークエミュレータが、前記インターセプトされた制御メッセージ及び往復時間(RTT)情報に基づいて、前記1つ又は2つ以上のエミュレートされたスイッチのフローテーブル状態を再構築するように構成されている、システム。
【請求項5】
パケット、及び前記パケットが前記SDNに入った時点を特定するタイムスタンプT0を含むクエリを受信するように構成されたクエリエンジンを更に備える、請求項4に記載のシステム。
【請求項6】
前記クエリが、初期スイッチ、及び前記パケットが前記SDNに入ったポートを更に含む、請求項5に記載のシステム。
【請求項7】
前記パケット及び前記パケットフィールド上の着信ポートに一致するスイッチに送信されるあらゆる制御メッセージについて、前記制御メッセージが以下を満たす記録されたタイムスタンプT
iを有する場合、前記ネットワークエミュレータが、スイッチ状態が前記パケットに対するルーティング決定に影響を及ぼさない前の時間として定義される開始時間T
sをT
s=T
0と判定するように更に構成されており、
【数3】
式中、E
RTTが、平均RTTであり、σ
RTTが、前記RTTの差異であり、T
0が、入力タイムスタンプであり、kが、統計的信頼区間におけるZ値であり、そうでなければ、
【数4】
であり、T
xが、前記パケットに一致し、かつ上記の条件に反する最も早い制御メッセージの前記タイムスタンプである、請求項
4に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2013年12月17日出願の仮出願第61/917,072号への優先権を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
ソフトウェア定義ネットワーク(SDN)は、転送アーキテクチャと呼ばれる新たに出現したクラスのネットワークアーキテクチャを特徴とする。これらのアーキテクチャは、制御プレーン決定をデータプレーン転送から分離する。それを行う際に、それらは、制御プレーンのカスタムプログラム可能性及び集中化を可能にする一方で、商品の高スループット、高ファンアウトデータプレーン転送要素を可能にする。
【0003】
しかしながら、動作SDNのデバッグは、コントローラソフトウェアにおけるそれらのサイズ、分散状態、及び高い複雑性により、大変な作業となり得る。ネットワークオペレータが利用可能なデバッグツールセットは限られている。既存のデバッグソリューションは、データパケットがネットワークにおいて通った正確なルーティングパスを判定するために、SDNスイッチにおけるオンラインパケット又はフローテーブルダンピングを使用し、これらは各々、特有の欠点を有する。
【発明の概要】
【課題を解決するための手段】
【0004】
ネットワークにおいてパケットのルーティングパスを見つけるための方法は、コントローラによってソフトウェア定義ネットワーク(SDN)における1つ又は2つ以上のスイッチに送信された制御メッセージをインターセプトすることを含む。要求された時点でのSDNの状態がエミュレートされ、エミュレートされたSDNを通る1つ又は2つ以上の可能なルーティングパスは、エミュレートされたSDNにおける1つ又は2つ以上のエミュレートされたスイッチにインターセプトされた制御メッセージを再生することによって特定される。1つ又は2つ以上の可能なルーティングパスは、要求された時点でSDNに投入される要求されたパケットに対応する。
【0005】
ネットワークにおいてパケットのパスを見つけるためのシステムは、コントローラによってSDNにおける1つ又は2つ以上のスイッチに送信された制御メッセージをインターセプトするように構成されたプロキシを含む。プロセッサを備えるネットワークエミュレータは、要求された時点でSDNの状態をエミュレートし、かつエミュレートされたSDNにおける1つ又は2つ以上のエミュレートされたスイッチにインターセプトされた制御メッセージを再生することによって、エミュレートされたSDNを通る1つ又は2つ以上の可能なルーティングパスを特定するように構成されている。1つ又は2つ以上のルーティング可能なパスは、要求された時点でSDNに挿入される要求されたパケットに対応する。
【図面の簡単な説明】
【0006】
【
図1】本原理に従う、ソフトウェア定義ネットワーキング(SDN)シャドウシステムを例解するブロック/流れ図である。
【
図2】本原理に従う、SDNにおけるスイッチ制御状態の再構築を例解するブロック/流れ図である。
【
図3】本原理に従う、SDNシャドウシステムのブロック図である。
【発明を実施するための形態】
【0007】
本発明の実施形態は、ソフトウェア定義ネットワーキング(SDN)スイッチにおける機器又はトレースを伴わない、データパケットが転送アーキテクチャネットワークにおいて取る、正確なルーティングパスに関するオフラインクエリを支持する。これは、SDNコントローラとスイッチとの間のネットワーク待ち時間の測定値とともに、SDNコントローラとスイッチとの間で交換される制御メッセージを記録することを含む。
【0008】
ここで
図1を参照すると、例示的な転送アーキテクチャネットワークが示されている。ソフトウェア定義ネットワーク100は、この場合、第1のスイッチ102及び第2のスイッチ103を介して宛先ホスト104と通信するソースホスト101を含む。ソースホスト101から宛先ホスト104へのパケットの正確なパスが、論理ネットワーク構造がスイッチ102及び103によって再構成されるときに変化し得ることを理解されたい。
【0009】
スイッチ102及び103内のフローテーブルを変化させるスイッチ102及び103とコントローラ118との間の制御メッセージは、コントローラ118とスイッチ102及び103との間のネットワーク待ち時間の測定値とともに記録される。これを達成するために、SDNシャドウブロック106は、コントローラ118とSDN100との間に介在される。制御メッセージの主な目的は、フローテーブルにおいてフロー/グループエントリを追加、削除、及び修正し、かつスイッチポート特性を設定することである。プロキシ108は、SDNコントローラ118からの制御メッセージをインターセプトし、それらを制御プレーンログ110に記憶する。制御メッセージは、パケットスニファ等の既存のツールを使用することによって、又はコントローラソフトウェア内の特殊プラグインによって得られ、ローカルコピーを作成することができる。プロキシ108は、各制御メッセージが送信される時間、コントローラ118とスイッチ102及び103との間の往復時間におけるネットワーク待ち時間も記録する。記録の開始時に、プロキシ108は、空ではない場合、スイッチ内のフローテーブルのスナップショットも記録し、スイッチ情報、スイッチ間のネットワークリンク、及びスイッチと関心のホストとの間の最後のホップリンクを含む、SDNネットワークトポロジ情報を記録する。
【0010】
パス情報を見つけるために、制御メッセージトレースは、ネットワークトポロジ記憶装置112からの情報を使用して、クエリエンジン114において、記録期間内のある時間のデータパケットに対する正確なルーティングパスクエリに関して、ネットワークエミュレータにおいて再生される。クエリエンジン114は、データパケット及び入力としてのタイムスタンプを取るためのユーザインターフェースを提供し、ネットワークエミュレータを実行させて、選択された記録された制御メッセージセットを再生して、特定された時間にSDN100に投入された場合のデータパケットが取り得るパスを判定する。問題のスイッチにおける可能なフローテーブル状態は、再構築され、問題のデータパケットが取り得る、可能なルーティングパスは、パスAPI116で見つけられる。任意に、それらのルーティングパスに割り当てられる可能性が計算される。この情報は、ブロック120において出力され、横断されたスイッチ、スイッチ入力及び出力ポート、並びに一致したフローエントリをコードする順序リストの形態であり得る。
【0011】
クエリエンジン114においてクエリ入力を承認することは、パケット、時間、及び入力スイッチによって定義されるパケットイベントを受信することを含む。パケットは、イーサネット(登録商標)フレーム及びIPヘッダを含む、ネットワークパケットのフォーマットであり得る。時間Tは、パケットがSDNネットワーク100に入った時間を特定する。入力スイッチ情報は任意であり、第1のスイッチ、及びパケットがネットワーク100内で到着したポートを特定し得る。既存のパス指向要求トレースソリューションとは対照的に、クエリエンジン114は、ユーザが、<packet X,time T,[switch S
0:portIn]>というフォーマットでパケットイベントを入力すること、及びネットワークパケットがネットワーク100において取り得る正確なパス情報に関する応答を受信することを可能にする。
【0012】
スイッチフローテーブルを再構築することは、記録された制御メッセージのサブセットを選択し、記録されたネットワークトポロジ情報で元のSDNネットワークのエミュレーションを作成し、エミュレートされたスイッチへ、エミュレートされたコントローラを通じて、選択された制御メッセージセットを再投入し、次いで、全てのエミュレートされたスイッチから、関連するフローテーブルエントリ情報をダンプする。
【0013】
次いで、エミュレーション情報が検索されて、パケットがどのスイッチ及びルーティングルールを通過し得るかを見つけ出し、正確なルーティングパスを構築する。パスAPI116は、出力120を生成するために、上で説明されるように、順序リストのフォーマットでパスを出力する。
【0014】
ここで
図2を参照すると、制御状態200の再構築に関する詳細が示されている。ブロック202は、入力パケット及びクエリされた到着時間が与えられた、記録された制御メッセージを選択する。ブロック202は、パケットに対するルーティング決定に恐らく影響し得る記録された制御メッセージセットを見つける。ユーザが第1のホップスイッチ情報を提供する場合、開始スイッチセットが、それに応じて初期化される。そうでなければ、開始スイッチセットは、全ての利用可能なスイッチ及びそれらのポートを含むとして初期化される。各第1のホップスイッチに関して、コントローラ118とスイッチとの間の平均復路時間(RTT)が、判定されたそれぞれの差異で算出される。これは、プロキシ108によって記録されるネットワーク待ち時間情報に基づく。
【0015】
開始時間T
sが判定され、スイッチ状態がパケットに対するルーティング決定に影響を及ぼさない前の時間として定義される。パケット及びパケットフィールド上の着信ポートに一致するスイッチに送信されるあらゆる制御メッセージについて、制御メッセージが以下を満たす記録されたタイムスタンプT
iを有する場合、
【0017】
T
s=T
0であり、式中、E
RTTは、平均RTTであり、σ
RTTは、RTTの差異であり、T
0は、入力タイムスタンプであり、kは、統計的信頼区間におけるZ値である。そうでない場合、
【0019】
であり、式中、T
xは、パケットに一致し、かつ上記の条件に反する最も早い制御メッセージのタイムスタンプである。
【0020】
T
sよりも前のタイムスタンプを有し、パケット及びパケットフィールド上の着信ポートに一致するフローテーブルエントリを含む、それぞれの初期スイッチに送信された全ての記録された制御メッセージが選択される。これらの制御メッセージは、時間順序リストに入れられる。かかるメッセージがない場合、問題のスイッチは、初期スイッチとしての考慮から除外される。かかる制御メッセージを有するスイッチがない場合、ユーザに、有効なパスが見つけられなかったことが通知される。
【0021】
ブロック204においてエミュレートされたネットワークを作成することは、記録されたネットワークトポロジ情報112を使用して、トレースされたSDNネットワーク100と同じトポロジを有する、エミュレートされたネットワークを形成する。
【0022】
ブロック206においてフローテーブルを再構築することは、パケット、入力タイムスタンプT
s、並びにブロック202及び204の結果を使用して、パケットのルーティング決定に影響するスイッチフローテーブルエントリを再構築する。再構築は、記録されたスナップショットで全てのエミュレートされたスイッチのフローテーブルの全てを初期化することから開始する。エミュレートされたコントローラは、エラーメッセージを生成せずに通過し、かつ
【0024】
であるように、タイムスタンプT
c0を有する、第1のメッセージが見つけられるまで、記録された制御メッセージを、時間順序で各エミュレートされたスイッチに送信し、式中、T
Dは、パケットがネットワークにとどまることができる最大時間であり、かつネットワーク直径の関数である。このメッセージ、及び同じ条件を満たすいずれの残りの制御メッセージも、スイッチS
0でのパケットにおけるルーティング決定に潜在的に影響する制御メッセージの全てを含む、Potential(S
0)と呼ばれる時間順序リストにコピーされる。
【0025】
3つのハッシュテーブルが初期化される:RoutingTree(S
0)、storedStates(S
0)、及びstoredHops(S
0)。パケットは、エミュレートされたスイッチS
0の現在のフローテーブルに適用され、出力アクションを有し、パケット及び着信ポートに一致する、第1のフローテーブルエントリEが見つけられる。エントリが見つけられない場合、この点でのパケットに対する転送アクションは、ない。リストPotential(S
0)が空ではない場合、次の制御メッセージが選択され、現在のフローテーブルに適用される。これは、Potential(S
0)が空であるか、又は一致するエントリが見つけられるまで、繰り返される。
【0026】
エントリの出力アクションは、次のポートを特定する。RoutingTree(S
0)が、同じスイッチ及び次のポートに対応するエントリを既に含む場合、次の制御メッセージが選択され、現在のフローテーブルに適用されて、新しい次のポートを検索する。そうでなければ、新しいハッシュテーブルエントリが作成され、RoutingTree(S
0)に挿入される。
【0027】
記憶されたネットワークトポロジ情報は、次のポートに接続されるネットワークリンクの他方の端部を見つけるために使用される。かかるリンク情報がない場合、次の制御メッセージが選択され、現在のフローテーブルに適用される。そうでなければ、処理は、接続されたスイッチ(以下において現在のスイッチと呼ばれる)及びポートから継続する。
【0028】
T
sよりも前のタイムスタンプを有し、かつパケット及びパケットフィールド上の着信ポートに一致する制御フローテーブルエントリを有する、現在のスイッチに送信される全ての制御メッセージは、時間順序リストactiveMSGに入れられる。リストが空である場合、エントリに対するハッシュテーブルが更新されて、ツリーにおいて、終端に到達したことを示す。リストにエントリがある場合、エミュレートされたコントローラは、上で記載される同じタイムスタンプ条件を満たす第1のメッセージが見つけられるまで、リスト内の制御メッセージを、同じ時間順序内のエミュレートされた現在のスイッチに送信する。
【0029】
適格なメッセージは、これらのメッセージが、潜在的にパケットにおけるルーティング決定に影響するため、時間順序リストPotential(currentSwitch)にコピーされる。それらを使用して、現在のスイッチにおけるパケットに対する全ての可能なネクストホップルーティング決定を記録する。パケットは、エミュレートされたスイッチcurrentSwitchの現在のフローテーブルに適用され、出力アクションを有し、パケット及び着信ポートに一致する、第1のフローテーブルエントリFが見つけられる。かかるエントリがない場合、及びPotential(currentSwitch)が空ではない場合、リスト内の第1の制御メッセージが選択され、エミュレートされたスイッチcurrentSwitchに適用される。メッセージは、Potential(currentSwitch)から除外される。
【0030】
Fの出力アクションは、次のポートを特定する。ハッシュテーブルは、次のポートを特定するエントリで更新される。現在の入力点におけるcurrentSwitchに対して、storedHops(S
0)にエントリが既にある場合、ルーティングループが検出され、メッセージは、Potential(S
0)から除外される。そうでなければ、新しいキーがstoredHops(S
0)に挿入される。
【0031】
Potential(currentSwitch)が空であるか、又は初期化されていない場合、状態は、前のスイッチにロールバックされ、ホップに対するエントリは、storedStates(S
0)及びstoredHops(S
0)から削除される。潜在的メッセージセット全体は、このように再帰的に評価されて、パケットがネットワーク100を通じて取った可能性がある、1つ又は2つ以上の可能なパスセットを構築する。一度RoutingTree(S
0)が完了すると、実行可能なルーティングパスについてそれを検索して、出力120を生成することができる。
【0032】
ルーティングパスは、RoutingTree(S
0)内の各キーに対して、深さ優先検索を繰り返すことによって、検索され得る。リーフノードに到達するときは常に、ルートノードからリーフノードまでの完全パスは、順序リストのフォーマットの連結されたノード毎の値情報とともに記録される。次いで、これらのリストは、記録された正確なルーティングパスを提示するように、ユーザへ返されてもよい。
【0033】
本明細書に説明される実施形態が、完全にハードウェア、完全にソフトウェア、又はハードウェア及びソフトウェア要素の両方を含み得ることを理解されたい。好ましい実施形態において、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されない、ハードウェア及びソフトウェアに実装される。
【0034】
実施形態は、コンピュータ若しくは任意の命令実行システムによる、又はこれらと関連した使用のためのプログラムコードを提供する、コンピュータが使用可能な、又はコンピュータが読み取り可能な媒体からアクセス可能なコンピュータプログラム製品を含み得る。コンピュータが使用可能な、又はコンピュータが読み取り可能な媒体としては、命令実行システム、装置、若しくはデバイスによる、又はこれらと関連した使用のためのプログラムを記憶、通信、伝搬、又は輸送する、任意の装置が挙げられ得る。媒体は、磁気、光学、電子、電磁、紫外線、又は半導体システム(若しくは装置若しくはデバイス)、又は伝搬媒体であり得る。媒体としては、半導体若しくはソリッドステートメモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、剛性磁気ディスク、及び光学ディスクなど等のコンピュータが読み取り可能な記憶媒体が挙げられ得る。
【0035】
プログラムコードを記憶及び/又は実行するのに好適なデータ処理システムは、システムバスを通って、メモリ要素に直接若しくは間接的に連結される、少なくとも1つのプロセッサを含み得る。メモリ要素は、プログラムコードの実際の実行中に採用されるローカルメモリ、バルク記憶装置、及び実行中にバルク記憶装置からコードが取り出される回数を低減するために、少なくとも一部のプログラムコードの一時記憶を提供する、キャッシュメモリを含むことができる。入力/出力又はI/Oデバイス(キーボード、ディスプレイ、ポインティングデバイスなどが挙げられるが、これらに限定されない)は、直接、又は介在するI/Oコントローラを通って、システムに連結され得る。
【0036】
ネットワークアダプタもまた、システムに連結されて、データ処理システムが、介在する私的若しくは公的ネットワークを通って、他のデータ処理システム又はリモートプリンタ又は記憶デバイスに連結することを可能にし得る。モデム、ケーブルモデム、及びイーサネット(登録商標)カードは、現在利用可能なタイプのネットワークアダプタのうちのごくわずかである。
【0037】
ここで
図3を参照すると、SDNシャドウシステム300が示されている。プロセッサ302は、所与のパケットがSDN100を通って取り得るパスを特定及び出力するように、メモリ304とインターフェースする。コントローラプロキシモジュール306は、SDNコントローラ118から情報を受信し、制御プレーンログ308としてメモリ304に制御メッセージを記憶する。加えて、プロキシ306は、ネットワークトポロジ情報310、並びに平均RTT時間及びRTT差異等の任意の利用可能なネットワークステータス情報を記憶する。
【0038】
ユーザインターフェース312は、クエリエンジン314とインターフェースされて、ユーザに、所与のタイムスタンプにおける特定のパケットに対するクエリを入力する能力を提供する。パケット情報は、パケットヘッダを含む。クエリは、パケットがネットワーク100に入った初期スイッチに関する情報を更に任意に含み得る。クエリエンジン114は、制御プレーンログ308及び記憶されたネットワークトポロジに基づいてネットワーク100をエミュレートするためにプロセッサ302を使用する、ネットワークエミュレータ316に、ユーザのクエリを提供し、パケットがネットワークを通って取った可能性がある可能なパスセットを作成する。次いで、これらの可能なパスは、ユーザインターフェース312を通じてユーザに表示される。
【0039】
上述は、あらゆる点において、制限的ではなく、例解的かつ例示的であるとして理解されるものとし、本明細書に開示される本発明の範囲は、発明を実施するための形態からではなく、むしろ特許法によって許容される最も広い範囲に従って解釈される請求項から判断されるものとする。追加情報は、本出願への付録Aに提供される。本明細書に図示及び説明される実施形態は、本発明の原理を例解するものであるにすぎず、当業者は、本発明の範囲及び趣旨から逸脱することなく、種々の修正を実装し得ることが理解されるものとする。当業者は、本発明の範囲及び趣旨から逸脱することなく、種々の他の特性の組み合わせを実装し得る。