本申請涉及通信領(lǐng)域,尤其涉及一種報文傳輸方法、CPU以及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
網(wǎng)絡(luò)設(shè)備(如路由器、交換機(jī)等)是以CPU(Central Processing Unit,中央處理器)為核心,進(jìn)行網(wǎng)絡(luò)報文的處理與轉(zhuǎn)發(fā),如圖1所示,為網(wǎng)絡(luò)設(shè)備的CPU的結(jié)構(gòu)示意圖。在CPU內(nèi)部集成有CPU核、內(nèi)存控制器、網(wǎng)絡(luò)控制器1和網(wǎng)絡(luò)控制器2。網(wǎng)絡(luò)控制器1在接收到網(wǎng)絡(luò)報文后,通過內(nèi)存控制器,將網(wǎng)絡(luò)報文寫入到系統(tǒng)內(nèi)存的Buffer(緩沖區(qū))中。CPU核從Buffer中獲取網(wǎng)絡(luò)報文,并對網(wǎng)絡(luò)報文進(jìn)行修改(如修改網(wǎng)絡(luò)報文的源IP地址、目的IP地址等),并將修改后的網(wǎng)絡(luò)報文存儲到系統(tǒng)內(nèi)存的Buffer中,以替換修改前的網(wǎng)絡(luò)報文。網(wǎng)絡(luò)控制器2從Buffer中獲取到修改后的網(wǎng)絡(luò)報文,并完成網(wǎng)絡(luò)報文的發(fā)送。
為了提高網(wǎng)絡(luò)設(shè)備的處理能力,可以在CPU內(nèi)集成多個CPU核,如圖2所示,為集成多個CPU核的結(jié)構(gòu)示意圖。但是,由于制造工藝等原因,在CPU內(nèi)集成的CPU核的數(shù)量有限,為了進(jìn)一步提高網(wǎng)絡(luò)設(shè)備的處理能力,在網(wǎng)絡(luò)設(shè)備內(nèi)部可以部署多個CPU,這多個CPU之間通過總線連接起來,如圖3所示,為兩個CPU互聯(lián)的結(jié)構(gòu)示意圖,在每個CPU內(nèi)均可以集成多個CPU核。
如圖3所示,網(wǎng)絡(luò)控制器1在接收到網(wǎng)絡(luò)報文后,將網(wǎng)絡(luò)報文寫入到系統(tǒng)內(nèi)存1的Buffer1中。假設(shè)由網(wǎng)絡(luò)控制器2發(fā)送該網(wǎng)絡(luò)報文,則網(wǎng)絡(luò)控制器2可以通過內(nèi)存控制器,從Buffer1中獲取到該網(wǎng)絡(luò)報文,網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)性能較高。
但是,如果由網(wǎng)絡(luò)控制器4發(fā)送該網(wǎng)絡(luò)報文,則網(wǎng)絡(luò)控制器4需要經(jīng)過兩個互聯(lián)控制器和一個內(nèi)存控制器,才能夠從Buffer1中獲取到該網(wǎng)絡(luò)報文,且互聯(lián)控制器之間的交互是一個非常耗時的操作,因此,網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)性能較差。
技術(shù)實(shí)現(xiàn)要素:
本申請?zhí)峁┮环N報文傳輸方法,應(yīng)用于網(wǎng)絡(luò)設(shè)備的中央處理器CPU上,所述網(wǎng)絡(luò)設(shè)備包括至少兩個CPU,每個CPU對應(yīng)一個系統(tǒng)內(nèi)存,且系統(tǒng)內(nèi)存中包括有為該CPU劃分的第一緩沖區(qū)以及第二緩沖區(qū);所述方法包括:
接收網(wǎng)絡(luò)控制器接收到網(wǎng)絡(luò)報文,內(nèi)存鏡像控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作,以使所述對端CPU存儲該網(wǎng)絡(luò)報文;
內(nèi)存鏡像控制器接收到對端CPU的網(wǎng)絡(luò)報文的寫操作時,將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū);
內(nèi)存鏡像控制器接收到網(wǎng)絡(luò)報文的讀操作時,從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送,該網(wǎng)絡(luò)報文為對端CPU的接收網(wǎng)絡(luò)控制器接收到的網(wǎng)絡(luò)報文;
所述對端CPU為除本端CPU以外的任一CPU。
本申請?zhí)峁┮环N中央處理器CPU,所述CPU對應(yīng)系統(tǒng)內(nèi)存,所述系統(tǒng)內(nèi)存中包括有為所述CPU劃分的第一緩沖區(qū)以及第二緩沖區(qū);所述CPU包括:
接收網(wǎng)絡(luò)控制器,用于接收到網(wǎng)絡(luò)報文;
內(nèi)存鏡像控制器,用于通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并通過互聯(lián)控制器向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作,以使所述對端CPU存儲該網(wǎng)絡(luò)報文;通過互聯(lián)控制器接收到對端CPU的網(wǎng)絡(luò)報文的寫操作時,通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū);接收到網(wǎng)絡(luò)報文的讀操作時,通過內(nèi)存控制器從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送,該網(wǎng)絡(luò)報文為對端CPU的接收網(wǎng)絡(luò)控制器接收到的網(wǎng)絡(luò)報文;
所述對端CPU為除本端CPU以外的任一CPU。
本申請?zhí)峁┮环N網(wǎng)絡(luò)設(shè)備,包括至少兩個上述的中央處理器CPU。
基于上述技術(shù)方案,本申請實(shí)施例中,當(dāng)CPU發(fā)送網(wǎng)絡(luò)報文時,可以從本端CPU對應(yīng)的第二緩沖區(qū)內(nèi)獲取網(wǎng)絡(luò)報文,而不用從對端CPU對應(yīng)的第一緩沖區(qū)內(nèi)獲取網(wǎng)絡(luò)報文,因此,網(wǎng)絡(luò)報文不需要跨CPU傳輸,不需要經(jīng)過兩個互聯(lián)控制器,在一個CPU內(nèi)就可以完成網(wǎng)絡(luò)報文的傳輸,網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)性能較高,縮短了網(wǎng)絡(luò)報文的傳輸時間,提高了網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)效率。
附圖說明
為了更加清楚地說明本申請實(shí)施例或者現(xiàn)有技術(shù)中的技術(shù)方案,下面將對本申請實(shí)施例或者現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是網(wǎng)絡(luò)設(shè)備的CPU的結(jié)構(gòu)示意圖;
圖2是集成多個CPU核的結(jié)構(gòu)示意圖;
圖3是兩個CPU互聯(lián)的結(jié)構(gòu)示意圖;
圖4和圖5是本申請一種實(shí)施方式中的應(yīng)用場景示意圖;
圖6是本申請一種實(shí)施方式中的報文傳輸方法的流程圖。
具體實(shí)施方式
在本申請使用的術(shù)語僅僅是出于描述特定實(shí)施例的目的,而非限制本申請。本申請和權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其它含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指包含一個或多個相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,此外,所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。
本申請實(shí)施例中提出一種報文傳輸方法,該方法可以應(yīng)用于網(wǎng)絡(luò)設(shè)備(如路由器、交換機(jī)等)的CPU上,且該網(wǎng)絡(luò)設(shè)備可以包括至少兩個CPU。其中,各CPU均可以是基于SOC(System on Chip,系統(tǒng)級芯片)的CPU。
在每個CPU內(nèi),可以包括至少一個CPU核、一個內(nèi)存控制器、至少兩個網(wǎng)絡(luò)控制器(包括至少一個用于接收網(wǎng)絡(luò)報文的網(wǎng)絡(luò)控制器,為了方便描述,后續(xù)稱為接收網(wǎng)絡(luò)控制器;至少一個用于發(fā)送網(wǎng)絡(luò)報文的網(wǎng)絡(luò)控制器,為了方便描述,后續(xù)稱為發(fā)送網(wǎng)絡(luò)控制器)、一個內(nèi)存鏡像控制器、一個互聯(lián)控制器。
在一個例子中,以圖4為本申請實(shí)施例的應(yīng)用場景示意圖,以網(wǎng)絡(luò)設(shè)備包括CPU1和CPU2為例進(jìn)行說明,CPU1和CPU2通過總線連接起來,實(shí)際應(yīng)用中,CPU的數(shù)量還可以更多。以每個CPU內(nèi)包含一個CPU核為例進(jìn)行說明,實(shí)際應(yīng)用中,CPU核的數(shù)量還可以更多。以每個CPU內(nèi)包含兩個網(wǎng)絡(luò)控制器為例進(jìn)行說明,實(shí)際應(yīng)用中,網(wǎng)絡(luò)控制器的數(shù)量還可以更多。在CPU1內(nèi),網(wǎng)絡(luò)控制器1為接收網(wǎng)絡(luò)控制器,用于接收網(wǎng)絡(luò)報文;網(wǎng)絡(luò)控制器2為發(fā)送網(wǎng)絡(luò)控制器,用于發(fā)送網(wǎng)絡(luò)報文。在CPU2內(nèi),網(wǎng)絡(luò)控制器3為接收網(wǎng)絡(luò)控制器,用于接收網(wǎng)絡(luò)報文;網(wǎng)絡(luò)控制器4為發(fā)送網(wǎng)絡(luò)控制器,用于發(fā)送網(wǎng)絡(luò)報文。
在一個例子中,如圖4所示,可以在CPU內(nèi)配置內(nèi)存鏡像控制器,該內(nèi)存鏡像控制器是用于執(zhí)行內(nèi)存鏡像功能的硬件裝置。在后續(xù)過程中,會詳細(xì)介紹該內(nèi)存鏡像控制器的內(nèi)存鏡像功能。其中,該內(nèi)存鏡像控制器可以為一個獨(dú)立的控制器,實(shí)現(xiàn)內(nèi)存鏡像功能。也可以將內(nèi)存鏡像控制器的內(nèi)存鏡像功能部署在現(xiàn)有的控制器上,如部署在內(nèi)存控制器或者互聯(lián)控制器上,在現(xiàn)有的控制器上實(shí)現(xiàn)內(nèi)存鏡像功能。為了方便描述,以一個獨(dú)立的控制器為例進(jìn)行說明。
在一個例子中,如圖5所示,在CPU內(nèi)部,CPU內(nèi)的各CPU核、各網(wǎng)絡(luò)控制器以及該內(nèi)存鏡像控制器可以掛接到CPU片內(nèi)高速總線上。此外,內(nèi)存鏡像控制器可以與內(nèi)存控制器連接,且內(nèi)存鏡像控制器可以與互聯(lián)控制器連接。該內(nèi)存控制器連接到系統(tǒng)內(nèi)存,該互聯(lián)控制器連接另一個CPU的互聯(lián)控制器。
在一個例子中,每個CPU對應(yīng)一個系統(tǒng)內(nèi)存,且該系統(tǒng)內(nèi)存中包括有為該CPU劃分的第一緩沖區(qū)以及第二緩沖區(qū)。其中,不同CPU對應(yīng)的系統(tǒng)內(nèi)存不同,例如,CPU1對應(yīng)系統(tǒng)內(nèi)存1,CPU2對應(yīng)系統(tǒng)內(nèi)存2,系統(tǒng)內(nèi)存1和系統(tǒng)內(nèi)存2不是同一個系統(tǒng)內(nèi)存,是各自獨(dú)立的。因此,每個CPU對應(yīng)的第一緩沖區(qū)和第二緩沖區(qū),與其它CPU對應(yīng)的第一緩沖區(qū)和第二緩沖區(qū)也是不同的。
針對為該CPU劃分第一緩沖區(qū)以及第二緩沖區(qū)的過程,內(nèi)存鏡像控制器可以在本端CPU關(guān)聯(lián)的系統(tǒng)內(nèi)存中劃分出第一緩沖區(qū),獲取對端CPU的第一緩沖區(qū)的地址范圍,并按照地址范圍,在本端CPU關(guān)聯(lián)的系統(tǒng)內(nèi)存中劃分出第二緩沖區(qū),其中,本端CPU對應(yīng)的第一緩沖區(qū)用于存儲本端CPU接收到的網(wǎng)絡(luò)報文,本端CPU對應(yīng)的第二緩沖區(qū)用于存儲對端CPU鏡像到本端CPU的網(wǎng)絡(luò)報文?;诖耍槍γ總€CPU來說,本端CPU對應(yīng)的第一緩沖區(qū)中的地址與除本端CPU外的任一CPU對應(yīng)的第二緩沖區(qū)中的地址存在映射關(guān)系。
例如,若CPU1和CPU2的系統(tǒng)內(nèi)存中不存在重疊的地址,假設(shè)CPU1的系統(tǒng)內(nèi)存1為0x0-0x3FFFFFFF,CPU2的系統(tǒng)內(nèi)存2為0x40000000-0x7FFFFFFF。
CPU1的內(nèi)存鏡像控制器在系統(tǒng)內(nèi)存1中劃分出第一緩沖區(qū),該第一緩沖區(qū)的地址為0x30000000-0x3FFFFFFF,并將地址范圍(如地址0x30000000和地址0x3FFFFFFF)發(fā)送給CPU2。CPU2的內(nèi)存鏡像控制器按照該地址范圍,在系統(tǒng)內(nèi)存2中劃分出第二緩沖區(qū),該CPU2的第二緩沖區(qū)用于存儲CPU1的第一緩沖區(qū)中網(wǎng)絡(luò)報文的鏡像,假設(shè)第二緩沖區(qū)的地址為0x70000000-0x7FFFFFFF,則,可以認(rèn)為CPU1的第一緩沖區(qū)的地址0x30000000與CPU2的第二緩沖區(qū)的地址0x70000000具有映射關(guān)系,CPU1的第一緩沖區(qū)的地址0x30000001與CPU2的第二緩沖區(qū)的地址0x70000001具有映射關(guān)系,以此類推,CPU1的第一緩沖區(qū)的地址0x3FFFFFFF與CPU2的第二緩沖區(qū)的地址0x7FFFFFFF具有映射關(guān)系。
CPU2的內(nèi)存鏡像控制器在系統(tǒng)內(nèi)存2中劃分出第一緩沖區(qū),該第一緩沖區(qū)的地址為0x40000000-0x4FFFFFFF,并將地址范圍(如地址0x40000000和地址0x4FFFFFFF)發(fā)送給CPU1。CPU1的內(nèi)存鏡像控制器按照該地址范圍,在系統(tǒng)內(nèi)存1中劃分出第二緩沖區(qū),該CPU1的第二緩沖區(qū)用于存儲CPU2的第一緩沖區(qū)中網(wǎng)絡(luò)報文的鏡像,假設(shè)第二緩沖區(qū)的地址為0x10000000-0x1FFFFFFF,則,可以認(rèn)為CPU2的第一緩沖區(qū)的地址0x40000000與CPU1的第二緩沖區(qū)的地址0x10000000具有映射關(guān)系,CPU2的第一緩沖區(qū)的地址0x40000001與CPU1的第二緩沖區(qū)的地址0x10000001具有映射關(guān)系,以此類推,CPU2的第一緩沖區(qū)的地址0x4FFFFFFF與CPU1的第二緩沖區(qū)的地址0x1FFFFFFF具有映射關(guān)系。
又例如,若CPU1和CPU2的系統(tǒng)內(nèi)存中存在重疊的地址,假設(shè)CPU1的系統(tǒng)內(nèi)存1為0x0-0x5FFFFFFF,CPU2的系統(tǒng)內(nèi)存2為0x40000000-0x9FFFFFFF。兩者重疊的地址范圍為:0x40000000-0x5FFFFFFF。雖然CPU1和CPU2的系統(tǒng)內(nèi)存中存在重疊的地址,但是由于CPU1的系統(tǒng)內(nèi)存與CPU2的系統(tǒng)內(nèi)存不同,因此重疊的地址并不位于同一塊系統(tǒng)內(nèi)存中,而是在兩塊不同系統(tǒng)內(nèi)存中配置了相同的地址范圍。
CPU1的內(nèi)存鏡像控制器在系統(tǒng)內(nèi)存1中劃分出第一緩沖區(qū),其地址范圍包含在上述重疊的地址范圍,例如,CPU1的第一緩沖區(qū)的地址為0x40000000-0x4FFFFFFF,并將地址范圍(如地址0x40000000和地址0x4FFFFFFF)發(fā)送給CPU2。CPU2的內(nèi)存鏡像控制器按照該地址范圍,在系統(tǒng)內(nèi)存2中劃分出第二緩沖區(qū),該CPU2的第二緩沖區(qū)用于存儲CPU1的第一緩沖區(qū)中網(wǎng)絡(luò)報文的鏡像,例如,CPU1的第二緩沖區(qū)的地址可以為0x40000000-0x4FFFFFFF。則,可以認(rèn)為CPU1的第一緩沖區(qū)的地址0x40000000與CPU2的第二緩沖區(qū)的地址0x40000000具有映射關(guān)系,CPU1的第一緩沖區(qū)的地址0x40000001與CPU2的第二緩沖區(qū)的地址0x40000001具有映射關(guān)系,以此類推,CPU1的第一緩沖區(qū)的地址0x4FFFFFFF與CPU2的第二緩沖區(qū)的地址0x4FFFFFFF具有映射關(guān)系。
CPU2的內(nèi)存鏡像控制器在系統(tǒng)內(nèi)存2中劃分出第一緩沖區(qū),其地址范圍包含在上述重疊的地址范圍,例如,CPU2的第一緩沖區(qū)的地址為0x50000000-0x5FFFFFFF,并將地址范圍(如地址0x50000000和地址0x5FFFFFFF)發(fā)送給CPU1。CPU1的內(nèi)存鏡像控制器按照該地址范圍,在系統(tǒng)內(nèi)存1中劃分出第二緩沖區(qū),該CPU1的第二緩沖區(qū)用于存儲CPU2的第一緩沖區(qū)中網(wǎng)絡(luò)報文的鏡像,例如,CPU1的第二緩沖區(qū)的地址可以為0x50000000-0x5FFFFFFF。則,可以認(rèn)為CPU2的第一緩沖區(qū)的地址0x50000000與CPU1的第二緩沖區(qū)的地址0x50000000具有映射關(guān)系,CPU2的第一緩沖區(qū)的地址0x50000001與CPU1的第二緩沖區(qū)的地址0x50000001具有映射關(guān)系,以此類推,CPU2的第一緩沖區(qū)的地址0x5FFFFFFF與CPU1的第二緩沖區(qū)的地址0x5FFFFFFF具有映射關(guān)系。
在經(jīng)過上述處理之后,針對CPU1的第一緩沖區(qū)中的每個地址,在CPU2的第二緩沖區(qū)中均會映射有一個唯一的地址。此外,針對CPU2的第一緩沖區(qū)中的每個地址,在CPU1的第二緩沖區(qū)中均會映射有一個唯一的地址。
在一個例子中,還可以在CPU1的內(nèi)存鏡像控制器以及CPU2的內(nèi)存鏡像控制器中記錄如下內(nèi)容:CPU1的第一緩沖區(qū)的地址與CPU2的第二緩沖區(qū)的地址的映射關(guān)系,CPU1的第二緩沖區(qū)的地址與CPU2的第一緩沖區(qū)的地址的映射關(guān)系。以上述存在重疊的地址為例,記錄CPU1的第一緩沖區(qū)的地址0x40000000與CPU2的第二緩沖區(qū)的地址0x40000000的映射關(guān)系,以此類推,記錄CPU1的第一緩沖區(qū)的地址0x4FFFFFFF與CPU2的第二緩沖區(qū)的地址0x4FFFFFFF的映射關(guān)系。此外,記錄CPU1的第二緩沖區(qū)的地址0x50000000與CPU2的第一緩沖區(qū)的地址0x50000000的映射關(guān)系,以此類推,記錄CPU1的第二緩沖區(qū)的地址0x5FFFFFFF與CPU2的第一緩沖區(qū)的地址0x5FFFFFFF的映射關(guān)系。
在上述應(yīng)用場景下,參見圖6所示,為報文傳輸方法的流程圖。
步驟601,接收網(wǎng)絡(luò)控制器接收到網(wǎng)絡(luò)報文,內(nèi)存鏡像控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作,以使對端CPU存儲該網(wǎng)絡(luò)報文。
步驟602,內(nèi)存鏡像控制器接收到對端CPU的網(wǎng)絡(luò)報文的寫操作時,將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū)。
步驟603,內(nèi)存鏡像控制器接收到網(wǎng)絡(luò)報文的讀操作時,從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送,該網(wǎng)絡(luò)報文為對端CPU的接收網(wǎng)絡(luò)控制器接收到的網(wǎng)絡(luò)報文。
針對步驟601-步驟603,對端CPU為除本端CPU以外的任一CPU。
針對步驟601,在一個例子中,針對內(nèi)存鏡像控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作的過程,可以包括:內(nèi)存鏡像控制器接收該接收網(wǎng)絡(luò)控制器發(fā)送的網(wǎng)絡(luò)報文的寫操作,從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第一緩沖區(qū)中的地址,則將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū);將該寫操作中的子地址信息替換為對端CPU對應(yīng)的第二緩沖區(qū)中的地址,并將修改后的寫操作發(fā)送給對端CPU。
針對步驟602,在一個例子中,針對將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū)的過程,內(nèi)存鏡像控制器從接收的寫操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,則可以將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū)。
在一個例子中,CPU核還可以讀取本端CPU對應(yīng)的第一緩沖區(qū)中的網(wǎng)絡(luò)報文進(jìn)行修改,并向內(nèi)存鏡像控制器發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作。內(nèi)存鏡像控制器從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第一緩沖區(qū)中的地址,則將修改后的網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū);內(nèi)存鏡像控制器向?qū)Χ薈PU發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作,以使對端CPU存儲修改后的網(wǎng)絡(luò)報文,該寫操作攜帶的子地址信息為對端CPU對應(yīng)的第二緩沖區(qū)中的地址。
在一個例子中,CPU核還可以讀取本端CPU對應(yīng)的第二緩沖區(qū)中的網(wǎng)絡(luò)報文進(jìn)行修改,并向內(nèi)存鏡像控制器發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作。內(nèi)存鏡像控制器從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,則將修改后的網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū);內(nèi)存鏡像控制器根據(jù)本端CPU對應(yīng)的第二緩沖區(qū)中的地址確定對應(yīng)的第一緩沖區(qū)的地址,將修改后的網(wǎng)絡(luò)報文的寫操作的子地址信息替換為確定出的第一緩沖區(qū)的地址,并發(fā)送給確定出的第一緩沖區(qū)對應(yīng)的CPU,以使該CPU存儲該修改后的網(wǎng)絡(luò)報文。其中,此處的該CPU為通過接收網(wǎng)絡(luò)控制器接收到該網(wǎng)絡(luò)報文的CPU。
例如,當(dāng)只存在兩個CPU時,則該CPU就是指本端CPU之外的另一個CPU。
當(dāng)存在至少三個CPU時,假設(shè)本端CPU為CPU1,且由CPU2的接收網(wǎng)絡(luò)控制器接收到該網(wǎng)絡(luò)報文,并存儲到CPU2的第一緩沖區(qū)、CPU1的第二緩沖區(qū)、CPU3的第二緩沖區(qū),則此處的該CPU為CPU2?;诖?,CPU1的內(nèi)存鏡像控制器向CPU2發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作(攜帶CPU2對應(yīng)的第一緩沖區(qū)中的地址),由CPU2在自身的第一緩沖區(qū)存儲修改后的網(wǎng)絡(luò)報文,而且,CPU2還可以將修改后的網(wǎng)絡(luò)報文的寫操作(攜帶CPU3對應(yīng)的第二緩沖區(qū)中的地址)發(fā)送給CPU3,由CPU3在自身的第二緩沖區(qū)存儲修改后的網(wǎng)絡(luò)報文。
針對步驟603,在一個例子中,針對從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送的過程,可以包括:內(nèi)存鏡像控制器從該讀操作中解析出子地址信息為對端CPU對應(yīng)的第一緩沖區(qū)中的地址,確定對應(yīng)的本端CPU對應(yīng)的第二緩沖區(qū)中的地址,從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文,通過發(fā)送網(wǎng)絡(luò)控制器發(fā)送;其中,該讀操作是對端CPU確定由本端CPU的發(fā)送網(wǎng)絡(luò)控制器發(fā)送該網(wǎng)絡(luò)報文時發(fā)出的?;蛘撸瑑?nèi)存鏡像控制器從該讀操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文,通過發(fā)送網(wǎng)絡(luò)控制器發(fā)送;其中,該讀操作是本端CPU的CPU核確定由本端CPU的發(fā)送網(wǎng)絡(luò)控制器發(fā)送該網(wǎng)絡(luò)報文時發(fā)出的。
在上述過程中,各子地址信息均可以包括緩沖區(qū)中的一個地址以及一個地址長度,如緩沖區(qū)中的地址0x40000000和地址長度10,此子地址信息表示網(wǎng)絡(luò)報文存儲在緩沖區(qū)中的地址0x40000000-地址0x40000009之間的位置。
基于上述技術(shù)方案,本申請實(shí)施例中,當(dāng)CPU發(fā)送網(wǎng)絡(luò)報文時,可以從本端CPU對應(yīng)的第二緩沖區(qū)內(nèi)獲取網(wǎng)絡(luò)報文,而不用從對端CPU對應(yīng)的第一緩沖區(qū)內(nèi)獲取網(wǎng)絡(luò)報文,因此,網(wǎng)絡(luò)報文不需要跨CPU傳輸,不需要經(jīng)過兩個互聯(lián)控制器,在一個CPU內(nèi)就可以完成網(wǎng)絡(luò)報文的傳輸,網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)性能較高,縮短了網(wǎng)絡(luò)報文的傳輸時間,提高了網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)效率。
在一個例子中,以網(wǎng)絡(luò)控制器1接收到網(wǎng)絡(luò)報文,網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文為例,則涉及如下過程:網(wǎng)絡(luò)控制器1接收到網(wǎng)絡(luò)報文(后續(xù)將其稱為網(wǎng)絡(luò)報文1),CPU1的CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改(如修改網(wǎng)絡(luò)報文1的源IP地址、目的IP地址等),得到修改后的網(wǎng)絡(luò)報文(后續(xù)將其稱為網(wǎng)絡(luò)報文2),CPU1的CPU核通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2,網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2?;蛘撸W(wǎng)絡(luò)控制器1接收到網(wǎng)絡(luò)報文1,CPU2的CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改,得到修改后的網(wǎng)絡(luò)報文2,CPU2的CPU核通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2,網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2。以下對上述兩種情況的處理進(jìn)行詳細(xì)說明。
情況一、CPU1的CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改,CPU1的CPU核通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2。
步驟1、網(wǎng)絡(luò)控制器1接收到網(wǎng)絡(luò)報文1,并向CPU1的內(nèi)存鏡像控制器發(fā)送寫操作,其中,該寫操作可以攜帶網(wǎng)絡(luò)報文1和子地址信息,且該子地址信息可以為CPU1的第一緩沖區(qū)的地址0x40000000和地址長度10。
步驟2、內(nèi)存鏡像控制器從寫操作中解析出地址0x40000000和地址長度10,并利用地址0x40000000和地址長度10將網(wǎng)絡(luò)報文1存儲到CPU1的第一緩沖區(qū)。例如,內(nèi)存鏡像控制器可以從CPU1的第一緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文1,其長度為10,因此網(wǎng)絡(luò)報文1的尾地址是0x40000009。
在一個例子中,內(nèi)存鏡像控制器可以通過CPU1的內(nèi)存控制器將網(wǎng)絡(luò)報文1存儲到CPU1的第一緩沖區(qū)。例如,內(nèi)存鏡像控制器將攜帶網(wǎng)絡(luò)報文1和子地址信息的寫操作發(fā)送給CPU1的內(nèi)存控制器,由內(nèi)存控制器將網(wǎng)絡(luò)報文1存儲到CPU1的第一緩沖區(qū),對此存儲過程,本申請實(shí)施例中不再贅述。
步驟3、基于CPU1對應(yīng)的第一緩沖區(qū)中的地址與CPU2對應(yīng)的第二緩沖區(qū)中的地址的映射關(guān)系,內(nèi)存鏡像控制器從CPU2的第二緩沖區(qū)中,確定出與上述子地址信息(如地址0x40000000和地址長度10)對應(yīng)的子地址信息(即確定出的子地址信息為CPU2的第二緩沖區(qū)中的子地址信息),如確定出地址0x40000000和地址長度10,并利用確定出的子地址信息將網(wǎng)絡(luò)報文1存儲到CPU2的第二緩沖區(qū)。例如,可以從CPU2的第二緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文1,其長度為10,因此網(wǎng)絡(luò)報文1的尾地址是0x40000009。
在一個例子中,CPU1的內(nèi)存鏡像控制器可以將攜帶網(wǎng)絡(luò)報文1和確定出的子地址信息(即CPU2的第二緩沖區(qū)中的地址0x40000000以及地址長度10)的寫操作發(fā)送給CPU1的互聯(lián)控制器,由CPU1的互聯(lián)控制器將該寫操作發(fā)送給CPU2的互聯(lián)控制器,并由CPU2的互聯(lián)控制器將該寫操作發(fā)送給CPU2的內(nèi)存鏡像控制器,CPU2的內(nèi)存鏡像控制器將該寫操作發(fā)送給CPU2的內(nèi)存控制器,由CPU2的內(nèi)存控制器將網(wǎng)絡(luò)報文1存儲到CPU2的第二緩沖區(qū)。
步驟4、CPU1的CPU核從CPU1的第一緩沖區(qū)中讀取到網(wǎng)絡(luò)報文1,并對網(wǎng)絡(luò)報文1進(jìn)行修改,得到修改后的網(wǎng)絡(luò)報文2。其中,CPU核讀取網(wǎng)絡(luò)報文1的方式與傳統(tǒng)方式相同,在此不再贅述。CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改的方式,可以根據(jù)實(shí)際情況選擇,如修改網(wǎng)絡(luò)報文1的源IP地址和目的IP地址。
步驟5、CPU1的CPU核向CPU1的內(nèi)存鏡像控制器發(fā)送寫操作,其中,該寫操作中可以攜帶網(wǎng)絡(luò)報文2和子地址信息,且該子地址信息可以為CPU1的第一緩沖區(qū)的地址0x40000000和地址長度10。而且,該寫操作中攜帶的子地址信息就是網(wǎng)絡(luò)報文1在CPU1的第一緩沖區(qū)中對應(yīng)的存儲地址。
步驟6、內(nèi)存鏡像控制器從寫操作中解析出地址0x40000000和地址長度10,并利用地址0x40000000和地址長度10將網(wǎng)絡(luò)報文2存儲到CPU1的第一緩沖區(qū)。例如,內(nèi)存鏡像控制器可以從CPU1的第一緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文2,其長度為10,因此網(wǎng)絡(luò)報文2的尾地址是0x40000009。
在一個例子中,內(nèi)存鏡像控制器可以通過CPU1的內(nèi)存控制器將網(wǎng)絡(luò)報文2存儲到CPU1的第一緩沖區(qū)。例如,內(nèi)存鏡像控制器將攜帶網(wǎng)絡(luò)報文2和子地址信息的寫操作發(fā)送給CPU1的內(nèi)存控制器,由內(nèi)存控制器將網(wǎng)絡(luò)報文2存儲到CPU1的第一緩沖區(qū),對此存儲過程,本申請實(shí)施例中不再贅述。
步驟7、基于CPU1對應(yīng)的第一緩沖區(qū)中的地址與CPU2對應(yīng)的第二緩沖區(qū)中的地址的映射關(guān)系,內(nèi)存鏡像控制器從CPU2的第二緩沖區(qū)中,確定出與上述子地址信息(如地址0x40000000和地址長度10)對應(yīng)的子地址信息(即確定出的子地址信息為CPU2的第二緩沖區(qū)中的子地址信息),如確定出地址0x40000000和地址長度10,并利用確定出的子地址信息將網(wǎng)絡(luò)報文2存儲到CPU2的第二緩沖區(qū)。例如,可以從CPU2的第二緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文2,其長度為10,因此網(wǎng)絡(luò)報文2的尾地址是0x40000009。
在一個例子中,CPU1的內(nèi)存鏡像控制器可以將攜帶網(wǎng)絡(luò)報文2和確定出的子地址信息(即CPU2的第二緩沖區(qū)中的地址0x40000000以及地址長度10)的寫操作發(fā)送給CPU1的互聯(lián)控制器,由CPU1的互聯(lián)控制器將該寫操作發(fā)送給CPU2的互聯(lián)控制器,并由CPU2的互聯(lián)控制器將該寫操作發(fā)送給CPU2的內(nèi)存鏡像控制器,CPU2的內(nèi)存鏡像控制器將該寫操作發(fā)送給CPU2的內(nèi)存控制器,由CPU2的內(nèi)存控制器將網(wǎng)絡(luò)報文2存儲到CPU2的第二緩沖區(qū)。
步驟8、CPU1的CPU核在完成網(wǎng)絡(luò)報文的修改后,確定由CPU2的網(wǎng)絡(luò)控制器4發(fā)送修改后的網(wǎng)絡(luò)報文2,對于CPU1的CPU核來說,網(wǎng)絡(luò)報文2位于CPU1的第一緩沖區(qū)中,因此,CPU1的CPU核將CPU1的第一緩沖區(qū)中的子地址信息(如CPU1的第一緩沖區(qū)中的地址0x40000000和地址長度10)寫入到網(wǎng)絡(luò)控制器4的地址寄存器中,從而通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文。
步驟9、網(wǎng)絡(luò)控制器4檢測到地址寄存器中存在CPU1的第一緩沖區(qū)的子地址信息后,向CPU2的內(nèi)存鏡像控制器發(fā)送讀操作,該讀操作攜帶CPU1的第一緩沖區(qū)的子地址信息,如CPU1的第一緩沖區(qū)的地址0x40000000和地址長度10。
步驟10、CPU2的內(nèi)存鏡像控制器從該讀操作中解析出CPU1的第一緩沖區(qū)的子地址信息,基于CPU2對應(yīng)的第二緩沖區(qū)中的地址與CPU1對應(yīng)的第一緩沖區(qū)中的地址的映射關(guān)系,從CPU2對應(yīng)的第二緩沖區(qū)中,確定出與上述子地址信息(如地址0x40000000和地址長度10)對應(yīng)的子地址信息(即確定出的子地址信息為CPU2的第二緩沖區(qū)中的子地址信息),如確定出地址0x40000000和地址長度10,利用確定出的子地址信息從CPU2對應(yīng)的第二緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2,而不是從CPU1對應(yīng)的第一緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2。
例如,CPU2的內(nèi)存鏡像控制器從CPU2的第二緩沖區(qū)的地址0x40000000開始讀取網(wǎng)絡(luò)報文2,一直讀取到尾地址0x40000009,得到完整的網(wǎng)絡(luò)報文2。
在一個例子中,CPU2的內(nèi)存鏡像控制器可以通過CPU2的內(nèi)存控制器從CPU2對應(yīng)的第二緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2,對此獲取過程,不再贅述。
步驟11、CPU2的內(nèi)存鏡像控制器將網(wǎng)絡(luò)報文2發(fā)送給網(wǎng)絡(luò)控制器4,由網(wǎng)絡(luò)控制器4利用網(wǎng)絡(luò)報文2的目的地址發(fā)送網(wǎng)絡(luò)報文2,具體發(fā)送過程不再贅述。
情況二、CPU2的CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改,CPU2的CPU核通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文2。
步驟1-步驟3,與上述情況一的步驟1-步驟3的處理相同,在此不再贅述。
步驟4、CPU2的CPU核從CPU2的第二緩沖區(qū)中讀取到網(wǎng)絡(luò)報文1,并對網(wǎng)絡(luò)報文1進(jìn)行修改,得到修改后的網(wǎng)絡(luò)報文2。其中,CPU核讀取網(wǎng)絡(luò)報文1的方式與傳統(tǒng)方式相同,在此不再贅述。CPU核對網(wǎng)絡(luò)報文1進(jìn)行修改的方式,可以根據(jù)實(shí)際情況選擇,如修改網(wǎng)絡(luò)報文1的源IP地址和目的IP地址。
步驟5、CPU2的CPU核向CPU2的內(nèi)存鏡像控制器發(fā)送寫操作,其中,該寫操作中可以攜帶網(wǎng)絡(luò)報文2和子地址信息,且該子地址信息可以為CPU2的第二緩沖區(qū)的地址0x40000000和地址長度10。而且,該寫操作中攜帶的子地址信息就是網(wǎng)絡(luò)報文1在CPU2的第二緩沖區(qū)中對應(yīng)的存儲地址。
步驟6、CPU2的內(nèi)存鏡像控制器從寫操作中解析出地址0x40000000和地址長度10,利用地址0x40000000和地址長度10將網(wǎng)絡(luò)報文2存儲到CPU2的第二緩沖區(qū)。例如,內(nèi)存鏡像控制器從CPU2的第二緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文2,其長度為10,因此網(wǎng)絡(luò)報文2的尾地址是0x40000009。
在一個例子中,CPU2的內(nèi)存鏡像控制器可以通過CPU2的內(nèi)存控制器將網(wǎng)絡(luò)報文2存儲到CPU2的第二緩沖區(qū),對此存儲過程,在此不再贅述。
步驟7、基于CPU2對應(yīng)的第二緩沖區(qū)中的地址與CPU1對應(yīng)的第一緩沖區(qū)中的地址的映射關(guān)系,CPU2的內(nèi)存鏡像控制器從CPU1的第一緩沖區(qū)中,確定出與上述子地址信息(如地址0x40000000和地址長度10)對應(yīng)的子地址信息(即確定出的子地址信息為CPU1的第一緩沖區(qū)中的子地址信息),如確定出地址0x40000000和地址長度10,并利用確定出的子地址信息將網(wǎng)絡(luò)報文2存儲到CPU1的第一緩沖區(qū)。例如,從CPU1的第一緩沖區(qū)的地址0x40000000開始,存儲網(wǎng)絡(luò)報文2,其長度為10,因此網(wǎng)絡(luò)報文2的尾地址是0x40000009。
在一個例子中,CPU2的內(nèi)存鏡像控制器可以將攜帶網(wǎng)絡(luò)報文2和確定出的子地址信息(即CPU1的第一緩沖區(qū)中的地址0x40000000以及地址長度10)的寫操作發(fā)送給CPU2的互聯(lián)控制器,由CPU2的互聯(lián)控制器將該寫操作發(fā)送給CPU1的互聯(lián)控制器,并由CPU1的互聯(lián)控制器將該寫操作發(fā)送給CPU1的內(nèi)存鏡像控制器,CPU1的內(nèi)存鏡像控制器將該寫操作發(fā)送給CPU1的內(nèi)存控制器,由CPU1的內(nèi)存控制器將網(wǎng)絡(luò)報文2存儲到CPU1的第一緩沖區(qū)。
步驟8、CPU2的CPU核在完成網(wǎng)絡(luò)報文的修改后,確定由CPU2的網(wǎng)絡(luò)控制器4發(fā)送修改后的網(wǎng)絡(luò)報文2,對于CPU2的CPU核來說,網(wǎng)絡(luò)報文2位于CPU2的第二緩沖區(qū)中,因此,CPU2的CPU核將CPU2的第二緩沖區(qū)中的子地址信息(如CPU2的第二緩沖區(qū)中的地址0x40000000和地址長度10)寫入到網(wǎng)絡(luò)控制器4的地址寄存器中,從而通知網(wǎng)絡(luò)控制器4發(fā)送網(wǎng)絡(luò)報文。
步驟9、網(wǎng)絡(luò)控制器4檢測到地址寄存器中存在CPU2的第二緩沖區(qū)的子地址信息后,向CPU2的內(nèi)存鏡像控制器發(fā)送讀操作,該讀操作攜帶CPU2的第二緩沖區(qū)的子地址信息,如CPU2的第二緩沖區(qū)的地址0x40000000和地址長度10。
步驟10、CPU2的內(nèi)存鏡像控制器從該讀操作中解析出CPU2的第二緩沖區(qū)的子地址信息,并利用該子地址信息從CPU2對應(yīng)的第二緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2,而不是從CPU1對應(yīng)的第一緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2。
例如,CPU2的內(nèi)存鏡像控制器從CPU2的第二緩沖區(qū)的地址0x40000000開始讀取網(wǎng)絡(luò)報文2,一直讀取到尾地址0x40000009,得到完整的網(wǎng)絡(luò)報文2。
在一個例子中,CPU2的內(nèi)存鏡像控制器可以通過CPU2的內(nèi)存控制器從CPU2對應(yīng)的第二緩沖區(qū)中獲取到網(wǎng)絡(luò)報文2,對此獲取過程,不再贅述。
步驟11、CPU2的內(nèi)存鏡像控制器將網(wǎng)絡(luò)報文2發(fā)送給網(wǎng)絡(luò)控制器4,由網(wǎng)絡(luò)控制器4利用網(wǎng)絡(luò)報文2的目的地址發(fā)送網(wǎng)絡(luò)報文2,具體發(fā)送過程不再贅述。
上述過程是針對網(wǎng)絡(luò)報文的處理,在實(shí)際應(yīng)用中,內(nèi)存鏡像控制器還可能接收到非網(wǎng)絡(luò)報文的操作,如針對瀏覽器的操作。因此,內(nèi)存鏡像控制器在接收到讀操作/寫操作之后,先區(qū)分該讀操作/寫操作是否為針對網(wǎng)絡(luò)報文的操作,如果是,則采用上述技術(shù)方案進(jìn)行處理,如果不是,則采用傳統(tǒng)方式進(jìn)行處理。
在一個例子中,內(nèi)存鏡像控制器在接收到讀操作/寫操作后,可以從讀操作/寫操作中解析出子地址信息,該子地址信息包括初始地址和地址長度,如地址0x40000000和地址長度10。由于內(nèi)存鏡像控制器中配置本端CPU的第一緩沖區(qū)中的地址與對端CPU的第二緩沖區(qū)中的地址的映射關(guān)系、本端CPU的第二緩沖區(qū)中的地址與對端CPU的第一緩沖區(qū)中的地址的映射關(guān)系,因此,如果解析到的初始地址是映射關(guān)系中記錄的地址,說明讀操作/寫操作是針對網(wǎng)絡(luò)報文的操作,采用上述技術(shù)方案進(jìn)行處理,如果解析到的初始地址不是映射關(guān)系中記錄的地址,說明讀操作/寫操作是針對非網(wǎng)絡(luò)報文的操作,則內(nèi)存鏡像控制器直接將讀操作/寫操作發(fā)送給內(nèi)存控制器,由內(nèi)存控制器采用傳統(tǒng)方式進(jìn)行處理。
以下結(jié)合一個具體的實(shí)施例對上述過程進(jìn)行說明。本實(shí)施例中,在內(nèi)存鏡像控制器中配置寄存器子模塊、比較子模塊、寫操作模塊、讀操作模塊。
在寄存器子模塊中記錄本端CPU的第一緩沖區(qū)中的地址與對端CPU的第二緩沖區(qū)中的地址的映射關(guān)系、本端CPU的第二緩沖區(qū)中的地址與對端CPU的第一緩沖區(qū)中的地址的映射關(guān)系。
比較子模塊在接收到讀操作/寫操作后,可以從讀操作/寫操作中解析出子地址信息,該子地址信息包括初始地址和地址長度,如地址0x40000000和地址長度10。比較子模塊通過查詢寄存器子模塊中記錄的映射關(guān)系,確定解析到的初始地址是否為映射關(guān)系中記錄的地址。如果是,說明讀操作/寫操作是針對網(wǎng)絡(luò)報文的操作,在讀操作/寫操作中添加鏡像標(biāo)識,對于讀操作,則下發(fā)到讀操作模塊,對于寫操作,則下發(fā)到寫操作模塊。如果否,說明讀操作/寫操作是針對非網(wǎng)絡(luò)報文的操作,在讀操作/寫操作中添加非鏡像標(biāo)識,對于讀操作,則下發(fā)到讀操作模塊,對于寫操作,則下發(fā)到寫操作模塊。
讀操作模塊在接收到讀操作后,若讀操作中攜帶鏡像標(biāo)識,則采用本申請的技術(shù)方案進(jìn)行處理,如讀操作模塊執(zhí)行上述情況一和情況二中的步驟10、步驟11。若讀操作中攜帶非鏡像標(biāo)識,則讀操作模塊直接將讀操作轉(zhuǎn)發(fā)給內(nèi)存控制器,由內(nèi)存控制器采用傳統(tǒng)方式進(jìn)行處理。
寫操作模塊在接收到寫操作后,若寫操作中攜帶鏡像標(biāo)識,則采用本申請的技術(shù)方案進(jìn)行處理,如寫操作模塊執(zhí)行上述情況一和情況二中的步驟2、步驟3、步驟6、步驟7。若寫操作中攜帶非鏡像標(biāo)識,則寫操作模塊直接將寫操作轉(zhuǎn)發(fā)給內(nèi)存控制器,由內(nèi)存控制器采用傳統(tǒng)方式進(jìn)行處理。
如圖4所示,為本申請?zhí)岢龅腃PU的結(jié)構(gòu)圖,所述CPU對應(yīng)系統(tǒng)內(nèi)存,所述系統(tǒng)內(nèi)存包括為所述CPU劃分的第一緩沖區(qū)以及第二緩沖區(qū);所述CPU包括:
接收網(wǎng)絡(luò)控制器,用于接收到網(wǎng)絡(luò)報文;
內(nèi)存鏡像控制器,用于通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并通過互聯(lián)控制器向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作,以使所述對端CPU存儲該網(wǎng)絡(luò)報文;通過互聯(lián)控制器接收到對端CPU的網(wǎng)絡(luò)報文的寫操作時,通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū);接收到網(wǎng)絡(luò)報文的讀操作時,通過內(nèi)存控制器從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送,該網(wǎng)絡(luò)報文為對端CPU的接收網(wǎng)絡(luò)控制器接收到的網(wǎng)絡(luò)報文;
所述對端CPU為除本端CPU以外的任一CPU。
在一個例子中,所述接收網(wǎng)絡(luò)控制器,還用于在接收到網(wǎng)絡(luò)報文后,向所述內(nèi)存鏡像控制器發(fā)送網(wǎng)絡(luò)報文的寫操作;
所述內(nèi)存鏡像控制器,在通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū),并通過互聯(lián)控制器向?qū)Χ薈PU發(fā)送該網(wǎng)絡(luò)報文的寫操作的過程中,具體用于接收所述接收網(wǎng)絡(luò)控制器發(fā)送的網(wǎng)絡(luò)報文的寫操作,從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第一緩沖區(qū)中的地址,則通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū);將該寫操作中的子地址信息替換為對端CPU對應(yīng)的第二緩沖區(qū)中的地址,并通過互聯(lián)控制器將修改后的寫操作發(fā)送給所述對端CPU。
在一個例子中,所述內(nèi)存鏡像控制器,在通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū)的過程中,具體用于從接收的寫操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,則通過內(nèi)存控制器將該網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū)。
在一個例子中,所述CPU還包括:
CPU核,用于讀取本端CPU對應(yīng)的第一緩沖區(qū)中的網(wǎng)絡(luò)報文進(jìn)行修改,并向內(nèi)存鏡像控制器發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作;
所述內(nèi)存鏡像控制器,還用于從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第一緩沖區(qū)中的地址,則通過內(nèi)存控制器將所述修改后的網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第一緩沖區(qū);通過互聯(lián)控制器向?qū)Χ薈PU發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作,以使對端CPU存儲修改后的網(wǎng)絡(luò)報文,該寫操作攜帶的子地址信息為對端CPU對應(yīng)的第二緩沖區(qū)中的地址。
在一個例子中,所述CPU還包括:
CPU核,用于讀取本端CPU對應(yīng)的第二緩沖區(qū)中的網(wǎng)絡(luò)報文進(jìn)行修改,并向內(nèi)存鏡像控制器發(fā)送修改后的網(wǎng)絡(luò)報文的寫操作;
所述內(nèi)存鏡像控制器,還用于從該寫操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,則通過內(nèi)存控制器將所述修改后的網(wǎng)絡(luò)報文存儲到本端CPU對應(yīng)的第二緩沖區(qū);根據(jù)本端CPU對應(yīng)的第二緩沖區(qū)中的地址確定對應(yīng)的第一緩沖區(qū)的地址,將修改后的網(wǎng)絡(luò)報文的寫操作的子地址信息替換為確定出的第一緩沖區(qū)的地址,并通過互聯(lián)控制器發(fā)送給確定出的第一緩沖區(qū)對應(yīng)的CPU,以使該CPU存儲該修改后的網(wǎng)絡(luò)報文。
在一個例子中,所述CPU還包括發(fā)送網(wǎng)絡(luò)控制器;
所述內(nèi)存鏡像控制器,在通過內(nèi)存控制器從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文并發(fā)送的過程中,具體用于從所述讀操作中解析出子地址信息為對端CPU對應(yīng)的第一緩沖區(qū)中的地址,確定對應(yīng)的本端CPU對應(yīng)的第二緩沖區(qū)中的地址,通過內(nèi)存控制器從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文,并將該網(wǎng)絡(luò)報文發(fā)送給發(fā)送網(wǎng)絡(luò)控制器;其中,所述讀操作是所述對端CPU確定由本端CPU的發(fā)送網(wǎng)絡(luò)控制器發(fā)送該網(wǎng)絡(luò)報文時發(fā)出的;或者,從所述讀操作中解析出子地址信息為本端CPU對應(yīng)的第二緩沖區(qū)中的地址,通過內(nèi)存控制器從本端CPU對應(yīng)的第二緩沖區(qū)讀取該網(wǎng)絡(luò)報文,并將該網(wǎng)絡(luò)報文發(fā)送給發(fā)送網(wǎng)絡(luò)控制器;其中,所述讀操作是本端CPU的CPU核確定由本端CPU的發(fā)送網(wǎng)絡(luò)控制器發(fā)送該網(wǎng)絡(luò)報文時發(fā)出的;
所述發(fā)送網(wǎng)絡(luò)控制器,用于發(fā)送該網(wǎng)絡(luò)報文。
在一個例子中,本端CPU對應(yīng)的第一緩沖區(qū)中的地址與除本端CPU外的任一CPU對應(yīng)的第二緩沖區(qū)中的地址存在映射關(guān)系。
以上公開的僅為本申請的幾個具體實(shí)施例,但是,本申請并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本申請的保護(hù)范圍。