專利名稱:一種基于sdn控制器的dhcp廣播處理方法
技術領域:
本發(fā)明涉及網絡通信技術領域,具體是一種基于SDN控制器的DHCP廣播處理方法。
背景技術:
軟件定義網絡(Software-DefinedNetworking, SDN)是最近幾年最熱門的未來網絡技術,也是企業(yè)網、校園網、數據中心網絡的熱門候選網絡形式。其核心思想是數據平面與控制平面的分離,采用遠程的控制器集中對網絡進行統(tǒng)一管控。動態(tài)主機設置協(xié)定(DynamicHostConfigurationProtocol,DHCP)是一種使網絡管理員能夠集中管理和自動分配IP網絡地址的通信協(xié)議。在IP網絡中,每個連接Internet的設備都需要分配唯一的IP地址。DHCP使網絡管理員能從中心結點監(jiān)控和分配IP地址。當某臺計算機移到網絡中的其它位置時,能自動收到新的IP地址。在傳統(tǒng)以太網中,客戶 接入網絡通過發(fā)送廣播包來尋找可用DHCP服務器,傳統(tǒng)SDN網絡對廣播包處理采用與傳統(tǒng)以太網一致的泛洪方式。如下圖1所示,主機A接入網絡,向外發(fā)送DHCP消息,交換機SI以packet-1n消息提交給控制器,控制器解析該事件進行處理,以packet-out消息方式通知交換機SI將該DHCP消息泛洪,該消息被轉發(fā)到交換機S2,交換機S2又將消息以packet-1n事件提交給控制器,控制器繼續(xù)如上述所述處理方式,如此下去,直到該消息被轉發(fā)到每個交換機上并產生S個packet-1n事件(S是網絡中交換機的個數)。隨著網絡規(guī)模的擴大和廣播包數據的增加,不僅浪費大量的帶寬資源,也使得控制器的負載過重。泛洪方式在OpenFlow網絡中存在以下幾個弊端:1)控制器負載過重,任一個廣播數據包將泛洪到網絡中所有交換機中,并在每個交換機上觸發(fā)一個packet-1n事件,隨著網絡規(guī)模的擴大,和廣播包數量的增加,將對控制器產生巨大的控制負擔;2)數據平面帶寬浪費,任一個廣播數據包在整網進行泛洪,不僅增加了交換機處理負擔,更重要的是浪費了大量寶貴的帶寬資源;3)鏈路不能出現環(huán)路,以太網對環(huán)路十分敏感,極易引起廣播風暴,現有的解決方案大多采用生成樹協(xié)議將網絡邏輯上變成一個樹狀拓撲從而避免出現環(huán)路,然而生成樹協(xié)議造成了網絡帶寬的浪費,限制了網絡吞吐量,降低了網絡魯棒性,一旦網絡鏈路出現故障將無備份,更重要的是交換機出現故障時,生成樹重算的過程通常持續(xù)30-50秒,這之間可能會影響正常網絡通信,甚至出現網絡癱瘓;4)增加主機端負載,主機網卡接收網絡中所有的廣播包,交由CPU判斷是否為發(fā)給本機的數據包,進而做出丟棄或應答處理,浪費本機的計算存儲資源。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種大大降低控制器負載及網絡流量的基于SDN控制器的DHCP廣播處理方法。為此,本發(fā)明所述的基于SDN控制器的DHCP廣播處理方法,其包括以下步驟:
I)當主機A采用自動獲取IP地址模式接入SDN網絡時,向外發(fā)出DHCPDISCOVERY
廣播包;2)交換機接收到該廣播包后首先匹配流表,由于沒有匹配的流表項,則會以packet-1n事件的形式將此廣播包交給控制器;3)控制器收到該消息,解析得出主機位置信息并記錄到臨時表,從DHCP服務器列表中選擇一個DHCP服務器;4)利用DHCP服務器的位置信息將接收到的DHCPDISCOVERY廣播包封裝成packet-out消息轉發(fā)給交換機S3 ;5)交換機S3接收到該消息后,解析得出DHCPDISCOVERY廣播包,從連接DHCP服務器X的端口轉發(fā)出去;6) DHCP服務器X接收到DHCPDISCOVERY廣播包后響應一個DHCPOFFER廣播包,7)交換機S3接收到之后以packet-1n消息的方式提交給控制器;8)控制器解析該packet-1n消息,提取DHCPOFFER廣播包的chaddr字段,即源主機的MAC地址,并從臨時表中以hash方式查找源主機位置信息(H(packet.chaddr) — Location);
9)控制器根據提供的主機位置信息封裝成packet-out消息并轉發(fā)至交換機SI ;10)交換機SI接收到該消息后,解析出DHCPOFFER廣播包,并從連接源主機的端口發(fā)出去;11)主機A收到DHCPOFFER后,再發(fā)送一個DHCPREQUEST廣播包;12)交換機SI接收到之后以packet-1n消息方式發(fā)給控制器;13)控制器解析得出DHCPREQUEST廣播包,并從中提取提供服務的DHCP服務器IP地址,并更新臨時表中的主機位置;14)控制器根據DHCPREQUEST廣播包提取的DHCP服務器IP地址,查找得出DHCP服務器的位置消息,并以此封裝成packet-out消息轉發(fā)至交換機S3 ;15)交換機S3解析該消息,得到DHCPREQUEST廣播包,并轉發(fā)給DHCP服務器X ;16)DHCP服務器收到DHCPREQUEST后響應DHCPACK廣播包或者DHCPNACK廣播包;17)交換機S3再以packet-1n消息的方式提交給控制器;18)若控制器解析得出DHCPACK廣播包時,從DHCPACK中提取源主機的IP地址、MAC地址信息,從臨時表中提取主機的位置信息,將請求主機信息注冊至主機基本信息表中,同時刪除臨時表中源主機信息條目;若為DHCPNACK廣播包,刪除臨時表中源主機信息條目;19)將該消息封裝成packet-out消息轉發(fā)至交換機SI ;20)交換機SI解析packet-out消息后,將廣播包轉發(fā)給源主機。上述步驟3)在臨時存儲主機信息時采用Hash表或者數據庫記錄。上述步驟3)在選擇提供服務的DHCP服務器過程中,采用以平均概率隨機選擇,或者輪詢方式選擇,或者依據DHCP服務器的負載能力選擇。上述步驟4)中的交換機S3由packet-out消息中的dpid指定。上述步驟5)中的DHCP服務器X的端口由packet-out消息的port指定。上述步驟18)在存儲主機基本信息表時采用key=IP地址,value= [MAC地址,dpid,port]的一個hash表存儲,或者其他變換key和value的一到多個Hash表存儲,或者數據庫方式存儲。本發(fā)明的有益效果:1、以控制器作為中繼將DHCP廣播包在源主機和DHCP服務器之間進行轉發(fā),完全消除以太網中的DHCP廣播,降低廣播風暴產生的可能性,同時降低了網絡流量。2、降低了控制器負載,傳統(tǒng)SDN控制器對一個廣播包需要處理S個packet-1n事件(S是交換機的數目,廣播包在每一個交換機上都會觸發(fā)一個packet-1n事件),而本發(fā)明只需處理一個packet-1n事件,相比于傳統(tǒng)處理方式下packet-1n事件復雜度,本發(fā)明要處理的事件需要額外進行查表以及封裝packet-out消息,其復雜度均可以忽略。3、在處理DHCP廣播包的同時,本發(fā)明還對主機的基本信息進行記錄和更新,對處理ARP請求以及網絡拓撲感知有一定的輔助作用。
圖1是傳 統(tǒng)SND對DHCP廣播包處理過程的示意圖,圖2是本發(fā)明處理過程的示意圖,圖3是本發(fā)明的流程圖。
具體實施例方式本發(fā)明可應用于校園網,企業(yè)網,數據中心網絡,以及城域網中,是基于SDN解決DHCP廣播包泛洪問題,主要通過在控制器端緩存DHCP服務器位置,采用packet-out消息的方式在源主機和DHCP服務器間轉發(fā)DHCP廣播包,具體實時步驟如下所示(詳見圖2和3):[I]主機A以自動獲取IP地址模式接入網絡,向外發(fā)出DHCPDISCOVERY廣播包;[2]交換機SI接收到DHCPDISCOVERY廣播包,由于沒有匹配的流表項,故產生以packet-1n消息提交給控制器;[3]控制器收到該消息,解析得出主機位置信息并記錄到臨時表(如key=源主機MAC地址,value=主機位置0,從DHCP服務器列表(存儲結構為key=DHCP服務器IP地址,value= [MAC地址,DHCP服務器位置])中選擇一個DHCP服務器(如可采用輪詢方式);[4]利用DHCP服務器的位置信息將接收到的DHCPDISC0VERY廣播包封裝成packet-out消息轉發(fā)給交換機S3 (由packet-out消息中的dpid指定);[5]交換機S3接收到該消息后,解析得出DHCPDISCOVERY廣播包,從連接DHCP服務器X的端口轉發(fā)出去(由packet-out消息的port指定);[6]DHCP服務器X接收到DHCPDISCOVERY廣播包后響應一個DHCPOFFER廣播包,[7]交換機S3接收到之后以packet-1n消息的方式提交給控制器(原因同[2],后續(xù)不在贅述)。[8]控制器解析該packet-1n消息,提取DHCPOFFER廣播包的chaddr字段(即源主機的MAC地址),并從臨時表中以hash方式查找源主機位置信息(H(packet.chaddr) — Location);[9]控制器根據提供的主機位置信息封裝成packet-out消息并轉發(fā)至交換機SI ;
[10]交換機SI接收到該消息后,解析出DHCPOFFER廣播包,并從連接源主機的端口發(fā)出去;[11]主機A收到DHCPOFFER后,再發(fā)送一個DHCPREQUEST廣播包;[12] SI接收到之后以packet-1n消息方式發(fā)給控制器;[13]控制器解析得出DHCPREQUEST廣播包,并從中提取提供服務的DHCP服務器IP地址,并更新臨時表中的主機位置(實際情況下,有時源主機可能先發(fā)DHCPREQUEST廣播包,詢問上次分配的IP地址是否可以繼續(xù)使用);[14]控制器根據DHCPREQUEST廣播包提取的DHCP服務器IP地址,查找得出DHCP服務器的位置消息,并以此封裝成packet-out消息轉發(fā)至交換機S3 ;[15]交換機S3解析該消息,得到DHCPREQUEST廣播包,并轉發(fā)給DHCP服務器X ;[16] DHCP服務器收到DHCPREQUEST后響應DHCPACK廣播包或者DHCPNACK廣播包;[17]交換機S3以packet-1n消息的方式提交給控制器;[18]若控制器解析得出DHCPACK廣播包時,從DHCPACK中提取源主機的IP地址、MAC地址信息,從臨時表中提取主機的位置信息,將請求主機信息注冊至主機基本信息表中(如圖2所示),同時刪除臨時表中源主機信息條目;若為DHCPNACK廣播包,刪除臨時表中源主機信息條目;[19]將該消息封裝成packet-out消息轉發(fā)至交換機SI。[20]交換機SI解析packet-out消息后,將廣播包轉發(fā)給源主機。備注:當主機的IP地址被認為設置或更改時,主機發(fā)出DHCPRELEASE數據包,并提交給控制器,控制器解析得到該消息后,應當刪除對應的主機條目。此外,圖1、2中的注解:1、IPA, IPx, IPy分別代表主機A,DHCP服務器X,以及DHCP服務器Y的IP地址信息;2、DPID1, DPID2, DPID3分別代表交換機SI,交換機S2,以及交換機S3的數據路徑ID /[目息;3,MACa, MACx, MACy分別代表主機A,DHCP服務器X以及DHCP服務器Y的MAC地址信息。4、PORTa, PORTx, PORTy分別代表主機A,DHCP服務器X以及DHCP服務器Y與交換機相連的端口(交換機端)。本發(fā)明具體應用途徑很多,以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進,這些改進也應視為本發(fā)明的 保護范圍。
權利要求
1.一種基于SDN控制器的DHCP廣播處理方法,其特征在于包括以下步驟: 1)當主機A采用自動獲取IP地址模式接入SDN網絡時,向外發(fā)出DHCroiSCOVERY廣播包; 2)交換機接收到該廣播包后首先匹配流表,由于沒有匹配的流表項,則會以packet-1n事件的形式將此廣播包交給控制器; 3)控制器收到該消息,解析得出主機位置信息并記錄到臨時表,從DHCP服務器列表中選擇一個DHCP服務器; 4)利用DHCP服務器的位置信息將接收到的DHCPDISCOVERY廣播包封裝成packet-out消息轉發(fā)給交換機S3 ; 5)交換機S3接收到該消息后,解析得出DHCPDISCOVERY廣播包,從連接DHCP服務器X的端口轉發(fā)出去; 6)DHCP服務器X接收到DHCPDISCOVERY廣播包后響應一個DHCPOFFER廣播包, 7)交換機S3接收到之后以packet-1n消息的方式提交給控制器; 8)控制器解析該packet-1n消息,提取DHCPOFFER廣播包的chaddr字段,即源主機的MAC地址,并從臨時表中以hash方式查找源主機位置信息(H(packet.chaddr) — Location); 9)控制器根據提供的主機位置信息封裝成packet-out消息并轉發(fā)至交換機SI; 10)交換機SI接收到該消息后,解析出DHCPOFFER廣播包,并從連接源主機的端口發(fā)出`去; 11)主機A收到DHCPOFFER后,再發(fā)送一個DHCPREQUEST廣播包; 12)交換機SI接收到之后以packet-1n消息方式發(fā)給控制器; 13)控制器解析得出DHCPREQUEST廣播包,并從中提取提供服務的DHCP服務器IP地址,并更新臨時表中的主機位置; 14)控制器根據DHCPREQUEST廣播包提取的DHCP服務器IP地址,查找得出DHCP服務器的位置消息,并以此封裝成packet-out消息轉發(fā)至交換機S3 ; 15)交換機S3解析該消息,得到DHCPREQUEST廣播包,并轉發(fā)給DHCP服務器X; 16)DHCP服務器收到DHCPREQUEST后響應DHCPACK廣播包或者DHCPNACK廣播包; 17)交換機S3再以packet-1n消息的方式提交給控制器; 18)若控制器解析得出DHCPACK廣播包時,從DHCPACK中提取源主機的IP地址、MAC地址信息,從臨時表中提取主機的位置信息,將請求主機信息注冊至主機基本信息表中,同時刪除臨時表中源主機信息條目;若為DHCPNACK廣播包,刪除臨時表中源主機信息條目; 19)將該消息封裝成packet-out消息轉發(fā)至交換機SI; 20)交換機SI解析packet-out消息后,將廣播包轉發(fā)給源主機。
2.根據權利要求1所述的基于SDN控制器的DHCP廣播處理方法,其特征在于步驟3)在臨時存儲主機信息時采用Hash表或者數據庫記錄。
3.根據權利要求1所述的基于SDN控制器的DHCP廣播處理方法,其特征在于步驟3)在選擇提供服務的DHCP服務器過程中,采用以平均概率隨機選擇,或者輪詢方式選擇,或者依據DHCP服務器的負載能力選擇。
4.根據權利要求1所述的基于SDN控制器的DHCP廣播處理方法,其特征在于步驟4)中的交換機S3由packet-out消息中的dp id指定。
5.根據權利要求1所述的基于SDN控制器的DHCP廣播處理方法,其特征在于步驟5)中的DHCP服務器X的端口由packet-out消息的port指定。
6.根據權利要求1所述的基于SDN控制器的DHCP廣播處理方法,其特征在于步驟18)在存儲主機基本信息表時采用key=IP地址,value= [MAC地址,dpid, port]的一個hash表存儲,或者其他變換key和v·alue的一到多個Hash表存儲,或者數據庫方式存儲。
全文摘要
本發(fā)明公開了一種基于SDN控制器的DHCP廣播處理方法,該方法基于SDN解決DHCP廣播包泛洪問題,主要是通過在控制器端緩存DHCP服務器位置,采用packet-out消息的方式在源主機和DHCP服務器間轉發(fā)DHCP廣播包,同時在主機成功獲取器IP地址等配置信息時,記錄該主機基本信息,包括IP地址,MAC地址以及位置信息。本發(fā)明大大降低了控制器負載及網絡流量。
文檔編號H04L12/951GK103248724SQ201310139168
公開日2013年8月14日 申請日期2013年4月19日 優(yōu)先權日2013年4月19日
發(fā)明者黃韜, 劉江, 丁健, 俞淑妍, 魏亮, 劉韻潔 申請人:中國(南京)未來網絡產業(yè)創(chuàng)新中心, 北京郵電大學