基于sdn的網(wǎng)絡(luò)處理器微碼和流表實現(xiàn)裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種基于軟件定義網(wǎng)絡(luò)(Software DefinedNetworking,SDN)的網(wǎng)絡(luò)處理器微碼和流表實現(xiàn)方法。
【背景技術(shù)】
[0002]在云計算時代,數(shù)據(jù)中心將成為應(yīng)用和數(shù)據(jù)交互的關(guān)鍵。大規(guī)模部署虛擬化和云計算催生了以工作負(fù)載為中心的下一代數(shù)據(jù)中心網(wǎng)絡(luò),復(fù)雜的網(wǎng)絡(luò)需要為工作負(fù)載提供端對端的網(wǎng)絡(luò)資源,如何應(yīng)對業(yè)務(wù)快速響應(yīng)需求成為了下一代數(shù)據(jù)中心不得不面臨的挑戰(zhàn)。以新的理念來解決網(wǎng)絡(luò)在新應(yīng)用下的挑戰(zhàn),使控制平面和轉(zhuǎn)發(fā)平面分離,作為云計算網(wǎng)絡(luò)中的一種形式,軟件定義網(wǎng)絡(luò)提供了新的思路和方法。
[0003]云計算和虛擬化需要極大的網(wǎng)絡(luò)擴展性要求,因此網(wǎng)絡(luò)的轉(zhuǎn)發(fā)平面和控制平面都需要橫向擴展和性能增強,同時由于網(wǎng)絡(luò)中軟硬件綁定的方式使得網(wǎng)絡(luò)發(fā)展緩慢。SDN—方面主張現(xiàn)有網(wǎng)絡(luò)中軟件和硬件分離,另一方主張數(shù)據(jù)平面和控制平面分離,各自相對靈活發(fā)展,使得網(wǎng)絡(luò)中的問題得以解決。如何借助SDN的理念來實現(xiàn)微碼和流表,使得數(shù)據(jù)報文在轉(zhuǎn)發(fā)時更精確、更高效,是本領(lǐng)域亟待解決的問題。
【發(fā)明內(nèi)容】
[0004]針對上述現(xiàn)有技術(shù)中的問題,本發(fā)明的目的是提供一種基于SDN的網(wǎng)絡(luò)處理器微碼和流表實現(xiàn)裝置及方法,借助SDN的理念,將控制層面轉(zhuǎn)移到Host端,網(wǎng)絡(luò)處理器只控制數(shù)據(jù)報文的轉(zhuǎn)發(fā),達到了控制層面和數(shù)據(jù)層面分離的目的。實現(xiàn)了微碼的分模塊設(shè)計,每個模塊之間通過互相發(fā)送消息來進行通信,提高了微碼的執(zhí)行效率和重用性。同時實現(xiàn)了多級流表,提高了流表匹配的效率,每一級流表都根據(jù)匹配關(guān)鍵字的性質(zhì),設(shè)計了不同的存儲結(jié)構(gòu),節(jié)省了存儲空間,使得數(shù)據(jù)報文在轉(zhuǎn)發(fā)時更精確、更高效。
[0005]為達到上述目的,本發(fā)明所采用的技術(shù)方案如下:
[0006]—種基于SDN的網(wǎng)絡(luò)處理器微碼和流表實現(xiàn)裝置,包括:
[0007]數(shù)據(jù)報文解析模塊,作為數(shù)據(jù)報文的最初處理模塊,負(fù)責(zé)對報文進行解析域合法性檢查;
[0008]流表查找模塊,根據(jù)上一級傳遞的查找關(guān)鍵字進行流表查找,并把查找結(jié)果傳遞給下一級模塊;
[0009]流表匹配結(jié)果解析模塊,從流表查找結(jié)果中提取出關(guān)鍵的信息,寫入消息并傳遞給下一模塊;
[0010]數(shù)據(jù)報文發(fā)送模塊,將數(shù)據(jù)報文發(fā)送到相應(yīng)的隊列中。
[0011 ] —種基于SDN的網(wǎng)絡(luò)處理器微碼和流表實現(xiàn)方法,通過上述的裝置來實現(xiàn),基于軟件定義網(wǎng)絡(luò),即SDN,將網(wǎng)絡(luò)節(jié)點中包含的數(shù)據(jù)層面和控制層面分離,將控制層面轉(zhuǎn)移到外部控制器端,即HOST端,網(wǎng)絡(luò)處理器只控制數(shù)據(jù)報文的轉(zhuǎn)發(fā),HOST能夠?qū)?jié)點實時控制,并控制節(jié)點生成流表項,無需進行復(fù)雜智能分析計算,當(dāng)新轉(zhuǎn)發(fā)節(jié)點加入到網(wǎng)絡(luò)中時,自動從HOST得到最新網(wǎng)絡(luò)配置信息,完成網(wǎng)絡(luò)自動化感知。
[0012]微碼的實現(xiàn)方法包括如下:
[0013]I)從硬件譯碼器中提取報文描述符信息;
[0014]2)根據(jù)規(guī)范對數(shù)據(jù)報文的正確性和完整性進行檢查;
[0015]3)從接收的報文中提取查找關(guān)鍵字信息,并產(chǎn)生相應(yīng)的查找關(guān)鍵字;
[0016]4)將提取的信息和查找關(guān)鍵字傳遞給下一級模塊;
[0017]5)用查找關(guān)鍵字進行流表查找,將查找結(jié)果和查找關(guān)鍵字傳遞給下一模塊,如果查找不成功,也要產(chǎn)生一個相應(yīng)的查找結(jié)果傳遞給下一模塊;
[0018]6)H0ST端根據(jù)收發(fā)到的數(shù)據(jù)報文選擇性下發(fā)流表;
[0019]7)根據(jù)步驟4傳遞過來的信息,提取出控制字段,并根據(jù)控制字段決定該報文的走向,此外,還要填寫相應(yīng)的寄存器信息,同時產(chǎn)生信息傳遞給下一模塊;
[0020]8)根據(jù)步驟5傳遞過來的信息,提取出控制字段,跳轉(zhuǎn)到合適的分支,并根據(jù)需要對報文進行修改,最后填寫發(fā)送寄存器,將報文發(fā)送到相應(yīng)的隊列。
[0021]流表的實現(xiàn)方法如下:將流表進行拆分,形成多級流表,每次從報文中提取出的關(guān)鍵字都要進行多級匹配,每條流表的匹配結(jié)果中都存儲相應(yīng)的轉(zhuǎn)發(fā)信息和行為結(jié)合,通過行為字段控制報文的處理方式。
[0022]數(shù)據(jù)報文解析模塊對報文進行解析域合法性檢查的方法,包括:
[0023]所述數(shù)據(jù)報文解析模塊從譯碼器中提取報文描述符信息,寫入相應(yīng)的寄存器中;
[0024]對報文進行正確性檢查;
[0025]從幀存儲器中提取出VLAN、MAC和IP得信息,并生成查找關(guān)鍵字;
[0026]將報文的描述符信息寫入消息中;
[0027]生成查找關(guān)鍵字和消息的頭信息,并將查找關(guān)鍵字和消息傳入下一級。
[0028]流表查找模塊根據(jù)上一級傳遞的查找關(guān)鍵字進行流表查找,并把查找結(jié)果傳遞給下一級模塊的方法,包括:
[0029]所述流表查找模塊采用三級流表查找關(guān)鍵字,分別是:I)由入端口和VLAN標(biāo)簽構(gòu)成、2)由目的MAC地址和VLAN標(biāo)簽構(gòu)成、3)由目的IP地址構(gòu)成;
[0030]其中I)和2)的流表存儲在Hash結(jié)構(gòu)中,3)的流表存儲在Tree結(jié)構(gòu)中。
[0031]HOST端根據(jù)收發(fā)到的數(shù)據(jù)報文選擇性下發(fā)流表的方法,包括:
[0032]S304: HOST端接收數(shù)據(jù)報文,并對該報文進行解析,確定該交換機在網(wǎng)絡(luò)中的位置;
[0033]S305:更新HOST中網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);
[0034]S306:為SDN網(wǎng)絡(luò)中的交換機下發(fā)流表;
[0035]S302: Host端接收到了某臺交換機發(fā)送的Arp報文,Host端會對Arp報文中的源MAC地址進行檢查,檢查該源MAC地址是否在拓?fù)浣Y(jié)構(gòu)中,如果不存在,就把該Arp幀丟棄,否則跳轉(zhuǎn)到S303;
[0036]S303: Host端對發(fā)送Arp的交換機下發(fā)流表;
[0037]S307:Host端接收到了普通的數(shù)據(jù)報文,Host要對該報文的目的MAC地址進行檢查,查看該報文是否是發(fā)送至該SDN網(wǎng)絡(luò)的,如果該報文不是發(fā)送到該SDN網(wǎng)絡(luò)中的,則丟棄該報文,否則跳轉(zhuǎn)到S308;
[0038]S308:該報文是發(fā)送至該SDN網(wǎng)絡(luò)的,并且目的交換機在網(wǎng)絡(luò)拓?fù)渲写嬖?,但是由于交換機老化流表項的原因,把流表項刪除了,所以要重新下發(fā)流表,進行流表更新;
[0039]S309:流表更新后,該報文即能夠正常轉(zhuǎn)發(fā)。
[0040]流表匹配結(jié)果解析模塊從流表查找結(jié)果中提取出關(guān)鍵的信息,寫入消息并傳遞給下一模塊的方法,包括:
[0041]所述流表匹配結(jié)果解析模塊從上一級模塊中獲取查找結(jié)果,并根據(jù)查找結(jié)果提取出控制報文轉(zhuǎn)發(fā)的關(guān)鍵信息;
[0042]根據(jù)關(guān)鍵信息重新生成一條消息,準(zhǔn)備傳遞給下一級模塊;
[0043]該條消息需要生成頭信息來進行索引,包括消息的長度,并將該頭信息寫入相應(yīng)的寄存器;
[0044]對于在發(fā)送時需要對內(nèi)部的某些字段進行修改的報文,如果要修改某些字段,則在相應(yīng)的寄存器中填入要預(yù)取到下一模塊的報文長度信息,否則該寄存器填“O”。
[0045]控制報文發(fā)送模塊的方法,包括:
[0046]所述報文發(fā)送模塊接收到上一級模塊傳遞的消息,提取出消息中的控制字段,并跳轉(zhuǎn)到相應(yīng)的處理分支;
[0047]對于接收到的ARP和LLDP報文,這類報文不需要修改,直接發(fā)送到Host端;
[0048]在上一級模塊中,查找結(jié)果中的行為集合寫入了消息中,從消息中提取出這些行為集合;
[0049]根據(jù)行為集合里的要求對報文的某些字段進行修改;
[0050]在數(shù)據(jù)報文發(fā)送時填寫相應(yīng)的發(fā)送寄存器,這些寄存器內(nèi)存儲了該報文的描述符信息;
[0051 ]根據(jù)發(fā)送需求發(fā)送到相應(yīng)的隊列中,等待發(fā)送。
[0052]流表的匹配過程如下:
[0053]I)流表I的匹配關(guān)鍵字為入端口和Vlan標(biāo)簽,匹配結(jié)果中的行為域決定了數(shù)據(jù)報文是否丟棄,只有不被丟棄的報文才能進行下一級流表的匹配結(jié)果檢查;
[0054]2)流表2的匹配關(guān)鍵字為目的MAC地址和Vlan標(biāo)簽,該流表的匹配結(jié)果中不設(shè)行為域,只設(shè)包括目的端口、QoS的信息,首先檢查該流表是否匹配成功,如果不能匹配成功,則將匹配結(jié)果的match位設(shè)