封裝并添加鏡像標(biāo)簽得到封裝報(bào)文,并將封裝報(bào)文從出端口轉(zhuǎn)發(fā)。其中,封裝報(bào) 文的源MAC地址是源SDN交換設(shè)備的MAC地址,封裝報(bào)文的目的MAC地址是目的SDN交換 設(shè)備的MAC地址。SDN控制器將為源SDN交換設(shè)備創(chuàng)建的表ID為1的鏡像流表下發(fā)給源 SDN交換設(shè)備后,存儲在源SDN交換設(shè)備的多級流表中的第一級流表中,使得源SDN交換設(shè) 備接收到原始數(shù)據(jù)報(bào)文后,在多級流表的第一級流表中查找與原始數(shù)據(jù)報(bào)文的源主機(jī)信息 或目的主機(jī)信息匹配的鏡像流表,如果存在匹配的鏡像流表,則確定該原始數(shù)據(jù)報(bào)文為被 監(jiān)控主機(jī)發(fā)出的原始數(shù)據(jù)報(bào)文,或該原始數(shù)據(jù)報(bào)文為發(fā)送給被監(jiān)控主機(jī)的原始數(shù)據(jù)報(bào)文, 此時按照匹配的鏡像流表的動作項(xiàng)復(fù)制該原始數(shù)據(jù)報(bào)文,將復(fù)制的數(shù)據(jù)報(bào)文進(jìn)行封裝并添 加鏡像標(biāo)簽得到封裝報(bào)文,通過匹配的鏡像流表的出端口轉(zhuǎn)發(fā)該封裝報(bào)文。
[0030] 具體地,SDN控制器為源SDN交換設(shè)備創(chuàng)建的表ID為1的鏡像流表是擴(kuò)展了一個 MIRROR類型的指令I(lǐng)nstruction的流表,該擴(kuò)展了一個MIRROR類型的Instruction的流表 能保證源SDN交換設(shè)備復(fù)制得到的數(shù)據(jù)報(bào)文是與該源SDN交換設(shè)備接收到的未經(jīng)修改的原 始數(shù)據(jù)報(bào)文完全一樣的數(shù)據(jù)報(bào)文,保證發(fā)送給監(jiān)控服務(wù)器的數(shù)據(jù)報(bào)文在封裝之前與原始數(shù) 據(jù)報(bào)文完全相同。
[0031] 此外,源SDN交換設(shè)備還需完成正常的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā),因此,源SDN交換設(shè)備首次 接收到被監(jiān)控主機(jī)發(fā)送的原始數(shù)據(jù)報(bào)文、或首次接收到發(fā)送給被監(jiān)控主機(jī)的原始數(shù)據(jù)報(bào)文 后,在查找不到匹配的普通轉(zhuǎn)發(fā)流表的情況下,將接收到的原始數(shù)據(jù)報(bào)文封裝在Pack-in 報(bào)文中發(fā)送給SDN控制器。SDN控制器接收到源SDN交換設(shè)備發(fā)來的封裝在Pack-in報(bào)文 中的原始數(shù)據(jù)報(bào)文后,根據(jù)該封裝在Pack-in報(bào)文中的原始數(shù)據(jù)報(bào)文為源SDN交換設(shè)備創(chuàng) 建并下發(fā)表ID為2的普通轉(zhuǎn)發(fā)流表,使源SDN交換設(shè)備接收到該普通轉(zhuǎn)發(fā)流表后,根據(jù)表 ID為2將普通轉(zhuǎn)發(fā)流表保存在多級流表的第二級流表中。
[0032] 這里,SDN網(wǎng)絡(luò)中的每個SDN交換設(shè)備均支持多級流表,當(dāng)SDN交換設(shè)備接收到數(shù) 據(jù)報(bào)文后,按照流表級別的高低逐級查詢多級流表,一旦查詢到匹配的流表項(xiàng),則根據(jù)匹配 的流標(biāo)項(xiàng)的動作集內(nèi)容對數(shù)據(jù)報(bào)文進(jìn)行處理,直至多級流表全部查詢完畢。因此,為了使源 SDN交換設(shè)備既能實(shí)現(xiàn)報(bào)文監(jiān)控功能,又能實(shí)現(xiàn)正常的報(bào)文轉(zhuǎn)發(fā),SDN控制器令鏡像流表的 表ID為1,令普通轉(zhuǎn)發(fā)流表的表ID為2,則源SDN交換設(shè)備將鏡像流表保存在多級流表的 第一級流表中,將普通轉(zhuǎn)發(fā)流表保存在多級流表的第二級流表中,這樣源SDN交換設(shè)備在 第一級流表中查詢到匹配的鏡像流表后,對原始數(shù)據(jù)報(bào)文進(jìn)行復(fù)制,然后對復(fù)制的數(shù)據(jù)報(bào) 文作進(jìn)一步處理,不影響原始數(shù)據(jù)報(bào)文,使得原始數(shù)據(jù)報(bào)文能根據(jù)第二級流表中查詢到的 匹配的普通轉(zhuǎn)發(fā)流表進(jìn)行無修改轉(zhuǎn)發(fā)。
[0033] SDN控制器為目的SDN交換設(shè)備創(chuàng)建攜帶表ID為1的鏡像流表,該鏡像流表的表 ID為1使得目的SDN交換設(shè)備將該鏡像流表保存在多級流表的第一級流表中。該表ID為 1的鏡像流表的匹配項(xiàng)是封裝報(bào)文的目的MAC地址和鏡像標(biāo)簽,動作項(xiàng)是剝離鏡像標(biāo)簽并 解封裝報(bào)文、將解封裝報(bào)文得到的源SDN交換設(shè)備復(fù)制的數(shù)據(jù)報(bào)文通過出端口轉(zhuǎn)發(fā)給監(jiān)控 服務(wù)器。
[0034] 更進(jìn)一步地,SDN控制器還為鏡像隧道上的其他中間SDN交換設(shè)備創(chuàng)建并下發(fā)表 ID為缺省值的鏡像流表,使鏡像隧道上的其他中間SDN交換設(shè)備接收到該鏡像流表后,分 別根據(jù)表ID為缺省值將鏡像流表保存在多級流表的任一級流表中,該攜帶表ID為缺省值 的鏡像流表的匹配項(xiàng)是封裝報(bào)文的目的MAC地址,動作項(xiàng)是通過出端口轉(zhuǎn)發(fā)封裝報(bào)文。
[0035] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)的更加清楚明白,下面結(jié)合附圖及具體 實(shí)施例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。
[0036] 下面結(jié)合具體實(shí)施例對上述SDN網(wǎng)絡(luò)報(bào)文監(jiān)控的方法進(jìn)行詳細(xì)說明。
[0037] 目前,SDN技術(shù)中最為流行的是OpenFlow協(xié)議,以下將以O(shè)penFlow進(jìn)行舉例進(jìn)行 說明,需要說明的是,本申請并不排除其他能夠?qū)崿F(xiàn)SDN功能的協(xié)議。
[0038] 圖2為本方法實(shí)施例的OpenFlow網(wǎng)絡(luò)結(jié)構(gòu)圖,如圖2所示,Switch 1?Switch 4 為OpenFlow交換設(shè)備,主機(jī)1為Switch 1上的主機(jī)設(shè)備,主機(jī)1的IP地址為IP-I,MAC地 址為MAC-I ;主機(jī)3為Switch 3上的主機(jī)設(shè)備,主機(jī)3的IP地址為IP-3,MAC地址為MAC-3 ; 監(jiān)控服務(wù)器位于Switch 4上,監(jiān)控服務(wù)器的MAC地址為MAC-K4。本實(shí)施例以監(jiān)控主機(jī)1上 的數(shù)據(jù)流量為例對本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說明,圖3為本實(shí)施例的流程圖,如圖3所示, 包括以下步驟:
[0039] 步驟301 :主機(jī)1發(fā)送原始數(shù)據(jù)報(bào)文1給Switch 1。
[0040] 本步驟中,主機(jī)1與主機(jī)3通信,主機(jī)1將發(fā)送給主機(jī)3的原始數(shù)據(jù)報(bào)文1發(fā)送給 Switch 1,使得Switch 1將原始數(shù)據(jù)報(bào)文1轉(zhuǎn)發(fā)給主機(jī)3。其中,原始數(shù)據(jù)報(bào)文1的源IP 地址為IP-1,目的IP地址為IP-3。
[0041] 步驟302 !Switch 1接收到原始數(shù)據(jù)報(bào)文1,根據(jù)原始數(shù)據(jù)報(bào)文1的源IP地址查 詢多級流表的第一級流表,確定匹配的鏡像流表。
[0042] 本步驟中,Switch 1接收到的原始數(shù)據(jù)報(bào)文1為主機(jī)1發(fā)送的原始數(shù)據(jù)報(bào)文,因 此根據(jù)原始數(shù)據(jù)報(bào)文1的源IP地址IP-I查詢多級流表的第一級流表,確定匹配的鏡像流 表。
[0043] 如果本步驟中Switch 1接收到的原始數(shù)據(jù)報(bào)文是發(fā)送給主機(jī)1的原始數(shù)據(jù)報(bào)文, 則Switch 1根據(jù)該原始數(shù)據(jù)報(bào)文的目的IP地址查詢多級流表的第一級流表,確定匹配的 鏡像流表。
[0044] 由于本實(shí)施例監(jiān)控的是主機(jī)1的流量,因此主機(jī)1發(fā)送的原始數(shù)據(jù)流量和發(fā)送給 主機(jī)1的原始數(shù)據(jù)流量都要被監(jiān)控,即Switch 1接收到的源IP地址為IP-I、以及目的IP 地址為IP-I的原始數(shù)據(jù)報(bào)文都要被監(jiān)控。本步驟中的原始數(shù)據(jù)報(bào)文1為主機(jī)1發(fā)送的原 始數(shù)據(jù)報(bào)文,因此Switch 1根據(jù)原始數(shù)據(jù)報(bào)文1的源IP地址查詢多級流表的第一級流表 時會有匹配的鏡像流表。
[0045] 鏡像流表是OpenFlow控制器確定要監(jiān)控主機(jī)1后,將主機(jī)1所在的Switch 1確 定為源交換設(shè)備,將監(jiān)控服務(wù)器所在的Switch 4確定為目的交換設(shè)備,根據(jù)拓?fù)湓谠唇粨Q 設(shè)備與目的交換設(shè)備之間建立一條鏡像隧道Switchl-Switch 2-Switch 4后,為鏡像隧道 上的各Switch設(shè)備創(chuàng)建并下發(fā)的。其中,OpenFlow控制器為Switch 1和Switch 4創(chuàng)建 并下發(fā)的鏡像流表的表ID為1,表示Switch 1和Switch 4接收到鏡像流表后,分別將鏡像 流表保存在多級流表中的第一級流表中;OpenFlow控制器為Switch 2創(chuàng)建并下發(fā)的鏡像 流表的表ID為缺省值,表示Switch 2接收到該鏡像流表后,可以將鏡像流表保存在多級流 表的任一級流表中。。
[0046] 本實(shí)施例中,OpenFlow控制器為Switch 1創(chuàng)建并下發(fā)的鏡像流表如表1所示,為 Switch 2創(chuàng)建并下發(fā)的鏡像流表如表2所示,為Switch 4創(chuàng)建并下發(fā)的鏡像流表如表3所 示:
[0047] 表 1
[0048]
【主權(quán)項(xiàng)】
1. 一種軟件定義網(wǎng)絡(luò)報(bào)文監(jiān)控方法,其特征在于,該方法應(yīng)用于SDN網(wǎng)絡(luò),所述SDN網(wǎng) 絡(luò)包括SDN控制器