本發(fā)明涉及數(shù)字信息傳輸技術(shù)領(lǐng)域,特別是一種基于SDN的IP欺騙數(shù)據(jù)包的動(dòng)態(tài)溯源方法。
背景技術(shù):
SDN是一種數(shù)據(jù)控制分離、軟件可編程的新型網(wǎng)絡(luò)體系架構(gòu)。SDN采用了集中式的控制平面和分布式的轉(zhuǎn)發(fā)平面,兩個(gè)平面相互分離,控制平面利用控制-轉(zhuǎn)發(fā)通信接口對(duì)轉(zhuǎn)發(fā)平面上的網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)行為進(jìn)行集中式控制,并提供靈活的可編程能力。SDN的主流控制接口協(xié)議是OpenFlow協(xié)議。
IP地址欺騙是指發(fā)送者偽造自身的IP地址向目標(biāo)系統(tǒng)發(fā)送請(qǐng)求。IP地址欺騙常用于DoS攻擊中。由于使用了偽造的源IP地址,往往難以找到真正的攻擊流量發(fā)送者。IP地址欺騙同樣存在于SDN網(wǎng)絡(luò)中。目前在SDN網(wǎng)絡(luò)中,對(duì)于查找發(fā)送IP欺騙數(shù)據(jù)包源主機(jī)的研究比較少,有的查找發(fā)送源主機(jī)的方法是控制器通過(guò)查詢交換機(jī)中的流表項(xiàng)找到源主機(jī)。但由于SDN網(wǎng)絡(luò)中可能存在多個(gè)控制器,交換機(jī)流表項(xiàng)的狀態(tài)頻繁改變,流表項(xiàng)的匹配精度不確定,找到的IP欺騙數(shù)據(jù)包的發(fā)送源通常是一個(gè)集合,不能準(zhǔn)確的找到發(fā)送IP欺騙數(shù)據(jù)包的源主機(jī)或入口交換機(jī)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于SDN的IP欺騙數(shù)據(jù)包的動(dòng)態(tài)溯源方法,在SDN框架下,找到發(fā)送一類數(shù)據(jù)包的源主機(jī),這一類數(shù)據(jù)包應(yīng)具有足以與其它類數(shù)據(jù)包區(qū)分開的特征,如目的IP地址、使用的協(xié)議類型、目的端口號(hào)等。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于SDN的IP欺騙數(shù)據(jù)包的動(dòng)態(tài)溯源方法,包括以下步驟:
步驟1,控制器收到溯源請(qǐng)求者提出的溯源請(qǐng)求,請(qǐng)求內(nèi)容中包含溯源起點(diǎn)交換機(jī)在SDN中的DPID、要求溯源的IP數(shù)據(jù)包的樣本集,以及相鄰到達(dá)的被溯源數(shù)據(jù)包間的平均間隔時(shí)間;
步驟2,控制器將溯源起點(diǎn)交換機(jī)的DPID加入溯源交換機(jī)隊(duì)列,并構(gòu)建被溯源數(shù)據(jù)包特征集和探測(cè)流表項(xiàng);
步驟3,設(shè)置溯源交換機(jī)隊(duì)列中的隊(duì)尾交換機(jī)為當(dāng)前交換機(jī);
步驟4,控制器向與當(dāng)前交換機(jī)相鄰的且不在溯源交換機(jī)隊(duì)列的交換機(jī)添加探測(cè)流表項(xiàng),重置計(jì)時(shí)器;
步驟5,控制器監(jiān)聽新添加的探測(cè)流表項(xiàng)的觸發(fā)情況,所述觸發(fā)情況即在添加了探測(cè)流表項(xiàng)的交換機(jī)上被溯源的數(shù)據(jù)包觸發(fā)的Packet-in消息;
步驟6,若監(jiān)聽到相應(yīng)的Packet-in消息,控制器查看發(fā)送該消息的交換機(jī)的流表,若流表中有轉(zhuǎn)發(fā)被溯源數(shù)據(jù)包至當(dāng)前交換機(jī)的流表項(xiàng),控制器記錄該P(yáng)acket-in消息中的in_port值,并將發(fā)送該消息的交換機(jī)的DPID插入到溯源交換機(jī)隊(duì)列尾部,即為前一跳交換機(jī),刪除下發(fā)的探測(cè)流表項(xiàng),然后返回步驟3;若沒(méi)監(jiān)聽到相應(yīng)的Packet-in消息,繼續(xù)等待直至計(jì)時(shí)器超時(shí),然后進(jìn)入步驟7;
步驟7,若計(jì)時(shí)器超時(shí),最后加入溯源交換機(jī)隊(duì)列的交換機(jī)就是被溯源數(shù)據(jù)包的入口交換機(jī),該入口交換機(jī)記錄的端口即最后記錄的in_port值連接的主機(jī)就是發(fā)送被溯源數(shù)據(jù)包的源主機(jī),溯源交換機(jī)隊(duì)列中記錄的交換機(jī)從隊(duì)尾到隊(duì)頭,就是被溯源數(shù)據(jù)包依次經(jīng)過(guò)的交換機(jī)。
進(jìn)一步地,步驟1中所述的起點(diǎn)交換機(jī)為提出溯源請(qǐng)求的SDN主機(jī)所直接連接的被溯源數(shù)據(jù)包的來(lái)源交換機(jī),或者是提出溯源請(qǐng)求的SDN交換機(jī)。
進(jìn)一步地,步驟2所述構(gòu)建被溯源數(shù)據(jù)包特征集,即根據(jù)溯源數(shù)據(jù)包的樣本集構(gòu)造特征集,構(gòu)造方法是:在Openflow1.0中,稱流表項(xiàng)匹配域的12元組為匹配項(xiàng),若樣本集中與匹配項(xiàng)對(duì)應(yīng)的值是唯一的,該值作為特征集中的元素。
進(jìn)一步地,步驟2所述探測(cè)流表項(xiàng)的匹配域是特征集,具有最高優(yōu)先級(jí),動(dòng)作是發(fā)送Packet-in消息給控制器。
進(jìn)一步地,步驟6所述相應(yīng)的Packet-in消息,是指通過(guò)溯源數(shù)據(jù)包的特征集判斷該P(yáng)acket-in消息由被溯源數(shù)據(jù)包觸發(fā)。
進(jìn)一步地,步驟6所述計(jì)時(shí)器超時(shí),是指若計(jì)時(shí)器記錄的時(shí)間超過(guò)溯源數(shù)據(jù)包間平均間隔時(shí)間的2倍,即為超時(shí)。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)為:(1)不會(huì)影響正常數(shù)據(jù)流的轉(zhuǎn)發(fā);(2)SDN交換機(jī)中流表項(xiàng)的匹配精度高,僅通過(guò)流表項(xiàng)即能夠準(zhǔn)確推測(cè)出發(fā)送數(shù)據(jù)包的源主機(jī);(3)根據(jù)被溯源數(shù)據(jù)包的實(shí)際轉(zhuǎn)發(fā)情況動(dòng)態(tài)查找被溯源數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,準(zhǔn)確率高。
附圖說(shuō)明
圖1為本發(fā)明基于SDN的IP欺騙數(shù)據(jù)包的動(dòng)態(tài)溯源方法的流程圖。
圖2為本發(fā)明中第一例網(wǎng)絡(luò)拓?fù)涫疽鈭D。
圖3為本發(fā)明中第二例網(wǎng)絡(luò)拓?fù)涫疽鈭D。
圖4為本發(fā)明中第三例網(wǎng)絡(luò)拓?fù)涫疽鈭D。
圖5為本發(fā)明實(shí)施例中應(yīng)用場(chǎng)景的實(shí)施方法示例圖。
具體實(shí)施方式
IP地址欺騙是指采用偽造的源IP地址向目標(biāo)系統(tǒng)發(fā)送IP數(shù)據(jù)包的行為。由于發(fā)送者使用了偽造的IP源地址,數(shù)據(jù)包接收者及中間交換機(jī)往往無(wú)法直接查明真正的數(shù)據(jù)包來(lái)源。本發(fā)明在軟件定義網(wǎng)絡(luò)(SDN)框架下提出了一種通過(guò)控制器向網(wǎng)絡(luò)中相關(guān)的SDN交換機(jī)中添加探測(cè)流表項(xiàng)的方法,用以找到發(fā)送IP欺騙數(shù)據(jù)包的主機(jī)。本發(fā)明所述IP數(shù)據(jù)包溯源模塊位于控制器中,控制器中有全局網(wǎng)絡(luò)拓?fù)湟晥D。本發(fā)明的溯源流程圖如圖1所示,具體過(guò)程如下:
(1)控制器收到請(qǐng)求者提出的溯源請(qǐng)求,請(qǐng)求中包含溯源起點(diǎn)交換機(jī)的DPID、IP數(shù)據(jù)包樣本集和被溯源數(shù)據(jù)包到達(dá)目的IP的平均間隔時(shí)間。
(2)控制器將溯源起點(diǎn)交換機(jī)的DPID加入溯源交換機(jī)隊(duì)列中,并構(gòu)建特征集,以此構(gòu)造探測(cè)流表項(xiàng)。
(3)當(dāng)前溯源路徑隊(duì)列中隊(duì)尾交換機(jī)為當(dāng)前交換機(jī)。若不存在與當(dāng)前交換機(jī)相鄰的交換機(jī)(已在溯源交換機(jī)隊(duì)列中的除外),進(jìn)入(9)。
(4)控制器向與當(dāng)前交換機(jī)相鄰的交換機(jī)(已在溯源交換機(jī)隊(duì)列中的除外)添加探測(cè)流表項(xiàng)。
(5)控制器重置探測(cè)計(jì)時(shí)器。
(6)控制器監(jiān)聽探測(cè)流表項(xiàng)觸發(fā)的Packet-in消息。若監(jiān)聽到該消息,控制器查詢發(fā)送該P(yáng)acket-in消息的交換機(jī)的流表,若流表中有轉(zhuǎn)發(fā)被溯源數(shù)據(jù)包到當(dāng)前交換機(jī)的流表項(xiàng),則進(jìn)入(8)。
(7)若計(jì)時(shí)器超時(shí),進(jìn)入(9)。否則進(jìn)入(6)。
(8)控制器清除下發(fā)的探測(cè)流表項(xiàng),記錄該P(yáng)acket_in消息中的in_port值,將發(fā)送該P(yáng)acket-in消息的交換機(jī)的DPID加入隊(duì)列尾部,進(jìn)入(3)。
(9)最后加入溯源交換機(jī)隊(duì)列的交換機(jī)為入口交換機(jī),若入口交換機(jī)和溯源起點(diǎn)交換機(jī)不是同一個(gè)交換機(jī),進(jìn)入(11)。
(10)向入口交換機(jī)下發(fā)探測(cè)流表項(xiàng),監(jiān)聽被溯源的數(shù)據(jù)包觸發(fā)的Packet-in消息,記錄該P(yáng)acket-in消息中in_port值。
(11)入口交換機(jī)的記錄端口(最后記錄的in_port值)連接的主機(jī)是發(fā)送該IP欺騙數(shù)據(jù)包的源主機(jī)。溯源交換機(jī)隊(duì)列中記錄的交換機(jī)從隊(duì)尾到隊(duì)頭就是被溯源數(shù)據(jù)包依次經(jīng)過(guò)的交換機(jī)。
下面是對(duì)以上過(guò)程的說(shuō)明:
第(2)步中,控制器通過(guò)樣本集獲得被溯源數(shù)據(jù)包的特征集,過(guò)程是:以O(shè)penFlow1.0為例,將流表項(xiàng)匹配域的12元組稱為匹配項(xiàng),若樣本集中與某個(gè)匹配項(xiàng)相關(guān)的值是唯一的,則該值作為特征集中的元素。
第(4)步中,探測(cè)流表項(xiàng)的匹配域是溯源數(shù)據(jù)包的特征集,具有最高優(yōu)先級(jí),動(dòng)作是發(fā)送Packet-in消息給控制器。
第(6)步中,通過(guò)溯源數(shù)據(jù)包的特征集判斷一條Packet-in消息是否是由被溯源數(shù)據(jù)包觸發(fā)。
第(6)步中,之所以要查看發(fā)送該P(yáng)acket-in消息的交換機(jī)的流表,是為了保證溯源交換機(jī)隊(duì)列中記錄的交換機(jī)是被溯源數(shù)據(jù)包依次經(jīng)過(guò)的交換機(jī)??紤]到如圖2所示情況(圖中粗線表示被溯源數(shù)據(jù)包實(shí)際轉(zhuǎn)發(fā)路徑),假設(shè)被溯源數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑是S3->S2->S1,若此時(shí)已溯源到S1,此時(shí)應(yīng)向S2、S3中添加探測(cè)流表項(xiàng),被溯源數(shù)據(jù)包應(yīng)在S3觸發(fā)Packet-in消息,但S3并不是S1的上一跳,所以第(6)步中通過(guò)查看發(fā)送Packet-in消息的交換機(jī)中的流表,確定發(fā)送對(duì)應(yīng)Packet-in消息的交換機(jī)是不是當(dāng)前交換機(jī)的上一跳。
第(7)步中,計(jì)時(shí)器超時(shí)是指計(jì)時(shí)器記錄的時(shí)間超過(guò)溯源數(shù)據(jù)包間平均間隔時(shí)間的2倍。
第(10)步中,向入口交換機(jī)下發(fā)探測(cè)流表項(xiàng),是考慮到源主機(jī)與目的主機(jī)之間只有一個(gè)交換機(jī)的情形。如圖3所示,H1向H2發(fā)送數(shù)據(jù)包,只經(jīng)過(guò)S。S是溯源起點(diǎn)交換機(jī),會(huì)被直接加入到溯源交換機(jī)隊(duì)列,由于沒(méi)有溯源到其他交換機(jī),程序會(huì)到此結(jié)束,但沒(méi)有獲得入口交換機(jī)通過(guò)哪個(gè)端口與源主機(jī)相連的信息,為了獲得該信息,給入口交換機(jī)添加探測(cè)流表項(xiàng),使其觸發(fā)Packet_in消息,從而得到該信息。
使用添加探測(cè)流表項(xiàng)的方法可以解決由于流表項(xiàng)的匹配精度低,無(wú)法僅通過(guò)查看交換機(jī)中流表項(xiàng)的方法確定發(fā)送源的問(wèn)題。如圖4所示(圖中粗線表示被溯源數(shù)據(jù)包實(shí)際轉(zhuǎn)發(fā)路徑),被溯源數(shù)據(jù)包實(shí)際轉(zhuǎn)發(fā)路徑為H2->S2->S4->H4,此時(shí)溯源至S4,若交換機(jī)中流表項(xiàng)的匹配域僅為目的IP地址,若H1、H3都曾向H4發(fā)送過(guò)數(shù)據(jù),S1、S3中應(yīng)都有可以轉(zhuǎn)發(fā)被溯源數(shù)據(jù)包的流表項(xiàng),此時(shí)若僅通過(guò)查看流表項(xiàng)的方法無(wú)法判斷出S4的上一跳是S1、S2還是S3。而通過(guò)添加探測(cè)流表項(xiàng)的方法,可以知道只有S2會(huì)發(fā)送由被溯源數(shù)據(jù)包觸發(fā)的Packet-in消息,從而得知S4的上一跳是S2。
為使本發(fā)明的技術(shù)方案更加清楚明了,下面結(jié)合具體實(shí)施例并參照附圖,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
實(shí)施例1
圖5給出了本發(fā)明的一個(gè)應(yīng)用場(chǎng)景的實(shí)施方法示例圖。
圖5中,主機(jī)Attacker使用偽造的IP地址給主機(jī)Victim發(fā)送消息,數(shù)據(jù)包的發(fā)送路徑為Attacker->S4->S3->S2->S1->Victim。假設(shè)主機(jī)Attacker向主機(jī)Victim發(fā)送了不止一個(gè)此類數(shù)據(jù)包。此時(shí)溯源請(qǐng)求者想要追蹤這類數(shù)據(jù)包的發(fā)送源,溯源請(qǐng)求者給出了溯源起點(diǎn)交換機(jī)為S1、數(shù)據(jù)包樣本集和平均間隔時(shí)間,控制器通過(guò)數(shù)據(jù)包樣本集得到特征集,假設(shè)為:目的IP地址(Victim的IP地址)、IP協(xié)議號(hào)、傳輸層目的端口號(hào)。且這3個(gè)特征項(xiàng)足以將這類數(shù)據(jù)包與其它數(shù)據(jù)包區(qū)分開,控制器將這3個(gè)特征項(xiàng)作為探測(cè)流表項(xiàng)的匹配域。
圖中假設(shè)S4、S5、S6中都有可以轉(zhuǎn)發(fā)該類數(shù)據(jù)包的流表項(xiàng)(轉(zhuǎn)發(fā)路徑用粗線表示)。原因是交換機(jī)中的流表項(xiàng)匹配精度不夠高(假設(shè)對(duì)應(yīng)的流表項(xiàng)的匹配域僅為目的IP地址,若Attacker、H2、H4都曾向Victim發(fā)送過(guò)數(shù)據(jù),則S4、S5、S6中都有可以轉(zhuǎn)發(fā)被溯源數(shù)據(jù)包的流表項(xiàng))。此時(shí),若是僅僅查看流表,則會(huì)發(fā)現(xiàn)S4、S5、S6都有可能轉(zhuǎn)發(fā)過(guò)該數(shù)據(jù)包,本發(fā)明采用了圖1所述算法,解決了該問(wèn)題。
從S1開始,使用圖1所述算法,可知道S2、S3在轉(zhuǎn)發(fā)路徑上。接著控制器向S4、S5、S6下發(fā)探測(cè)流表項(xiàng),當(dāng)該類數(shù)據(jù)包到達(dá)S4時(shí)會(huì)與此探測(cè)流表項(xiàng)匹配,發(fā)送一條Packet-in消息給控制器,控制器查看S4中流表,知道有流表項(xiàng)可以發(fā)送被溯源數(shù)據(jù)包到S3,則S4為S3的上一跳。由于探測(cè)流表項(xiàng)的匹配域匹配精度較高,即使S5、S6發(fā)送了到Victim的消息,也不會(huì)由于探測(cè)流表項(xiàng)觸發(fā)Packet-in消息,添加探測(cè)流表項(xiàng)解決了由于流表項(xiàng)的匹配精度不高,無(wú)法準(zhǔn)確知道發(fā)送源的問(wèn)題且不會(huì)影響其它的正常數(shù)據(jù)流的轉(zhuǎn)發(fā)。
接下來(lái)控制器記錄該P(yáng)acket-in消息中in_port的值,并刪除原來(lái)下發(fā)的探測(cè)流表項(xiàng),向S7添加一條探測(cè)流表項(xiàng),控制器不會(huì)收到由被溯源的數(shù)據(jù)包觸發(fā)的Packet-in消息,計(jì)時(shí)器會(huì)超時(shí),控制器得知入口交換機(jī)是S4,S4的記錄端口(最后記錄的in_port值)連接的主機(jī)Attacker是發(fā)送IP欺騙數(shù)據(jù)包的源主機(jī),且溯源交換機(jī)隊(duì)列中記錄的交換機(jī)從隊(duì)尾到隊(duì)頭是被溯源數(shù)據(jù)包依次經(jīng)過(guò)的交換機(jī)。
本實(shí)施例在SDN框架下提供了一種通過(guò)添加探測(cè)流表項(xiàng)找到發(fā)送IP欺騙數(shù)據(jù)包的源主機(jī)的方法,解決了由于流表項(xiàng)的匹配精度不高,無(wú)法準(zhǔn)確知道發(fā)送源的問(wèn)題,且溯源過(guò)程中不會(huì)影響其它的正常數(shù)據(jù)流的轉(zhuǎn)發(fā)。
上述實(shí)施方式對(duì)本發(fā)明的內(nèi)容作了詳細(xì)的示范介紹,但相應(yīng)的應(yīng)用示例不作為對(duì)本發(fā)明的限制。本發(fā)明的保護(hù)范圍由所附的權(quán)利要求來(lái)限定。