在《車載以太網(wǎng)交換機(jī)入門基本功(3)》介紹了交換機(jī)端口屬性和實(shí)際的VLAN轉(zhuǎn)發(fā)過程。但是,當(dāng)存在多個(gè)待轉(zhuǎn)發(fā)的報(bào)文時(shí),既要考慮到報(bào)文的及時(shí)性,又要考慮到轉(zhuǎn)發(fā)效率,因此,如何進(jìn)行有效調(diào)度就成了重要問題。一個(gè)解決辦法是進(jìn)行優(yōu)先級(jí)設(shè)計(jì)。
優(yōu)先級(jí)設(shè)計(jì)
優(yōu)先級(jí)設(shè)計(jì)包括報(bào)文PCP字段和交換機(jī)隊(duì)列兩個(gè)部分。報(bào)文PCP字段可以回顧《交換機(jī)入門基本功-2》,如圖 1所示:
圖 1 攜帶VLAN的MAC報(bào)文格式
PCP優(yōu)先級(jí)長度為3bit,取值在0-7之間共八個(gè)取值。通常來說值越大則優(yōu)先級(jí)越高,越快被轉(zhuǎn)發(fā)。由于以太網(wǎng)是串行通信,所以當(dāng)不同優(yōu)先級(jí)的報(bào)文發(fā)送到交換機(jī)端口上時(shí),需要“排隊(duì)出門”。
在交換機(jī)端口上存在多個(gè)隊(duì)列,隊(duì)列也存在優(yōu)先級(jí)之分,值越大則優(yōu)先級(jí)越高,越快被轉(zhuǎn)發(fā)。PCP優(yōu)先級(jí)和隊(duì)列優(yōu)先級(jí)不是一一對(duì)應(yīng)的,存在映射關(guān)系。如圖 2所示,左側(cè)第一列是PCP優(yōu)先級(jí)(從0-7),第一行是端口的隊(duì)列個(gè)數(shù)(從1-8),根據(jù)隊(duì)列個(gè)數(shù)進(jìn)行映射。
圖 2 PCP優(yōu)先級(jí)和隊(duì)列優(yōu)先級(jí)映射表
以端口包含4個(gè)隊(duì)列為例:PCP=0和1映射到隊(duì)列優(yōu)先級(jí)0,PCP=2和3映射到隊(duì)列優(yōu)先級(jí)1,PCP=4和5映射到隊(duì)列優(yōu)先級(jí)2,PCP=6和7映射到隊(duì)列優(yōu)先級(jí)3。映射完成后,隊(duì)列優(yōu)先級(jí)3的報(bào)文較快轉(zhuǎn)發(fā),而隊(duì)列優(yōu)先級(jí)0的報(bào)文較慢轉(zhuǎn)發(fā)。同一個(gè)隊(duì)列下的報(bào)文按照進(jìn)入隊(duì)列的早晚進(jìn)行轉(zhuǎn)發(fā)。如圖 3所示:
圖 3 端口的隊(duì)列轉(zhuǎn)發(fā)
考慮到轉(zhuǎn)發(fā)實(shí)時(shí)性和效率,可以針對(duì)性地設(shè)計(jì)隊(duì)列調(diào)度規(guī)則。這里介紹兩種常見的隊(duì)列調(diào)度機(jī)制:優(yōu)先級(jí)隊(duì)列調(diào)度(PQ, Priority Queuing)和加權(quán)循環(huán)調(diào)度(WRR, Weight Round Robin)。
· 優(yōu)先級(jí)隊(duì)列調(diào)度(PQ, Priority Queuing)
嚴(yán)格按照隊(duì)列優(yōu)先級(jí)大小進(jìn)行調(diào)度。只有高優(yōu)先級(jí)隊(duì)列的報(bào)文全部轉(zhuǎn)發(fā)完畢,低優(yōu)先級(jí)隊(duì)列的報(bào)文才會(huì)開始轉(zhuǎn)發(fā)。這種調(diào)度方式方便配置,對(duì)于低延時(shí)的數(shù)據(jù)非常有用,如音視頻數(shù)據(jù)等。但當(dāng)高優(yōu)先級(jí)的數(shù)據(jù)過多時(shí),會(huì)一直占用調(diào)度窗口,導(dǎo)致低優(yōu)先級(jí)的數(shù)據(jù)“永無出頭之日”。低優(yōu)先級(jí)并不意味著不重要,如郵件不追求時(shí)效,但它很有可能包含諸如開會(huì)時(shí)間的重要信息。另一種隊(duì)列調(diào)度機(jī)制可以有效緩解這一問題。
· 加權(quán)循環(huán)調(diào)度(WRR, Weight Round Robin)
不同隊(duì)列給予不同的初始權(quán)值,每次調(diào)度時(shí),權(quán)值不為0的隊(duì)列都調(diào)度一次;每調(diào)度一輪則權(quán)值減1,權(quán)值減到0的隊(duì)列不參與調(diào)度;當(dāng)所有隊(duì)列的權(quán)值均減到0時(shí),重置隊(duì)列的權(quán)值,開啟新一輪的調(diào)度。為了便于理解,假設(shè)有三個(gè)隊(duì)列A、B、C,權(quán)值分別是2、3、4,調(diào)度過程如圖 4所示:
① 第一、二次調(diào)度:ABC,隊(duì)列權(quán)值連續(xù)減1,A=0,B=1,C=2;
② 第三次:A權(quán)值為0,不參與調(diào)度,實(shí)際調(diào)度B和C,隊(duì)列權(quán)值減1,A=0,B=0,C=1;
③ 第四次:A、B不參與調(diào)度,實(shí)際調(diào)度C,隊(duì)列權(quán)值減1,A=0,B=0,C=0;
④ 重置,A=2,B=3,C=4,重復(fù)上述過程。
圖 4 WRR隊(duì)列調(diào)度
WRR調(diào)度機(jī)制讓每個(gè)隊(duì)列都有調(diào)度機(jī)會(huì),機(jī)會(huì)大小取決于權(quán)值大小。因此,低優(yōu)先級(jí)隊(duì)列的數(shù)據(jù)也能轉(zhuǎn)發(fā)。WRR機(jī)制會(huì)跳過空的隊(duì)列并切換到下個(gè)隊(duì)列,保證帶寬充分利用。
報(bào)文優(yōu)先級(jí)、交換機(jī)隊(duì)列和調(diào)度機(jī)制相配合,可以實(shí)現(xiàn)報(bào)文的高效轉(zhuǎn)發(fā),提高帶寬資源利用率。交換機(jī)芯片通過硬件設(shè)計(jì)實(shí)現(xiàn)上述功能,之后需要經(jīng)過測試進(jìn)行驗(yàn)證,才能真正派上用場。
TC11交換機(jī)芯片VLAN測試規(guī)范
在《交換機(jī)入門基本功(1)》提到,交換機(jī)芯片依據(jù)的是OPEN聯(lián)盟TC11工作小組制定的測試規(guī)范“Switch Semiconductor Test Specification”,其中VLAN測試包括八個(gè)部分:
在802.1Q配置測試部分,細(xì)分17個(gè)測試內(nèi)容,如表2所示,定義了入口、轉(zhuǎn)發(fā)、出口過程的配置情況:
在具體測試中,根據(jù)交換機(jī)功能選擇相應(yīng)測試用例,開展測試。
總結(jié)
通過《交換機(jī)入門基本功》4篇文章了解到:交換機(jī)是基于以太網(wǎng)點(diǎn)對(duì)點(diǎn)通信機(jī)制的背景下誕生的,包括學(xué)習(xí)、記憶、接收、查表、轉(zhuǎn)發(fā)的五個(gè)工作過程,具備端口過濾、鏡像、禁用/啟用、轉(zhuǎn)發(fā)等功能。交換機(jī)實(shí)現(xiàn)了物理通信區(qū)域的隔離,即局域網(wǎng),而VLAN則實(shí)現(xiàn)了邏輯區(qū)域的隔離。VLAN通過報(bào)文Tag、交換機(jī)端口屬性、交換機(jī)端口過濾功能得以實(shí)現(xiàn),并通過優(yōu)先級(jí)和隊(duì)列實(shí)現(xiàn)轉(zhuǎn)發(fā)的有效調(diào)度。為了驗(yàn)證交換機(jī)芯片的功能實(shí)現(xiàn),需要參考OPEN聯(lián)盟的TC11交換機(jī)芯片測試規(guī)范,包括通用測試、地址解析、VLAN等9個(gè)方面,此外,實(shí)時(shí)更進(jìn)規(guī)范修改方案并與讀者分享。
感謝讀者們對(duì)本系列的支持!希望大家通過閱讀本文,可以對(duì)交換機(jī)形成整體的認(rèn)識(shí),之后通過不斷學(xué)習(xí)實(shí)現(xiàn)自我升級(jí),成為一名資深的工程師!
經(jīng)緯恒潤作為OPEN聯(lián)盟會(huì)員和AUTOSAR聯(lián)盟的高級(jí)合作伙伴,長期為國內(nèi)外各大OEM和供應(yīng)商提供涵蓋TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技術(shù)領(lǐng)域的設(shè)計(jì)和測試咨詢服務(wù),積極研發(fā)和探索車載網(wǎng)絡(luò)前沿技術(shù)和工程應(yīng)用。通過多個(gè)項(xiàng)目的實(shí)踐經(jīng)驗(yàn),已建立了高質(zhì)量、本土化的設(shè)計(jì)與測試一體化解決方案,為整車網(wǎng)絡(luò)架構(gòu)提供可靠支持。