胡 柳
(湖南信息職業技術學院,湖南 長沙 410200)
隨著互聯網技術的飛速發展,網絡結構日益復雜,傳統的網絡架構和管理方式已無法滿足快速變化的應用需求。軟件定義網絡(Software Defined Network,SDN)作為一種新型的網絡架構,通過將網絡的控制平面與數據平面分離,實現了對網絡的靈活控制和高效管理。負載均衡是一種將網絡流量分配到多個服務器或網絡設備的技術,其目的是提高網絡的性能和可靠性。通過合理地分配網絡流量,負載均衡可以避免單個設備過載的情況發生,從而保證整個網絡的穩定性和性能。目前,很多學者對Mininet網絡仿真開展了相關的研究工作。傅妍芳等[1]提出了一種可滿足多類型業務QoS的動態自適應路由算法-拉格朗日松弛多約束(Lagrangian Relaxation based Multiple Constains, LRMC)QoS路由算法,在Mininet仿真網絡中部署實現。利用Mininet CLI等功能對LRMC多約束QoS路由算法進行仿真對比試驗。黃凱[2]對基于Mininet的混合網絡模擬平臺開展了相關研究與實現。周榮富等[3]使用Mininet工具對SDN網絡拓撲帶寬性能進行分析。王德強等[4]使用Mininet工具對胖樹SDN網絡進行仿真。楊俊東等[5]使用Mininet工具對SDN仿真并對其性能進行了分析。張毅等[6]使用Mininet工具對SDN網絡帶寬性能進行了研究。
本文基于Mininet對SDN的網絡負載均衡進行研究,分析OpenFlow協議技術及其原理,驗證SDN架構的功能和基本工作流程,構建網絡負載均衡仿真研究的實驗環境,并在Mininet工具中進行模擬實現,為進一步研究SDN架構提供了有效的技術支撐。
軟件定義網絡的核心技術是控制與轉發分離技術,通過將控制平面的功能抽象出來,控制器可以對整個網絡進行集中控制和動態管理。控制平面的功能主要包括路由計算、資源分配、安全策略等,數據平面的功能主要包括數據包的轉發和處理。軟件定義網絡的分離架構使得控制器的功能更加集中和強大,網絡的管理和控制更加簡單、靈活,可以根據應用需求快速調整網絡配置,提高網絡的可靠性和性能。同時,控制器與交換機之間的通信協議可以采用標準化接口,使得不同廠商之間的設備可以相互協作,提高了網絡的互操作性和可擴展性。在傳統的網絡架構中,控制平面和數據平面是緊密耦合在一起的,導致網絡的管理和控制不夠靈活。
隨著云計算、物聯網等技術的快速發展,軟件定義網絡的應用場景將越來越廣泛。未來,軟件定義網絡將與云計算、邊緣計算等技術相結合,實現更加智能化的網絡管理和控制。同時,隨著5G、6G等新一代移動通信技術的普及和發展,軟件定義網絡將在移動通信領域發揮重要作用。此外,軟件定義網絡還將應用于工業互聯網、智能交通等領域,推動各行業的數字化轉型和創新發展。SDN的架構體系如圖1所示。

圖1 SDN架構體系
OpenFlow是一種網絡通信協議,它允許網絡管理員通過網絡控制器來遠程管理和配置網絡設備,從而實現網絡流量的靈活控制。OpenFlow技術架構由3個主要組件組成:OpenFlow控制器、OpenFlow交換機和OpenFlow協議。OpenFlow控制器是整個OpenFlow架構的核心,負責管理和控制網絡設備的流量。控制器通過與交換機上的OpenFlow協議進行通信,可以遠程控制交換機的行為,包括流表的生成、修改和刪除等。OpenFlow交換機是實現OpenFlow協議的網絡設備,包含一個或多個流表,用于根據匹配的規則來處理網絡流量。每個流表包含一系列的表項,每個表項定義了一組匹配條件和相應的操作。當交換機接收到數據包時,會查找流表中匹配的表項,并根據表項的操作來處理數據包。
Mininet是一個用于研究和模擬SDN的開源工具。通過使用自定義的Linux內核和用戶空間程序,實現高度可配置和可擴展的網絡環境。在Mininet中,SDN元素和命令扮演著重要角色,使得用戶能夠靈活地控制和管理網絡行為。SDN元素在Mininet中主要包括OpenFlow控制器、OpenFlow交換機和虛擬機。OpenFlow控制器是SDN的核心組件,負責管理和控制網絡流量。控制器與OpenFlow交換機進行通信,實現了對網絡設備的集中式控制。OpenFlow交換機則是執行SDN控制器指令的實際設備,能夠根據控制器的決策來轉發和處理流量。虛擬機則是用于運行用戶自定義應用程序的環境,通過與控制器和交換機進行交互,可以實現各種網絡實驗和測試。在Mininet中,用戶可以使用一系列命令來配置和控制SDN元素,其中一些常用的命令如下。
(1)mn:用于啟動Mininet模擬器。通過指定不同的參數來配置網絡拓撲、節點數量、鏈路帶寬等。
(2)controller:用于添加控制器節點到網絡中。指定控制器的IP地址和端口號以及使用的控制器類型(如Floodlight、Ryu等)。
(3)switch:用于添加OpenFlow交換機節點到網絡中。指定交換機的IP地址和端口號以及使用的OpenFlow協議版本。
(4)host:用于添加虛擬機節點到網絡中。指定虛擬機的IP地址和MAC地址以及使用的操作系統和應用程序。
(5)link:用于創建網絡連接。指定連接的2個節點以及鏈路的帶寬和延遲等參數。
(6)run:用于啟動模擬并開始執行定義的應用程序或腳本,通過該命令來啟動各種網絡實驗和測試。
(7)pingall、tracerouteall等:這些命令用于在網絡中執行特定的網絡測量任務,如ping和traceroute等。通過這些命令可以在Mininet中構建各種不同的網絡拓撲和配置,從而實現靈活的網絡研究和實驗,Mininet還支持Python腳本自動化地執行復雜的網絡操作和管理任務。
軟件定義網絡中可采用基于流量的負載均衡策略、基于服務的負載均衡策略、基于內容的負載均衡策略等方式來優化網絡性能、提高網絡資源的利用率。本文采用基于流量調度的負載均衡策略開展仿真實驗,核心原理是將流量的轉發路徑進行分析、管理、調整,通過SDN控制器的配置轉發規則來實現全網的負載均衡。控制器獲取全局網絡視圖后,對空閑鏈路、最短路徑、流量表進行更新,將網絡流量中的大小流進行區分與標記,通過自適應算法對其轉發路徑進行計算并重定向轉發。流量轉發流程如圖2所示。

圖2 流量轉發流程
創建模擬環境場景:3臺控制器、4臺交換機、9臺主機,拓撲結構如圖3所示,并通過mn命令創建模型。

圖3 模擬拓撲
針對全局網絡空閑情況下,由域1內主機h1向域3內主機h8發出50 M的測試流量。此時,全局網絡流量在正常情況下按流表默認情況進行數據轉發,全局網絡使用正常,網絡延時小、響應及時,對其他主機間的數據傳輸未產生明顯影響。
針對全局網絡繁忙情況下,由域1內主機h1向域3內主機h8發出100 M測試流量,在此過程中各域內的其他主機之間也存在著數據傳輸,交換機處于不斷轉發過程中。同時,也根據流量轉發流程進行流量轉發及流表更新,包括優先級、鏈路狀態、類型等信息。整個仿真過程中各主機采用Wireshark軟件抓取流量信息并進行記錄分析。
在全局網絡空閑情況下,主機h1與h8通信過程暢通,使用鏈路“h1-S1-S2-S3-h8”,對其他主機間的通信影響小,全局網絡運行通暢。在進行數據傳輸時,交換機流表、鏈路狀態、優先級也進行了相應地更新。在全局網絡繁忙情況下,由h1往h8發送100 M測試流量時,由于此時h4和h9等其他主機也在進行大流量數據轉發,鏈路“h1-S1-S2-S3-h8”中的“S2-S3”鏈路狀態為“忙”,根據轉發策略調整轉發路徑為“h1-S1-S2-S4-S3-h8”,雖然傳輸過程節點數增加1,但是數據傳輸效率更具優勢,全網利用率得到較大提升,從而實現不同主機之間的數據負載均衡。
SDN作為未來網絡發展新趨勢已經得到了很大的關注,Mininet仿真工具能方便地進行網絡仿真實驗。本文通過對網絡空閑和繁忙情況下對主機間的通信進行網絡負載均衡及網絡流量轉發模擬仿真,結合控制器對網絡流量轉發及鏈路狀態管理,能有效提升網絡資源利用率,實現網絡負載均衡。同時,Mininet仿真工具能進行可視化操作,為初學者研究SDN提供了良好的平臺。