亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA實現(xiàn)千兆以太網(wǎng)二層交換*

        2018-11-07 02:22:16婷,胡斌,劉
        通信技術(shù) 2018年11期
        關(guān)鍵詞:描述符分片隊列

        賈 婷,胡 斌,劉 臺

        (武漢中原電子集團有限公司,湖北 武漢 430205)

        0 引 言

        千兆以太網(wǎng)技術(shù)是目前局域網(wǎng)的主流解決方案。千兆以太網(wǎng)交換芯片是該技術(shù)得以實現(xiàn)的關(guān)鍵芯片。

        本文介紹的FPGA實現(xiàn)的千兆以太網(wǎng)二層交換芯片,按照IEEE802.3標準實現(xiàn)了4個獨立千兆端口之間的MAC幀交換。以太網(wǎng)二層交換是基于MAC地址工作的,基本工作原理可以概括為“學習查找”和“存儲轉(zhuǎn)發(fā)”。

        設計支持以下功能項:

        (1)支持4個10/100/1 000 Mb/s自適應,全雙工RGMII端口間的MAC幀線速轉(zhuǎn)發(fā);

        (2)每個出端口支持4種優(yōu)先級隊列;

        (3)支持基于IEEE802.3xPause幀的全雙工流量控制;

        (4)支持簡單生成樹協(xié)議;

        (5)支持4 096個MAC地址表項和基于Hash算法的自學習和查找。

        (6)提供128 kB的MAC幀共享緩沖空間。

        本文首先給出FPGA實現(xiàn)千兆以太網(wǎng)二層交換芯片的結(jié)構(gòu)框圖;其次,詳細介紹設計中關(guān)鍵模塊的實現(xiàn)原理;最后,給出設計的功能仿真,驗證該設計的可行性。

        1 功能概述

        1.1 功能框圖

        FPGA實現(xiàn)千兆二層交換芯片的功能框圖,如圖1所示。芯片內(nèi)部核心部分工作時鐘為125 MHz,端口可工作在1 000/100/10 Mb/s速率,端口時鐘可為125/25/2.5 MHz,因此需要端口幀收發(fā)緩存單元來緩存MAC幀。各端口接收到MAC幀后,向共享緩存控制單元發(fā)出請求。共享緩存單元公平輪詢各端口的請求,為MAC幀分配存儲空間,并將MAC幀從端口緩存單元分片存儲到共享緩沖區(qū),同時提取幀頭信息,進行MAC地址的查找和自學習。將幀存儲的起始地址、優(yōu)先級信息、幀轉(zhuǎn)發(fā)類型和目的端口號生成描述符信息,寫入目的端口相應優(yōu)先級的發(fā)送描述符隊列中。描述符調(diào)度單元從各端口發(fā)送描述符隊列中的調(diào)度描述符,按其攜帶的起始地址,從共享緩沖區(qū)讀取MAC幀,寫入目的端口的幀發(fā)送緩存單元,并釋放空閑地址;最后,由MAC發(fā)送控制器完成802.3 MAC幀的封裝和發(fā)送。交換芯片結(jié)構(gòu)框圖中還包括寄存器單元。用戶通過SPI接口訪問寄存器單元,可以通過讀取寄存器的值了解芯片的工作狀態(tài),并通過配置寄存器改變芯片的工作模式。

        圖1 FPGA實現(xiàn)千兆交換芯片功能

        1.2 模塊劃分

        模塊化設計是FPGA設計中的一個重要技巧。它可以將大規(guī)模復雜系統(tǒng)按照一定規(guī)則劃分成若干模塊,然后對每個模塊進行設計輸入與綜合,并將實現(xiàn)結(jié)果約束在預先設置好的區(qū)域內(nèi),最后將所有模塊的實現(xiàn)結(jié)果有機組織起來,完成整個系統(tǒng)的設計。每個模塊本身又可以通過多個子模塊來實現(xiàn),因此模塊化設計不僅層次清晰,還有利于模塊的復用、移植,更有利于日后的代碼升級、維護以及設計的綜合優(yōu)化。根據(jù)FPGA設計中的模塊化設計思想,結(jié)合FPGA軟件的功能需求特點,基于以功能為主的原則,對FPGA程序進行如圖2所示的模塊劃分。

        圖2 模塊劃分

        2 FPGA關(guān)鍵模塊實現(xiàn)

        2.1 MAC幀收發(fā)控制器

        圖3是IEEE802.3規(guī)定的MAC幀格式。前兩個字段分別是目的MAC地址和源MAC地址,第三個字段是長度/類型字段。

        圖3 IEEE802.3 MAC幀格式

        數(shù)據(jù)字段是對上層IP數(shù)據(jù)報的直接封裝,IP頭部包含優(yōu)先級信息。IEEE802.3規(guī)定有效的MAC幀長為64~1 518 Byte,因此數(shù)據(jù)字段長度應為46~1 500 Byte。MAC幀尾部是4 Byte的FCS,即幀檢驗序列。它采用CRC-32校驗碼,用以檢驗收到的幀是否存在差錯。

        802.3 標準規(guī)定,凡出現(xiàn)下列情況之一的即為無效的MAC幀:

        (1)第三字段表示長度時,MAC數(shù)據(jù)字段的長度與長度字段的值不一致;

        (2)幀長度不是整數(shù)個字節(jié);

        (3)用收到的幀檢驗序列FCS查出有差錯;

        (4)收到的MAC幀長度不在64~1 518 Byte范圍內(nèi)。

        當目的MAC地址為x“FFFFFFFFFFFF”時,是廣播包;當目的MAC地址為x“0180C2000000”時,是BPDU報文,用于實現(xiàn)生成樹協(xié)議;當目的MAC地址為x“0180C2000001”時,是Pause幀,用于實現(xiàn)流量控制。

        MAC幀收發(fā)控制器主要依賴MAC幀接收狀態(tài)機和MAC幀發(fā)送狀態(tài)機。根據(jù)IEEE802.3 MAC幀格式,MAC幀收發(fā)狀態(tài)機如圖4所示。

        圖4 MAC幀收發(fā)狀態(tài)機

        FPGA軟件對接收到的MAC幀進行CRC校驗判斷,校驗錯誤的幀直接丟棄,只對校驗通過的幀進行存儲轉(zhuǎn)發(fā)。

        2.2 存儲轉(zhuǎn)發(fā)控制單元

        存儲轉(zhuǎn)發(fā)控制單元主要包括端口幀緩存單元、地址表查找單元、共享緩存管理單元和描述符調(diào)度單元。

        2.2.1 端口幀緩存單元

        FPGA軟件為每個端口設置MAC幀收發(fā)FIFO各1個。FIFO寬36 bit,深4 096。MAC幀在端口收發(fā)FIFO中的存儲格式,如圖5所示。

        圖5 MAC幀數(shù)據(jù)存儲格式

        端口完成數(shù)據(jù)幀的緩存后,會向共享緩存交換單元發(fā)出請求,請求為包分配存儲空間[1]。

        2.2.2 地址表查找單元

        本設計中,MAC地址表共支持4 096個MAC地址表項,地址表由1 000個Bucket組成,每個Bucket包含4個地址,組織結(jié)構(gòu)如圖6所示。地址表中,MAC地址的存儲位置是由48 bit MAC地址計算出來的Hash值的低10位決定的。Hash算法采用CRC-CCITT多項式(X16+X12+X5+1)實現(xiàn),根據(jù)MAC地址生成16位的Hash值,取其低10位,索引1 000個bucket。因Hash算法不是完美的,為防止出現(xiàn)碰撞,一個Hash值定位1個Bucket,每個Bucket包含4個MAC地址,第一個周期內(nèi)讀出bin0和bin1與DA比較;第二個周期內(nèi)讀出bin2和bin3。

        圖6 基于hash算法的MAC地址表查找

        2.2.3 共享緩存交換單元

        FPGA軟件提供128 kB的共享緩存空間,并采用基于鏈表的控制機制對MAC幀分片存儲,每片128 Byte,共支持1 024片。實質(zhì)上,共享緩存式交換機是時分復用的,緩存在一個時鐘周期內(nèi),只能允許一個端口讀寫。本設計以輪循方式為各端口分配空閑地址。共享緩存管理單元負責完成MAC幀的分片處理,也就是以128 Byte為一個單位從端口緩存FIFO中讀取數(shù)據(jù),然后為每個分片分配存儲空間,并把第一個分片的存儲地址記錄在描述符中。每個分片除了記錄數(shù)據(jù)外,還記錄下一個分片的存儲地址。當分片轉(zhuǎn)發(fā)出去后,共享緩存管理單元完成片地址的釋放。采用分片存儲數(shù)據(jù)包,一個數(shù)據(jù)包的所有分片形成一個鏈表。這種結(jié)構(gòu)使得發(fā)送描述符隊列相對簡單。每個描述符代表一個數(shù)據(jù)包,但只需要存儲第一個分片的地址。這種結(jié)構(gòu)可以自然實現(xiàn)數(shù)據(jù)包之間的分界,不需要設專門的定界符。空閑的片地址存儲在空閑地址隊列中,先進先出,有效實現(xiàn)了空閑地址的分配和釋放。共享緩存管理單元的實現(xiàn)邏輯框,如圖7所示。

        圖7 共享緩存管理單元實現(xiàn)邏輯框

        2.2.4 描述符調(diào)度單元

        RFC1349中定義的IP報文頭部ToS字段高3 bit標識優(yōu)先級,可使數(shù)據(jù)包具有8種優(yōu)先級,其中0為最低優(yōu)先級,7為最高優(yōu)先級。FPGA軟件為每個端口設置4個優(yōu)先級隊列,根據(jù)數(shù)據(jù)攜帶的ToS信息將其描述符映射到相應的優(yōu)先級隊列中排隊[2],映射關(guān)系和調(diào)度示意圖如圖8所示。它的優(yōu)先級關(guān)系為Cos0>Cos1>Cos2>Cos3。

        圖8 描述符調(diào)度

        每個端口4個描述符隊列之間的調(diào)度算法采用嚴格優(yōu)先級的方式進行調(diào)度。只有當高優(yōu)先級隊列為空時,才調(diào)度低優(yōu)先級隊列中的描述符。4個端口之間采用公平的輪詢機制進行調(diào)度。描述符32 bit,具體格式如圖9所示。

        圖9 描述符格式

        2.3 STP生成樹

        當很多個交換機形成一個網(wǎng)絡時,極有可能產(chǎn)生環(huán)路。此時若網(wǎng)絡上有廣播報文時,因為交換機對廣播報文的處理是所有端口復制轉(zhuǎn)發(fā),而環(huán)路的形成就會導致廣播報文永遠無法消除,且被復制的越來越多而形成廣播風暴,最終導致網(wǎng)絡崩潰。生成樹的作用是對網(wǎng)絡進行自動拓撲,防止環(huán)路的產(chǎn)生[3]。

        FPGA實現(xiàn)的二層交換芯片具備以下功能,可以支持生成樹的運行:

        (1)可以通過寄存器配置交換模式,選擇是否使能生成樹協(xié)議;

        (2)可以識別以01.80.c2.00.00.00為目標地址的MAC層網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU報文,并通過IMP口將其轉(zhuǎn)發(fā)且只轉(zhuǎn)發(fā)給CPU;

        (3)可以處理生成樹標簽,對于轉(zhuǎn)發(fā)給CPU的報文,在標簽中添加接收端口;從CPU接收的報文可以按照CPU在標簽中指定的端口轉(zhuǎn)發(fā);

        (4)CPU可以通過寄存器配置各端口的生成樹狀態(tài),交換芯片能在下面5種狀態(tài)里控制轉(zhuǎn)發(fā):

        ①Disabled(禁止態(tài)),不能接收和發(fā)送任何MAC幀;

        ②Blocking(阻塞態(tài)),只能接收BPDU,不能傳輸數(shù)據(jù),也不能發(fā)送BPDU;

        ③Listening(監(jiān)聽態(tài)),不能接收或者發(fā)送數(shù)據(jù),但可以接收和發(fā)送BPDU;

        ④Learning(學習態(tài)),不能傳輸數(shù)據(jù),可以發(fā)送和接收BPDU,可以學習MAC地址。

        ⑤Forwarding(轉(zhuǎn)發(fā)態(tài)),能夠發(fā)送和接收數(shù)據(jù)和BPDU。

        2.4 流量控制單元

        IEEE802.3x中定義了全雙工鏈路上流量控制的PAUSE機制,使用MAC Control幀攜帶PAUSE命令。PAUSE命令的MAC Control幀格式如圖10所示,幀長度為64 Byte。多播地址01-80-C2-00-00-01保留給PAUSE幀專用。

        圖10 PAUSE幀格式

        PAUSE幀中包含了PAUSE操作碼和要求的暫停時間間隙。這些信息以兩個字節(jié)整數(shù)形式表示,其中包含請求接收站點停止發(fā)送數(shù)據(jù)的時間長度。暫停時間以暫?!皅uanta”為單位,每個“quanta”等于512位時間。暫停時間的范圍為0~65 535個單位。通過利用MAC Control幀傳送PAUSE請求,全雙工鏈路一端的站點能夠請求另一端的站點在一段時間內(nèi)停止發(fā)送數(shù)據(jù)。當暫停發(fā)送的端口收到時間因子為0的pause幀時,則停止等待,恢復發(fā)送。

        本設計實現(xiàn)的千兆二層交換芯片,首先各端口是否使能pause幀機制的流量控制,是CPU通過寄存器配置的。若是端口未使能pause幀的流控,則共享緩存剩余空間不足時,直接丟棄數(shù)據(jù)包,避免緩存溢出,包處理出錯。若端口使能了pause幀的流控機制,則在共享緩存剩余空間低于下限時,發(fā)送時間因子為x“FFFF”的pause幀,讓對端等待,停止發(fā)送;當共享緩存剩余空間高于上限時,發(fā)送時間因子為x“0000”的pause幀時,讓對方停止等待,恢復發(fā)送。這種方式又稱為Xon/Xoff喚醒機制的流控方式。

        僅僅采用基于Pause幀的流量控制,并不能保證高優(yōu)先級數(shù)據(jù)的實時轉(zhuǎn)發(fā)。假如某端口同時有多種優(yōu)先級的數(shù)據(jù)需要發(fā)送,為了避免低優(yōu)先級的數(shù)據(jù)積壓占用共享緩存而引發(fā)pause幀的流控,造成高優(yōu)先級的數(shù)據(jù)也暫停傳輸,F(xiàn)PGA程序中還加入了低優(yōu)先級數(shù)據(jù)包的丟棄機制,即當共享緩存剩余空間低于下限時,若當前端口只有一種優(yōu)先級的數(shù)據(jù),則啟動pause幀的流控;若當前端口有兩種及以上優(yōu)先級的數(shù)據(jù)時,則首先丟棄最低優(yōu)先級的數(shù)據(jù),釋放緩存空間。

        3 仿真結(jié)果

        本設計的軟件開發(fā)平臺是Xilinx ISE 13.3,利用其自帶仿真工具進行功能仿真。圖11給出了MAC幀從端口2接收,然后交換至端口1發(fā)送的仿真結(jié)果。

        從仿真圖11可以看出,從端口2接收到的MAC幀,先寫入端口接收FIFO中,完成幀的存儲后產(chǎn)生rxfifo_req請求信號。然后,共享緩存單元響應請求,先從freecellfifo空閑片地址FIFO中讀取一個空閑片地址x“38”,把數(shù)據(jù)從接收FIFO中寫入共享緩存,并產(chǎn)生一個描述符,將描述符寫入信號descriptor_valid。當描述符寫入目的端口相應優(yōu)先級的描述符隊列后,共享緩存調(diào)度描述符,按照描述符中攜帶的起始地址從共享緩存中讀取數(shù)據(jù),并釋放了x“38”的片地址。端口1的發(fā)送FIFO中有數(shù)據(jù)后,便開始通過發(fā)送控制器往鏈路上發(fā)送數(shù)據(jù)。

        4 結(jié) 語

        本文的設計對象是千兆以太網(wǎng)二層交換芯片。通過上述分析和仿真驗證,可以證明FPGA體系結(jié)構(gòu)和功能的正確性。目前,設計的可管理性主要包括鏈路配置、生成樹配置以及流控配置。相比于市場上成熟的交換芯片,該設計可以滿足千兆自適應二層交換的基本功能,但是尚存在需要完善和豐富的地方,也是后期繼續(xù)研究的方向。

        猜你喜歡
        描述符分片隊列
        上下分片與詞的時空佈局
        詞學(2022年1期)2022-10-27 08:06:12
        基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
        測繪學報(2022年12期)2022-02-13 09:13:01
        分片光滑邊值問題的再生核方法
        CDN存量MP4視頻播放優(yōu)化方法
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        基于模糊二分查找的幀分片算法設計與實現(xiàn)
        在隊列里
        Linux單線程并發(fā)服務器探索
        豐田加速駛?cè)胱詣玉{駛隊列
        精品乱码久久久久久久| 精品视频手机在线免费观看| 日本一区二区精品高清| 韩国三级中文字幕hd| 午夜大片又黄又爽大片app| 亚洲AV色欲色欲WWW| 中文字幕乱码亚洲一区二区三区| 久久性爱视频| 亚洲国产人在线播放首页| 波多野结衣一区二区三区免费视频| 国产一区二区三区在线影院| 国产成人无码av一区二区在线观看 | 国产精品自产拍av在线| 精品亚洲一区二区三区四区五区| 亚洲国产精品久久久久婷婷老年 | 久久精品人人做人人综合 | 日韩熟女一区二区三区 | 一区二区三区少妇熟女高潮| 国产一级一级内射视频| 国产精品无码久久久久久久久久| 亚洲Av午夜精品a区| 在线观看女同一区二区| 国产成人a级毛片| 精品人妻一区二区三区四区| 国产chinese在线视频| 亚洲一区二区精品在线| 国产午夜福利精品一区二区三区 | 三年的高清电影免费看| 亚洲一二三区在线观看| 好爽要高潮了在线观看| 亚洲高清三区二区一区| 一品二品三品中文字幕| 亚洲an日韩专区在线| 免费在线不卡黄色大片| 内射口爆少妇麻豆| 久久久久99精品国产片| 亚洲天堂中文字幕君一二三四| 论理视频二区三区四区在线观看 | 强d乱码中文字幕熟女免费| av无码天堂一区二区三区| 亚洲狼人社区av在线观看|