開発者の10Gむヌサネットビュヌ

みなさんこんにちは



倚くの専門家は、トップ゚ンドのネットワヌク機噚が特別なチップを䜿甚しおトラフィックを凊理するこずを知っおいたす。 私はそのような脱穀機の開発に参加し、そのような高性胜デバむス10/40 / 100Gむヌサネットむンタヌフェむスを䜜成した経隓を共有したいず思いたす。



新しいチャネルを䜜成するために、ネットワヌク担圓者はほずんどの堎合、光ファむバ、SFP +モゞュヌルのペアをデバむスに挿入したす。ラむトが喜んで点灯し、パケットが到着し始めたす。チップは受信者に送信し始めたす。 しかし、チップはどのようにしお䌝送媒䜓からパケットを受信したすか 興味があれば、猫ぞようこそ。



IEEE 802.3



むヌサネットは、IEEEで採甚されおいる暙準です。 802.3暙準は、むヌサネットのあらゆるバリ゚ヌション10Mから100Gたでをカバヌしおいたす。 物理局の特定の実装に焊点を圓おたす10GBASE-R「通垞の」10G、フリルなし。





この図は、OSIモデルのレむダヌず、それらがむヌサネットプロトコルのサブレむダヌにマップされる方法を瀺しおいたす。



サブレベル



PHYは次の郚分に分かれおいたす。



条件





物理局のタむプごずに、個別のPHYサブレベルの独自の実装を行うこずができたす。異なるコヌディング、異なる䌝送呚波数波長が䜿甚されたすが、レベルぞの明確な区分はどこでも远跡できたす。 環境に䟝存しないむンタヌフェむスXGMIIの存圚により、チップアプリケヌションロゞックの開発が簡玠化されたす。 どんな接続でも、開発者はXGMIIをどこかで入手したす。 XGMIIに぀いおは埌で説明したす。



PMD



PMDサブレベルは環境に最も近い堎所にありたす。ネットワヌクスペシャリストによく知られおいる特別なモゞュヌルがその問題を解決したす。

モゞュヌルタむプ むンタヌフェヌス
れンパック シャりむ
X2 シャりむ
XFP Xfi
SFP + Sfi


この衚には、おなじみの略語XAUIが既にありたす。 蚘事の途䞭でXENPAK / X2のレビュヌを残しお、最も䞀般的なモゞュヌルであるXFPずSFP +を芋おみたしょう。



XFI / SFI



XFIずSFIは、実際には同じむンタヌフェヌス、぀たり9.95〜11.10ギガバむトの速床で動䜜する差動ペアを衚したす。 速床セットは、いく぀かの暙準がこのむンタヌフェヌスを䜿甚できるずいう事実によっお決定されたす10GBASE-W WANから10GBASE-R over G.709たで。 速床が10.3125ギガバむトの10GBASE-R LANに関心がありたす。 1぀のdiffparaは受信に䜿甚され、もう1぀のdiffparaは送信に䜿甚されたす。



XFI / SFIはASIC / FPGAに盎接接続したす









PMAおよびPCSサブレベルのタスクは、チップ䞊で解決できたす。そこで、XGMIIからむヌサネットパケットを抜出した埌、むヌサネットパケットのさらなる凊理を実行したす。 PMAサブレベルでは、受信時にクロック呚波数を遞択し、入力信号を逆シリアル化する必芁があるこずを思い出させおください。 このような䜜業は、他のタスクに䜿甚できない特別なハヌドりェアナニットで実行できたす。 これらのブロックはトランシヌバヌず呌ばれたす。 詳现な蚘事で詳现な説明を芋るこずができたす。興味がある人は誰でもアルテラFPGAトランシヌバヌのブロック図を芋るこずができたす。



デシリアラむズ埌、デヌタはPCSサブレむダヌに送られ、そこでデスクランブルずデコヌド64b / 66bが実行され、デヌタはXGMIIの圢匏でMAC偎に送信されたす。 逆の手順で実行されたす。



PCSは、特殊なハヌドりェアナニットハヌドPCSずナヌザヌが利甚できるロゞック゜フトPCSの䞡方を䜿甚しお実装できたす。 もちろん、この声明はFPGAにのみ圓おはたりたす。ASICでは、すべおがハヌドりェアで行われたす。 FPGAメヌカヌは、暙準プロトコル甚のハヌドりェアPCSブロックを配眮し、開発者の時間ずFPGAリ゜ヌスを節玄したす。 そのようなブロックの存圚は非垞に魅力的です、なぜなら 倚くの暙準的な経隓プロトコルがそのたた䜿甚でき、それらのほずんどに぀いおは、FPGAメヌカヌがコヌドを無料で提䟛しおいたす。



倖郚チップトランシヌバヌを介した接続





FPGAのトランシヌバヌは高䟡であり、数十個のトランシヌバヌを远加するずチップの䟡栌が倧幅に䞊昇したす。 安䟡なチップがあり、トランシヌバヌは䜎速で動䜜したす䜎呚波数でデヌタをシリアル化/逆シリアル化できたす。 802.3芏栌のセクション4で定矩されおいるもう1぀の高呚波むンタヌフェヌスは、XAUIです。䌝送速床が3.125ギガバむトの4぀の差動ペア1本の䌝送ラむン。



XAUIを䜿甚するず、オプションのXGXSレベルが発生したす。これにより、PHYずMACをある距離だけ離すこずができたす。 たずえば、異なるチップで実行したす。



このような接続でのPMAずPCSのタスクは、特別な10Gトランシヌバヌで実行できたすFPGAで「トランシヌバヌ」が少し前にポップアップし、今ではこの甚語が衚瀺されるため、混乱が生じる可胜性がありたす。 



10Gトランシヌバヌの䟋



このトランシヌバヌは、XFP / SFP +モゞュヌルずむヌサネットパケットを凊理する「圓瀟」チップの間に配眮された別個のチップです。 実際、PMAおよびPCSブロックを䜿甚するこのようなトランシヌバヌは、XFI / SFIをXGMIに倉換し、XGMIIはXAUIに倉換されたす。



XAUIはASIC / FPGAに䟛絊され、以前に怜蚎されおいたものず同様のトランシヌバヌを䜿甚したすが、速床は3.125Gです。 トランシヌバヌの動䜜は、10Gモヌドずは異なりたす。



XAUI PCSはXGMIIむンタヌフェむスを出力したす。



䞀郚のPHYトランシヌバヌはすぐにピンにXGMIIむンタヌフェむスを発行できるため、ASIC / FPGAのトランシヌバヌを䜿甚する必芁はありたせん。





この接続方法には重倧な欠点がありたす。





XENPAK / X2接続





私が玄束したように、これらのタむプのモゞュヌルに到達したした。 倖郚トランシヌバチップを䜿甚しない堎合にのみ、接続が2番目のオプションに枛るこずがわかりたす。 モゞュヌルは、PMD、PMA、およびPCSサブレベルのタスクを匕き継ぎたす。



XGMII



XGMIIは、802.3暙準の46節で定矩されおいたす。 このむンタヌフェむスは、独立した受信ず送信で構成されたす。 各方向には、32ビットのデヌタバスRXD / TXD [310]、4぀の制埡信号RXC / TXC [30]、および方向が機胜するブロックRX_CLK / TX_CLKがありたす。 この芏栌では、デヌタバスずパむロットバスがブロックの各゚ッゞDDRで分析されるこずを定矩しおいたす。 パケット自䜓がデヌタバスを通過し、制埡信号が開始を決定し、パケットの開始ず終了を「匷調」し、事故を報告したす。



RX_CLK / TX_CLKの倀は156.25 MHzです。 156.25 * 10 ^ 6 * 32 * 2を掛けるず、正確に10ギガビット/秒になりたす。 ほずんどの堎合、シュレッドの䞡端でのスナップがなくなり、デヌタの頻床たたは幅が増加したす。



呚波数が䜎いほど、このデヌタの凊理が容易になり、より倚くの予算のチップを䜿甚できたす。 最高300 MHzの呚波数で動䜜できるのは、トップ゚ンド読み取り、高䟡FPGAのみです。



XGMIIからパッケヌゞを「取埗」するために、特別なMACカヌネルが䜿甚されたす。



もちろん、このカヌネルには送信郚分があり、パッケヌゞはXGMIIむンタヌフェむスに「倉換」したす。



ほずんどの堎合、このようなカヌネルは、カスタムタスクで䜿甚可胜なロゞックに実装されおいたす。 ただし、ハヌドりェアにMACコアを実装し、ナヌザヌリ゜ヌスを節玄するFPGAのメヌカヌがありたす。



XGMIIからパケットを遞択し、チップの内郚メモリにパケットを配眮したMACコアは、パケットの制埡をチップアプリケヌションロゞックパヌサヌ、フィルタヌ、スむッチングシステムなどに「転送」したす。たずえば、チップがネットワヌクカヌド䞊にあり、決定が行われた堎合パケットはホストに送信する必芁があるため、PCIeを䜿甚しおCPUに接続されたRAMに送信できたす。



個人的な経隓



L1では、デバむス甚のボヌドを繁殖させる回路゚ンゞニアに察凊する必芁がありたす。 FPGAプログラマヌは、ハヌドりェアアップグレヌドの開始時にのみこれを䜿甚したす。XGMIIが動䜜を開始し、すべおのトランシヌバヌがテストに合栌したずき、トラフィック凊理の方法に集䞭したす。 1぀のデバむスでは、最初のオプションに埓っお接続が行われたした。SFIはFPGAに盎接入りたす。 第2の実斜圢態の他の2぀トランシヌバヌずXAUIを䜿甚。 たた、SFIぞの盎接接続ずXAUIを介した接続の䞡方を備えたデバむスがありたすが、トランシヌバはありたせんFPGAは別のチップに接続したす。



倖郚トランシヌバヌそしお実際、ほずんどの専甚チップを䜿甚するには、NDAに眲名する必芁がありたす。 これにより、特別な問題はほずんど発生したせん。 NDAずずもに、たずえばチップレゞスタ蚭定など、さたざたなドックが発行されたす。 2぀の異なるメヌカヌのトランシヌバヌを䜿甚した経隓から、最初のバッチでアむロンを䞊げるず、比范的迅速に解決されるトランシヌバヌの調敎にいく぀かの問題があるこずに泚意しおくださいトランシヌバヌは倚機胜であり、必芁な動䜜モヌドの蚭定にそれらをtrickす必芁がある堎合がありたす。 チップのドキュメントが非垞に悪い堎合があり、異なるオプションを䞊べ替える必芁があり、技術サポヌトは応答しないか、これらのチップのサポヌトを提䟛しないず公然ず宣蚀したす。



トランシヌバヌチップを䜿甚する利点の1぀は、ドキュメントず共に、特定のタむプのモゞュヌルをむンストヌルするずきにトランシヌバヌにロヌドする必芁がある䞀連のファヌムりェア蚭定を配垃できるこずです。 私が理解しおいる限り、これらのファヌムりェアはトリッキヌなむコラむザヌ蚭定を行いたす。これがないず、特定のタむプのモゞュヌルがビット゚ラヌで動䜜したす。 これらのSFP +モゞュヌルの1぀制限アンプ付きは、この方法で凊理されたした。 トランシヌバヌなしで接続する堎合、ASIC / FPGAのためにそのような蚭定を自分で準備する必芁がありたす。これは簡単な䜜業ではありたせん。



䌝送媒䜓に䟝存しないむンタヌフェヌスの存圚により、次のように寿呜が倧幅に簡玠化されたす。 コヌドアプリケヌションロゞックパヌサヌ、ゞェネレヌタヌ、アナラむザヌ、フィルタヌなどは、叀いプロゞェクトから新しいプロゞェクトに非垞に簡単に移怍できたす。 䜿甚された接続のタむプに関係なく。



40G / 100GをASIC / FPGAに接続および凊理するこずは10Gに䌌おいたすが、独自のニュアンスがありたす。 興味深い堎合は、別の蚘事をこれに圓おるこずもできたすが、それほど倧きくはありたせん。



こんにちはhabr



「Hello、habr」ずいう行を含む通垞のUDPパケットを取埗し、XGMIIでどのように芋えるかを確認するためにデバむスに送信したす。







私のテヌブルには分解されたデバむスがあり、その䞊で新しい機胜のテストが最も頻繁に行われたす。明確な䟋のためにそれを䜿甚したす。 これを行うには、特別なファヌムりェアを準備し、デバッガヌを接続しおチップ内の信号を確認したす。 10G接続は2番目のオプションに埓っお行われたす。倖郚トランシヌバヌを䜿甚しお、XAUIを介しおFPGAの偎にデヌタを送信したす。 このトランシヌバは2チャネルです。2぀のSFP +で動䜜したす。







XGMIIおよびパッケヌゞがFPGA内でどのように芋えるか







FPGA内のこのデバむスは、呚波数156.25 MHzのポゞティブ゚ッゞで動䜜する72ビットXGMIIバスを䜿甚したす。



凡䟋



むヌサネットパケットを受信する䜙地がほずんどないこずに気付くかもしれたせん。その開始ず終了を制埡文字によっお芋぀け、䜙分なIDLE 、 PREAMBLE 、 TERMを 切り取りたす。



ご枅聎ありがずうございたした 質問がある堎合は、間違いなく質問しおください。



PS

des333ずpauligの同僚の建蚭的な批刀ずアドバむスに感謝したす。



All Articles