虛擬網絡通信的方法及裝置的制造方法
【技術領域】
[0001]本申請涉及通信領域,具體涉及通信鏈路建立技術領域。
【背景技術】
[0002]OpenStack是一個旨在為公共及私有云的建設與管理提供軟件的開源項目,由存儲、鏡像、網絡等組件組成,而Neutron是OpenStack中管理虛擬網絡的核心組件。
[0003]目前Neutron的實現中,虛擬網絡通信鏈路的建立是通過Neutron的組件之間的相互配合、以及在創建之后就預先配置好來加以實現的。創建請求發送到nova-api后,首先根據資源需求調度到一個計算節點上,然后計算節點上的nova-compute根據所接收的請求創建虛擬機實例和虛擬網絡設備。在虛擬網絡設備創建之后,Neutron可自動檢測到所創建的虛擬網絡設備,然后根據該虛擬網絡設備的信息配置dhcp和安全組等信息,從而建立虛擬網絡鏈路。
[0004]根據目前的Neutron實現方式,在一個創建虛擬機的完成流程中,Neutron Server需要通知各個Agent網絡狀態的改變。然而,目前的Neutron實現方式嚴重依賴消息隊列、對數據庫壓力比較大、并且上述通知沒有重試機制,因而在消息丟失、網絡瞬斷等情況下無法自動地修復虛擬網絡,從而出現虛擬機無法獲取IP或訪問外部網絡的問題。
[0005]因此,為了保證SLA(Service-Level Agreement,服務級別協議),有必要對具有自動修復功能的虛擬網絡通信進行進一步研究。
【發明內容】
[0006]為了克服上述現有技術的不足,本發明提供了一種虛擬網絡通信的方法及裝置。
[0007]本申請的一個方面提供一種虛擬網絡通信的方法,所述方法包括:確定未檢測到流表;以及根據數據包信息確定數據包的發送。
[0008]本申請第一方面的一種示例性的實施方式中,數據包信息是數據包的目的IP。
[0009]本申請第一方面的一種示例性的實施方式中,當數據包的目的IP與交換機位于同一網絡中時,將數據包信息發送到控制器。
[0010]本申請第一方面的一種示例性的實施方式中,當數據包的目的IP與交換機不位于同一網絡中時,提供用于將數據包發往網關的流表。
[0011]本申請第一方面的一種示例性的實施方式中,所述方法包括通過確定數據包的目的IP是否位于交換機的子網絡的無類別域間路由中,確定數據包的目的IP與交換機是否位于同一網絡中。
[0012]本申請第一方面的一種示例性的實施方式中,當確定數據包的目的IP對應的虛擬機不存在時,記錄未匹配到流表并發送到控制器的數據包的個數。
[0013]本申請第一方面的一種示例性的實施方式中,當確定數據包的目的IP對應的虛擬機存在時,提供用于轉發數據包的流表。
[0014]本申請第一方面的一種示例性的實施方式中,當所記錄的數據包的個數達到預定閾值時,添加一條禁止當前虛擬機發送數據的流表。
[0015]本申請第一方面的一種示例性的實施方式中,預定閾值為每秒15次。
[0016]本申請第一方面的一種示例性的實施方式中,禁止交換機發送數據的流表具有預定的時效。
[0017]本申請的第二方面提供一種用于虛擬網絡通信的交換機,所述交換機包括:接收模塊,用于判斷是否可從交換機的本地流表中檢測到所接收的數據包的流表;以及發送模塊,用于根據基于數據包信息所生成的流表發送數據包。
[0018]本申請第二方面的一種示例性的實施方式中,接收模塊還用于當確定未檢測到流表時,判斷數據包的目的IP與交換機是否位于同一網絡。
[0019]本申請第二方面的一種示例性的實施方式中,發送模塊還用于根據控制器所下發的流表暫停與虛擬機之間的數據轉發。
[0020]本申請的第三方面提供一種用于虛擬網絡的控制器,所述控制器包括:接收模塊,用于接收交換機發來的未檢測到流表的數據包信息;生成模塊,用于根據控制器的轉發規則或交換機的判斷結果生成對應的流表;以及發送模塊,用于將生成模塊所生成的流表下發到交換機。
[0021]本申請第三方面的一種示例性的實施方式中,控制器還包括判斷模塊,該判斷模塊用于判斷與數據包的目的IP對應的虛擬機是否存在以及進行閾值判斷和超時判斷,從而確定轉發規則。
[0022]本申請第三方面的一種示例性的實施方式中,控制器還包括記錄模塊,該記錄模塊用于當判斷模塊確定數據包的目的IP對應的虛擬機不存在時,記錄未檢測到流表并發送到控制器的數據包的個數。
[0023]本申請第三方面的一種示例性的實施方式中,生成模塊還用于當判斷模塊確定所記錄的未匹配到流表并發送到控制器的數據包的個數超過閾值時,生成禁止虛擬機轉發數據的流表。
[0024]本申請第三方面的一種示例性的實施方式中,生成模塊生成的禁止虛擬機轉發數據的流表具有預定的時效。
[0025]與現有技術相比,本發明的有益效果在于:可以大大降低對消息隊列的依賴,優化流表的結構,更重要的是可以自動修復流表,降低虛擬網絡通信鏈路的修復時間,保證虛擬網絡的通信鏈路的SLA,提高通信鏈路的容災能力。此外,本發明可應用于各種基于OpenFlow實現虛擬機網絡轉發的虛擬網絡實現中。
【附圖說明】
[0026]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
[0027]圖1為本發明實施例中提供的一種通信系統的示意性架構圖;
[0028]圖2為建立虛擬網絡通信鏈路的方法的示意性流程圖;
[0029]圖3為在未匹配到流表的情況中虛擬網絡通信方法的實施例的流程圖;
[0030]圖4示出了本發明在發送數據時發送端的流表匹配失敗的實施例中的報文轉發情況;
[0031]圖5示出了本發明在接收數據時發送端的流表匹配失敗的實施例中的報文轉發情況;
[0032]圖6為本發明實施例中所提供的交換機的邏輯結構圖;以及
[0033]圖7為本發明實施例中所提供的控制器的邏輯結構圖。
【具體實施方式】
[0034]下面結合附圖和實施例對本發明作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關發明,而非對該發明的限定。此外,在不沖突的情況下,本發明中的實施例及實施例中的特征可以相互組合。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關發明相關的部分。
[0035]圖1為本發明實施例中提供的一種通信系統的示意性架構圖,但是應理解的是,本發明實施例并不局限于圖1所示的架構。
[0036]在本實施例中,用于軟件定義網絡(Software Defined Network,SDN)的通信系統100包括:控制器102,例如控制服務器(Controller);交換機104、106,例如OpenFlow交換機;以及虛擬機(Virtual Machine,VM) 108、110、112和114。控制器102可以通過流表116與交換機104、106進行通信,從而構成用于管理路由的控制層118。交換機104與虛擬機108、110進行通信,同時交換機106與虛擬機112、114進行通信,從而構成用于轉發數據包120的轉發層122。此外,交換機104和交換機106之間可以轉發數據。
[0037]雖然本實施例給出特定數量的交換機和虛擬機,但是應理解的是,控制器可以與一個或一個以上的其他數量的交換機