所述ECMP成員索引M,根據(jù)ECMP成員索引M獲取物理出口和編輯動(dòng)作索引A。這里,需要說明的是,當(dāng)通過路由表查找到的不是ECMP組時(shí),會(huì)直接查找獲取到物理出口和編輯動(dòng)作索引A,而無需再經(jīng)過ECMP成員索引M獲取物理出口和編輯動(dòng)作索引A。
[0022]當(dāng)報(bào)文從公網(wǎng)側(cè)到達(dá)芯片后,由于不是所有報(bào)文的源端口都是路由端口,因此,還需進(jìn)行報(bào)文源端口的判斷,當(dāng)所述報(bào)文的源端口為路由端口時(shí),例如報(bào)文為三層端口報(bào)文,判斷此時(shí)報(bào)文的操作類型為路由,報(bào)文的MACDA為路由MAC,此時(shí),查找路由表,得到對(duì)應(yīng)所述報(bào)文的ECMP成員索引M和所述編輯動(dòng)作索引A ;當(dāng)所述報(bào)文的源端口為非路由端口時(shí),判斷此時(shí)報(bào)文的操作類型不是路由,不會(huì)用到路由功能,因此,不按照本專利所述方案處理報(bào)文。
[0023]在本實(shí)施方式中,步驟“根據(jù)所述編輯動(dòng)作索引取得NAT編輯動(dòng)作和VXLAN編輯動(dòng)作”具體包括:
所述編輯動(dòng)作索引A對(duì)應(yīng)的編輯動(dòng)作實(shí)體包括依次執(zhí)行的第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2,根據(jù)所述第一級(jí)子編輯索引BI取得所述NAT編輯動(dòng)作,根據(jù)所述第二級(jí)子編輯索引B2取得到所述VXLAN編輯動(dòng)作。
[0024]這里,所述NAT編輯動(dòng)作包括修改報(bào)文表中的MACDA (目的MAC地址)、MACSA (源MAC地址)、IPDA (目的IP地址)、IPSA (源IP地址),在其他實(shí)施方式中,NAT編輯動(dòng)作還包括將所述報(bào)文的TTL減去1,以限制數(shù)據(jù)包在計(jì)算機(jī)網(wǎng)絡(luò)中的存在的時(shí)間,但不以此為限,該功能不一定由NAT編輯動(dòng)作完成。所述VXLAN編輯動(dòng)作包括VXLAN及外層三層頭的編輯,具體為添加VXLAN頭、外層UDP頭、外層IP頭等至報(bào)文表中。需要說明的是,NAT編輯動(dòng)作及VXLAN編輯動(dòng)作在芯片中按順序依次執(zhí)行。
[0025]在本實(shí)施方式中,可在第二級(jí)子編輯索引B2對(duì)應(yīng)的第二級(jí)子編輯實(shí)體中配置一個(gè)第三級(jí)子編輯索引B3,若該第三級(jí)子編輯索引B3等于特征值K,表明此時(shí)的ECMP成員索引M包含多個(gè)等價(jià)目的地,即查詢路由表得到的目的地是ECMP,此時(shí)可以根據(jù)ECMP成員索引M取得對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作,在其他實(shí)施方式中,還可根據(jù)所述ECMP成員索引M得到第四級(jí)子編輯索引B4,并根據(jù)所述第四級(jí)子編輯索引B4得到對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作;若該第三級(jí)子編輯索引B3不等于特征值K,表明此時(shí)的路由查找結(jié)果僅包含一個(gè)目的地,即查詢路由表得到的目的地只有一個(gè),此時(shí)第三級(jí)子編輯索引B3生效,可以根據(jù)所述第三級(jí)子編輯索引B3取得對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作。這里,外層二層頭編輯動(dòng)作主要為添加外層MAC頭至報(bào)文表中。
[0026]需要說明的是,本實(shí)施方式設(shè)置了多級(jí)索引,一方面,可以使得條理上更加清晰,另一方面,每一級(jí)索引都代表一種網(wǎng)絡(luò)行為的編輯,有利于編輯動(dòng)作個(gè)數(shù)的收斂。
[0027]其中,設(shè)置第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2可以減少編輯的數(shù)量。假設(shè)報(bào)文A和報(bào)文B來自的VM (Virtual Machine)不同,IP不一樣,要做的NAT編輯也不一樣,但在同一個(gè)租戶(VNI)內(nèi),要加的VXLAN及外層三層頭是一樣的,所以,將第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2分開,可使得報(bào)文A和報(bào)文B的NAT編輯動(dòng)作分兩個(gè)條目進(jìn)行配置,而VXLAN編輯動(dòng)作只需配置一個(gè)條目。
[0028]設(shè)置第三級(jí)子編輯索引B3的原因在于,查詢路由表的結(jié)果為ECMP的時(shí)候,外層二層頭的編輯按路徑不同是不同的,假設(shè)有8個(gè)路徑,那就有8種編輯,這里,第三級(jí)子編輯索引B3 (即外層二層頭編輯動(dòng)作的索引)不在編輯動(dòng)作實(shí)體內(nèi)直接出索引,而是移到后面去做,如此,ECMP的時(shí)候編輯動(dòng)作實(shí)體只需要有I個(gè)就夠了,而無需重復(fù)配置8個(gè),因?yàn)镋CMP的時(shí)候,報(bào)文除了外層二層頭的編輯不同之外,其他編輯都是一樣的。
[0029]參見圖5,本發(fā)明的實(shí)現(xiàn)虛擬化負(fù)載均衡的芯片設(shè)備包括接收模塊10、解析模塊11、執(zhí)行模塊12、編輯模塊13及發(fā)送模塊14,接收模塊10用于接收?qǐng)?bào)文;解析模塊11用于解析所述報(bào)文,并查表得到對(duì)應(yīng)所述報(bào)文的ECMP成員索引M和編輯動(dòng)作索引A ;執(zhí)行模塊12用于根據(jù)所述編輯動(dòng)作索引A取得NAT編輯動(dòng)作和VXLAN編輯動(dòng)作,以及根據(jù)所述ECMP成員索引M取得外層二層頭編輯動(dòng)作;編輯模塊13用于根據(jù)所述NAT編輯動(dòng)作、所述VXLAN編輯動(dòng)作及所述外層二層頭編輯動(dòng)作編輯所述報(bào)文;發(fā)送模塊14用于發(fā)送所述報(bào)文。
[0030]在本實(shí)施方式中,將數(shù)據(jù)中心虛擬化部署中的負(fù)載均衡直接集成到一個(gè)芯片中,即在該芯片中可以同時(shí)完成NAT功能、加VXLAN報(bào)文頭功能以及ECMP功能,如此,無需多個(gè)器件,且不使用環(huán)回占用多余帶寬,大大降低虛擬化負(fù)載均衡的實(shí)現(xiàn)成本。
[0031]當(dāng)報(bào)文從公網(wǎng)側(cè)到達(dá)芯片后,由于不是所有的報(bào)文的源端口都是路由端口,因此,還需進(jìn)行報(bào)文源端口的判斷,當(dāng)所述報(bào)文的源端口為路由端口時(shí),例如報(bào)文為三層端口報(bào)文,解析模塊11判斷此時(shí)報(bào)文的操作類型為路由,報(bào)文的MACDA為路由MAC,此時(shí),解析模塊11查找路由表,得到對(duì)應(yīng)所述報(bào)文的ECMP成員索引M和所述編輯動(dòng)作索引A ;當(dāng)所述報(bào)文的源端口為非路由端口時(shí),解析模塊11判斷此時(shí)報(bào)文的操作類型不是路由,不會(huì)用到路由功能,因此,不按解析模塊11處理該報(bào)文。
[0032]在本實(shí)施方式中,所述執(zhí)行模塊12包括對(duì)應(yīng)所述編輯動(dòng)作索引A的編輯動(dòng)作實(shí)體,所述編輯動(dòng)作實(shí)體包括依次執(zhí)行的第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2,所述執(zhí)行模塊12用于根據(jù)所述第一級(jí)子編輯索引BI取得所述NAT編輯動(dòng)作,以及根據(jù)所述第二級(jí)子編輯索引B2取得到所述VXLAN編輯動(dòng)作。
[0033]這里,所述NAT編輯動(dòng)作包括修改報(bào)文表中的MACDA (目的MAC地址)、MACSA (源MAC地址)、IPDA (目的IP地址)、IPSA (源IP地址)、四層(UDP/TCP)源端口號(hào)和目的端口號(hào),在其他實(shí)施方式中,NAT編輯動(dòng)作還包括將所述報(bào)文的TTL減去1,以限制數(shù)據(jù)包在計(jì)算機(jī)網(wǎng)絡(luò)中的存在的時(shí)間,但不以此為限,該功能不一定由NAT編輯動(dòng)作完成。所述VXLAN編輯動(dòng)作包括VXLAN及外層三層頭的編輯,具體為添加VXLAN頭、外層UDP頭、外層IP頭等至報(bào)文表中。需要說明的是,NAT編輯動(dòng)作及VXLAN編輯動(dòng)作在芯片中按順序依次執(zhí)行。
[0034]在本實(shí)施方式中,所述執(zhí)行模塊12還包括對(duì)應(yīng)所述第二級(jí)子編輯索引B2的第二級(jí)子編輯實(shí)體,所述執(zhí)行模塊12可在第二級(jí)子編輯實(shí)體中配置一個(gè)第三級(jí)子編輯索引B3,若該第三級(jí)子編輯索引B3等于特征值K,表明此時(shí)的ECMP成員索引M包含多個(gè)等價(jià)目的地,即查詢路由表得到的目的地是ECMP,此時(shí)執(zhí)行模塊12可以根據(jù)ECMP成員索引M取得對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作,在其他實(shí)施方式中,執(zhí)行模塊12可以根據(jù)所述ECMP成員索引M得到第四級(jí)子編輯索引B4,并根據(jù)所述第四級(jí)子編輯索引B4得到對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作;若該第三級(jí)子編輯索引B3不等于特征值K,表明此時(shí)的路由表查找結(jié)果僅包含一個(gè)目的地,即查詢路由表得到的目的地只有一個(gè),此時(shí)第三級(jí)子編輯索引B3生效,執(zhí)行模塊12可以根據(jù)所述第三級(jí)子編輯索引B3取得對(duì)應(yīng)的所述外層二層頭編輯動(dòng)作。這里,外層二層頭編輯動(dòng)作主要為添加外層MAC頭至報(bào)文表中。
[0035]需要說明的是,本實(shí)施方式設(shè)置了多級(jí)索引,一方面,可以使得條理上更加清晰,另一方面,每一級(jí)索引都代表一種網(wǎng)絡(luò)行為的編輯,有利于編輯動(dòng)作個(gè)數(shù)的收斂。
[0036]其中,設(shè)置第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2可以減少編輯實(shí)體條目的數(shù)量。假設(shè)報(bào)文A和報(bào)文B來自的VM不同,IP不一樣,要做的NAT編輯也不一樣,但在同一個(gè)租戶(VNI)內(nèi),要加的VXLAN及外層三層頭是一樣的,所以,將第一級(jí)子編輯索引BI及第二級(jí)子編輯索引B2分開,可使得報(bào)文A和報(bào)文B的使用不同的NAT編輯動(dòng)作,而VXLAN編輯動(dòng)作使用同一個(gè)。
[0037]設(shè)置第三級(jí)子編輯索引B3的原因在于,查詢路由表的結(jié)果為ECMP的時(shí)候,外層二層頭的編輯按路徑不同是不同的,假設(shè)有8個(gè)路徑,那就有8種編輯,這里,第三級(jí)子編輯索引B3 (即外層二層頭編輯動(dòng)作的索引)不在編輯動(dòng)作實(shí)體內(nèi)直接出索引,而是移到后面去做,如此,ECMP的時(shí)候編輯動(dòng)作實(shí)體只需要有I個(gè)就夠了,而無需重復(fù)配置8個(gè),因?yàn)镋CMP的時(shí)候,報(bào)文除了外層二層頭的編輯不同之外