報(bào)文后,轉(zhuǎn)發(fā)給組播源。組 播源發(fā)送的組播報(bào)文經(jīng)由邊緣路由器到達(dá)網(wǎng)關(guān)后,網(wǎng)關(guān)根據(jù)SDN控制器下發(fā)的組播轉(zhuǎn)發(fā)表 來(lái)找到相應(yīng)的隧道口,通過(guò)隧道發(fā)送給關(guān)聯(lián)的交換機(jī),交換機(jī)根據(jù)SDN控制器下發(fā)的組播 路由表找到相應(yīng)的第一接口,將組播報(bào)文最終發(fā)給作為組成員的主機(jī)。
[0057] 為了實(shí)現(xiàn)不同網(wǎng)段的組播業(yè)務(wù),SDN控制器還可以具有ARP代理的功能,SDN控制 器建立APR表項(xiàng),在表項(xiàng)中記錄交換機(jī)和網(wǎng)關(guān)的MAC地址、IP地址對(duì),在不同數(shù)據(jù)中心的 SDN控制器間交換ARP表及組播路由轉(zhuǎn)發(fā)表,本數(shù)據(jù)中心的邊緣路由器根據(jù)ARP表判斷組播 源所發(fā)送的組播報(bào)文是否屬于本網(wǎng)段。
[0058] 圖3是本申請(qǐng)?jiān)趫D1的應(yīng)用場(chǎng)景中的應(yīng)用實(shí)例。
[0059] 用戶(hù)首先進(jìn)行網(wǎng)絡(luò)預(yù)配置:
[0060] 用戶(hù)預(yù)配置VTEP設(shè)備與SND控制器連接,即通過(guò)配置將交換機(jī)和網(wǎng)關(guān)通過(guò) Openf low協(xié)議與SDN控制器連接。SDN控制器全局保存該整網(wǎng)的Overlay網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);
[0061] 用戶(hù)預(yù)先在SDN控制器上配置需要控制的VTEP設(shè)備,并向網(wǎng)關(guān)和交換機(jī)下發(fā)使能 PM報(bào)文上送SDN控制器的功能;以及向網(wǎng)關(guān)下發(fā)使能IGMP的功能。
[0062] 當(dāng)網(wǎng)關(guān)1和網(wǎng)關(guān)2通過(guò)P頂協(xié)議學(xué)習(xí)到組播源信息(以組播地址為229. 0. 0. 1為 例)時(shí),發(fā)送IGMP查詢(xún)報(bào)文(S401)。此時(shí)通過(guò)Openf low協(xié)議的Packetin機(jī)制將IGMP查 詢(xún)報(bào)文上送SDN控制器處理。
[0063] SDN控制器解析IGMP查詢(xún)報(bào)文,提取該IGMP查詢(xún)報(bào)文的VXLAN信息,記錄組播源 所發(fā)送的組播報(bào)文的組播IP地址,并在組播路由轉(zhuǎn)發(fā)表中記錄發(fā)送IGMP查詢(xún)報(bào)文的網(wǎng)關(guān) 的標(biāo)識(shí)(S402)。此時(shí)路由轉(zhuǎn)發(fā)表中增加了網(wǎng)關(guān)1和網(wǎng)關(guān)2的兩條表項(xiàng),因此網(wǎng)關(guān)1和網(wǎng)關(guān) 2在路由轉(zhuǎn)發(fā)表的字段的值如下表1 :
[0064]表 1
[0066] 同時(shí)SDN控制器周期性的向所有的交換機(jī)發(fā)送該IGMP查詢(xún)報(bào)文(S402),交換機(jī)向 各主機(jī)發(fā)送該IGMP查詢(xún)報(bào)文(S403)。
[0067] 當(dāng)主機(jī)設(shè)備需要加入組播組時(shí),主機(jī)設(shè)備會(huì)發(fā)送IGMP加入報(bào)文到交換機(jī)(S404), 該IGMP加入報(bào)文攜帶組播組的組播IP地址信息,交換機(jī)將該IGMP加入報(bào)文通過(guò)Paketin 上送SDN控制器處理(S405)。根據(jù)Openflow標(biāo)準(zhǔn),上送IGMP加入報(bào)文到SDN控制器時(shí),會(huì) 攜帶交換機(jī)接收該IGMP報(bào)文的第一接口信息。
[0068] S406, SDN控制器在表1的基礎(chǔ)上新增交換機(jī)的相關(guān)表項(xiàng)。假設(shè)當(dāng)交換機(jī)1上的 接收者1和交換機(jī)3上的接收者2加入組播組229. 0. 0. 1時(shí),交換機(jī)1的第一接口信息為 1,交換機(jī)3的第一接口信息為2。根據(jù)SDN所保存的交換機(jī)和網(wǎng)關(guān)的拓?fù)潢P(guān)系,得知交換機(jī) 1、交換機(jī)3與兩個(gè)網(wǎng)關(guān)均可建立隧道,因此將組播轉(zhuǎn)發(fā)表添加如下表2的表項(xiàng)。
[0069] 表 2
[0071] 需要說(shuō)明的是,SDN控制器在為每個(gè)網(wǎng)關(guān)分配組播成員時(shí),可以根據(jù)負(fù)載均衡策略 使得每個(gè)網(wǎng)關(guān)所負(fù)載的主機(jī)數(shù)基本一致。
[0072] S407, SDN控制器查看如果網(wǎng)關(guān)上分配的同一組播組的交換機(jī)還未與網(wǎng)關(guān)之間建 立VXLAN隧道,則SDN控制器向網(wǎng)關(guān)和該交換機(jī)下發(fā)建立隧道的命令。建立隧道后,SDN控 制器獲取隧道口信息(S408),將組播轉(zhuǎn)發(fā)表中的路由信息修改為隧道口信息(S409)。如表 3所示,由于網(wǎng)關(guān)1和網(wǎng)關(guān)2是Overlay網(wǎng)絡(luò)中組播組229. 0. 0. 1的源節(jié)點(diǎn),因此路由信息 是空,交換機(jī)1、交換機(jī)3的路由信息填寫(xiě)為網(wǎng)關(guān)1或網(wǎng)關(guān)2的隧道口信息,將網(wǎng)關(guān)1或網(wǎng)關(guān) 2的隧道口作為交換機(jī)1和交換機(jī)3所接收的組播的入端口。更新后的組播轉(zhuǎn)發(fā)表如下表 3的表項(xiàng)。
[0074] S410, SDN控制器將創(chuàng)建完成的組播路由表轉(zhuǎn)發(fā)給網(wǎng)關(guān)1、網(wǎng)關(guān)2、交換機(jī)1、交換機(jī) 3。收到組播路由表的VTEP設(shè)備將組播路由表保存。另外,SDN控制器通過(guò)Packetout機(jī) 制從網(wǎng)關(guān)向上游的邊緣路由器發(fā)送P頂報(bào)文,加入組播源229. 0. 0. 1對(duì)應(yīng)的IP組播組。
[0075] 當(dāng)某個(gè)主機(jī)退出組播組時(shí),該主機(jī)向VXLAN內(nèi)的所有組播路由器(目的地址為 224. 0·0· 2)發(fā)送Leave Group報(bào)文;此時(shí)交換機(jī)會(huì)將該Leave Group報(bào)文(攜帶要離開(kāi)的 組播IP地址)通過(guò)Packet in上送SDN控制器處理。當(dāng)SDN控制器收到該Leave Group報(bào) 文后,向該主機(jī)所聲明要離開(kāi)的組播組發(fā)送Group-Specific Query報(bào)文(目的地址字段和 組地址字段均填充為所要查詢(xún)的組播地址),此時(shí)是通過(guò)Packetout報(bào)文向該主機(jī)連接的 VTEP設(shè)備發(fā)送;
[0076] 如果該VTEP設(shè)備還下掛有該組播組的其它成員,則這些組成員在收到 Group-Specific Query報(bào)文后,會(huì)在該Group-Specific Query報(bào)文中所設(shè)定的最大響應(yīng)時(shí) 間內(nèi)發(fā)送成員關(guān)系報(bào)告報(bào)文;
[0077] 如果SDN控制器在最大響應(yīng)時(shí)間內(nèi)收到了該VTEP設(shè)備下的該組播組其它成員發(fā) 送的成員關(guān)系報(bào)告報(bào)文,SDN控制器器就會(huì)繼續(xù)維護(hù)該組播組的成員關(guān)系;否則,控制器器 將認(rèn)為該網(wǎng)段內(nèi)已無(wú)該組播組的組播成員,于是不再維護(hù)這個(gè)組播組與該VTEP設(shè)備以及 其下掛的主機(jī)的成員關(guān)系。如果該VTEP設(shè)備已經(jīng)沒(méi)有下掛的組播組成員存在,則刪除該組 播IP地址下的路由信息。
[0078] 與前述Overlay網(wǎng)絡(luò)中控制組播傳輸?shù)姆椒ǖ膶?shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了 Overlay網(wǎng)絡(luò)中控制組播傳輸?shù)难b置的實(shí)施例。
[0079] 本申請(qǐng)Overlay網(wǎng)絡(luò)中控制組播傳輸?shù)难b置的實(shí)施例可以應(yīng)用在SDN控制器上。 裝置實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn) 為例,作為一個(gè)邏輯意義上的裝置,是通過(guò)其所在SDN控制器的處理器將非易失性存儲(chǔ)器 中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖4所示,為本申 請(qǐng)Overlay網(wǎng)絡(luò)中控制組播傳輸?shù)难b置所在SDN控制器的一種硬件結(jié)構(gòu)圖,除了圖4所示 的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的SDN控制器通 常根據(jù)該SDN控制器的實(shí)際功能,還可以包括其他硬件,對(duì)此不再贅述。
[0080] 請(qǐng)參考圖5,本申請(qǐng)Overlay網(wǎng)絡(luò)中控制組播傳輸?shù)难b置500,與所述網(wǎng)關(guān)、交換機(jī) 分別相連,包括:
[0081] 通信模塊501,用于從所述網(wǎng)關(guān)獲取組播源信息,所述組播源信息包括組播報(bào)文的 組播地址;從所述交換機(jī)獲取組播成員信息,所述組播成員信息包括所述交換機(jī)的第一接 口信息,所述交換機(jī)的第一接口信息用于標(biāo)識(shí)所述交換機(jī)與作為組播成員的主機(jī)連接的接 口;獲取所述網(wǎng)關(guān)和交換機(jī)所建立的隧道的隧道口信息;以及
[0082] 將組播轉(zhuǎn)發(fā)表發(fā)給所述網(wǎng)關(guān)和交換機(jī),以使所述網(wǎng)關(guān)和交換機(jī)根據(jù)所述組播轉(zhuǎn)發(fā) 表控制組播報(bào)文傳輸;
[0083] 組播轉(zhuǎn)發(fā)表維護(hù)模塊502,用于根據(jù)所述組播源信息和組播成員信息、隧道口信息 及所記錄的所述網(wǎng)關(guān)和交換機(jī)的拓?fù)潢P(guān)系維護(hù)組播轉(zhuǎn)發(fā)表。
[0084] 在一個(gè)實(shí)施例中,通信模塊501獲取的組播源信息可以攜帶于從所述網(wǎng)關(guān)接收的 IGMP查詢(xún)報(bào)文中。
[0085] 在一個(gè)實(shí)施例中所述主機(jī)加入組播組的報(bào)文包括成員關(guān)系報(bào)文;所述通信模塊 501獲取的組播成員信息攜帶于所述成員關(guān)系報(bào)文中,所述通信模塊501還用于將所述 IGMP查詢(xún)報(bào)文發(fā)送給所述交換機(jī);以及從所述交換機(jī)接收成員關(guān)系報(bào)文,所述成員關(guān)系報(bào) 文攜帶有所述第一接口信息,所述成