本申請(qǐng)涉及計(jì)算機(jī),尤其涉及一種流表部署方法、計(jì)算機(jī)設(shè)備及介質(zhì)。
背景技術(shù):
1、在云計(jì)算網(wǎng)絡(luò)、大數(shù)據(jù)中心等應(yīng)用場(chǎng)景,通過專門的轉(zhuǎn)發(fā)芯片來承載數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù),從而滿足日益增加的數(shù)據(jù)流量的需求?,F(xiàn)有技術(shù)中,基于硬件加速卸載技術(shù)的流表部署方案,一般是直接將流表卸載到硬件內(nèi)存中,例如硬件上的隨機(jī)存取存儲(chǔ)器(randomaccess?memory,ram)或者類似的外部高速緩存。但是隨著流表規(guī)模的增加,例如百萬(wàn)數(shù)量級(jí)的流表和千萬(wàn)數(shù)量級(jí)的流表,可能導(dǎo)致硬件內(nèi)存的存儲(chǔ)空間不足,并且也會(huì)與其他的處理任務(wù)競(jìng)爭(zhēng)有限的存儲(chǔ)資源,不利于提升整體系統(tǒng)性能。另一方面,主機(jī)服務(wù)器上一般有豐富的存儲(chǔ)資源,但是在訪問速度和轉(zhuǎn)發(fā)性能上表現(xiàn)不如硬件上的本地存儲(chǔ)資源。
2、為此,本申請(qǐng)?zhí)峁┝艘环N流表部署方法、計(jì)算機(jī)設(shè)備及介質(zhì),提供了一種基于硬件內(nèi)存和主機(jī)內(nèi)存的混合部署方式來卸載流表,不僅提升了流表規(guī)格而且提升了數(shù)據(jù)轉(zhuǎn)發(fā)性能。
技術(shù)實(shí)現(xiàn)思路
1、第一方面,本申請(qǐng)?zhí)峁┝艘环N流表部署方法。所述流表部署方法包括:當(dāng)待部署流表的流表規(guī)格不大于第一預(yù)設(shè)閾值時(shí),卸載所述待部署流表到數(shù)據(jù)轉(zhuǎn)發(fā)硬件的硬件內(nèi)存上;當(dāng)所述待部署流表的流表規(guī)格大于所述第一預(yù)設(shè)閾值時(shí),按照混合部署方式來卸載所述待部署流表,其中,所述混合部署方式是基于所述硬件內(nèi)存和宿主機(jī)的主機(jī)內(nèi)存,所述數(shù)據(jù)轉(zhuǎn)發(fā)硬件與所述宿主機(jī)連接并且用于承載所述宿主機(jī)的數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù),所述混合部署方式包括,對(duì)所述硬件內(nèi)存的流表索引和所述主機(jī)內(nèi)存的流表索引一起進(jìn)行全局編址從而得到全局編址結(jié)果,然后,基于所述全局編址結(jié)果,優(yōu)先地卸載所述待部署流表到所述硬件內(nèi)存上,以及,當(dāng)所述硬件內(nèi)存中不存在空閑索引時(shí)卸載到所述主機(jī)內(nèi)存上,其中,所述混合部署方式還包括,響應(yīng)于卸載所述待部署流表的第一流表項(xiàng)到所述主機(jī)內(nèi)存上,判斷所述宿主機(jī)的所述主機(jī)內(nèi)存相關(guān)聯(lián)的主機(jī)緩存中是否存在空閑索引,當(dāng)所述主機(jī)緩存中存在空閑索引時(shí)添加所述第一流表項(xiàng)到所述主機(jī)緩存的流表索引,當(dāng)所述主機(jī)緩存中不存在空閑索引時(shí),替換所述主機(jī)緩存的流表索引中的最老流表項(xiàng)為所述第一流表項(xiàng)。
2、通過本申請(qǐng)的第一方面,利用三種不同類型的存儲(chǔ)資源,也即硬件內(nèi)存、主機(jī)內(nèi)存以及主機(jī)緩存,實(shí)現(xiàn)了根據(jù)流表規(guī)格來選擇合適的流表部署模式,有助于充分利用硬件內(nèi)存的存儲(chǔ)資源,提高流表轉(zhuǎn)發(fā)性能;通過對(duì)主機(jī)內(nèi)存和硬件內(nèi)存各自的流表索引進(jìn)行全局編址,可以優(yōu)先卸載流表到硬件內(nèi)存中,當(dāng)硬件內(nèi)存的條目滿規(guī)格后再卸載到主機(jī)內(nèi)存中;設(shè)計(jì)了對(duì)應(yīng)的流表項(xiàng)的添加機(jī)制,保持了硬件內(nèi)存的最高優(yōu)先級(jí),以及實(shí)現(xiàn)了及時(shí)地更新主機(jī)緩存中的流表項(xiàng)。
3、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述主機(jī)內(nèi)存的數(shù)據(jù)規(guī)格大于所述硬件內(nèi)存的數(shù)據(jù)規(guī)格,所述主機(jī)內(nèi)存的訪問速度低于所述硬件內(nèi)存的訪問速度,所述主機(jī)緩存的數(shù)據(jù)規(guī)格小于所述硬件內(nèi)存的數(shù)據(jù)規(guī)格,所述主機(jī)緩存的訪問速度高于所述硬件內(nèi)存的訪問速度。
4、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述混合部署方式還包括,響應(yīng)于刪除部署在所述硬件內(nèi)存上的第二流表項(xiàng),從所述主機(jī)緩存中移動(dòng)所述主機(jī)緩存的流表索引中的最新流表項(xiàng)到所述硬件內(nèi)存,以及,從所述主機(jī)緩存和所述主機(jī)內(nèi)存中刪除被移動(dòng)的流表項(xiàng)。
5、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述混合部署方式還包括,響應(yīng)于刪除部署在所述主機(jī)緩存上的第三流表項(xiàng),從所述主機(jī)內(nèi)存中刪除所述第三流表項(xiàng)。
6、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述主機(jī)緩存的流表索引中的最老流表項(xiàng)和所述主機(jī)緩存的流表索引中的最新流表項(xiàng)均是基于所述主機(jī)緩存的流表索引中的每一個(gè)流表項(xiàng)各自的時(shí)間字段確定的,所述時(shí)間字段指示了流表項(xiàng)被創(chuàng)建時(shí)間和流表項(xiàng)被命中時(shí)間。
7、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述混合部署方式還包括,優(yōu)先在所述硬件內(nèi)存中查表,如果在所述硬件內(nèi)存中查表命中,則結(jié)束查表,并且,如果在所述硬件內(nèi)存中查表不命中,則在所述主機(jī)緩存中查表,然后,如果在所述主機(jī)緩存中查表命中,則更新所述主機(jī)緩存的流表索引中被命中的流表項(xiàng)的流表項(xiàng)被命中時(shí)間。
8、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,如果在所述主機(jī)緩存中查表不命中,則在所述主機(jī)內(nèi)存中查表,如果在所述主機(jī)內(nèi)存中查表命中,則替換所述主機(jī)緩存的流表索引中的最老流表項(xiàng)為所述主機(jī)內(nèi)存的流表索引中被命中的流表項(xiàng),如果在所述主機(jī)內(nèi)存中查表不命中,則反饋查表失敗。
9、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述硬件內(nèi)存是高帶寬存儲(chǔ)器。
10、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述硬件內(nèi)存的流表索引和所述主機(jī)內(nèi)存的流表索引均是哈希表索引。
11、在本申請(qǐng)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述待部署流表是虛擬網(wǎng)絡(luò)交換機(jī)的原生流表,所述虛擬網(wǎng)絡(luò)交換機(jī)利用數(shù)據(jù)平面開發(fā)工具集來實(shí)現(xiàn)基于所述數(shù)據(jù)轉(zhuǎn)發(fā)硬件的流表卸載。
12、第二方面,本申請(qǐng)實(shí)施例還提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。
13、第三方面,本申請(qǐng)實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)指令,當(dāng)所述計(jì)算機(jī)指令在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí)使得所述計(jì)算機(jī)設(shè)備執(zhí)行根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。
14、第四方面,本申請(qǐng)實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的指令,當(dāng)所述指令在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí)使得所述計(jì)算機(jī)設(shè)備執(zhí)行根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。
1.一種流表部署方法,其特征在于,所述流表部署方法包括:
2.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述主機(jī)內(nèi)存的數(shù)據(jù)規(guī)格大于所述硬件內(nèi)存的數(shù)據(jù)規(guī)格,所述主機(jī)內(nèi)存的訪問速度低于所述硬件內(nèi)存的訪問速度,所述主機(jī)緩存的數(shù)據(jù)規(guī)格小于所述硬件內(nèi)存的數(shù)據(jù)規(guī)格,所述主機(jī)緩存的訪問速度高于所述硬件內(nèi)存的訪問速度。
3.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述混合部署方式還包括,響應(yīng)于刪除部署在所述硬件內(nèi)存上的第二流表項(xiàng),從所述主機(jī)緩存中移動(dòng)所述主機(jī)緩存的流表索引中的最新流表項(xiàng)到所述硬件內(nèi)存,以及,從所述主機(jī)緩存和所述主機(jī)內(nèi)存中刪除被移動(dòng)的流表項(xiàng)。
4.根據(jù)權(quán)利要求3所述的流表部署方法,其特征在于,所述混合部署方式還包括,響應(yīng)于刪除部署在所述主機(jī)緩存上的第三流表項(xiàng),從所述主機(jī)內(nèi)存中刪除所述第三流表項(xiàng)。
5.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述主機(jī)緩存的流表索引中的最老流表項(xiàng)和所述主機(jī)緩存的流表索引中的最新流表項(xiàng)均是基于所述主機(jī)緩存的流表索引中的每一個(gè)流表項(xiàng)各自的時(shí)間字段確定的,所述時(shí)間字段指示了流表項(xiàng)被創(chuàng)建時(shí)間和流表項(xiàng)被命中時(shí)間。
6.根據(jù)權(quán)利要求3所述的流表部署方法,其特征在于,所述混合部署方式還包括,優(yōu)先在所述硬件內(nèi)存中查表,如果在所述硬件內(nèi)存中查表命中,則結(jié)束查表,并且,如果在所述硬件內(nèi)存中查表不命中,則在所述主機(jī)緩存中查表,然后,如果在所述主機(jī)緩存中查表命中,則更新所述主機(jī)緩存的流表索引中被命中的流表項(xiàng)的流表項(xiàng)被命中時(shí)間。
7.根據(jù)權(quán)利要求6所述的流表部署方法,其特征在于,如果在所述主機(jī)緩存中查表不命中,則在所述主機(jī)內(nèi)存中查表,如果在所述主機(jī)內(nèi)存中查表命中,則替換所述主機(jī)緩存的流表索引中的最老流表項(xiàng)為所述主機(jī)內(nèi)存的流表索引中被命中的流表項(xiàng),如果在所述主機(jī)內(nèi)存中查表不命中,則反饋查表失敗。
8.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述硬件內(nèi)存是高帶寬存儲(chǔ)器。
9.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述硬件內(nèi)存的流表索引和所述主機(jī)內(nèi)存的流表索引均是哈希表索引。
10.根據(jù)權(quán)利要求1所述的流表部署方法,其特征在于,所述待部署流表是虛擬網(wǎng)絡(luò)交換機(jī)的原生流表,所述虛擬網(wǎng)絡(luò)交換機(jī)利用數(shù)據(jù)平面開發(fā)工具集來實(shí)現(xiàn)基于所述數(shù)據(jù)轉(zhuǎn)發(fā)硬件的流表卸載。
11.一種計(jì)算機(jī)設(shè)備,其特征在于,所述計(jì)算機(jī)設(shè)備包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法。
12.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)指令,當(dāng)所述計(jì)算機(jī)指令在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí)使得所述計(jì)算機(jī)設(shè)備執(zhí)行根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法。