本發明涉及網絡流量監控技術領域,更具體地說,涉及一種基于sdn的報文鏡像方法。
背景技術:
軟件定義網絡(softwaredefinednetwork,簡稱sdn),是網絡一種新型網絡創新架構,是網絡虛擬化的一種實現方式,其核心是通過將網絡設備控制面與數據面分離開來,實現了網絡流量的靈活控制,使網絡作為管道變得更加智能。
端口鏡像技術是通過配置交換機或路由器,將一個或多個源端口的數據流量轉發到某一個指定端口來實現對網絡的監聽,指定端口稱之為“鏡像端口”或“目的端口”。端口鏡像并不影響源端口和目的端口的報文交換,只是將所有進入和從源端口輸出的報文原樣復制了一份到目的端口,并且通過鏡像端口對網絡的流量進行監控分析。在企業內利用鏡像功能,可以很好地對企業內部的網絡數據進行監控管理,在網絡出故障的時候,可以快速地定位故障。
現有的端口鏡像技術存在一些缺陷。一方面,現有技術往往通過人工操作的方式對交換機進行相關的參數配置,才能實現對端口或者報文的鏡像。這種方式自動化程度較低,不能對鏡像端口進行靈活控制,且容易出現誤操作,增加了運維風險。
另一方面,當前流量鏡像是針對某一個端口來進行的,所有經過該端口的流量都會被鏡像到監控系統中。但是這些流量中許多報文都是監控系統所不需要的,所以要對流量進行進一步的匹配、過濾后才能得到真正需要的報文數據。特別是在當前的云計算環境下,一個交換機端口會承載許多虛擬機的通訊流量,但是監控系統可能只是需要其中一臺虛擬機甚至僅是一個應用所涉及的流量。如果將經過該端口的所有流量都鏡像的話,不僅會增加網絡的負擔,影響網絡的穩定性,而且對監控服務器的壓力也非常大。
技術實現要素:
本發明的目的在于提供一種能夠克服上述缺陷、并實現較細粒度流量監控的報文鏡像方法。
為實現上述目的,本發明提供一種技術方案如下:
一種基于sdn的報文鏡像方法,其中,sdn控制器與上層應用、及至少一個數據交換機分別耦合,方法包括如下步驟:a)、上層應用通過sdn控制器的第一北向接口向sdn控制器發送鏡像指令;b)、sdn控制器基于鏡像指令以及第一數據交換機發來的第一流表而生成第二流表;其中,第一數據交換機發起報文的傳輸,第一流表封裝報文,第二流表至少包括對應于鏡像指令的動作命令;以及c)、第二數據交換機從第二流表中提取報文,并基于動作命令而將報文鏡像到指定結點。
優選地,第一、第二流表采用openflow協議。
優選地,第一、第二流表分別至少包括匹配域項、動作集合項,其中匹配域項用于對報文進行匹配,動作集合項包括用于控制數據交換機的動作的至少一個動作命令。
優選地,第一北向接口由用戶進行編程配置。
本發明還提供一種網絡流量監控管理系統,至少與第一、第二數據交換機分別耦合,該系統包括:上層應用控制單元,其通過sdn控制器的第一北向接口向sdn控制器發送鏡像指令;sdn控制器,其基于鏡像指令以及第一數據交換機發來的第一流表而生成第二流表;其中,第一數據交換機發起報文的傳輸,第一流表封裝報文,第二流表至少包括對應于鏡像指令的動作命令,第二數據交換機從第二流表中提取報文,并基于動作命令而將報文鏡像到指定結點;以及監控管理單元,其根據指定結點接收到的報文對網絡流量進行監控管理。
本發明各實施例提供的報文鏡像方法不需要對數據交換機進行人工配置,而由sdn控制器實現對數據交換機的控制;就網絡流量監控來說,該方法能夠聚焦于與特定端口、虛擬機甚至是特定應用相對應的報文,而將不需要監控的報文排除在外,從而可以實現較細粒度的流量監控,同時減輕了監控服務器的負載。該方式實施簡單、便利,利于在行業內推廣應用。
附圖說明
圖1示出本發明第一實施例提供的基于sdn的報文鏡像方法的流程圖。
圖2示出本發明第二實施例提供的網絡流量監控管理系統的模塊結構示意圖。
具體實施方式
為便于說明,在本發明各實施例中,例示性地說明一個sdn控制器、以及第一、第二數據交換機,sdn控制器分別與第一、第二數據交換機在通信上耦合。但是,可以理解,根據特定的應用場合,本發明可以在包括多個sdn控制器以及更多的數據交換機的情況下實現,只要該多個sdn控制器以及該更多的數據交換機彼此耦合,并按照協定的協議來通信。
sdn北向接口是sdn控制器向上層業務應用開放的接口,其目標是使得業務應用能夠便利地調用底層的網絡資源和能力。通過北向接口,網絡業務的開發者能以軟件編程的形式調用各種網絡資源。
sdn南向接口是sdn控制器向底層交換設備開放的接口,一方面通過上行通道對底層交換設備上報的信息進行監控和統計,另一方面sdn控制器也利用南向接口的下行通道對下游網絡設備進行控制。
如圖1所示,本發明第一實施例提供一種基于sdn的報文鏡像方法,其包括如下各步驟。
步驟s10、上層應用通過sdn控制器的第一北向接口向sdn控制器發送鏡像指令。
具體地,sdn控制器為上層應用提供了封裝好的北向接口,通過調用這些北向接口,上層應用可實現對網絡資源的調用、分配以及釋放等功能。對北向接口的調用則會影響sdn控制器通過南向接口協議對數據交換機下發相應的控制策略。
根據該步驟s10,第一北向接口由用戶進行編程配置。
步驟s20、sdn控制器基于鏡像指令以及第一數據交換機發來的第一流表而生成第二流表。
其中,第一數據交換機發起報文的傳輸,第一流表封裝報文,第二流表至少包括對應于鏡像指令的動作命令。該動作命令指示接收到第二流表的交換機如何進行報文鏡像,如下所述。
根據優選實施方式,第一、第二流表采用openflow協議。具體地,openflow協議的報文結構(以下簡稱流表)如下表所示。
matchfields:匹配域,對數據包進行匹配,匹配完成后方才執行該流表中的動作;
counter:計數器,在說明書中沒有討論;
actions:動作集合,包括至少一個動作命令,以用于控制數據交換機的動作,如封裝/去封裝,多路徑轉發,輸出到一個或幾個端口等等。
關于第二流表的生成,作為示例,在流表的動作集合中,可以在正常轉發動作后面加入將數據輸出到指定端口的命令:output。如將數據轉發到端口1(連接應用的端口)和端口5(連接控制系統的端口),即可加入動作命令:output15;換言之,第二流表將包括對應于鏡像指令的動作命令。
步驟s30、第二數據交換機從第二流表中提取報文,并基于動作命令而將報文鏡像到指定結點。
繼續上述示例,收到第二流表的數據交換機在解析第二流表之后,獲得動作命令output15,根據該命令第二數據交換機會將報文鏡像到端口5。
進一步地,監控系統根據指定結點接收到的各個報文來對網絡流量進行監控管理。這種監控管理是以報文為單位來甄別進行的,而報文可對應于特定端口、虛擬機甚至是特定應用,將不需要監控的報文排除在外,本發明可以實現較細粒度的流量監控。
如圖2所示,本發明第二實施例提供一種網絡流量監控管理系統,其至少包括上層應用控制單元101、sdn控制器102以及監控管理單元103。該網絡流量監控管理系統通過sdn控制器102與第一、第二數據交換機201、202在通信上耦合。其中,第一數據交換機201發起報文的傳輸,第二數據交換機202期望獲得報文,監控管理單元103期望獲得報文鏡像以對網絡流量進行監控。
具體地,上層應用控制單元101通過sdn控制器102的第一北向接口向sdn控制器102發送鏡像指令。
sdn控制器102基于鏡像指令以及第一數據交換機201發來的第一流表而生成第二流表;第一流表封裝有待傳輸的報文,第二流表至少包括對應于鏡像指令的動作命令,
收到第二流表后,第二數據交換機202從第二流表中提取報文,并基于動作命令而將報文鏡像到指定結點。
最后,監控管理單元103根據指定結點接收到的報文對網絡流量進行監控管理。
作為一種改進實施方式,sdn控制器102可向第一、第二數據交換機201、202下發控制策略,以指示數據交換機201、202執行除了鏡像動作之外的其他動作。
根據優選實施方式,該網絡流量監控管理系統可以按照分布式系統來部署,例如,將上層應用控制單元、sdn控制器設置于本地端,而將監控管理單元設置于遠程端。而第一、第二數據交換機201、202也可以設置于另一遠程端。
進一步地,該網絡流量監控管理系統還可以按照云計算方式來部署。
上述說明僅針對于本發明的優選實施例,并不在于限制本發明的保護范圍。本領域技術人員可作出各種變形設計,而不脫離本發明的思想及附隨的權利要求。