存儲協(xié)議頭的方法和網(wǎng)絡設備的制造方法
【技術領域】
[0001]本申請涉及信息技術領域,并且更具體地,涉及一種存儲協(xié)議頭的方法和網(wǎng)絡設備。
【背景技術】
[0002]現(xiàn)有技術以數(shù)據(jù)結構圖的方式,來描述網(wǎng)絡協(xié)議之間的關系,稱為網(wǎng)絡協(xié)議圖。網(wǎng)絡協(xié)議圖可以是網(wǎng)絡設備商根據(jù)所需要支撐的業(yè)務所描繪的,也可以是用戶按照自定義的網(wǎng)絡協(xié)議關系描繪的。在網(wǎng)絡協(xié)議圖中,包括多個協(xié)議頭示例,轉發(fā)面上,網(wǎng)絡設備需要為網(wǎng)絡協(xié)議圖中出現(xiàn)的所有協(xié)議頭實例開辟專屬的存儲空間,無論當前處理的報文是否包含該協(xié)議頭實例。而實際場景中一個報文可能只包含少數(shù)幾個協(xié)議頭實例,而轉發(fā)面仍需要為所有協(xié)議頭實例預留出大量的存儲空間,造成極大的空間浪費。網(wǎng)絡協(xié)議層次不窮,外加軟件定義網(wǎng)絡(英文全稱:Software Define Network,簡稱:SDN)的出現(xiàn),用戶可以自行定義網(wǎng)絡協(xié)議頭與網(wǎng)絡協(xié)議圖,造成網(wǎng)絡設備上有限的寄存器資源無法支撐略為復雜的協(xié)議圖。
【發(fā)明內(nèi)容】
[0003]本申請實施例提供一種存儲協(xié)議頭的方法和網(wǎng)絡設備,能夠減少存儲協(xié)議頭實例對存儲空間的占用。
[0004]第一方面,提供了一種存儲協(xié)議頭的方法,該方法包括:網(wǎng)絡設備將第一網(wǎng)絡協(xié)議圖中入度為O的一個或多個第一協(xié)議頭實例組成的集合確定為待分配存儲空間的第一協(xié)議頭實例集合;所述網(wǎng)絡設備確定第一共享空間,所述第一共享空間用于存儲所述第一協(xié)議頭實例集合中的每個所述第一協(xié)議頭實例;所述網(wǎng)絡設備生成每個所述第一協(xié)議頭實例的第一解析指令,其中,所述第一解析指令用于指示在所述網(wǎng)絡設備接收到包括所述第一協(xié)議頭實例的報文時,將所述第一協(xié)議頭實例存儲到所述第一共享空間;所述網(wǎng)絡設備將所述第一協(xié)議頭實例集合中的每個所述第一協(xié)議頭實例從所述第一網(wǎng)絡協(xié)議圖中刪除,并將所述第一網(wǎng)絡協(xié)議圖中與每個所述第一協(xié)議頭實例連接的有向邊刪除,得到第二網(wǎng)絡協(xié)議圖。
[0005]在該實現(xiàn)方式中,該網(wǎng)絡設備可以為一個或多個協(xié)議頭實例分配一個共享空間,以便于接收到包括上述一個或多個協(xié)議頭實例中的一個協(xié)議頭實例的報文時,可以將該協(xié)議頭實例存儲到該共享空間,因此,本申請實施例的存儲協(xié)議頭的方法,不必為每個協(xié)議頭實例都分配存儲空間,因此,減少了存儲協(xié)議頭實例對存儲空間的占用。
[0006]結合第一方面,在第一方面的第一種實現(xiàn)方式中,所述方法還包括:所述網(wǎng)絡設備將所述第二網(wǎng)絡協(xié)議圖中入度為O的一個或多個第二協(xié)議頭實例組成的集合確定為待分配存儲空間的第二協(xié)議頭實例集合;;所述網(wǎng)絡設備確定第二共享空間,所述第二共享空間用于存儲所述第二協(xié)議頭實例集合中的每個所述第二協(xié)議頭實例;所述網(wǎng)絡設備生成每個所述第二協(xié)議頭實例的第二解析指令,其中,所述第二解析指令用于指示在所述網(wǎng)絡設備接收到包括所述第二協(xié)議頭實例的報文時,將所述第二協(xié)議頭實例存儲到所述第二共享空間;所述網(wǎng)絡設備將所述第二協(xié)議頭實例集合中的每個所述第二協(xié)議頭實例從所述第二網(wǎng)絡協(xié)議圖中刪除,并將所述第二網(wǎng)絡協(xié)議圖中與每個所述第二協(xié)議頭實例連接的有向邊刪除。
[0007]在該實現(xiàn)方式中,如果將第一協(xié)議頭實例集合從第一網(wǎng)絡協(xié)議圖中刪除以后得到的第二網(wǎng)絡協(xié)議圖中還包括協(xié)議頭實例,那么該網(wǎng)絡設備可以采用對第一網(wǎng)絡協(xié)議圖相似的處理方式對該第二網(wǎng)絡協(xié)議圖進行處理,從而可以為該第二網(wǎng)絡協(xié)議圖中的第二協(xié)議頭實例集合分配第二共享空間并生成相應的解析指令,以便于該網(wǎng)絡設備接收到包括第二協(xié)議頭實例集合中的第二協(xié)議頭實例的報文時,將該第二協(xié)議頭實例存儲到該第二共享空間,進一步減少了存儲協(xié)議頭實例對存儲空間的占用。
[0008]結合第一方面及其上述實現(xiàn)方式,在第一方面的第二種實現(xiàn)方式中,所述網(wǎng)路設備接收報文,所述報文包括所述第一協(xié)議頭實例和所述第二協(xié)議頭實例;所述網(wǎng)絡設備獲取所述第一解析指令和所述第二解析指令,并根據(jù)所述第一解析指令和所述第二解析指令的指示,將所述第一協(xié)議頭實例存儲到所述第一共享空間,將所述第二協(xié)議頭實例存儲到所述第二共享空間。
[0009]在該實現(xiàn)方式中,該網(wǎng)絡設備可以通過為每個協(xié)議頭實例生成相應的解析指令,通過解析指令,將協(xié)議頭實例存儲到相應的共享空間。
[0010]結合第一方面及其上述實現(xiàn)方式,在第一方面的第三種實現(xiàn)方式中,所述網(wǎng)絡設備獲取所述第一解析指令和所述第二解析指令,具體包括:所述網(wǎng)絡設備根據(jù)預設置的所述第一解析指令的存儲地址,獲取所述第一解析指令,或根據(jù)所述第一協(xié)議頭實例的上一層協(xié)議頭實例的解析指令,獲取所述第一解析指令的存儲地址,根據(jù)所述第一解析指令的存儲地址獲取所述第一解析指令;所述網(wǎng)絡設備根據(jù)所述第一協(xié)議頭實例的所述第一解析指令,獲取所述第二解析指令的存儲地址,根據(jù)所述第二解析指令的存儲地址獲取所述第二解析指令。
[0011]在該實現(xiàn)方式中,該網(wǎng)絡設備可以根據(jù)預配置的第一解析指令的存儲地址獲取該第一解析指令,或者根據(jù)第一解析指令的上一層協(xié)議頭實例的解析指令,獲取該第一解析指令的存儲地址,然后根據(jù)該第一解析指令的存儲地址獲取該第一解析指令。在網(wǎng)絡設備接收的報文中,該第一協(xié)議頭實例為該第二協(xié)議頭實例的上一層的協(xié)議頭實例,因此可以根據(jù)該第一協(xié)議頭實例的解析指令獲取該第二協(xié)議頭實例的第二解析指令的存儲地址,然后根據(jù)第二解析指令的存儲地址獲取該第二解析指令。
[0012]因此,,每一層協(xié)議頭實例的解析指令,都可以根據(jù)該協(xié)議頭實例的上一層的協(xié)議頭實例的解析指令獲取,也就是說,該網(wǎng)絡設備可以根據(jù)上一層的協(xié)議頭實例的解析指令,依次獲取下一層的協(xié)議頭實例的解析指令,從而獲取整個報文中的所有協(xié)議頭實例的解析指令,然后可以根據(jù)每個協(xié)議頭實例的解析指令,將該報文中的協(xié)議頭實例存儲到相應的存儲空間。
[0013]結合第一方面及其上述實現(xiàn)方式,在第一方面的第四種實現(xiàn)方式中,若所述第一協(xié)議頭實例集合只包括第一協(xié)議頭實例,所述第一共享空間的大小為所述第一協(xié)議頭實例占用的空間的大小,或固定位寬;或若所述第一協(xié)議頭實例集合包括至少兩個協(xié)議頭實例,所述第一共享空間的大小為所述至少兩個協(xié)議頭實例中最長的協(xié)議頭實例占用的空間的大小,或固定位寬。
[0014]在該實現(xiàn)方式中,該共享空間的大小可以根據(jù)待存儲的協(xié)議頭實例占用的空間的大小確定,也可以為協(xié)議頭實例在報文中的偏移量的位寬,也就是說該共享空間可以用于存儲協(xié)議頭實例在報文中的偏移量。
[0015]第二方面,提供了一種網(wǎng)絡設備,該網(wǎng)絡設備具有實現(xiàn)上述第一方面或第一方面的任一種實現(xiàn)方式的方法中用于存儲協(xié)議頭的功能。所述功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應的軟件實現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應的模塊。
[0016]第三方面,提供了一種網(wǎng)絡設備,包括存儲器和處理器,該存儲器用于存儲包括程序、指令或代碼的信息,該處理器用于執(zhí)行該存儲器存儲的程序、指令或代碼,完成第一方面或第一方面的任一種實現(xiàn)方式中的方法。
[0017]具體地,該處理器和該存儲器可以通過總線系統(tǒng)通信,該處理器和該存儲器通過該總線系統(tǒng)通信,該總線系統(tǒng)除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號總線等,該處理器和該存儲器還可以通過其他類型的總線進行通信,例如,光纖或光波
F-1'
寸寺O
[0018]第四方面,提供了一種計算機可讀存儲介質(zhì),用于存儲為執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式的功能所用的計算機軟件指令,其包含用于執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式的方法所設計的程序。
[0019]基于上述技術方案,本申請實施例的存儲協(xié)議頭的方法和網(wǎng)絡設備,通過將多個協(xié)議頭實例共享存儲在同一個共享空間上,因此,減少了存儲協(xié)議頭實例對存儲空間的占用。
【附圖說明】
[0020]為了更清楚地說明本申請實施例的技術方案,下面將對本申請實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1是一種抽象的網(wǎng)路協(xié)議圖;
[0022]圖2是基于圖1所示的網(wǎng)絡協(xié)議圖的三種報文頭格式示意圖;
[0023]圖3是根據(jù)本申請實施例的存儲協(xié)議頭的方法的示意性流程圖;
[0024]圖4是根據(jù)本申請另一實施例的存儲協(xié)議頭的方法的示意性流程圖;
[0025]圖5a至圖5d是根據(jù)本申請實施例的存儲協(xié)議頭的方法執(zhí)行過程中的幾種網(wǎng)絡協(xié)議圖的不意圖;
[0026]圖6是兩種共享空間的分配方式的示意圖。
[0027]圖7是根據(jù)本申請實施例的網(wǎng)絡設備的示意性框圖。
[0028]圖8是根據(jù)本申請另一實施例的網(wǎng)絡設備的示意性框圖。
【具體實施方式】
[0029]為了方便理解本申請實施例,首先在此介紹本申請實施例描述中引入的幾個要素:
[0030]網(wǎng)絡協(xié)議圖:
[0031]網(wǎng)絡協(xié)議圖描述了網(wǎng)絡設備需要支持的網(wǎng)絡協(xié)議的類型,以及網(wǎng)絡協(xié)議之間的層次關系,網(wǎng)絡協(xié)議圖可以是網(wǎng)絡設備商根據(jù)所需要支撐的業(yè)務所描繪的,也可以是用戶按照自定義的網(wǎng)絡協(xié)議關系描繪的,該網(wǎng)絡協(xié)議圖用于在網(wǎng)絡設備接收到報文時,根據(jù)該網(wǎng)絡協(xié)議圖描述的網(wǎng)絡協(xié)議之間的層次關系對報文進行解析處理。圖1示出了一種抽象的網(wǎng)絡協(xié)議圖,Hl至HS分別代表一種網(wǎng)絡協(xié)議的協(xié)議頭,例如,該Hl可以表示以太協(xié)議的協(xié)議頭,在圖1所示的網(wǎng)絡協(xié)議圖中,協(xié)議頭實例Hl為最頂層的網(wǎng)絡協(xié)議的協(xié)議頭,每個協(xié)議的下一層協(xié)議的協(xié)議類型,取決于該協(xié)議內(nèi)部的某個字段,例如,如果該協(xié)議為以太協(xié)議,可以根據(jù)該以太協(xié)議的ethType字段(ethernet.ethType)確定下一層協(xié)議的協(xié)議類型,或者如果該協(xié)議為互聯(lián)網(wǎng)協(xié)議第四版(英文全稱:Internet Protocol vers1n 4,簡稱:IPv4),可以根據(jù)該IPv4協(xié)議的protocol字段(Ipv4.protocol)確定下一層協(xié)議的協(xié)議類型等。從圖1中的網(wǎng)絡協(xié)議圖可以看出,可以識別的報文頭格式有圖2所示的三種格式。
[0032]入度:
[0033]在有向圖中的一條有向邊<vi,Vj>,我們稱該邊為vi的一條出邊,為vj的一條入邊;vj為vi的出邊鄰接點,vi為vj的入邊鄰接點。一個頂點的入邊個數(shù),稱為該點的入度;一個頂點的出邊個數(shù),稱為該點的出度。圖1所示的網(wǎng)絡協(xié)議圖可以認為是一種有向圖,在圖1中,協(xié)議頭實例Hl的入邊個數(shù)為O,可以認為協(xié)議頭實例Hl的入度為O。
[0034]當本申請實施例提及“第一”、“第二”、“第三”、“第四”等序數(shù)詞時,除非根據(jù)上下文其確實表達順序之意,應當理解為僅僅起區(qū)分的作用,在此不作限制。
[0035]圖3是本申請一個實施例的存儲協(xié)議頭的方法300的示意性流程圖。圖3的方法由網(wǎng)絡設備執(zhí)行。具體地,該網(wǎng)絡設備可以包括路由器、交換機、分組傳送網(wǎng)設備、基站等可以接收或發(fā)送報文的設備。如圖3所示,該方法300包括:
[0036]S310,網(wǎng)絡設備將第一網(wǎng)絡協(xié)議圖中入度為O的一個或多個第一協(xié)議頭實例組成的集合確定為待分配存