6

PPPの一般的なフレーム フォーマットイーサネットなどのデータリンク レベルの規格を見ると、チェックサムが無効な場合に何が起こるかは明確ではありません。プロトコルは次のフレームの開始位置をどのように認識しますか?

次の「フラグ」の発生をスキャンするだけですか (PPP の場合)? もしそうなら、パケットのペイロードにたまたま「フラグ」自体が含まれていたらどうなるでしょうか? 私の要点は、パケットフレーミングまたは「長さ」フィールドが使用されているかどうかにかかわらず、「長さ」フィールドが破損している可能性があるか、「フレーミング」バイトがたまたまパケットの一部である可能性がある無効なパケットから回復する方法が明確ではないということです。パケット ペイロード。

更新:「GFP CRCベースのフレーミング」を検索して、探していたもの(厳密には私が尋ねたものではありません)を見つけました。通信ネットワークによると

GFP レシーバーは、スリーステート プロセスを通じて GFP フレーム境界に同期します。受信側は最初はハント状態にあり、一度に 4 バイトを調べて、最初の 2 バイトで計算された CRC が次の 2 バイトの内容と等しいかどうかを確認します。一致するものが見つからない場合、GFP は物理層によって与えられたオクテット同期送信を想定しているため、GFP は 1 バイトだけ前方に移動します。受信機が一致を見つけると、同期前の状態に移行します。この中間状態にある間、受信機は一時的な PLI (ペイロード長インジケータ) フィールドを使用して、次のフレーム境界の位置を決定します。成功したフレーム検出の目標数Nが達成された場合、受信機は同期状態に移行します。. 同期状態は、受信者が各 PLI を検査し、cHEC (コア ヘッダー エラー チェック) を使用して検証し、ペイロードを抽出して、次のフレームに進む通常の状態です。

つまり、各パケットは「長さ」と「CRC(長さ)」で始まります。文字をエスケープする必要はなく、パケットの長さは事前にわかっています。

パケット フレーミングには 2 つの主要なアプローチがあるようです。

  • エンコーディング スキーム (ビット/バイト スタッフィング、マンチェスター エンコーディング、4b5b、8b10b など)
  • 変更されていないデータ + チェックサム (GFP)

前者はより安全で、後者はより効率的です。ペイロードに有効なパケットが含まれており、行の破損により、後続のバイトに「フレームの開始」バイトシーケンスが含まれている場合、どちらもエラーが発生しやすくなりますが、それは非常にありそうにないように思えます。GFP の堅牢性を正確に把握するのは困難ですが、最新のプロトコルの多くは GFP を使用しているようです。

4

4 に答える 4

9

PPP とイーサネットの両方にフレーミングのメカニズムがあります。つまり、ビット ストリームをフレームに分割するメカニズムがあり、受信者が何が何であるかを見失った場合に、次のフレームの開始時に拾うことができます。これらは、プロトコル スタックの一番下にあります。プロトコルの他のすべての詳細は、フレームのアイデアに基づいて構築されています。特に、プリアンブル、LCP、および FCS はより高いレベルにあり、フレーミングの制御には使用されません。

ダイヤルアップなどのシリアル リンクを介した PPP は、HDLC のようなフレーミングを使用してフレーミングされます。. フラグ シーケンスと呼ばれる 0x7e のバイト値は、フレームの開始を示します。フレームは次のフラグ バイトまで続きます。フレームの内容にフラグ バイトが出現すると、エスケープされます。エスケープは、制御エスケープ バイトとして知られる 0x7d を書き込むことによって行われ、その後に 0x20 で xor されたエスケープされるバイトが続きます。フラグ シーケンスは 0x5e にエスケープされます。コントロールエスケープ自体も 0x5d にエスケープする必要があります。それらの存在がモデムを混乱させる場合、他の値もエスケープできます。その結果、レシーバーが同期を失った場合、0x7e が検出されるまでバイトを読み取って破棄することができます。0x7e が検出された時点で、フレームの先頭に再びいることがわかります。次に、フレームの内容が構造化され、実際には重要ではないが、以前の IBM プロトコルから保持されているいくつかの奇妙で小さなフィールドが含まれます。

イーサネットは、データではなくフレームの開始および終了マーカーとして認識できるシンボルを使用する論理的に類似したアプローチを使用しますが、予約バイトとエスケープメカニズムを使用するのではなく、異なる特別な制御シンボルを表現できるコーディングスキームを使用しますデータバイトから - 句読点を使用して一連の文字を分割するのと少し似ています。使用するシステムの詳細は、速度によって異なります。

標準 (10 Mb/s) イーサネットは、マンチェスター エンコーディングと呼ばれるものを使用してエンコードされます。このエンコーディングでは、送信される各ビットがライン上の 2 つの連続するレベルとして表され、すべてのビットのレベル間に常に遷移が存在するようになっています。これにより、受信者が同期を維持できます。フレーム境界は、エンコーディング規則に違反することで示され、トランジションのないビットが存在します (私は何年も前に本でこれを読みましたが、オンラインで引用を見つけることができません - 私はこれについて間違っているかもしれません)。実際、このシステムはバイナリ コードを 3 つの記号 (0、1、および違反) に拡張します。

高速 (100 Mb/s) イーサネットは、 5b/4b コードに基づいた別のコーディング スキームを使用します。このコードでは、4 つのデータ ビット (ニブル) のグループがワイヤ上で 5 ビットのグループとして表され、マンチェスター スキームなしで直接送信されます。 . 5 ビットへの拡張により、頻繁なレベル遷移の要件を満たすために使用される 16 の必要なパターンを選択できるようになり、これも受信機の同期を維持するのに役立ちます。ただし、送信できるがデータ値に対応しない追加のシンボルを選択する余地がまだあります。実際には、ニブルのセットを 24 個のシンボル (ニブル 0 ~ F、および Q、I と呼ばれるシンボル) に拡張します。 、J、K、T、R、S、および H。イーサネットは、JK ペアを使用してフレームの開始をマークし、TR を使用してフレームの終了をマークします。

ギガビット イーサネットは高速イーサネットに似ていますが、コーディング スキームが異なります。光ファイバー バージョンは 5b/4b コードの代わりに8b/10b コードを使用し、ツイストペア バージョンは非常に複雑な 5 進コード配列を使用しますが、これは私にはわかりません。本当にわかりません。どちらのアプローチでも同じ結果が得られます。つまり、データ バイトまたは追加の特殊シンボルの小さなセットの 1 つを送信でき、これらの特殊シンボルはフレーミングに使用されます。

この基本的なフレーミング構造の上に、固定のプリアンブルがあり、その後にフレーム デリミタが続き、いくつかの無意味な制御フィールドがあります (こんにちは、LLC/SNAP!)。これらのフィールドの有効性は、フレームを検証するために使用できますが、フレームを独自に定義するために使用することはできません。

于 2009-06-13T16:53:26.420 に答える
5

あなたはすでに正しい答えにかなり近づいています。基本的に、プリアンブルで始まり、チェックサムとして一致するもので終わる場合、それはフレームであり、上位層に渡されます。

PPP とイーサネットはどちらも、次のフレーム開始信号を探します。イーサネットの場合、それはプリアンブルであり、64 の交互ビットのシーケンスです。イーサネット デコーダーがそれを認識した場合、次のものがフレームであると単純に想定します。ビットをキャプチャし、チェックサムが一致するかどうかを確認することで、有効なフレームがあるかどうかを判断します。

FLAG を含むペイロードに関しては、PPP では、このような誤解を防ぐために追加のバイトでエスケープされます。

于 2009-06-13T14:18:33.563 に答える
1

私の知る限り、PPP はエラー検出のみをサポートしており、エラーの修正や回復は一切サポートしていません。

Cisco によるバックアップ: http://www.cisco.com/en/US/docs/internetworking/technology/handbook/PPP.html

于 2009-06-13T13:35:47.393 に答える
1

このウィキペディアの PPP 回線アクティブ化セクションでは、RFC 1661 の基本について説明します。 フレーム チェック シーケンスは、フレーム内の伝送エラーを検出するために使用されます (前述のカプセル化セクションで説明)。

このウィキペディアのページにある RFC 1661 の図は、ネットワーク プロトコル フェーズがエラー時にリンク確立で再開する方法を説明しています。


また、Suv​​esh が参照したシスコのページからのメモ。

PPP リンク制御プロトコル

PPP LCP は、ポイントツーポイント接続を確立、構成、維持、および終了する方法を提供します。LCP は 4 つの異なる段階を経ます。

最初に、リンクの確立と構成のネゴシエーションが発生します。ネットワーク層のデータグラム (IP など) を交換する前に、LCP はまず接続を開き、構成パラメーターをネゴシエートする必要があります。このフェーズは、構成確認フレームが送受信されると完了します。

これに続いて、リンクの品質が決定されます。LCP では、リンク確立および構成ネゴシエーション フェーズに続いて、オプションのリンク品質決定フェーズを使用できます。このフェーズでは、リンクをテストして、リンクの品質がネットワーク層プロトコルを起動するのに十分かどうかを判断します。このフェーズはオプションです。LCP は、このフェーズが完了するまでネットワーク層プロトコル情報の送信を遅らせることができます。

この時点で、ネットワーク層プロトコル構成のネゴシエーションが発生します。LCP がリンク品質決定フェーズを終了した後、適切な NCP によってネットワーク層プロトコルを個別に構成し、いつでも起動および停止できます。LCP がリンクを閉じると、ネットワーク層プロトコルに通知して、適切なアクションを実行できるようにします。

最後に、リンクの終了が発生します。LCP はいつでもリンクを終了できます。これは通常、ユーザーの要求で行われますが、キャリアの損失やアイドル期間タイマーの満了などの物理的なイベントが原因で発生する可能性があります。

LCP フレームには 3 つのクラスがあります。リンク確立フレームは、リンクの確立と構成に使用されます。リンク終了フレームはリンクの終了に使用され、リンク保守フレームはリンクの管理とデバッグに使用されます。

これらのフレームは、各 LCP フェーズの作業を完了するために使用されます。

于 2009-06-13T13:30:18.967 に答える