專利名稱::一種軟件定義網(wǎng)絡(luò)中組表的處理方法、系統(tǒng)和控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信領(lǐng)域中的組表處理技術(shù),尤其涉及一種軟件定義網(wǎng)絡(luò)(SoftwareDefinedNetwork,SDN)中組表的處理方法、系統(tǒng)和控制器。
背景技術(shù):
:SDN是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),是針對(duì)現(xiàn)有網(wǎng)絡(luò)設(shè)備和架構(gòu)的一場(chǎng)變革,其核心理念是網(wǎng)絡(luò)轉(zhuǎn)發(fā)與網(wǎng)絡(luò)控制的分離,從而可實(shí)現(xiàn)網(wǎng)絡(luò)流量的靈活控制,為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供了良好的平臺(tái)。SDN中的控制層由原有的交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備中的控制功能抽取出來(lái),采用獨(dú)立的控制軟件來(lái)實(shí)現(xiàn)。原有的交換機(jī)、路由器中的軟件功能都從基礎(chǔ)設(shè)施層剝離,由控制層統(tǒng)一實(shí)施交換與路由的管理。其中,所述控制軟件可以遠(yuǎn)程向轉(zhuǎn)發(fā)設(shè)備下發(fā)增、改、刪等指令修改自身的流表(flowtable),以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)報(bào)文的處理,如:轉(zhuǎn)發(fā)、標(biāo)簽處理、過濾坐寸ο在SDN中,控制器(controller)對(duì)多個(gè)交換機(jī)(switch)進(jìn)行控制和管理,其組成的架構(gòu)如圖1所示。在等價(jià)多路徑(Equal-CostMultipathRouting,ECMP)或者組播的場(chǎng)景下均需要使用到組表(grouptable)進(jìn)行處理,但現(xiàn)有技術(shù)只能對(duì)單個(gè)組表項(xiàng)進(jìn)行操作,即:流表中的一條表項(xiàng)只能調(diào)用組表中的一個(gè)表項(xiàng),但這種實(shí)現(xiàn)方式不能滿足如下場(chǎng)景:在鏈路故障保護(hù)或鏈路捆綁等場(chǎng)景中,ECMP的出端口或者組播樹的下游端口有可能為鏈路聚合端口。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種SDN中組表的處理方法、系統(tǒng)和控制器,可支持ECMP的出端口或者組播樹的下游端口為鏈路聚合端口的場(chǎng)景。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:本發(fā)明提供了一種軟件定義網(wǎng)絡(luò)中組表的處理方法,該方法包括:控制器采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。進(jìn)一步地,所述控制器在等價(jià)多路徑ECMP的出端口為鏈路聚合端口、或組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。其中,所述組表嵌套的實(shí)現(xiàn)方式為:設(shè)置組表項(xiàng)I中的多個(gè)動(dòng)作桶actionbucket表示ECMP的多個(gè)出端口或者組播樹的多個(gè)下游端口,并將表示鏈路聚合端口的actionbucket中的action設(shè)置為跳轉(zhuǎn)到組表項(xiàng)2;組表項(xiàng)2中的多個(gè)actionbucket則表示鏈路聚合端口的多個(gè)物理出端口。進(jìn)一步地,該方法還包括:當(dāng)ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改。其中,所述變更消息為:group_bucket_mod消息。進(jìn)一步地,該方法還包括:當(dāng)交換機(jī)連接到控制器后,交換機(jī)上報(bào)自身是否支持組表嵌套能力,如果支持,則繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;否則,后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。其中,所述交換機(jī)上報(bào)自身是否支持組表嵌套能力,為:控制器向交換機(jī)發(fā)送查詢消息FeatureRequest查詢交換機(jī)的能力,交換機(jī)通過FeatureReply消息向控制器回復(fù)查詢結(jié)果,FeatureReply消息中攜帶交換機(jī)自身是否支持組表嵌套能力的信息。本發(fā)明還提供了一種軟件定義網(wǎng)絡(luò)中組表的處理系統(tǒng),包括控制器;所述控制器包括:組表處理模塊,用于采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。其中,所述組表處理模塊,具體用于當(dāng)ECMP的出端口為鏈路聚合端口、或者組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。進(jìn)一步地,當(dāng)ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),所述組表處理模塊,還用于通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改。該系統(tǒng)還包括交換機(jī),所述交換機(jī)包括:能力上報(bào)模塊,用于交換機(jī)與控制器連接后,上報(bào)交換機(jī)是否支持組表嵌套能力;相應(yīng)的,所述組表處理模塊,進(jìn)一步用于確定交換機(jī)支持組表嵌套能力時(shí),繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;確定交換機(jī)不支持組表嵌套能力時(shí),在后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。本發(fā)明還提供了一種控制器,所述控制器包括:組表處理模塊,所述組表處理模塊為上文所述的組表處理模塊。本發(fā)明提供的SDN中組表的處理方法、系統(tǒng)和控制器,控制器采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā),即:設(shè)置組表項(xiàng)I中的多個(gè)動(dòng)作桶actionbucket表示等價(jià)多路徑ECMP的多個(gè)出端口或者組播樹的多個(gè)下游端口,并將表示鏈路聚合端口的actionbucket中的action設(shè)置為跳轉(zhuǎn)到組表項(xiàng)2;組表項(xiàng)2中的多個(gè)actionbucket則表示鏈路聚合端口的多個(gè)物理出端口。因此,本發(fā)明可支持ECMP的出端口或者組播樹的下游端口為鏈路聚合端口的場(chǎng)景。此外,本發(fā)明還通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改,因此,可支持ECMP出端口或者組播樹的下游端口數(shù)量發(fā)生變化、或?qū)Χ丝趫?zhí)行變化處理的場(chǎng)景。此外,本發(fā)明在switch連接到controller后,switch上報(bào)自身是否支持組表嵌套能力,如果支持,則繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;否則,后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò),保證了組表嵌套方法的有效進(jìn)行,系統(tǒng)更加完善。圖1為SDN中控制器和交換機(jī)的組成架構(gòu)示意圖;圖2為本發(fā)明SDN中組表的處理方法實(shí)施例的流程示意圖;圖3為本發(fā)明交換機(jī)向控制器上報(bào)自身是否支持組表嵌套能力的方法示意圖;圖4為本發(fā)明實(shí)施例一ECMP出端口為鏈路聚合端口的系統(tǒng)結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例二組播樹下游端口為鏈路聚合端口的系統(tǒng)結(jié)構(gòu)示意圖。具體實(shí)施例方式本發(fā)明的基本思想是:控制器采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。其中,所述控制器在等價(jià)多路徑ECMP的出端口為鏈路聚合端口、或組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。進(jìn)一步地,該方法還包括:當(dāng)所述ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),即所述端口數(shù)量發(fā)生變化、或?qū)Χ丝趫?zhí)行變化處理時(shí),通過設(shè)置的變更消息對(duì)組表中的動(dòng)作桶(actionbucket)進(jìn)行增加、刪除或修改;其中,所述變更消息為group_bucket_mod消息。進(jìn)一步地,該方法還包括:當(dāng)連接到controller后,switch上報(bào)自身是否支持組表嵌套能力,如果支持,則繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;否則,后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。下面以ECMP的出端口為鏈路聚合端口、或者組播樹的下游端口為鏈路聚合端口為例,并結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。圖2為本發(fā)明SDN中組表的處理方法實(shí)施例的流程示意圖,如圖2所示,包括:步驟201:當(dāng)連接到controller后,switch上報(bào)自身是否支持組表嵌套能力,如果支持,則執(zhí)行步驟202;否則,后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。具體為:當(dāng)switch連接到controller后,如圖3所不,controller向switch發(fā)送查詢消息FeatureRequest查詢switch的能力,switch通過FeatureReply消息向controller回復(fù)查詢結(jié)果,FeatureReply消息中攜帶switch自身是否支持組表嵌套能力的信息,如果支持,則執(zhí)行步驟202;否則,后續(xù)需要執(zhí)行組表嵌套操作時(shí),controller進(jìn)行報(bào)錯(cuò)。步驟202:當(dāng)ECMP的出端口或者組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā);具體為:當(dāng)ECMP的出端口或者組播樹的下游端口為鏈路聚合端口時(shí),設(shè)組表項(xiàng)I中的多個(gè)actionbucket表示ECMP的多個(gè)出端口或者組播樹的多個(gè)下游端口,并將其中表示鏈路聚合端口的actionbucket中的action設(shè)置為applygroup2,即跳轉(zhuǎn)到組表項(xiàng)2。組表項(xiàng)2中的多個(gè)actionbucket則表示鏈路聚合端口的多個(gè)物理出端口。進(jìn)一步地,該方法還包括:步驟203:當(dāng)ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改;具體為:當(dāng)ECMP出端口或者組播樹的下游端口數(shù)量發(fā)生變化時(shí)、或者對(duì)端口執(zhí)行變化處理時(shí),通過設(shè)置變更消息group_bucket_mod對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改。下面結(jié)合具體實(shí)施例對(duì)本發(fā)明的方法進(jìn)行詳細(xì)描述。實(shí)施例一本實(shí)施例對(duì)應(yīng)的場(chǎng)景為:ECMP出端口為鏈路聚合端口,系統(tǒng)結(jié)構(gòu)如圖4所示。圖4中節(jié)點(diǎn)A-節(jié)點(diǎn)I均表示交換機(jī)(switch)。各switch上電后與controller建立連接,連接建立完成后,假設(shè)個(gè)人計(jì)算機(jī)(PC)I要與PC3進(jìn)行通信,且在節(jié)點(diǎn)E和節(jié)點(diǎn)H之間存在ECMP,包括:路徑I和路徑2;其中,路徑I為E---F---H,路徑2為E---G---H,其中節(jié)點(diǎn)E和節(jié)點(diǎn)F之間使用鏈路聚合端口,則controller傳輸給節(jié)點(diǎn)E的,即從節(jié)點(diǎn)E上下發(fā)的流表和組表內(nèi)容如下:flowtable:matchfieldinstructiondip=pc3_ipapplyactiomapplygroupIgrouptable:groupidtypeactionbucketISelectedbucket!:outport=poit(EG)bucket!:applygroup!2Selectedbucketl:outport=poitI(EF)bucket2:oiitport=port2(EF)這里,先通過普通流表匹配PC3的目的IP,然后進(jìn)入到組表項(xiàng)I處理,即:applygroupl。在組表項(xiàng)I中,使用查找(Selected)類型指示數(shù)據(jù)流量進(jìn)行散列(hash)處理,兩個(gè)actionbucket分別代表節(jié)點(diǎn)E與節(jié)點(diǎn)H之間的不同出端口。actionbucketl代表了節(jié)點(diǎn)E與節(jié)點(diǎn)G之間的出端口,actionbucket2代表了節(jié)點(diǎn)E和節(jié)點(diǎn)F之間的鏈路聚合端口,所以需要跳轉(zhuǎn)到組表項(xiàng)2進(jìn)行處理,組表項(xiàng)2中的兩個(gè)actionbucket分別代表了節(jié)點(diǎn)E和節(jié)點(diǎn)F之間鏈路聚合端口的成員端口。實(shí)施例二本實(shí)施例對(duì)應(yīng)的場(chǎng)景為:組播樹下游端口為鏈路聚合端口,系統(tǒng)結(jié)構(gòu)如圖5所示。如圖5所示,在組播應(yīng)用場(chǎng)景中,I個(gè)組播源(Source)和3個(gè)組播接收者(Receiverl、Receiver2和Receiver3)進(jìn)行通信,所示的節(jié)點(diǎn)A-節(jié)點(diǎn)I表示交換機(jī)。其中,節(jié)點(diǎn)G和節(jié)點(diǎn)H之間存在鏈路聚合端口,則controller傳輸給節(jié)點(diǎn)G的,即從節(jié)點(diǎn)G上下發(fā)的流表和組表內(nèi)容如下:權(quán)利要求1.一種軟件定義網(wǎng)絡(luò)中組表的處理方法,其特征在于,該方法包括:控制器采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述控制器在等價(jià)多路徑ECMP的出端口為鏈路聚合端口、或組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述組表嵌套的實(shí)現(xiàn)方式為:設(shè)置組表項(xiàng)I中的多個(gè)動(dòng)作桶actionbucket表示ECMP的多個(gè)出端口或者組播樹的多個(gè)下游端口,并將表示鏈路聚合端口的actionbucket中的action設(shè)置為跳轉(zhuǎn)到組表項(xiàng)2;組表項(xiàng)2中的多個(gè)actionbucket則表示鏈路聚合端口的多個(gè)物理出端口。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法還包括:當(dāng)ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改。5.根據(jù)權(quán)利要求4所述的的方法,其特征在于,所述變更消息為:group_bucket_mod消息。6.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的方法,其特征在于,該方法還包括:當(dāng)交換機(jī)連接到控制器后,交換機(jī)上報(bào)自身是否支持組表嵌套能力,如果支持,則繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;否則,后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述交換機(jī)上報(bào)自身是否支持組表嵌套能力,為:控制器向交換機(jī)發(fā)送查詢消息FeatureRequest查詢交換機(jī)的能力,交換機(jī)通過FeatureReply消息向控制器回復(fù)查詢結(jié)果,FeatureReply消息中攜帶交換機(jī)自身是否支持組表嵌套能力的信息。8.一種軟件定義網(wǎng)絡(luò)中組表的處理系統(tǒng),包括控制器;其特征在于,所述控制器包括:組表處理模塊,用于采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述組表處理模塊,具體用于當(dāng)ECMP的出端口為鏈路聚合端口、或者組播樹的下游端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,當(dāng)ECMP出端口或者組播樹的下游端口信息發(fā)生變化時(shí),所述組表處理模塊,還用于通過設(shè)置的變更消息對(duì)組表中的actionbucket進(jìn)行增加、刪除或修改。11.根據(jù)權(quán)利要求8、9或10所述的系統(tǒng),其特征在于,該系統(tǒng)還包括交換機(jī),所述交換機(jī)包括:能力上報(bào)模塊,用于交換機(jī)與控制器連接后,上報(bào)交換機(jī)是否支持組表嵌套能力;相應(yīng)的,所述組表處理模塊,進(jìn)一步用于確定交換機(jī)支持組表嵌套能力時(shí),繼續(xù)執(zhí)行后續(xù)的組表嵌套處理流程;確定交換機(jī)不支持組表嵌套能力時(shí),在后續(xù)需執(zhí)行組表嵌套時(shí),進(jìn)行報(bào)錯(cuò)。12.—種控制器,其特征在于,所述控制器包括:組表處理模塊,所述組表處理模塊為權(quán)利要求8至11中任一項(xiàng)所述的組表處理模塊。全文摘要本發(fā)明公開了一種軟件定義網(wǎng)絡(luò)中組表的處理方法,包括當(dāng)組表中的出端口為鏈路聚合端口時(shí),采用組表嵌套的方式實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。本發(fā)明還同時(shí)公開了一種軟件定義網(wǎng)絡(luò)中組表的處理系統(tǒng)和一種控制器,本發(fā)明所述方法、系統(tǒng)和控制器可支持等價(jià)多路徑(ECMP)的出端口或者組播樹的下游端口為鏈路聚合端口的場(chǎng)景。文檔編號(hào)H04L12/811GK103200122SQ20131006967公開日2013年7月10日申請(qǐng)日期2013年3月5日優(yōu)先權(quán)日2013年3月5日發(fā)明者孫凌,何文娟申請(qǐng)人:中興通訊股份有限公司