楊春艷
(山東城市建設職業學院,山東 濟南 250000)
現代網絡數據越來越繁雜,為了更好地讓用戶獲取相關信息,就需要對網絡通信性能進行進一步的提升,解決傳統協議棧機制中存在的問題,利用輕量級空間棧的優勢以及固有內核空間棧的完備性來構建網絡通信新思路[1]。為了實現數據交換,本文著重使用了數據包的分析分發和無內存拷貝的數據交換系統。在該系統中,對數據包協議數據進行提取,結合信息的內容分發給不同的程序,實現共享,避免數據包的復制,有利于提高通信的性能[2]。內核棧應用和用戶棧應用在通信時受到不同的地理空間影響,要想保證用戶棧對內核棧的透明性,就需要實現不同主機的相互通信,這樣減少用戶空間棧的開發工作量。在處理數據流時,需要保證用戶棧系統與內核棧系統有統一的接口,把數據報文注入到內核系統中[3]。除了不同主機之間的通信,還會遇到同一主機的用戶棧應用程序通信,網絡設備、內核虛擬端口、應用程序都可以作為交換系統的一個端口,運用交互的方式把相關的數據都發送到各個系統中,使用交互系統可以更好地把繁雜的數據處理為簡單的數據報文,更有利于數據的交換。
在新的網絡通信系統設計中,接收到的數據報文都是先進入到用戶空間網絡系統中,再由該系統進入交換系統,識別程序中的數據流,把相關的數據都傳送到用戶棧,通過虛擬網卡把這些數據流都加入到系統中,然后運用到應用程序中[4]。從應用程序發送到外部的數據,經過封裝、交換發送出去。用戶空間協議棧和內核空間協議棧的相互配合,可以更好地保證整個網絡系統的穩定。對于維護系統通信性能具有一定的價值,能夠降低維修的成本,高效便捷的應用到環境中。
交換系統是通過尋址信息和網控指令以信號導向,在電信網中多對用戶間建立信號通路的系統。交換系統可以識別同一主機上的不同用戶棧應用程序的數據報文,能夠分發給相應的程序[5]。要對數據報文進行相應的解析,使用交換規則把其傳送到不同的應用程序中。在整個運轉過程中,當其進入到交換系統時,這時系統就會對接收到的信息進行分析,利用不同的協議來區分數據包的描述信息,再把這些信息發送到對應的協議棧中,使其和數據包相對應。首先這些信息要和配置表相對應,根據目標接收隊列,把這些內容融入到對列中,這樣才能形成完整的應用程序分發工作。
管理程序會根據應用程序的相關內容來繪制表格,該表格是由掩碼、字段信息和目標隊列組成的,在存儲的過程中是按照相關的順序來完成的。二者在進行匹配時,數據報文在進入到轉發系統中后,會和結合生成的信息進行相應的匹配,最后找到相對應的接收隊列端口,最終完成分發的工作。
數據報文在傳輸的過程中會封裝分組、包、幀來進行傳輸,多數會出現數據拷貝的問題,數據拷貝我就會出現大量訪問,影響到系統的運行,使用交換系統可以解決這一問題。
數據報文是網絡中交換與傳輸的數據單元,當進入用戶棧交換系統中,所產生的相關信息都是一一對應的。數據報文在每個程序中相互運轉,可以對數據包中的信息進行交換,這樣可以更好地降低數據報文的拷貝,不用再進行拷貝數據的交換。數據包都是存在各個程序共享的內存中,可以映射到相同的虛擬空間地址,當進入到交換系統時,就會自動生成報文信息,利用該系統的交互性對其進行分配,把其發送到相應的接收隊列中。在這一過程中,數據包描述信息會在不同的系統中進行轉換。在交換的過程中,數據包內容不會進行移動、拷貝,這樣可以更好地提高系統的運行效果,保證系統的穩定性。
在進行動態配置時,要考慮到應用程序的實際情況。不僅要對用戶棧程序的數據報文進行協議棧封裝,還要根據相應的地址對其進行維護,這在一定程度上會加大工作人員的維護工作量。如果運用ARP來實現,也會增加開發的工作量,在建立通信時容易出現延時。可以利用控制平面程序來解決上面的問題,在使用用戶棧程序時,可以先注冊,依靠本地的程序來合理優化資源配置,運用轉發規則來進入交換系統。利用集中管理模塊可以達到同時分發到用戶棧程序的協議棧信息。這樣的好處是可以避免不必要的開銷,因為在通信過程中所有的協議棧信息都是固定的,在轉發過程中數據流也都是明確的,這樣有利于更好地處理配置信息,管理程序間的數據通信可以抽象為控制平面數據流。運用不同的處理方式,讓整個處理過程更加的明晰。
可以把子模塊的管理與配置信息看作抽象控制平面,它們構成了通信協議棧架構。在使用的過程中要對子模塊進行檢測,這樣才能保證信息可以同步。利用控制平面對信息進行相應的調整、處理,根據配置信息的變動,使得信息可以及時被更新。
合理的配置信息在轉發前要做好規劃工作,再把數據報文的內容進行轉發,這樣可以減少數據平面的處理邏輯,有利于提高數據包的處理效率,滿足大量的網絡通信。這樣做可以更好地提高網絡的通信效率,避免出現延時的問題,系統協同運作可以滿足不同網絡服務的需求,進一步優化網絡的傳輸性能。
傳統應用程序在進行網絡通信時使用SocketAPI,在使用過程中用到的網絡地址、端口號和應用程序相關性比較少。在分布式系統中,會出現多個主機應用程序,當主機存在問題,可以通過動態切換的方式應用到其他主機程序上,在切換過程中就會出現網絡地址的變化,需要應用程序來解決這一變化。在新的網絡通信系統中,可以把服務地址引入其中,讓用戶在使用程序時,可以根據提供服務的地址來進行編寫,保證可以應用該程序。用不同實例號來區分地址,保證控制面可以更好地服務于協議地址,保證維護服務地址和它的對應,從而明確應用程序。這樣的好處是可以優化應用程序的步驟,便于管理網絡系統中的協議信息,使用服務地址可以使得網絡通信更加的透明。
為了把服務地址轉化為網絡通信地址,就可以在網絡通信系統中使用服務地址索引的指針數組,這樣能夠更加高效地找到網絡通信協議信息所在的位置。服務地址也就是服務器的IP地址,可以把互聯網上的主機分配的32位地址連接起來,讓用戶可以更好地操作計算機。協議棧地址存儲都是依據服務地址的數量而來,具有一定的上限性,可以通過指針數組來維護,保證服務地址和協議棧地址的對應,所占用的空間較少,可以更好地面對大量冗雜的數據。服務地址對應的協議數據的指針下標公式如下:指針下標=服務號×最大實例數+實例號。比如,服務中的服務號為4,實例號為2,服務的最大實例數為9,則該服務地址對應的協議數據指針位置為:4×9+2=38。根據指針的指向情況就會找到相對應的協議棧數據的位置,要想獲得協議數據可以通過應用程序的服務地址來訪問完成,提升相應的訪問效率。
當用戶棧和內核棧在地址格式上不同時,前者多會采用服務地址來進行通信,后者應用程序使用TCP/IP網絡地址通信,服務地址與網絡地址有了唯一的對應關系。當二者的應用在進行通信時又該如何進行處理,在處理的過程中應該使用怎樣的地址信息,二者之間是否會出現協議地址的沖突,以下對上述情況進行分析。首先,當兩個應用在不同主機上時,內核棧程序可以把相應的內容發送給用戶棧程序,這時可以用到TCP/IP網絡地址,內核棧要對ARP物理地址進行相應的解析,通過ARP數據報文在兩臺主機的內核之間傳送,完成二者之間的產生和終止,利用用戶空間協議棧來實現外部網絡。在完成協議封裝后,就可以通過用戶棧把信息發送到網絡中,通過移動客戶端把內容發送到相應的主機上,運用交換和分發系統,實現用戶棧應用程序。當用戶棧程序向內核棧程序發送數據時,會用到服務地址。管理程序在獲取協議地址時可以通過替代的方式來使用對端應用程序,把服務地址和對端的協議地址聯系在一起。在服務地址注冊的過程中,可以完成整個學習與交換的過程,這樣可以不用再出現初次通信時的ARP過程。
其次,當傳統棧程序與用戶棧程序在同一主機時,容易引發UDP端口的沖突問題,如果在使用前者程序時,就需要運用到本地地址的網絡數據,這時內核棧會結合路由表,而不是把數據報文發送出去,這樣就不能被用戶棧的交換系統捕捉到數據報文轉發給內核棧了。
要想解決主機內部的通信問題,可以利用用戶棧程序來解決這一問題。如圖1所示,用戶棧程序代理可以使得管理程序功能得到實現。在傳統棧使用的地址與服務端口上綁定用戶棧,這樣可以更好地解決傳輸層端口的占用問題,避免服務端口出現沖突,還能夠解決本機的數據報文問題,把內容發送到交換系統中,分發給其他用戶。在使用用戶棧應用發送數據報文給傳統棧應用時就不會出現這一問題,只要使用用戶棧API就能夠完成發送的任務,把用戶棧交換系統加入到系統內核棧中,形成完整的數據報文發送工作。這一方案可以在一定程度上保證傳統棧應用的一致性,但是提高了費用的開銷,不利于通信功能的穩定性。

圖1 同一主機上內核棧用戶棧應用通過代理通信
為了可以更好地解決通信的問題,可以使用DNAT方法。內核棧程序和用戶棧程序在發送數據包時,可以使用上述的方法,有目的性地把數據報文的地址重新定向為虛擬地址,數據報文就可以通過相關的網絡設備被發送到指定的交換系統中,結合轉發的規則對其合理分配,有目的性地把地址設為虛擬地址,用UDP端口把其轉發給用戶棧應用,保證網絡數據的傳輸,這樣做可以進一步拓展交換系統的延展性。反向的數據報文也就是把目的地址變為本地地址,使用交換系統把虛擬網口加入到操作的系統中,再返回到內核應用程序中。在傳輸的過程中要注意一個問題就是,在使用內核協議棧時應該考慮到默認接收的地址,當想換地址時要對網絡端口進行重新設置:accept_local=1。
隨著現代網絡的迅速發展,為了解決網絡通信的問題,本文對傳統網絡協議棧的通信性能進行了分析,設計出了輕量級用戶空間網絡通信系統,把用戶空間協議棧與傳統內核空間協議棧進行結合,這樣可以提高網絡協議棧的運行效率,降低成本,滿足網絡通信的需求,保證內核空間協議棧的可靠性,降低成本維護費用,滿足網絡通信的高效需求。■