欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法與流程

文檔序號(hào):12134300閱讀:801來(lái)源:國(guó)知局
基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法與流程

本發(fā)明涉及一種可編程網(wǎng)絡(luò)通信實(shí)現(xiàn)方法,特別是涉及一種基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法。



背景技術(shù):

在互聯(lián)網(wǎng)應(yīng)用快速發(fā)展的今天,對(duì)靈活高速大吞吐率的網(wǎng)絡(luò)互聯(lián)架構(gòu)的要求也越來(lái)越高。尤其當(dāng)網(wǎng)絡(luò)交換技術(shù)進(jìn)入云計(jì)算時(shí)代,在繼承原有數(shù)據(jù)交換基礎(chǔ)上的同時(shí)需要靈活支持新出現(xiàn)的交換標(biāo)準(zhǔn)和應(yīng)用。大規(guī)模部署虛擬化和云計(jì)算則催生了以工作負(fù)載為中心的下一代數(shù)據(jù)中心網(wǎng)絡(luò),復(fù)雜的網(wǎng)絡(luò)需要為工作負(fù)載提供端對(duì)端的網(wǎng)絡(luò)資源,如何應(yīng)對(duì)業(yè)務(wù)快速響應(yīng)需求成為了下一代數(shù)據(jù)中心不得不面臨的挑戰(zhàn)。

云計(jì)算和虛擬化等網(wǎng)絡(luò)交換管理技術(shù)需要靈活的網(wǎng)絡(luò)擴(kuò)展性,因此網(wǎng)絡(luò)的轉(zhuǎn)發(fā)平面和控制平面都需要橫向擴(kuò)展和性能增強(qiáng),同時(shí)由于網(wǎng)絡(luò)中軟硬件綁定的方式使得網(wǎng)絡(luò)發(fā)展緩慢,促使網(wǎng)絡(luò)交換芯片不光要實(shí)現(xiàn)軟硬件的分離,同時(shí)還要求數(shù)據(jù)面和控制面能夠支持應(yīng)用的擴(kuò)展變化。

本發(fā)明專利正是在傳統(tǒng)二三層網(wǎng)絡(luò)交換芯片的基礎(chǔ)上,引入了微碼可編程引擎和流表設(shè)計(jì)的理念,將控制層面轉(zhuǎn)移到Host端,網(wǎng)絡(luò)交換芯片只控制數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā),并且由于微引擎的可編程性使得新功能新應(yīng)用可以靈活添加。同時(shí)本專利實(shí)現(xiàn)了多級(jí)流表,使得數(shù)據(jù)報(bào)文在轉(zhuǎn)發(fā)時(shí)更精確、更高效。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法,在傳統(tǒng)的網(wǎng)絡(luò)交換芯片的基礎(chǔ)上引入微碼可編程引擎和多級(jí)流表來(lái)增強(qiáng)靈活性從而實(shí)現(xiàn)對(duì)未來(lái)網(wǎng)絡(luò)應(yīng)用發(fā)展的支持。本發(fā)明使得網(wǎng)絡(luò)交換芯片所支持的標(biāo)準(zhǔn)應(yīng)用在二三層交換的基礎(chǔ)之上能夠根據(jù)用戶的需求支持包括SDN(軟件定義網(wǎng)絡(luò))在內(nèi)的新的網(wǎng)絡(luò)標(biāo)準(zhǔn)和應(yīng)用,并且外部控制器(Host)能夠?qū)W(wǎng)絡(luò)交換芯片實(shí)時(shí)控制,生成修改流表項(xiàng),從而增強(qiáng)了網(wǎng)絡(luò)交換芯片的處理靈活性,以及管理上的實(shí)時(shí)便捷。

本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的:一種基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法,其特征在于,其包括流表表項(xiàng)的創(chuàng)建方案和微碼實(shí)施的技術(shù)方案并采用數(shù)據(jù)包解析引擎、一級(jí)查找引擎、查找分解引擎、二級(jí)查找引擎和數(shù)據(jù)包修改引擎;

所述微碼實(shí)施的技術(shù)方案包括以下步驟:

步驟一:在數(shù)據(jù)包解析引擎中從硬件譯碼器中提取報(bào)文描述符信息;根據(jù)規(guī)范對(duì)數(shù)據(jù)報(bào)文的正確性和完整性進(jìn)行檢查;

步驟二:從接收的報(bào)文中提取查找關(guān)鍵字信息,并產(chǎn)生相應(yīng)的查找關(guān)鍵字;

步驟三:用步驟一產(chǎn)生的信息產(chǎn)生消息和查找關(guān)鍵字,傳遞給一級(jí)查找引擎;

步驟四:在一級(jí)查找引擎中用步驟二產(chǎn)生的查找關(guān)鍵字進(jìn)行流表查找,將查找結(jié)果和步驟三產(chǎn)生的消息傳遞給查找分解引擎;若查找不成功,也要產(chǎn)生一個(gè)相應(yīng)的查找結(jié)果傳遞給查找分解引擎;Host端根據(jù)收發(fā)到數(shù)據(jù)報(bào)文選擇性下發(fā)流表;

步驟五:查找分解引擎步驟三傳遞過(guò)來(lái)的查找結(jié)果和消息,提取控制字段,并根據(jù)控制字段決定該報(bào)文的走向;填寫相應(yīng)的寄存器信息,同時(shí)產(chǎn)生消息傳遞給下一模塊,如需第二級(jí)查找,構(gòu)造查找關(guān)鍵字連同消息一同傳遞給二級(jí)查找引擎;

步驟六:在包修改引擎中根據(jù)查找結(jié)果信息,提取控制字段,跳轉(zhuǎn)到合適的分支,并根據(jù)需要對(duì)報(bào)文進(jìn)行修改,填寫發(fā)送寄存器,將報(bào)文發(fā)送到相應(yīng)的隊(duì)列;

所述流表表項(xiàng)的創(chuàng)建方案包括以下步驟:將流表進(jìn)行拆分,形成多級(jí)流表,每次從報(bào)文中提取的關(guān)鍵字進(jìn)行多級(jí)匹配;每條流表的匹配結(jié)果中都存儲(chǔ)相應(yīng)的轉(zhuǎn)發(fā)信息和行為結(jié)合,通過(guò)行為字段來(lái)控制報(bào)文的處理方式。

優(yōu)選地,所述步驟一中的報(bào)文描述符信息包括該報(bào)文的長(zhǎng)度、類型以及存儲(chǔ)的位置信息。

本發(fā)明的積極進(jìn)步效果在于:本發(fā)明技術(shù)方案提供了網(wǎng)絡(luò)交換中微碼的創(chuàng)建方法,該方法將微碼的執(zhí)行分為五個(gè)模塊,各個(gè)模塊之間通過(guò)發(fā)送消息互相通信,在很大程度上精簡(jiǎn)了代碼量,并使對(duì)數(shù)據(jù)流的處理更加靈活;本發(fā)明還提供了流表的創(chuàng)建方法,特別是多級(jí)流表的創(chuàng)建方法,并在每條流表的匹配結(jié)果中規(guī)定了不同的轉(zhuǎn)發(fā)信息和行為集合;多級(jí)流表一方面提高了匹配的效率,另一方面也可以根據(jù)設(shè)計(jì)需要靈活支持不同的應(yīng)用場(chǎng)景。

附圖說(shuō)明

圖1是數(shù)據(jù)包解析引擎的微碼執(zhí)行流程圖。

圖2是一級(jí)查找引擎的示例執(zhí)行過(guò)程圖。

圖3是Host端處理數(shù)據(jù)報(bào)文示例流程圖。

圖4是查找分解引擎微碼執(zhí)行流程圖。

圖5是數(shù)據(jù)包修改引擎微碼示例執(zhí)行流程圖。

圖6是流表設(shè)計(jì)思路流程圖。

具體實(shí)施方式

下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。

本發(fā)明基于網(wǎng)絡(luò)交換芯片的微碼和流表的實(shí)現(xiàn)方法,其特征在于,其包括流表表項(xiàng)的創(chuàng)建方案和微碼實(shí)施的技術(shù)方案并采用數(shù)據(jù)包解析引擎、一級(jí)查找引擎、查找分解引擎、二級(jí)查找引擎和數(shù)據(jù)包修改引擎;

所述微碼實(shí)施的技術(shù)方案包括以下步驟:

步驟一:在數(shù)據(jù)包解析引擎中從硬件譯碼器中提取報(bào)文描述符信息;根據(jù)規(guī)范對(duì)數(shù)據(jù)報(bào)文的正確性和完整性進(jìn)行檢查;

步驟二:從接收的報(bào)文中提取查找關(guān)鍵字信息,并產(chǎn)生相應(yīng)的查找關(guān)鍵字;

步驟三:用步驟一產(chǎn)生的信息產(chǎn)生消息和查找關(guān)鍵字,傳遞給一級(jí)查找引擎;

步驟四:在一級(jí)查找引擎中用步驟二產(chǎn)生的查找關(guān)鍵字進(jìn)行流表查找,將查找結(jié)果和步驟三產(chǎn)生的消息傳遞給查找分解引擎;若查找不成功,也要產(chǎn)生一個(gè)相應(yīng)的查找結(jié)果傳遞給查找分解引擎;Host端根據(jù)收發(fā)到數(shù)據(jù)報(bào)文選擇性下發(fā)流表;

步驟五:查找分解引擎步驟三傳遞過(guò)來(lái)的查找結(jié)果和消息,提取控制字段,并根據(jù)控制字段決定該報(bào)文的走向;填寫相應(yīng)的寄存器信息,同時(shí)產(chǎn)生消息傳遞給下一模塊,如需第二級(jí)查找,構(gòu)造查找關(guān)鍵字連同消息一同傳遞給二級(jí)查找引擎;

步驟六:在包修改引擎中根據(jù)查找結(jié)果信息,提取控制字段,跳轉(zhuǎn)到合適的分支,并根據(jù)需要對(duì)報(bào)文進(jìn)行修改,填寫發(fā)送寄存器,將報(bào)文發(fā)送到相應(yīng)的隊(duì)列;

所述流表表項(xiàng)的創(chuàng)建方案包括以下步驟:將流表進(jìn)行拆分,形成多級(jí)流表,每次從報(bào)文中提取的關(guān)鍵字進(jìn)行多級(jí)匹配;每條流表的匹配結(jié)果中都存儲(chǔ)相應(yīng)的轉(zhuǎn)發(fā)信息和行為結(jié)合,通過(guò)行為字段來(lái)控制報(bào)文的處理方式。

其中,所述步驟一中的報(bào)文描述符信息包括該報(bào)文的長(zhǎng)度、類型以及存儲(chǔ)的位置信息。

如圖1所示,數(shù)據(jù)包解析引擎作為數(shù)據(jù)報(bào)文的最初處理模塊,負(fù)責(zé)對(duì)報(bào)文進(jìn)行解析域合法性檢查;由于網(wǎng)絡(luò)交換芯片硬件已經(jīng)對(duì)數(shù)據(jù)報(bào)文進(jìn)行了初步的解析,并把解析后的內(nèi)容寫入了相應(yīng)的寄存器中;具體步驟如下:

步驟A01:只需要把硬件解析好的內(nèi)容寫入通用寄存器中,為微碼程序后面使用;

步驟A02:需要根據(jù)規(guī)范對(duì)數(shù)據(jù)報(bào)文的正確性和完整性檢查,例如IP(網(wǎng)絡(luò)之間互聯(lián)的協(xié)議)頭的正確性、TTL(生存時(shí)間值)的正確性;

在該模塊中,數(shù)據(jù)報(bào)文的前64個(gè)字節(jié)已經(jīng)預(yù)取到幀存儲(chǔ)器中;

步驟A03:通過(guò)偏移地址,得到該報(bào)文的VLAN(虛擬局域網(wǎng))、MAC(媒體訪問(wèn)控制)和IP的信息,并寫入到查找關(guān)鍵字的存儲(chǔ)器中,在示例圖中該存儲(chǔ)器中存儲(chǔ)了三個(gè)查找關(guān)鍵字,對(duì)應(yīng)下一模塊的三個(gè)流表;

步驟A04:把報(bào)文的描述符信息,包括該報(bào)文的入端口信息、長(zhǎng)度、在緩沖區(qū)中的位置信息寫入消息的存儲(chǔ)器中,給下一級(jí)模塊使用;

由于查找關(guān)鍵字和消息在同一存儲(chǔ)器中存儲(chǔ),所以需要把它們區(qū)分開來(lái);

步驟A05:每一條查找關(guān)鍵字和消息都生成一個(gè)頭部信息,這些頭部信息與每一條查找關(guān)鍵字和消息一一對(duì)應(yīng),便于下一級(jí)模塊進(jìn)行區(qū)分。

圖2示例的是一級(jí)查找引擎,該模塊主要功能是根據(jù)上一級(jí)傳遞的查找關(guān)鍵字進(jìn)行流表查找,并把查找結(jié)果傳遞給下一級(jí)模塊;一級(jí)查找引擎工作原理的具體步驟如下:

步驟B01:上一級(jí)模塊生成的消息在該模塊中是直接傳遞個(gè)下一級(jí)模塊,該模塊用不到該消息;

步驟B02:流表的查找關(guān)鍵字模塊由端口號(hào)和VLAN標(biāo)簽構(gòu)成;

步驟B03:流表的查找關(guān)鍵字模塊由目的MAC地址和VLAN標(biāo)簽構(gòu)成;

步驟B04:流表的查找關(guān)鍵字模塊由目的IP地址構(gòu)成;

步驟B05、步驟B06:代表的流表存儲(chǔ)在Hash(散列)結(jié)構(gòu)中;

步驟B07:代表的流表存儲(chǔ)在Tree(樹)結(jié)構(gòu)中;

步驟B05、步驟B06、步驟B07提高了查找的時(shí)間和查找的效率;

流表的查找結(jié)果傳遞給下一級(jí)模塊,共有三個(gè)查找結(jié)果,每個(gè)查找結(jié)果都有兩個(gè)控制位,分別是valid和match位。其中valid位為“1”,如果流表匹配成功,match位為“1”,否則該位為“0”。

圖3表示流表的更新過(guò)程,該過(guò)程是由網(wǎng)絡(luò)中的Host端控制的,具體步驟如下:

步驟C02:Host端接收到了某臺(tái)交換機(jī)發(fā)送的Arp報(bào)文,Host端會(huì)對(duì)Arp報(bào)文中的源MAC地址進(jìn)行檢查,檢查該源MAC地址是否在拓?fù)浣Y(jié)構(gòu)中;如果不存在,就把該Arp幀丟棄,否則跳轉(zhuǎn)到C03;

步驟C03:Host端對(duì)發(fā)送Arp的交換機(jī)下發(fā)流表;

由于每一個(gè)剛剛加入到網(wǎng)絡(luò)中的交換機(jī)都要想鄰居發(fā)送LLDP報(bào)文,所以網(wǎng)絡(luò)中的Host端根據(jù)LLDP報(bào)文中的內(nèi)容來(lái)維護(hù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);

步驟C04:Host端收到網(wǎng)絡(luò)中某一臺(tái)交換機(jī)發(fā)來(lái)的LLDP報(bào)文,并對(duì)該報(bào)文進(jìn)行了解析,確定了該交換機(jī)在網(wǎng)絡(luò)中的位置;

步驟C05:網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)中加入了步驟C04中新加入的交換機(jī),所以對(duì)拓?fù)浣Y(jié)構(gòu)進(jìn)行了更新;

步驟C06:為其它的交換機(jī)進(jìn)行流表的下發(fā),增加一條表項(xiàng),把這臺(tái)新加入的交換機(jī)添加到其它交換機(jī)的流表中;

步驟C07:Host端接收到了普通的數(shù)據(jù)報(bào)文,Host要對(duì)該報(bào)文的目的MAC地址進(jìn)行檢查,查看該報(bào)文是否是發(fā)送至該網(wǎng)絡(luò)的。如果該報(bào)文不是發(fā)送到該網(wǎng)絡(luò)中的,則丟棄該報(bào)文,否則跳轉(zhuǎn)到C08;

步驟C08:報(bào)文是發(fā)送至該網(wǎng)絡(luò)的,并且目的交換機(jī)在網(wǎng)絡(luò)拓?fù)渲写嬖?,但是由于交換機(jī)老化流表項(xiàng)等原因,把流表項(xiàng)刪除了,所以要重新下發(fā)流表,進(jìn)行流表更新;

步驟C09:流表更新后,該報(bào)文就能夠正常轉(zhuǎn)發(fā)。

圖4表示查找分解引擎的流程,該模塊的主要功能是從流表查找結(jié)果中提取出關(guān)鍵的信息,寫入消息并傳遞給下一模塊;具體步驟如下:

步驟D01、步驟D02:從上一級(jí)模塊中獲取查找結(jié)果,并根據(jù)查找結(jié)果提取出控制報(bào)文轉(zhuǎn)發(fā)的關(guān)鍵信息,包括該報(bào)文的轉(zhuǎn)發(fā)方式、輸出端口;

在該模塊中要重新生成一條消息,傳遞給下一級(jí)模塊,這個(gè)消息由步驟D02和步驟D08中關(guān)鍵信息組合而成;這個(gè)消息需要LLDP報(bào)文生成頭信息來(lái)進(jìn)行索引,該信息包括消息的長(zhǎng)度,并將該投信息寫入相應(yīng)的寄存器;

步驟D08:如果需要進(jìn)行二級(jí)查找,需要構(gòu)造查找關(guān)鍵字發(fā)送到二級(jí)查找引擎進(jìn)行二級(jí)查找;

由于有的報(bào)文在發(fā)送時(shí)需要對(duì)報(bào)文內(nèi)部的某些字段進(jìn)行修改,如果要修改某些字段,則在步驟D05中相應(yīng)的寄存器中填入要預(yù)取到下一模塊的報(bào)文長(zhǎng)度信息,否則該寄存器填“0”。

圖5表示數(shù)據(jù)包修改引擎的流程圖;數(shù)據(jù)包修改引擎工作原理的具體步驟如下:

步驟E01:收到上一級(jí)模塊傳遞的消息,并提取出消息中的控制字段,并跳轉(zhuǎn)到相應(yīng)的處理分支;

步驟E02:收到了ARP,這類報(bào)文不需要修改,直接發(fā)送到Host端;

步驟E03:收到了LLDP報(bào)文,這類報(bào)文不需要修改,直接發(fā)送到Host端;

在上一模塊中,查找結(jié)果中的行為集合寫入了消息中;

步驟E04:從消息中提取出這些行為集合,這些行為集合包含了對(duì)該報(bào)文的處理方式,包括廣播、發(fā)送至目的端口、發(fā)送至Host以及對(duì)報(bào)文的某些字段進(jìn)行修改;

步驟E05:根據(jù)行為集合里的要求對(duì)報(bào)文的某些字段進(jìn)行修改,包括MAC和Vlan標(biāo)簽字段;

步驟E06:數(shù)據(jù)報(bào)文發(fā)送時(shí)要填寫相應(yīng)的發(fā)送寄存器,這些寄存器內(nèi)存儲(chǔ)了該報(bào)文的描述符信息;

步驟E07:根據(jù)發(fā)送需求發(fā)送到相應(yīng)的隊(duì)列中,等待發(fā)送。

圖6示例通過(guò)展示流表的匹配過(guò)程,說(shuō)明流表的設(shè)計(jì)思路,具體步驟如下:

流表1的匹配關(guān)鍵字為入端口和Vlan標(biāo)簽,匹配結(jié)果中的行為域決定了數(shù)據(jù)報(bào)文是否丟棄;

步驟F01:檢查該報(bào)文是否丟棄,只有不被丟棄的報(bào)文才能進(jìn)行下一級(jí)流表的匹配結(jié)果檢查;

流表2的匹配關(guān)鍵字為目的MAC地址和Vlan標(biāo)簽,該流表的匹配結(jié)果中不設(shè)行為域,只設(shè)目的端口、QoS(服務(wù)質(zhì)量)信息;

步驟F02:檢查該流表是否匹配成功,如果不能匹配成功,則在步驟F03中將匹配結(jié)果的match位設(shè)置成“0”。如果匹配成功,則進(jìn)行下一級(jí)流表的匹配結(jié)果檢查。

流表3的匹配關(guān)鍵字為目的IP地址,該流表的匹配結(jié)果中設(shè)置行為集合;

步驟F04:檢查流表是否匹配成功,如果不能匹配成功,則在步驟F03中將匹配結(jié)果的match位設(shè)置成“0”。如果匹配成功,微碼會(huì)從匹配結(jié)果中提取出行為集合、轉(zhuǎn)發(fā)端口信息。

綜上所述,本發(fā)明技術(shù)方案提供了網(wǎng)絡(luò)交換中微碼的創(chuàng)建方法,該方法將微碼的執(zhí)行分為五個(gè)模塊,各個(gè)模塊之間通過(guò)發(fā)送消息互相通信,在很大程度上精簡(jiǎn)了代碼量,并使對(duì)數(shù)據(jù)流的處理更加靈活;本發(fā)明還提供了流表的創(chuàng)建方法,特別是多級(jí)流表的創(chuàng)建方法,并在每條流表的匹配結(jié)果中規(guī)定了不同的轉(zhuǎn)發(fā)信息和行為集合;多級(jí)流表一方面提高了匹配的效率,另一方面也可以根據(jù)設(shè)計(jì)需要靈活支持不同的應(yīng)用場(chǎng)景。本發(fā)明在控制數(shù)據(jù)層面和控制層面分離的同時(shí),實(shí)現(xiàn)了微碼的分模塊設(shè)計(jì),每個(gè)模塊之間通過(guò)互相發(fā)送消息來(lái)進(jìn)行通信,提高了微碼的執(zhí)行效率和重用性以及靈活性。此外還實(shí)現(xiàn)了多級(jí)流表,提高了流表匹配的效率,每一級(jí)流表都根據(jù)匹配關(guān)鍵字的性質(zhì),設(shè)計(jì)了不同的存儲(chǔ)結(jié)構(gòu),能夠支持包括已有網(wǎng)絡(luò)交換協(xié)議和新增的網(wǎng)絡(luò)應(yīng)用場(chǎng)景。

以上所述的具體實(shí)施例,對(duì)本發(fā)明的解決的技術(shù)問(wèn)題、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
潢川县| 隆德县| 新乐市| 吉木萨尔县| 岗巴县| 宽甸| 江孜县| 隆化县| 宁河县| 古交市| 白河县| 信阳市| 峨眉山市| 武宁县| 黎城县| 东阳市| 和平县| 祁阳县| 宜丰县| 城固县| 长丰县| 云安县| 青铜峡市| 潞城市| 阿拉尔市| 崇仁县| 正宁县| 商水县| 元阳县| 满城县| 镇坪县| 庄浪县| 阳信县| 宝山区| 当雄县| 正蓝旗| 陆河县| 牙克石市| 道真| 广州市| 大城县|