本發(fā)明涉及軟件技術領域,尤其涉及一種基于軟件定義網絡控制器的網絡arp完全代理方法及系統(tǒng)。
背景技術:
在云虛擬網絡中,數據中心經過云虛擬化后,使得ip地址出現10-30倍的增長。在大規(guī)模虛擬網絡下,虛擬主機發(fā)起的大量arp(addressresolutionprotocol,地址解析協議)廣播報文會嚴重影響數據中心承載網絡的網絡質量,甚至癱瘓整個數據中心網絡。
為了解決arp廣播風暴問題,云虛擬網絡會使用arp代理的方式抑制arp廣播行為。在業(yè)界主流的方法是通過arp代理進程監(jiān)聽arp報文并主動回復arp響應。但是使用arp代理進程的缺點是arp代理進程本身容易單點瓶頸,如果arp代理進程受到arp攻擊容易癱瘓。并且受限于linuxbridge的鄰居子系統(tǒng)學習機制,arp代理不能完全抑制arp廣播。對于數據中心物理網絡對云虛擬網絡發(fā)起的arp廣播,使用arp代理進程的方式目前沒有有效的解決方案。另外一種方案是通過sdn控制器通過首包機制監(jiān)聽arp報文并且由sdn控制器主動回復arp的方式抑制arp廣播。這樣的方案缺點是sdn控制器處理性能會成為單點。上訴兩個方案都無法實現低消耗無單點的arp代理,無法抑制數據中心對云虛擬網絡發(fā)起的arp廣播報文。
技術實現要素:
本發(fā)明的目的在于針對上述現有技術中的arp代理無法抑制數據中心對云虛擬網絡發(fā)起的arp廣播報文的問題,提出了一種基于軟件定義網絡控制器的網絡arp完全代理方法及系統(tǒng),能夠有效抑制arp廣播尋址的頻率。
一方面,本發(fā)明提供一種基于軟件定義網絡控制器的網絡arp完全代理方法,包括:
虛擬機對數據中心物理網絡發(fā)起arp尋址;
軟件定義網絡控制器下發(fā)流表,通過所述流表回復虛擬機,使得所述虛擬機獲得的數據中心物理網絡的mac地址為統(tǒng)一mac地址;
虛擬機發(fā)起ip通訊報文;
軟件定義網絡控制器接收所述ip通訊報文,并根據所述ip通訊報文確定數據中心物理網絡的ip地址;
所述軟件定義網絡控制器獲取所述數據中心物理網絡的ip地址對應的mac地址,并記錄到鄰居表;
所述軟件定義網絡控制器根據所述鄰居表下發(fā)流表至虛擬交換機,所述流表動作修改目標mac地址為所述數據中心物理網絡的ip地址對應的mac地址,根據所述流表轉發(fā)所述ip通訊報文;
所述數據中心物理網絡接收所述ip通訊報文并進行回復;
所述數據中心物理網絡發(fā)起arp廣播尋址首包;
所述軟件定義網絡控制器根據所述arp廣播判斷目標地址是否為云內地址;
如果是,則軟件定義網絡控制器配置反向響應流表,修改所述數據中心物理網絡的源mac地址為統(tǒng)一mac地址,通過所述反向響應流表進行回復,回復的地址為虛擬機的mac地址或彈性ip的mac地址。
進一步地,所述鄰居表為分布式,用于記錄鄰居表所屬的計算節(jié)點;
所述鄰居表包括記錄ip地址、記錄ip地址對應的mac地址、記錄上次更新時間以及記錄生存時間。
進一步地,所述軟件定義網絡控制器獲取所述數據中心物理網絡的ip地址對應的mac地址,并記錄到鄰居表,包括:
軟件定義網絡控制器根據所述ip地址訪問所述數據中心物理網絡獲取所述數據中心物理網絡的ip地址對應的mac地址,建立所述數據中心物理網絡的ip地址與mac地址的映射關系,并存儲至所述鄰居表。
進一步地,所述軟件定義網絡控制器根據所述arp廣播判斷目標地址是否為云內地址,包括:
軟件定義網絡控制器根據所述arp廣播獲取目標地址,將所述目標地址與預先存儲的云內虛擬機的地址進行比較,根據比較結果確定所述目標地址是否為云內地址。
進一步地,所述統(tǒng)一mac地址為fe:ff:ff:ff:ff:ff。
另一方面,本發(fā)明還提供一種基于軟件定義網絡控制器的網絡arp完全代理系統(tǒng),包括:n個計算節(jié)點、軟件定義網絡控制器以及數據中心物理網絡,所述計算節(jié)點包括虛擬機和虛擬交換機,其中n為大于或等于2的整數;
虛擬機用于對數據中心物理網絡發(fā)起arp尋址;
軟件定義網絡控制器用于下發(fā)流表,通過所述流表回復虛擬機,使得所述虛擬機獲得的數據中心物理網絡的mac地址為統(tǒng)一mac地址;
所述虛擬機還用于發(fā)起ip通訊報文;
所述軟件定義網絡控制器還用于接收所述ip通訊報文,并根據所述ip通訊報文確定數據中心物理網絡的ip地址,獲取所述數據中心物理網絡的ip地址對應的mac地址,并記錄到鄰居表,根據所述鄰居表下發(fā)流表至虛擬交換機,所述流表動作修改目標mac地址為所述數據中心物理網絡的ip地址對應的mac地址,根據所述流表轉發(fā)所述ip通訊報文;
所述數據中心物理網絡用于接收所述ip通訊報文并進行回復;
所述數據中心物理網絡還用于發(fā)起arp廣播尋址首包;
所述軟件定義網絡控制器還用于根據所述arp廣播判斷目標地址是否為云內地址;如果是,則軟件定義網絡控制器配置反向響應流表,修改所述數據中心物理網絡的源mac地址為統(tǒng)一mac地址,通過所述反向響應流表進行回復,回復的地址為虛擬機的mac地址或彈性ip的mac地址。
進一步地,所述軟件定義網絡控制器的數量為n個,分別與各計算節(jié)點中的虛擬交換機通信連接。
本發(fā)明提供的基于軟件定義網絡控制器的網絡arp完全代理方法及系統(tǒng),當虛擬機對物理數據中心發(fā)起尋址時,軟件定義網絡控制器根據鄰居記錄信息,下發(fā)修改目標mac為物理數據中心目標ip對應的mac地址并轉發(fā)流表;當數據中心物理網絡對云虛擬網絡發(fā)起尋址時,軟件定義網絡控制器下發(fā)將數據報文的源mac地址修改成統(tǒng)一mac地址并轉發(fā)流表,arp代理轉發(fā)處理全部由流表完成,資源消耗低,并且無單點瓶頸,支持代理云虛擬網絡對數據中心物理網絡的arp尋址,支持數據中心物理網絡對云虛擬網絡的arp尋址實現arp完全代理,軟件定義網絡控制器的鄰居子系統(tǒng)可以有效抑制arp廣播尋址的頻率,大大減輕物理承載網絡的壓力。
附圖說明
圖1為本發(fā)明提供的基于軟件定義網絡控制器的網絡arp完全代理方法一種實施例的流程圖。
圖2為本發(fā)明提供的基于軟件定義網絡控制器的網絡arp完全代理系統(tǒng)一種實施例的結構示意圖。
圖3為本發(fā)明提供的基于軟件定義網絡控制器的網絡arp完全代理系統(tǒng)另一種實施例的結構示意圖。
具體實施方式
為使本發(fā)明的目的、技術方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發(fā)明進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
實施例一
參考圖1,本實施例提供一種基于軟件定義網絡控制器的網絡arp完全代理方法,包括:
步驟s101,虛擬機對數據中心物理網絡發(fā)起arp尋址;
步驟s102,軟件定義網絡控制器下發(fā)流表,通過所述流表回復虛擬機,使得所述虛擬機獲得的數據中心物理網絡的mac地址為統(tǒng)一mac地址;
步驟s103,虛擬機發(fā)起ip通訊報文;
步驟s104,軟件定義網絡控制器接收所述ip通訊報文,并根據所述ip通訊報文確定數據中心物理網絡的ip地址;
步驟s105,所述軟件定義網絡控制器獲取所述數據中心物理網絡的ip地址對應的mac地址,并記錄到鄰居表;
步驟s106,所述軟件定義網絡控制器根據所述鄰居表下發(fā)流表至虛擬交換機,所述流表動作修改目標mac地址為所述數據中心物理網絡的ip地址對應的mac地址,根據所述流表轉發(fā)所述ip通訊報文;
步驟s107,所述數據中心物理網絡接收所述ip通訊報文并進行回復;
步驟s108,所述數據中心物理網絡發(fā)起arp廣播尋址首包;
步驟s109,所述軟件定義網絡控制器根據所述arp廣播判斷目標地址是否為云內地址;
步驟s110,如果是,則軟件定義網絡控制器配置反向響應流表,修改所述數據中心物理網絡的源mac地址為統(tǒng)一mac地址,通過所述反向響應流表進行回復,回復的地址為虛擬機的mac地址或彈性ip的mac地址。
具體地,步驟s101和步驟s102為軟件定義網絡控制器代理虛擬機arp尋址。
步驟s103和步驟s104中,虛擬機首先發(fā)起ip通訊報文,與虛擬機建立通訊連接的軟件定義網絡控制器接收所述ip通訊報文,對所述ip通訊報文進行解析獲得目標ip地址,確定該目標ip地址為數據中心物理網絡的ip地址。
步驟s105中,軟件定義網絡控制器代理虛擬機尋址,根據所述ip地址訪問所述數據中心物理網絡獲取所述數據中心物理網絡的ip地址對應的mac地址,建立所述數據中心物理網絡的ip地址與mac地址的映射關系,并存儲至所述鄰居表。
作為一種優(yōu)選的實施方式,鄰居表為分布式,用于記錄鄰居表所屬的計算節(jié)點;
所述鄰居表包括記錄ip地址、記錄ip地址對應的mac地址、記錄上次更新時間以及記錄生存時間。
鄰居表格式如表1所示:
表1
進一步地,步驟s106-步驟s107中,軟件定義網絡控制器根據鄰居表信息下發(fā)流表,流表修改目標mac地址為所述數據中心物理網絡的ip地址對應的mac地址,根據所述流表轉發(fā)所述ip通訊報文至數據中心物理網絡,數據中心物理網絡接收該ip通訊報文并進行回復。
至此,完成代理虛擬機發(fā)起尋址的流程。
進一步地,步驟s108-步驟s109中,數據中心物理網絡發(fā)起arp廣播尋址首包,軟件定義網絡控制器接收所述arp廣播尋址首包,并進行分析,判斷目標地址是否為云內地址:軟件定義網絡控制器根據所述arp廣播獲取目標地址,將所述目標地址與預先存儲的云內虛擬機的地址進行比較,根據比較結果確定所述目標地址是否為云內地址,如果所述目標地址與任一預先存儲的云內虛擬機的地址一致,則確定所述目標地址為云內地址,如果該目標地址不是云內地址,則下發(fā)丟棄策略。
步驟s110中,如果確定該目標地址為云內地址,則軟件定義網絡控制器配置反向響應流表,修改所述數據中心物理網絡的源mac地址為統(tǒng)一mac地址,通過所述反向響應流表回復該arp廣播,回復的地址為虛擬機的mac地址或彈性ip的mac地址。
其中,彈性ip為虛擬機的一對一natip地址,彈性ip的mac默認為計算節(jié)點物理網卡的mac地址。
作為一種優(yōu)選的實施方式,統(tǒng)一mac地址為fe:ff:ff:ff:ff:ff。
作為一種優(yōu)選的實施方式,反射響應流表格式如表2所示:
表2
至此,完成代理數據中心物理網絡對虛擬機發(fā)起的arp尋址。
本實施例提供的基于軟件定義網絡控制器的網絡arp完全代理方法,arp代理轉發(fā)處理全部由流表完成,資源消耗低,并且無單點瓶頸,支持代理云虛擬網絡對數據中心物理網絡的arp尋址,支持數據中心物理網絡對云虛擬網絡的arp尋址實現arp完全代理,軟件定義網絡控制器的鄰居子系統(tǒng)可以有效抑制arp廣播尋址的頻率,大大減輕物理承載網絡的壓力。
實施例二
參考圖2,本實施例提供一種基于軟件定義網絡控制器的網絡arp完全代理系統(tǒng),包括:n個計算節(jié)點101、軟件定義網絡控制器102以及數據中心物理網絡103,計算節(jié)點包括虛擬機104和虛擬交換機105,其中n為大于或等于2的整數;
虛擬機104用于對數據中心物理網絡發(fā)起arp尋址;
軟件定義網絡控制器102用于下發(fā)流表,通過所述流表回復虛擬機,使得所述虛擬機獲得的數據中心物理網絡的mac地址為統(tǒng)一mac地址;
虛擬機104用于發(fā)起ip通訊報文;
軟件定義網絡控制器102用于接收所述ip通訊報文,并根據所述ip通訊報文確定數據中心物理網絡的ip地址,獲取所述數據中心物理網絡的ip地址對應的mac地址,并記錄到鄰居表,根據所述鄰居表下發(fā)流表至虛擬交換機105,所述流表動作修改目標mac地址為數據中心物理網絡的ip地址對應的mac地址,根據流表轉發(fā)所述ip通訊報文;
數據中心物理網絡103用于接收所述ip通訊報文并進行回復;
數據中心物理網絡103還用于發(fā)起arp廣播尋址首包;
軟件定義網絡控制器102還用于根據所述arp廣播判斷目標地址是否為云內地址;如果是,則軟件定義網絡控制器配置反向響應流表,修改所述數據中心物理網絡的源mac地址為統(tǒng)一mac地址,通過所述反向響應流表進行回復,回復的地址為虛擬機的mac地址或彈性ip的mac地址。
具體工作原理請參考實施例一,在此不再贅述。
作為一種優(yōu)選的實施方式,參考圖3,所述代理系統(tǒng)為分布式架構,軟件定義網絡控制,102的數量為n個,分別與各計算節(jié)點中的虛擬交換機通信連接。
本實施例提供的基于軟件定義網絡控制器的網絡arp完全代理系統(tǒng),架構簡單,arp代理轉發(fā)處理全部由流表完成,資源消耗低,并且無單點瓶頸,支持代理云虛擬網絡對數據中心物理網絡的arp尋址,支持數據中心物理網絡對云虛擬網絡的arp尋址實現arp完全代理,軟件定義網絡控制器的鄰居子系統(tǒng)可以有效抑制arp廣播尋址的頻率,大大減輕物理承載網絡的壓力。
應當理解的是,對本領域普通技術人員來說,可以根據上述說明加以改進或變換,而所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。