本發明涉及網絡通信技術領域,特別涉及一種Linux系統的QinQ報文處理方法及平臺。
背景技術:
Linux因其完善的網絡功能和靈活的可定制性,在網絡設備和服務器中均有大量使用。在實際環境中,一些Linux設備經常面臨QinQ的終結和處理任務。例如在QinQ網絡中的PPPoE認證服務器(PPPoE,即PPP over Ethernet,以太網上的點對點協議),需要識別并終結用戶報文中的QinQ信息,實現依據VlanId(即Vlan ID,虛擬局域網ID號)的認證策略;再者,DHCP服務器(DHCP,即Dynamic Host Configuration Protocol,動態主機配置協議)有時也需要具有QinQ功能,并依據VlanId作為ip分配的一種因素。
現有技術是通過在以太網設備上新建一個虛擬設備的方式來實現Vlan技術,而要實現QinQ技術則需要在Vlan虛擬設備上再建一個虛擬設備,也即,現有技術需要使用雙層虛擬設備來表達QinQ環境中的一個Vlan,這也就意味著,現有技術需要通過大量的雙層虛擬設備來實現對QinQ報文的處理。然而,在QinQ環境中,通常會存在成千上萬個Vlan,這樣不僅需要大量虛擬設備的支持,也會給Linux系統帶來較大的負載。
綜上所述可以看出,如何在實現QinQ功能的過程中減少對虛擬設備的依賴性是目前有待解決的問題。
技術實現要素:
有鑒于此,本發明的目的在于提供一種Linux系統的QinQ報文處理方法及平臺,在實現QinQ功能的過程中減少了對虛擬設備的依賴性。其具體方案如下:
一種Linux系統的QinQ報文處理方法,包括:
預先分別為每個網絡設備創建相對應的配置位圖;其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文;
若需要第一網絡設備啟動針對第一QinQ報文的報文接收處理流程,則利用所述第一網絡設備所對應的配置位圖,判斷所述第一QinQ報文是否能夠在所述第一網絡設備中進行傳輸,如果是,則依據所述第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新,所述QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象;其中,任一QinQ對象均相應地包括VlanID編碼和設備信息;
若需要第二網絡設備啟動報文發送處理流程,則利用所述第二網絡設備對應的設備信息,對所述QinQ對象集合進行查找,若從所述QinQ對象集合中查找到與所述第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,并利用所述第二網絡設備對所述第二QinQ報文進行相應地發送處理。
優選的,任一網絡設備所對應的配置位圖中包括VlanID編碼以及與VlanID編碼對應的比特位;其中,若配置位圖中任一VlanID編碼對應的比特位為1,則表示與該VlanID編碼對應的QinQ報文能夠在相應的網絡設備中進行傳輸;若配置位圖中任一VlanID編碼對應的比特位為0,則表示與該VlanID編碼對應的QinQ報文不能在相應的網絡設備進行傳輸。
優選的,所述利用所述第一網絡設備所對應的配置位圖,判斷所述第一QinQ報文是否能夠在所述第一網絡設備中進行傳輸的過程,包括:
從所述第一QinQ報文中提取出相應的QinQ信息,并利用該QinQ信息,對相應的VlanID編碼進行計算,得到第一VlanID編碼;
若在所述第一網絡設備所對應的配置位圖中,與所述第一VlanID編碼對應的比特位為1,則判定所述第一QinQ報文能夠在所述第一網絡設備中進行傳輸;
若在所述第一網絡設備所對應的配置位圖中,與所述第一VlanID編碼對應的比特位為0,則判定所述第一QinQ報文不能在所述第一網絡設備中進行傳輸。
優選的,任一QinQ對象均具體包括VlanID編碼、網絡設備索引、設備MAC地址以及用于表示該QinQ對象的剩余有效時間的超時值。
優選的,所述依據所述第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新的過程,包括:
利用所述第一QinQ報文所對應的源MAC地址,并結合第一映射表,對所述QinQ對象集合進行查找;其中,所述第一映射表為用于記錄設備MAC地址與QinQ對象之間映射關系的映射表;
若在所述QinQ對象集合中查找到與所述第一QinQ報文對應的QinQ對象,則對該QinQ對象中的超時值進行相應地刷新處理;
若在所述QinQ對象集合中查找不到與所述第一QinQ報文對應的QinQ對象,則在所述QinQ對象集合中相應地新建一個與所述第一QinQ報文對應的QinQ對象,并對所述第一映射表進行相應地更新。
優選的,所述第一映射表的類型為哈希表。
優選的,所述利用所述第二網絡設備對應的設備信息,對所述QinQ對象集合進行查找的過程,包括:
依據所述第二網絡設備對應的目的MAC地址,并結合所述第一映射表,對所述QinQ對象集合進行查找。
優選的,任一QinQ對象還具體包括該QinQ對象被引用次數。
本發明還公開了一種Linux系統的QinQ報文處理平臺,包括:
位圖創建模塊,用于預先分別為每個網絡設備創建相對應的配置位圖;其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文;
報文接收處理模塊,用于當需要第一網絡設備啟動針對第一QinQ報文的報文接收處理流程,則利用所述第一網絡設備所對應的配置位圖,判斷所述第一QinQ報文是否能夠在所述第一網絡設備中進行傳輸,如果是,則依據所述第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新,所述QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象;其中,任一QinQ對象均相應地包括VlanID編碼和設備信息;
報文發送處理模塊,用于當需要第二網絡設備啟動報文發送處理流程,則利用所述第二網絡設備對應的設備信息,對所述QinQ對象集合進行查找,若從所述QinQ對象集合中查找到與所述第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,并利用所述第二網絡設備對所述第二QinQ報文進行相應地發送處理。
本發明中,Linux系統的QinQ報文處理方法,包括:預先分別為每個網絡設備創建相對應的配置位圖;其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文;若需要第一網絡設備啟動針對第一QinQ報文的報文接收處理流程,則利用第一網絡設備所對應的配置位圖,判斷第一QinQ報文是否能夠在第一網絡設備中進行傳輸,如果是,則依據第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新,QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象;其中,任一QinQ對象均相應地包括VlanID編碼和設備信息;若需要第二網絡設備啟動報文發送處理流程,則利用第二網絡設備對應的設備信息,對QinQ對象集合進行查找,若從QinQ對象集合中查找到與第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,并利用第二網絡設備對第二QinQ報文進行相應地發送處理。
可見,本發明預先為每個網絡設備創建相應的配置位圖,并且創建了QinQ對象集合,用于記錄當前網絡系統中所有處于有效狀態的QinQ對象,這樣,在某一網絡設備需要啟動針對某一QinQ報文的報文接收處理流程時,只需基于相應配置位圖上的信息便可判定該網絡設備是否能夠該QinQ報文進行傳輸,如果能夠,則依據該QinQ報文對QinQ對象集合中相應的QinQ報文進行更新處理即可。相應的,在某一網絡設備需要啟動報文發送處理流程時,只需利用該網絡設備的設備信息,從QinQ對象集合中查找出相應的QinQ對象,然后利用該QinQ對象生成相應的QinQ報文,并對其進行相應地發送處理。綜上可見,本發明通過利用配置位圖以及QinQ對象集合,實現了QinQ功能,而且在這過程中,無需依賴虛擬設備,從而也降低了網絡系統的整體負載。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明實施例公開的一種Linux系統的QinQ報文處理方法流程圖;
圖2為本發明實施例公開的一種Linux系統的QinQ報文處理平臺結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明實施例公開了一種Linux系統的QinQ報文處理方法,參見圖1所示,該方法包括:
步驟S11:預先分別為每個網絡設備創建相對應的配置位圖;其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文。
需要說明的是,本實施例中的網絡設備是指以太網設備,如網卡等。本發明實施例預先為每個網絡設備創建相應的配置位圖,其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文,也即,用來指示允許在該網絡設備中進行傳輸的QinQ報文。
步驟S12:若需要第一網絡設備啟動針對第一QinQ報文的報文接收處理流程,則利用第一網絡設備所對應的配置位圖,判斷第一QinQ報文是否能夠在第一網絡設備中進行傳輸,如果是,則依據第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新,QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象;其中,任一QinQ對象均相應地包括VlanID編碼和設備信息。
可以理解的是,上述第一網絡設備是指網絡系統中的任意一個需要對QinQ報文啟動報文接收處理流程的網絡設備。
本實施例中,上述QinQ對象集合是預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象,其中,處于有效狀態的QinQ對象是指剩余有效時間大于0的QinQ對象。
本實施例中,任一QinQ對象均包括VlanID編碼和設備信息,其中,VlanID編碼是指對QinQ報文中的Vlan Tag進行編碼后得到的編碼信息。其中,QinQ報文中的Vlan Tag包括內層Vlan Tag和外層Vlan Tag。本實施例中,QinQ報文的內層Vlan Tag和外層Vlan Tag均由12比特位構成。
另外,在依據上述第一QinQ報文對上述QinQ對象集合進行相應地更新的同時,需在上述第一網絡設備中對上述第一QinQ報文進行傳輸處理,并且,可以理解的是,在依據上述第一QinQ報文對QinQ對象集合進行相應地更新后,需要解除上述第一QinQ報文中的Vlan Tag。
步驟S13:若需要第二網絡設備啟動報文發送處理流程,則利用第二網絡設備對應的設備信息,對QinQ對象集合進行查找,若從QinQ對象集合中查找到與第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,并利用第二網絡設備對第二QinQ報文進行相應地發送處理。
在上述步驟S13中,若從上述QinQ對象集合中查找出與上述第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,具體的,是利用該QinQ對象所對應的VlanID編碼,確定出與該QinQ對象對應的內層Vlan Tag和外層Vlan Tag,然后利用該內層Vlan Tag和外層Vlan Tag,生成上述第二QinQ報文。
另外,需要說明的是,上述步驟S12和S13之間并不存在先后順序。
可見,本發明實施例預先為每個網絡設備創建相應的配置位圖,并且創建了QinQ對象集合,用于記錄當前網絡系統中所有處于有效狀態的QinQ對象,這樣,在某一網絡設備需要啟動針對某一QinQ報文的報文接收處理流程時,只需基于相應配置位圖上的信息便可判定該網絡設備是否能夠該QinQ報文進行傳輸,如果能夠,則依據該QinQ報文對QinQ對象集合中相應的QinQ報文進行更新處理即可。相應的,在某一網絡設備需要啟動報文發送處理流程時,只需利用該網絡設備的設備信息,從QinQ對象集合中查找出相應的QinQ對象,然后利用該QinQ對象生成相應的QinQ報文,并對其進行相應地發送處理。綜上可見,本發明實施例通過利用配置位圖以及QinQ對象集合,實現了QinQ功能,而且在這過程中,無需依賴虛擬設備,從而也降低了網絡系統的整體負載。
本發明實施例公開了一種具體的Linux系統的QinQ報文處理方法,相對于上一實施例,本實施例對技術方案作了進一步的說明和優化。具體的:
上一實施例步驟S11中,需要預先分別為每個網絡設備創建相對應的配置位圖。本實施例中,任一網絡設備所對應的配置位圖中包括VlanID編碼以及與VlanID編碼對應的比特位;其中,若配置位圖中任一VlanID編碼對應的比特位為1,則表示與該VlanID編碼對應的QinQ報文能夠在相應的網絡設備中進行傳輸;若配置位圖中任一VlanID編碼對應的比特位為0,則表示與該VlanID編碼對應的QinQ報文不能在相應的網絡設備進行傳輸。
上一實施例步驟S12中,利用第一網絡設備所對應的配置位圖,判斷第一QinQ報文是否能夠在第一網絡設備中進行傳輸的過程,具體包括下面步驟S121至S123:
步驟S121:從第一QinQ報文中提取出相應的QinQ信息,并利用該QinQ信息,對相應的VlanID編碼進行計算,得到第一VlanID編碼;
步驟S122:若在第一網絡設備所對應的配置位圖中,與第一VlanID編碼對應的比特位為1,則判定第一QinQ報文能夠在第一網絡設備中進行傳輸;
步驟S123:若在第一網絡設備所對應的配置位圖中,與第一VlanID編碼對應的比特位為0,則判定第一QinQ報文不能在第一網絡設備中進行傳輸。
由上可知,本發明實施例中,當配置位圖中的某個比特位為1,則與該比特位對應的QinQ報文能夠在相應的網絡設備中進行傳輸,而當配置位圖中的某個比特位為0,則與該比特位對應的QinQ報文不能在相應的網絡設備中進行傳輸。當然,根據實際需要,本實施例也可以對配置位圖中的比特位的含義進行如下設定:當配置位圖中的某個比特位為0,則與該比特位對應的QinQ報文能夠在相應的網絡設備中進行傳輸,而當配置位圖中的某個比特位為1,則與該比特位對應的QinQ報文不能在相應的網絡設備中進行傳輸。
另外,上一實施例步驟S12中,若判定出第一QinQ報文能夠在第一網絡設備中進行傳輸,則需要依據第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新。其中,QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象。本實施例中,任一QinQ對象均具體包括VlanID編碼、網絡設備索引、設備MAC地址以及用于表示該QinQ對象的剩余有效時間的超時值。
更具體的,上述依據第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新的過程,具體包括下面步驟S124至126:
步驟S124:利用第一QinQ報文所對應的源MAC地址,并結合第一映射表,對QinQ對象集合進行查找;其中,第一映射表為用于記錄設備MAC地址與QinQ對象之間映射關系的映射表;
步驟S125:若在QinQ對象集合中查找到與第一QinQ報文對應的QinQ對象,則對該QinQ對象中的超時值進行相應地刷新處理;
步驟S126:若在QinQ對象集合中查找不到與第一QinQ報文對應的QinQ對象,則在QinQ對象集合中相應地新建一個與第一QinQ報文對應的QinQ對象,并對第一映射表進行相應地更新。
優選的,上述第一映射表的類型為哈希表。
上一實施例步驟S13中,當需要第二網絡設備啟動報文發送處理流程,則會利用第二網絡設備對應的設備信息,對QinQ對象集合進行查找。具體的,上述利用第二網絡設備對應的設備信息,對QinQ對象集合進行查找的過程,具體包括:依據第二網絡設備對應的目的MAC地址,并結合上述第一映射表,對QinQ對象集合進行查找。
進一步的,本實施例中,上述QinQ對象集合中的任一QinQ對象還可以具體包括該QinQ對象被引用次數。
相應的,本發明實施例還公開了一種Linux系統的QinQ報文處理平臺,參見圖2所示,該平臺包括:
位圖創建模塊21,用于預先分別為每個網絡設備創建相對應的配置位圖;其中,任一網絡設備所對應的配置位圖用來指示能夠在該網絡設備中進行傳輸的QinQ報文;
報文接收處理模塊22,用于當需要第一網絡設備啟動針對第一QinQ報文的報文接收處理流程,則利用第一網絡設備所對應的配置位圖,判斷第一QinQ報文是否能夠在第一網絡設備中進行傳輸,如果是,則依據第一QinQ報文,對預先創建的QinQ對象集合進行相應地更新,QinQ對象集合為預先創建的用于記錄當前網絡系統的所有處于有效狀態的QinQ對象;其中,任一QinQ對象均相應地包括VlanID編碼和設備信息;
報文發送處理模塊23,用于當需要第二網絡設備啟動報文發送處理流程,則利用第二網絡設備對應的設備信息,對QinQ對象集合進行查找,若從QinQ對象集合中查找到與第二網絡設備對應的QinQ對象,則利用該QinQ對象所對應的VlanID編碼,相應地生成第二QinQ報文,并利用第二網絡設備對第二QinQ報文進行相應地發送處理。
其中,關于上述各個模塊更加詳細的工作過程可參考前述實施例中公開的相關內容,在此不再進行贅述。
可見,本發明實施例預先為每個網絡設備創建相應的配置位圖,并且創建了QinQ對象集合,用于記錄當前網絡系統中所有處于有效狀態的QinQ對象,這樣,在某一網絡設備需要啟動針對某一QinQ報文的報文接收處理流程時,只需基于相應配置位圖上的信息便可判定該網絡設備是否能夠該QinQ報文進行傳輸,如果能夠,則依據該QinQ報文對QinQ對象集合中相應的QinQ報文進行更新處理即可。相應的,在某一網絡設備需要啟動報文發送處理流程時,只需利用該網絡設備的設備信息,從QinQ對象集合中查找出相應的QinQ對象,然后利用該QinQ對象生成相應的QinQ報文,并對其進行相應地發送處理。綜上可見,本發明實施例通過利用配置位圖以及QinQ對象集合,實現了QinQ功能,而且在這過程中,無需依賴虛擬設備,從而也降低了網絡系統的整體負載。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上對本發明所提供的一種Linux系統的QinQ報文處理方法及平臺進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。