一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法,該方法基于現(xiàn)有軟件定義網(wǎng)絡(luò)域間拓?fù)浒l(fā)現(xiàn)方法,通過(guò)改進(jìn)鏈路層發(fā)現(xiàn)協(xié)議數(shù)據(jù)包,實(shí)現(xiàn)分布式軟件定義網(wǎng)絡(luò)中一個(gè)軟件定義網(wǎng)絡(luò)域發(fā)現(xiàn)與其相鄰的軟件定義網(wǎng)絡(luò)域的拓?fù)溥B接。本發(fā)明采用簡(jiǎn)單的、安全的方法成功地解決了分布式軟件定義網(wǎng)絡(luò)中多個(gè)域之間的域間拓?fù)浒l(fā)現(xiàn)問(wèn)題。
【專(zhuān)利說(shuō)明】一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉軟件定義網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法。
【背景技術(shù)】
[0002]傳統(tǒng)網(wǎng)絡(luò)中,域間拓?fù)浒l(fā)現(xiàn)是根據(jù)諸如BGP之類(lèi)的外部網(wǎng)關(guān)路由協(xié)議實(shí)現(xiàn)的,由于傳統(tǒng)方法依賴于具體的協(xié)議,靈活性和可管理性較差,且拓?fù)浒l(fā)現(xiàn)和路由計(jì)算結(jié)合在一起,可擴(kuò)展性較差。軟件定義網(wǎng)絡(luò)(SDN)中將拓?fù)浒l(fā)現(xiàn)作為獨(dú)立的模塊向路由管理等業(yè)務(wù)提供統(tǒng)一的網(wǎng)絡(luò)視圖(Network View)接口,通過(guò)使用域間鏈路層發(fā)現(xiàn)協(xié)議(LLDP)實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn);拓?fù)浒l(fā)現(xiàn)模塊實(shí)時(shí)維護(hù)全網(wǎng)一致性網(wǎng)絡(luò)視圖,不需要依賴其他業(yè)務(wù),有效地提高了網(wǎng)絡(luò)管理的靈活性和可擴(kuò)展性。但現(xiàn)有的方式?jīng)]有考慮網(wǎng)絡(luò)中出現(xiàn)的Sybil、RIBPoisoning等網(wǎng)絡(luò)攻擊,將會(huì)導(dǎo)致通信過(guò)程中通信實(shí)體身份不明和信息丟失等安全問(wèn)題。
[0003]傳統(tǒng)網(wǎng)絡(luò)的域間拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),其數(shù)據(jù)面更新會(huì)依據(jù)諸如BGP之類(lèi)的外部網(wǎng)關(guān)路由協(xié)議進(jìn)行。BGP規(guī)定,域的邊界節(jié)點(diǎn)使用TCP協(xié)議與相鄰域的邊界節(jié)點(diǎn)建立連接,以構(gòu)建鄰居關(guān)系;鄰居間相互發(fā)送NLRI更新信息,以交換路由表。通過(guò)這些方式,邊界節(jié)點(diǎn)得以及時(shí)獲得最新的域間路由拓?fù)?。但存在拓?fù)浒l(fā)現(xiàn)依賴于具體的協(xié)議,可管理性與靈活性較差,且由于更新過(guò)程依賴于路由算法,收斂過(guò)程較慢,導(dǎo)致其他業(yè)務(wù)無(wú)法及時(shí)得到網(wǎng)絡(luò)最新拓?fù)浣Y(jié)構(gòu),存在安全漏洞。
[0004]SDN網(wǎng)絡(luò)架構(gòu)中,SDN控制器以集中方式控制由多個(gè)交換機(jī)所構(gòu)成的域,本域與其他互連域的域間拓?fù)涞囊恢滦跃S護(hù)通過(guò)LLDP協(xié)議來(lái)實(shí)現(xiàn),LLDP協(xié)議每隔一定的時(shí)間間隔從域內(nèi)交換機(jī)的所有端口發(fā)送LLDP數(shù)據(jù)包。拓?fù)浒l(fā)現(xiàn)與其他業(yè)務(wù)相互獨(dú)立,當(dāng)域間網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),域間拓?fù)浒l(fā)現(xiàn)模塊更新網(wǎng)絡(luò)視圖,其他業(yè)務(wù)通過(guò)域間拓?fù)浒l(fā)現(xiàn)模塊向外提供的接口來(lái)獲取最新的一致性網(wǎng)絡(luò)視圖,提高了網(wǎng)絡(luò)的靈活性和可擴(kuò)展性。
[0005]本發(fā)明涉及使用以下SDN中已有的概念、技術(shù)或工具:
SDN控制器是根據(jù)OpenFlow協(xié)議設(shè)計(jì)的控制軟件,用于管理數(shù)據(jù)流、配置網(wǎng)絡(luò)設(shè)備、制定流表(Flow Table)、承擔(dān)網(wǎng)絡(luò)業(yè)務(wù)與網(wǎng)絡(luò)設(shè)備間的通訊。一個(gè)域可以由一個(gè)控制器集中控制,或是由多個(gè)控制器分布式控制。
[0006]SDN中的交換機(jī)服從OpenFlow協(xié)議,稱OpenFlow交換機(jī)(OFS)。OFS由SDN控制器管控,其流表由SDN控制器制定和修改。
[0007]OpenFlow協(xié)議支持的安全通道實(shí)現(xiàn)OFS和SDN控制器之間的通信。
[0008]網(wǎng)絡(luò)視圖(Network View)是SDN網(wǎng)絡(luò)中實(shí)時(shí)維護(hù)的域內(nèi)和域間的物理鏈路狀態(tài)信息及每個(gè)OFS節(jié)點(diǎn)狀態(tài)信息。
[0009]OpenFlow 協(xié)議參見(jiàn):0penFlow Switch Specification Version 1.0.2 (WireProtocol 0x01), December 31, 2009。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法。
[0011]本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法,包括如下步驟:
步驟1:初始網(wǎng)絡(luò)中,每個(gè)OpenFlow交換機(jī)(OFS)都和一個(gè)軟件定義網(wǎng)絡(luò)(SDN)控制器相連,由同一個(gè)SDN控制器管理的所有OFS組成一個(gè)域,每個(gè)OFS有全網(wǎng)唯一的標(biāo)識(shí)符(DataPathld),每個(gè)域有全網(wǎng)唯一的域編號(hào)(Domain ID),每個(gè)控制器擁有一對(duì)公鑰/私鑰對(duì),私鑰保密,每個(gè)SDN控制器維護(hù)一個(gè)密鑰庫(kù),密鑰庫(kù)中包含本域的公鑰/私鑰對(duì)和其他域的公鑰,公鑰通過(guò)域的唯一域編號(hào)查找密鑰庫(kù)獲得。
[0012]步驟2:SDN控制器在收到OFS發(fā)來(lái)的連接信息后,生成擴(kuò)充的LLDP數(shù)據(jù)包,擴(kuò)充的LLDP數(shù)據(jù)包除包括LLDP要求的基本信息(包括Chassis ID、Port ID、TTL及EndTLV)之外,還包括域編號(hào)(Domain ID)、發(fā)送序號(hào)(TimeStamp)和簽名(Signature),其中Domain ID為每個(gè)域的唯一標(biāo)識(shí),TimeStamp是為了驗(yàn)證收到的LLDP包是否為最新的一個(gè),Signature為用本控制器的私鑰校驗(yàn)LLDP數(shù)據(jù)包的其他所有字段;
步驟3 =SDN控制器將步驟2生成的擴(kuò)充LLDP數(shù)據(jù)包,每隔一定時(shí)間間隔從OFS所有端口發(fā)送出去;
步驟4 =SDN控制器收到本域OFS發(fā)送來(lái)的擴(kuò)充LLDP數(shù)據(jù)包,根據(jù)數(shù)據(jù)包中攜帶的DataPathld,SDN控制器在本域的OFS信息庫(kù)中查找該DataPathld ;若查找到相應(yīng)的DataPathld,說(shuō)明是本域的擴(kuò)充LLDP數(shù)據(jù)包,則忽略;若沒(méi)有查找到相應(yīng)的DataPathld,則說(shuō)明是本域收到其他域的擴(kuò)充LLDP數(shù)據(jù)包,SDN控制器從擴(kuò)充LLDP數(shù)據(jù)包中獲取Signature、TimeStamp 和 Domain ID ;
步驟5:根據(jù)步驟4獲得的Domain ID查找密鑰庫(kù)獲取到發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包域的公鑰;
步驟6:根據(jù)步驟5獲得的公鑰使用RSA加密算法來(lái)驗(yàn)證步驟4獲得的Signature ;步驟7:若步驟6驗(yàn)證Signature不通過(guò),則丟棄該數(shù)據(jù)包;若驗(yàn)證Signature通過(guò),SDN控制器獲得本域內(nèi)發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包的OFS的交換機(jī)端口元組(SwitchPortTuple),在本SDN控制器維護(hù)的交換機(jī)端口元組與TimeStamp映射表中查找該SwitchPortTuple ;步驟8:若步驟7查找到該SwitchPortTuple,則根據(jù)映射表返回的TimeStamp,與步驟4獲得的TimeStamp值進(jìn)行比較,若比較的結(jié)果是TimeStamp小,說(shuō)明之前已收到過(guò)更大的TimeStamp,則丟棄;若步驟7沒(méi)有查找到該SwitchPortTuple,則說(shuō)明這是建立連接后收到的第一個(gè)擴(kuò)充LLDP數(shù)據(jù)包,將該SwitchPortTuple和序號(hào)TimeStamp更新至映射表中,同時(shí)更新域間網(wǎng)絡(luò)視圖(Network View)。
[0013]本發(fā)明的有益效果是:
首先,對(duì)比其他的SDN控制器域間拓?fù)浒l(fā)現(xiàn)方法,本發(fā)明使用與域內(nèi)拓?fù)浒l(fā)現(xiàn)相同的LLDP協(xié)議,增加了域編號(hào)(Domain ID)、發(fā)送序號(hào)(TimeStamp)和簽名(Signature),控制器的域編號(hào)與其公鑰具有對(duì)應(yīng)關(guān)系,數(shù)據(jù)與驗(yàn)證信息均包含在LLDP包內(nèi),域控制器之間的公鑰是通過(guò)域編號(hào)查找密鑰庫(kù)獲得。同時(shí)由于使用控制器本身已有的公鑰/私鑰對(duì)、簽名驗(yàn)證域間拓?fù)浒l(fā)現(xiàn)過(guò)程,本發(fā)明在不增加系統(tǒng)復(fù)雜性的前提下,提高了域間一致性網(wǎng)絡(luò)視圖維護(hù)的安全性。[0014]其次,對(duì)比現(xiàn)有的域間網(wǎng)絡(luò)安全方案,本發(fā)明基于軟件定義網(wǎng)絡(luò)(SDN),拓?fù)浒l(fā)現(xiàn)與路由計(jì)算相互獨(dú)立,獲取到統(tǒng)一的域間拓?fù)浜螅商峁┙o各種不同的路由協(xié)議,而無(wú)須由每個(gè)路由協(xié)議實(shí)例獨(dú)自獲取域間拓?fù)洹⒉⒏髯詫?shí)現(xiàn)安全方案,從而改進(jìn)了控制策略的靈活性,同時(shí)增強(qiáng)了系統(tǒng)的可擴(kuò)展性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0015]圖1是一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法的流程圖;
圖2是軟件定義網(wǎng)絡(luò)域間網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0016]下面結(jié)合附圖詳細(xì)描述本發(fā)明,本發(fā)明的目的和效果將變得更加明顯。
[0017]本發(fā)明基于現(xiàn)有SDN網(wǎng)絡(luò)中的域間拓?fù)浒l(fā)現(xiàn)方法,提出了一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法,包括以下步驟:
步驟1:初始網(wǎng)絡(luò)中,每個(gè)OpenFlow交換機(jī)(OFS)都和一個(gè)軟件定義網(wǎng)絡(luò)(SDN)控制器相連,由同一個(gè)SDN控制器管理的所有OFS組成一個(gè)域,每個(gè)OFS有全網(wǎng)唯一的標(biāo)識(shí)符(DataPathld);每個(gè)域有全網(wǎng)唯一的域編號(hào)(Domain ID);每個(gè)控制器擁有一對(duì)公鑰/私鑰對(duì),私鑰保密;每個(gè)SDN控制器維護(hù)一個(gè)密鑰庫(kù),密鑰庫(kù)中包含本域的公鑰/私鑰對(duì)和其他域的公鑰,其他域的公鑰通過(guò)其域編號(hào)獲得。圖2中0FS1-0FS12為OpenFlow交換機(jī),0FS1-0FS4組成一個(gè)域Dl,由SDN控制器Cl控制,0FS5-0FS8組成一個(gè)域D2,由SDN控制器C2控制,0FS9-0FS12組成一個(gè)域D3,由SDN控制器C3控制。
[0018]步驟2 =SDN控制器在收到OFS發(fā)來(lái)的連接信息后,生成擴(kuò)充的LLDP數(shù)據(jù)包,即除了包括LLDP要求的基本信息(包括Chassis ID, Port ID、TTL及End TLV)之外,增加了域編號(hào)(Domain ID)、發(fā)送序號(hào)(TimeStamp)和簽名(Signature),其中Domain ID為每個(gè)域的唯一標(biāo)識(shí),TimeStamp是為了驗(yàn)證收到的LLDP包是否為最新的一個(gè),Signature為用本控制器的私鑰校驗(yàn)LLDP數(shù)據(jù)包內(nèi)的其他所有字段;
步驟3 =SDN控制器將步驟2生成的擴(kuò)充LLDP數(shù)據(jù)包,每隔一定時(shí)間間隔從OFS所有端口發(fā)送出去;
此處的時(shí)間間隔由網(wǎng)絡(luò)管理員或研究人員自行設(shè)定,如5s、15s等均可。
[0019]步驟4:SDN控制器收到本域OFS發(fā)送來(lái)的擴(kuò)充LLDP數(shù)據(jù)包,根據(jù)數(shù)據(jù)包中攜帶的DataPathld,SDN控制器在本域的OFS信息庫(kù)中查找該DataPathld ;若查找到相應(yīng)的DataPathld,說(shuō)明是本域的擴(kuò)充LLDP數(shù)據(jù)包,則忽略;若沒(méi)有查找到相應(yīng)的DataPathld,則說(shuō)明是本域收到其他域的擴(kuò)充LLDP數(shù)據(jù)包,SDN控制器從擴(kuò)充LLDP數(shù)據(jù)包中獲取Signature、TimeStamp 和 Domain ID ;
步驟5:根據(jù)步驟4獲得的Domain ID查找密鑰庫(kù)獲取到發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包域的公鑰;
步驟6:根據(jù)步驟5獲得的公鑰使用RSA加密算法來(lái)驗(yàn)證步驟4獲得的Signature ;步驟7:若步驟6驗(yàn)證Signature不通過(guò),則丟棄該數(shù)據(jù)包;若驗(yàn)證Signature通過(guò),SDN控制器獲得本域內(nèi)發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包的OFS的交換機(jī)端口元組(SwitchPortTuple),在本SDN控制器維護(hù)的交換機(jī)端口元組與TimeStamp映射表中查找該SwitchPortTuple ; 步驟8:若步驟7查找到該SwitchPortTuple,則根據(jù)映射表返回的TimeStamp,與步驟4獲得的TimeStamp值進(jìn)行比較,若比較的結(jié)果是TimeStamp小,說(shuō)明之前已收到過(guò)更大的TimeStamp,則丟棄;若步驟7沒(méi)有查找到該SwitchPortTuple,則說(shuō)明這是建立連接后收到的第一個(gè)擴(kuò)充LLDP數(shù)據(jù)包,將該SwitchPortTuple和序號(hào)TimeStamp更新至映射表中,同時(shí)更新域間網(wǎng)絡(luò)視圖(Network View)。
[0020]本發(fā)明通過(guò)采用一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法來(lái)實(shí)現(xiàn)分布式軟件定義網(wǎng)絡(luò)(SDN)控制域之間的拓?fù)浒l(fā)現(xiàn),基于現(xiàn)有SDN網(wǎng)絡(luò)域間拓?fù)浒l(fā)現(xiàn)方法,增加簽名驗(yàn)證過(guò)程,該方法實(shí)現(xiàn)簡(jiǎn)單、更加安全,有效地解決了分布式SDN域之間安全的域間拓?fù)浒l(fā)現(xiàn)問(wèn)題。
【權(quán)利要求】
1.一種靈活可擴(kuò)展且安全的域間拓?fù)浒l(fā)現(xiàn)方法,其特征在于,包括如下步驟: 步驟1:初始網(wǎng)絡(luò)中,每個(gè)OpenFlow交換機(jī)都和一個(gè)軟件定義網(wǎng)絡(luò)控制器相連,由同一個(gè)軟件定義網(wǎng)絡(luò)控制器管理的所有OpenFlow交換機(jī)組成一個(gè)域,每個(gè)OpenFlow交換機(jī)有全網(wǎng)唯一的標(biāo)識(shí)符DataPathId,每個(gè)域有全網(wǎng)唯一的域編號(hào)Domain ID,每個(gè)控制器擁有一對(duì)公鑰/私鑰對(duì),私鑰保密,每個(gè)軟件定義網(wǎng)絡(luò)控制器維護(hù)一個(gè)密鑰庫(kù),密鑰庫(kù)中包含本域的公鑰/私鑰對(duì)和其他域的公鑰,公鑰通過(guò)域的唯一域編號(hào)查找密鑰庫(kù)獲得; 步驟2:軟件定義網(wǎng)絡(luò)控制器在收到OpenFlow交換機(jī)發(fā)來(lái)的連接信息后,生成擴(kuò)充的LLDP數(shù)據(jù)包,擴(kuò)充的LLDP數(shù)據(jù)包除包括LLDP要求的基本信息(包括Chassis ID,Port ID、TTL及End TLV)之外,還包括域編號(hào)Domain ID、發(fā)送序號(hào)TimeStamp和簽名Signature,其中Domain ID為每個(gè)域的唯一標(biāo)識(shí),TimeStamp是為了驗(yàn)證收到的LLDP包是否為最新的一個(gè),Signature為用本控制器的私鑰校驗(yàn)LLDP數(shù)據(jù)包的其他所有字段; 步驟3:軟件定義網(wǎng)絡(luò)控制器將步驟2生成的擴(kuò)充LLDP數(shù)據(jù)包,每隔一定時(shí)間間隔從OpenFlow交換機(jī)所有端口發(fā)送出去; 步驟4:軟件定義網(wǎng)絡(luò)控制器收到本域OpenFlow交換機(jī)發(fā)送來(lái)的擴(kuò)充LLDP數(shù)據(jù)包,根據(jù)數(shù)據(jù)包中攜帶的DataPathId,軟件定義網(wǎng)絡(luò)控制器在本域的OpenFlow交換機(jī)信息庫(kù)中查找該DataPathId ;若查找到相應(yīng)的DataPathld,說(shuō)明是本域的擴(kuò)充LLDP數(shù)據(jù)包,則忽略;若沒(méi)有查找到相應(yīng)的DataPathld,則說(shuō)明是本域收到其他域的擴(kuò)充LLDP數(shù)據(jù)包,軟件定義網(wǎng)絡(luò)控制器從擴(kuò)充LLDP數(shù)據(jù)包中獲取Signature、TimeStamp和Domain ID ; 步驟5:根據(jù)步驟4獲得的Domain ID查找密鑰庫(kù)獲取到發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包域的公鑰; 步驟6:根據(jù)步驟5獲得的公鑰使用RSA加密算法來(lái)驗(yàn)證步驟4獲得的Signature ;步驟7:若步驟6驗(yàn)證Signature不通過(guò),則丟棄該數(shù)據(jù)包;若驗(yàn)證Signature通過(guò),軟件定義網(wǎng)絡(luò)控制器獲得本域內(nèi)發(fā)送該擴(kuò)充LLDP數(shù)據(jù)包的OpenFlow交換機(jī)的交換機(jī)端口元組SwitchPortTuple,在本軟件定義網(wǎng)絡(luò)控制器維護(hù)的交換機(jī)端口元組與TimeStamp映射表中查找該 SwitchPortTuple ; 步驟8:若步驟7查找到該SwitchPortTuple,則根據(jù)映射表返回的TimeStamp,與步驟4獲得的TimeStamp值進(jìn)行比較,若比較的結(jié)果是TimeStamp小,說(shuō)明之前已收到過(guò)更大的TimeStamp,則丟棄;若步驟7沒(méi)有查找到該SwitchPortTuple,則說(shuō)明這是建立連接后收到的第一個(gè)擴(kuò)充LLDP數(shù)據(jù)包,將該SwitchPortTuple和序號(hào)TimeStamp更新至映射表中,同時(shí)更新域間網(wǎng)絡(luò)視圖Network View。
【文檔編號(hào)】H04L12/751GK103825825SQ201410023762
【公開(kāi)日】2014年5月28日 申請(qǐng)日期:2014年1月18日 優(yōu)先權(quán)日:2014年1月18日
【發(fā)明者】吳春明, 趙珊珊, 周伯陽(yáng) 申請(qǐng)人:浙江大學(xué)