本發(fā)明涉及一種pcie安全域廣播方法以及系統(tǒng)。
背景技術(shù):
pcie總線用于高速設(shè)備與主芯片之間的互聯(lián)或者多個(gè)芯片之間的相互連接,有類似樹(shù)形的拓?fù)浣Y(jié)構(gòu),但是目前只能按照bdf地址進(jìn)行定向的數(shù)據(jù)轉(zhuǎn)發(fā)。我們目前有實(shí)現(xiàn)多個(gè)soc芯片的增量連接,某幾個(gè)soc主控可能組成一個(gè)單獨(dú)的域來(lái)共享bdf地址,而不是每個(gè)soc主控都擁有自己?jiǎn)为?dú)的bdf地址;比如:最頂層的pcie的rc(即為rootcomplex)給下游分配地址和bar空間的時(shí)候,是給某個(gè)域進(jìn)行分配而不是某個(gè)pcie的ep設(shè)備進(jìn)行分配。并且在某些特定的情況下,我們需要向拓?fù)鋬?nèi)的所有設(shè)備發(fā)送一些特殊控制信息,需要廣播到所有的ep設(shè)備(無(wú)論有無(wú)單獨(dú)的bdf地址和bar空間)。所以我們?cè)趐cie的標(biāo)準(zhǔn)協(xié)議之上,附加了一種能夠配置并分配域地址,已經(jīng)全域廣播的機(jī)制。同時(shí)考慮到實(shí)際需求,廣播可以是rc進(jìn)行強(qiáng)制廣播或者ep設(shè)備進(jìn)行申請(qǐng),仲裁后獲取廣播權(quán)限。同時(shí)pcie總線映射分配地址后,只能限定某段地址可以給pcie設(shè)備訪問(wèn)?;蛘吣壳坝行﹑cie主橋帶有iommu,可以再做一層物理地址到虛擬地址的轉(zhuǎn)換。無(wú)論是哪一種,實(shí)現(xiàn)的都是針對(duì)整個(gè)pcie拓?fù)錁?shù)設(shè)備的限制。其廣播過(guò)程是一個(gè)一個(gè)進(jìn)行廣播,若是ep設(shè)備很多,則其效率非常慢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種pcie安全域廣播方法以及系統(tǒng),提高廣播效率。
本發(fā)明之一是這樣實(shí)現(xiàn)的:一種pcie安全域廣播方法,包括如下步驟:
步驟1、ep1設(shè)備向rc申請(qǐng)bdf1地址,并且申請(qǐng)一domain1地址;
步驟2、至少一個(gè)ep2設(shè)備申請(qǐng)bdf2地址,且所申請(qǐng)的bdf2地址落在domain1地址范圍內(nèi);
步驟3、當(dāng)一ep2設(shè)備或一ep1設(shè)備廣播時(shí),向rc發(fā)domain地址請(qǐng)求,則rc將所需發(fā)送的數(shù)據(jù)發(fā)送至domain1地址完成廣播。
進(jìn)一步地,還包括步驟4、限定主機(jī)中一段地址空間給pcie設(shè)備訪問(wèn),總線發(fā)起訪問(wèn)時(shí),送出來(lái)的地址會(huì)被總線自動(dòng)截?cái)嘞薅ㄩL(zhǎng)度的冗余碼并補(bǔ)齊零位,得到地址數(shù)據(jù)以及冗余碼;將該冗余碼與之前保存在該物力內(nèi)存的低位數(shù)據(jù)進(jìn)行比較,若正確,則進(jìn)入內(nèi)存訪問(wèn);否,則返回錯(cuò)誤。
進(jìn)一步地,所述步驟4中,對(duì)冗余碼進(jìn)行加密。
進(jìn)一步地,對(duì)所述ep1設(shè)備以及ep2設(shè)備進(jìn)行廣播優(yōu)先級(jí)設(shè)定。
本發(fā)明之二是這樣實(shí)現(xiàn)的:一種pcie安全域廣播系統(tǒng),包括如下模塊:
主申請(qǐng)模塊,ep1設(shè)備向rc申請(qǐng)bdf1地址,并且申請(qǐng)一domain1地址;
次申請(qǐng)模塊,至少一個(gè)ep2設(shè)備申請(qǐng)bdf2地址,且所申請(qǐng)的bdf2地址落在domain1地址范圍內(nèi);
廣播模塊,當(dāng)一ep2設(shè)備或一ep1設(shè)備廣播時(shí),向rc發(fā)domain地址請(qǐng)求,則rc將所需發(fā)送的數(shù)據(jù)發(fā)送至domain1地址完成廣播。
進(jìn)一步地,還包括訪問(wèn)模塊,限定主機(jī)中一段地址空間給pcie設(shè)備訪問(wèn),總線發(fā)起訪問(wèn)時(shí),送出來(lái)的地址會(huì)被總線自動(dòng)截?cái)嘞薅ㄩL(zhǎng)度的冗余碼并補(bǔ)齊零位,得到地址數(shù)據(jù)以及冗余碼;將該冗余碼與之前保存在該物力內(nèi)存的低位數(shù)據(jù)進(jìn)行比較,若正確,則進(jìn)入內(nèi)存訪問(wèn);否,則返回錯(cuò)誤。
進(jìn)一步地,所述訪問(wèn)模塊中,對(duì)冗余碼進(jìn)行加密。
進(jìn)一步地,對(duì)所述ep1設(shè)備以及ep2設(shè)備進(jìn)行廣播優(yōu)先級(jí)設(shè)定。
本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明一種pcie安全域廣播方法以及系統(tǒng),進(jìn)行pcie拓?fù)鋻呙璧臅r(shí)候,針對(duì)各個(gè)拓?fù)鋵哟纬诉M(jìn)行bdf分配之外,還需要進(jìn)行domain的分配;使得在進(jìn)行廣播的時(shí)候可以直接在一個(gè)domain內(nèi)進(jìn)行廣播,不需要再對(duì)域中的每個(gè)ep設(shè)備進(jìn)行廣播,大大提高了廣播的效率;分配之后的廣播依靠domain機(jī)制進(jìn)行,訪問(wèn)的地址審查依靠地址截?cái)嗯c審查單元進(jìn)行;使得訪問(wèn)更加安全可靠。
附圖說(shuō)明
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
圖1為本發(fā)明方法執(zhí)行流程圖。
圖2為本發(fā)明中的安全審查流程圖。
具體實(shí)施方式
如圖1和圖2所示,本發(fā)明pcie安全域廣播方法,包括如下步驟:
步驟1、ep1設(shè)備向rc申請(qǐng)bdf1地址,并且申請(qǐng)一domain1地址;
步驟2、至少一個(gè)ep2設(shè)備申請(qǐng)bdf2地址,且所申請(qǐng)的bdf2地址落在domain1地址范圍內(nèi);
步驟3、當(dāng)一ep2設(shè)備或一ep1設(shè)備廣播時(shí),向rc發(fā)domain地址請(qǐng)求,則rc將所需發(fā)送的數(shù)據(jù)發(fā)送至domain1地址完成廣播,對(duì)所述ep1設(shè)備以及ep2設(shè)備進(jìn)行廣播優(yōu)先級(jí)設(shè)定;
步驟4、限定主機(jī)中一段地址空間給pcie設(shè)備訪問(wèn),總線發(fā)起訪問(wèn)時(shí),送出來(lái)的地址會(huì)被總線自動(dòng)截?cái)嘞薅ㄩL(zhǎng)度的冗余碼并補(bǔ)齊零位,得到地址數(shù)據(jù)以及冗余碼;將該冗余碼與之前保存在該物力內(nèi)存的低位數(shù)據(jù)進(jìn)行比較,若正確,則進(jìn)入內(nèi)存訪問(wèn);否,則返回錯(cuò)誤;,對(duì)冗余碼進(jìn)行加密。
本發(fā)明pcie安全域廣播系統(tǒng),包括如下模塊:
主申請(qǐng)模塊,ep1設(shè)備向rc申請(qǐng)bdf1地址,并且申請(qǐng)一domain1地址;
次申請(qǐng)模塊,至少一個(gè)ep2設(shè)備申請(qǐng)bdf2地址,且所申請(qǐng)的bdf2地址落在domain1地址范圍內(nèi);
廣播模塊,當(dāng)一ep2設(shè)備或一ep1設(shè)備廣播時(shí),向rc發(fā)domain地址請(qǐng)求,則rc將所需發(fā)送的數(shù)據(jù)發(fā)送至domain1地址完成廣播,對(duì)所述ep1設(shè)備以及ep2設(shè)備進(jìn)行廣播優(yōu)先級(jí)設(shè)定;
訪問(wèn)模塊,限定主機(jī)中一段地址空間給pcie設(shè)備訪問(wèn),總線發(fā)起訪問(wèn)時(shí),送出來(lái)的地址會(huì)被總線自動(dòng)截?cái)嘞薅ㄩL(zhǎng)度的冗余碼并補(bǔ)齊零位,得到地址數(shù)據(jù)以及冗余碼;將該冗余碼與之前保存在該物力內(nèi)存的低位數(shù)據(jù)進(jìn)行比較,若正確,則進(jìn)入內(nèi)存訪問(wèn);否,則返回錯(cuò)誤;對(duì)冗余碼進(jìn)行加密。
本發(fā)明一種具體實(shí)施方式:rc的bdf分配之外再有一個(gè)domain分配,ep設(shè)備1-3申請(qǐng)了bdf之后,ep設(shè)備1還申請(qǐng)了domain地址1,然后ep設(shè)備2,3的bdf地址落在了domain地址1范圍內(nèi)。當(dāng)rc需要向domain1廣播時(shí),從domain分配器獲取domain1域名特權(quán)設(shè)備的bdf地址,直接利用domain分配器向domain1的域地址發(fā)送數(shù)據(jù)包,domain1(即此時(shí)的ep設(shè)備1)在domain1地址段內(nèi)的所有bdf地址發(fā)送廣播。由于domain1的地址僅包含bdf2和bdf3,因此這個(gè)廣播不會(huì)影響到其他ep設(shè)備。同樣,如果ep設(shè)備2需要發(fā)廣播,直接向rc發(fā)domain地址請(qǐng)求,rc就會(huì)告訴ep設(shè)備1,它的domain是domain1,并把所需發(fā)送的數(shù)據(jù)塞給domain1地址以完成廣播任務(wù)。如果ep設(shè)備2,3同時(shí)需要廣播,可以設(shè)定優(yōu)先級(jí)仲裁等機(jī)制。同時(shí)為了解決安全問(wèn)題,限定了某段地址空間可以給pcie設(shè)備訪問(wèn)后,訪問(wèn)該段地址就要求比如512對(duì)齊等等,那么總線上發(fā)起訪問(wèn)時(shí),送出來(lái)的地址中低位512地址會(huì)被總線自動(dòng)截?cái)嗖⒀a(bǔ)齊零位,得到地址a(例如:送出來(lái)的地址中,低于512字節(jié)的地址會(huì)被截?cái)嘌a(bǔ)0;比如,512的十六進(jìn)制是0x200,那么送出來(lái)地址如果是0x201,就會(huì)被截?cái)喑?x200)。截?cái)喑鰜?lái)的低位數(shù)據(jù)包含bdf地址,與之前保存在該物理內(nèi)存a上的低位數(shù)據(jù)進(jìn)行比較。正確則直通,錯(cuò)誤則返回全f。這些段地址的截?cái)嚅L(zhǎng)度我們稱為冗余碼,碼長(zhǎng)可設(shè)定,同時(shí)為了安全考慮,冗余碼的bdf需要加密,密鑰為各方提前預(yù)設(shè)確保安全。
例如:送出來(lái)需要訪問(wèn)的地址是0x12345200,那么實(shí)際送出的地址是0x12345278;然后我們截?cái)喑鰜?lái)的地址是0x12345200,與需要訪問(wèn)的一致。然后截取出來(lái)的最后不對(duì)齊的0x78,我們就拿去比較
pcie技術(shù)有兩個(gè)地址空間的概念,一個(gè)是總線地址域,一個(gè)是內(nèi)存地址域。bdf地址是總線地址域,“某段地址空間”是內(nèi)存地址域。兩者不是一個(gè)技術(shù)概念。pcie的鏈路通信是依靠總線地址來(lái)尋找對(duì)方。而內(nèi)存地址域是在已經(jīng)找到對(duì)方的前提下,如何去訪問(wèn)對(duì)方內(nèi)部的內(nèi)存地址。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。