本發(fā)明涉及通信領(lǐng)域,特別涉及一種數(shù)據(jù)包傳輸方法、控制器及交換機(jī)。
背景技術(shù):
SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))是一個(gè)新興的網(wǎng)絡(luò)架構(gòu),在SDN網(wǎng)絡(luò)中,控制面和數(shù)據(jù)面相分離,并且控制面是可直接編程的。在之前的網(wǎng)絡(luò)架構(gòu)中,網(wǎng)絡(luò)設(shè)備通常是同時(shí)具有控制功能和轉(zhuǎn)發(fā)功能。而在SDN中,將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開來,從而實(shí)現(xiàn)了對(duì)網(wǎng)絡(luò)流量的靈活控制。
在SDN網(wǎng)絡(luò)中,每個(gè)交換機(jī)都會(huì)根據(jù)流表來轉(zhuǎn)發(fā)數(shù)據(jù)包。例如,交換機(jī)在接到一個(gè)數(shù)據(jù)包時(shí),會(huì)在本地查找與該數(shù)據(jù)包對(duì)應(yīng)的流表,并根據(jù)查找到的流表來轉(zhuǎn)發(fā)該數(shù)據(jù)包,而如果交換機(jī)在本地沒有查找到與該數(shù)據(jù)包對(duì)應(yīng)的流表,則交換機(jī)會(huì)向控制器請(qǐng)求與該數(shù)據(jù)包對(duì)應(yīng)的流表,控制器在接到交換機(jī)的請(qǐng)求時(shí),會(huì)計(jì)算該數(shù)據(jù)包的傳輸路徑,控制器確定該傳輸路徑中的交換機(jī),并向每個(gè)交換機(jī)發(fā)送該交換機(jī)所對(duì)應(yīng)的流表,交換機(jī)按照接收到的流表轉(zhuǎn)發(fā)該數(shù)據(jù)包。
從上可知,如果交換機(jī)向控制器請(qǐng)求多個(gè)數(shù)據(jù)包的流表,則會(huì)向控制器發(fā)送大量的請(qǐng)求消息,而控制器也就需要構(gòu)造大量的流表并分別下發(fā),會(huì)極大地增加控制器的負(fù)擔(dān)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種數(shù)據(jù)包傳輸方法、控制器及交換機(jī),用于解決SDN中控制器負(fù)擔(dān)較重的技術(shù)問題。
第一方面,提供一種數(shù)據(jù)包傳輸方法,包括:
交換機(jī)接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
所述交換機(jī)從所述第一數(shù)據(jù)包中獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息,所述第二路由信息是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;
所述交換機(jī)根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;
所述交換機(jī)根據(jù)所述第一路由信息向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及所述傳輸路徑的總長度攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的標(biāo)識(shí)信息,以及所述交換機(jī)的出端口信息。
結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的出端口信息。
結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,在所述交換機(jī)從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑之后,還包括:
所述交換機(jī)根據(jù)所述第一路由信息構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表。
第二方面,提供一種數(shù)據(jù)包傳輸方法,包括:
控制器接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包;
所述控制器確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;
所述控制器根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并向所述交換機(jī)發(fā)送所述第三消息。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,包括:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中,包括:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及,將所述各交換機(jī)的路由信息的總長度添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息。
結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的出端口信息。
第三方面,提供一種交換機(jī),包括:
接收模塊,用于接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
獲取模塊,用于從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息,所述第二路由信息 是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;
第一構(gòu)造模塊,用于根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;
發(fā)送模塊,用于根據(jù)所述第一路由信息向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第三方面,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及所述傳輸路徑的總長度攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的標(biāo)識(shí)信息,以及所述交換機(jī)的出端口信息。
結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第三方面的第四種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的出端口信息。
結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第三方面的第五種可能的實(shí)現(xiàn)方式中,所述交換機(jī)還包括第二構(gòu)造模塊,用于:
在所述獲取模塊從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑之后,根據(jù)所述第一路由信息構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表。
第四方面,提供一種控制器,包括:
接收模塊,用于接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包;
確定模塊,用于確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;
構(gòu)造模塊,用于根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并向所述交換機(jī)發(fā)送所述第三消息。
結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述確定模塊用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第四方面,在第四方面的第二種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述確定模塊用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及,將所述各交換機(jī)的路由信息的總長度添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第四方面的第三種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息。
結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第四方面的第四種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的出端口信息。
第五方面,提供一種交換機(jī),包括存儲(chǔ)器、處理器和收發(fā)器,其中,所述存儲(chǔ)器和所述收發(fā)器均與所述處理器相連;
所述存儲(chǔ)器,用于存儲(chǔ)指令;
所述收發(fā)器,用于接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
所述處理器,用于執(zhí)行所述指令,從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息, 所述第二路由信息是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;及,根據(jù)所述第一路由信息,通過所述收發(fā)器向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
結(jié)合第五方面,在第五方面的第一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第五方面,在第五方面的第二種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及所述傳輸路徑的總長度攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第五方面或第五方面的第一種可能的實(shí)現(xiàn)方式或二種可能的實(shí)現(xiàn)方式,在第五方面的第三種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的標(biāo)識(shí)信息,以及所述交換機(jī)的出端口信息。
結(jié)合第五方面或第五方面的第一種可能的實(shí)現(xiàn)方式或二種可能的實(shí)現(xiàn)方式,在第五方面的第四種可能的實(shí)現(xiàn)方式中,所述第一路由信息包括所述交換機(jī)的出端口信息。
結(jié)合第五方面或第五方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第五方面的第五種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
在從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑之后,根據(jù)所述第一路由信息構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表。
第六方面,提供一種控制器,包括存儲(chǔ)器、處理器和收發(fā)器,其中,所述存儲(chǔ)器和所述收發(fā)器分別與所述處理器相連;
所述存儲(chǔ)器,用于存儲(chǔ)指令;
所述收發(fā)器,用于接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包;
所述處理器,用于執(zhí)行所述指令,確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;以及,根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并通過所述收發(fā)器向所述交換機(jī)發(fā)送所述第三消息。
結(jié)合第六方面,在第六方面的第一種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述處理器用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第六方面,在第六方面的第二種可能的實(shí)現(xiàn)方式中,所述第三數(shù)據(jù)包為網(wǎng)際協(xié)議數(shù)據(jù)包;所述處理器用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及將所述各交換機(jī)的路由信息的總長度添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
結(jié)合第六方面或第六方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第六方面的第三種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息。
結(jié)合第六方面或第六方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在第六方面的第四種可能的實(shí)現(xiàn)方式中,所述交換機(jī)的路由信息包括交換機(jī)的出端口信息。
本發(fā)明實(shí)施例中,交換機(jī)在接收到攜帶第一數(shù)據(jù)包的第一消息時(shí),可以從中獲取第一數(shù)據(jù)包的傳輸路徑,交換機(jī)可以根據(jù)其中的第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表,并將剩余的路由信息繼續(xù)傳輸給下一個(gè)交換機(jī),這樣,傳輸路徑所涉及到的各交換機(jī)在接到該數(shù)據(jù)包時(shí),都可以根據(jù)該數(shù)據(jù)包生成對(duì)應(yīng)的流表,從而控制器只需向一個(gè)交換機(jī)傳輸數(shù)據(jù)包,無需向每個(gè)交換機(jī)下發(fā)流表,極大地減少了控制器所需要傳輸?shù)臄?shù)據(jù)量,并且控制器也無需生成多個(gè)流表,而只是將用于生成各流表的信息添加在該數(shù)據(jù)包中發(fā)送即可,減輕了控 制器的負(fù)擔(dān)。各個(gè)交換機(jī)在接收到該數(shù)據(jù)包時(shí)可以根據(jù)該數(shù)據(jù)包生成對(duì)應(yīng)的流表,并且,該數(shù)據(jù)包本身所攜帶的數(shù)據(jù)也得到了同步傳輸,相對(duì)于現(xiàn)有技術(shù)中要先下發(fā)流表然后再傳輸數(shù)據(jù)的方案來說,本發(fā)明實(shí)施例中的方案也提高了傳輸效率以及減少了需要傳輸?shù)臄?shù)據(jù)包的數(shù)量,節(jié)省系統(tǒng)資源。
另外,交換機(jī)和控制器之間的通信通道,即Secure Channel(安全通道),的帶寬相對(duì)有限,一旦出現(xiàn)交換機(jī)大量上報(bào)請(qǐng)求、控制器大量下發(fā)流表等的大量數(shù)據(jù)流傳輸情況,則Secure Channel的可用帶寬可能會(huì)急速減小,甚至Secure Channel可能會(huì)被阻塞,造成Secure Channel鏈路中斷,甚至完全癱瘓,影響到正常數(shù)據(jù)的傳輸。在采用本發(fā)明實(shí)施例中的技術(shù)方案后,控制器只需向一個(gè)交換機(jī)傳輸數(shù)據(jù)包,無需向每個(gè)交換機(jī)下發(fā)流表,減少了需要傳輸?shù)臄?shù)據(jù)量,也就節(jié)省了Secure Channel的帶寬資源,盡量避免Secure Channel出現(xiàn)阻塞現(xiàn)象,保證數(shù)據(jù)的正常傳輸。
附圖說明
圖1為本發(fā)明實(shí)施例中一種數(shù)據(jù)包傳輸方法的流程圖;
圖2為本發(fā)明實(shí)施例中流表的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中另一種數(shù)據(jù)包傳輸方法的流程圖;
圖4為本發(fā)明實(shí)施例中packet_out消息的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例中交換機(jī)的結(jié)構(gòu)框圖;
圖6為本發(fā)明實(shí)施例中控制器的結(jié)構(gòu)框圖;
圖7為本發(fā)明實(shí)施例中交換機(jī)的結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例中控制器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
在控制面和數(shù)據(jù)面分離的SDN中,設(shè)備(本發(fā)明實(shí)施例中也可以稱為SDN設(shè)備)分為Controller(控制器)和轉(zhuǎn)發(fā)設(shè)備(或稱為交換設(shè)備),控制器和交換設(shè)備之間的關(guān)系可以是一對(duì)多的關(guān)系,即一個(gè)控制器可以控制多個(gè)交換設(shè) 備??刂破鞯闹饕δ苁菍?duì)交換設(shè)備進(jìn)行網(wǎng)絡(luò)資源的分配和調(diào)度、協(xié)議控制、拓?fù)涔芾怼⒉呗灾贫ā⒈眄?xiàng)下發(fā)等等,交換設(shè)備主要負(fù)責(zé)根據(jù)控制器通過南向接口下發(fā)的控制信息對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及執(zhí)行一些其他的任務(wù)。
本發(fā)明實(shí)施例中,交換設(shè)備例如可以是指交換機(jī)(Switch),或者也可以是指其他具有報(bào)文轉(zhuǎn)發(fā)功能的設(shè)備。本發(fā)明實(shí)施例中以交換設(shè)備是交換機(jī)為例進(jìn)行說明。
目前,openflow(一種網(wǎng)絡(luò)交換模型)協(xié)議是SDN中比較通用的協(xié)議,在SDN中,交換機(jī)是根據(jù)openflow協(xié)議格式的流表來轉(zhuǎn)發(fā)數(shù)據(jù)包。本發(fā)明實(shí)施例中的流表是以openflow協(xié)議格式的流表為例。當(dāng)然,若SDN也支持其他協(xié)議格式的流表,則本發(fā)明實(shí)施例中的流表也可以是指其他格式的流表,只要流表的格式是SDN支持的協(xié)議格式即可。
本發(fā)明實(shí)施例中,一般是一個(gè)數(shù)據(jù)流對(duì)應(yīng)一個(gè)流表,不同的數(shù)據(jù)流可能分別對(duì)應(yīng)于不同的流表,或者也可能對(duì)應(yīng)于同一個(gè)流表。一個(gè)數(shù)據(jù)流中可以包括一個(gè)或多個(gè)數(shù)據(jù)包。
另外,由于IP(Internet Protocol,網(wǎng)際協(xié)議)在網(wǎng)絡(luò)中比較通用,因此本發(fā)明實(shí)施例中的數(shù)據(jù)包均是以IP數(shù)據(jù)包為例。當(dāng)然,本發(fā)明實(shí)施例中的數(shù)據(jù)包也可以是其他協(xié)議格式的數(shù)據(jù)包,只要是SDN支持的協(xié)議格式即可。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
另外,本文中術(shù)語“系統(tǒng)”和“網(wǎng)絡(luò)”在本文中常被可互換使用。本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符“/”,如無特殊說明,一般表示前后關(guān)聯(lián)對(duì)象是一種“或” 的關(guān)系。
下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
請(qǐng)參見圖1,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種數(shù)據(jù)包傳輸方法,該方法的主要流程描述如下。
步驟101:交換機(jī)接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
本發(fā)明實(shí)施例中的交換機(jī)可以是第一數(shù)據(jù)包的傳輸路徑中的任一交換機(jī)。
本發(fā)明實(shí)施例中,該交換機(jī)接收的第一消息可以來自于控制器,或者也可以來自于另一個(gè)交換機(jī)。
另外,本發(fā)明實(shí)施例中,如果該交換機(jī)接收的第一消息來自于控制器,那么第一消息可以是攜帶有第一數(shù)據(jù)包的pack_out消息,而如果該交換機(jī)接收的第一消息來自于其他交換機(jī),那么第一消息可以就是第一數(shù)據(jù)包本身。
步驟102:所述交換機(jī)從所述第一數(shù)據(jù)包中獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息,所述第二路由信息是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;
步驟103:所述交換機(jī)根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;
步驟104:所述交換機(jī)根據(jù)所述第一路由信息向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,該交換機(jī)接收到第一消息后,即步驟101之后,若第一消息是packet_out消息,即第一消息是控制器發(fā)送的,則該交換機(jī)需要首先剝?nèi)acket_out包頭,然后獲取第一數(shù)據(jù)包;而若第一消息就是第一數(shù)據(jù)包本身,即第一消息是另一個(gè)交換機(jī)發(fā)送的,則該交換機(jī)可以直接獲得第一數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,以攜帶交換機(jī)的路由信息的數(shù)據(jù)包須是IP數(shù)據(jù)包為例,則該交換機(jī)在獲得第一數(shù)據(jù)包后,可以判斷第一數(shù)據(jù)包是否是IP 數(shù)據(jù)包,若第一數(shù)據(jù)包是IP數(shù)據(jù)包,則按照本發(fā)明的處理流程進(jìn)行后續(xù)處理,若第一數(shù)據(jù)包不是IP數(shù)據(jù)包,則該交換機(jī)按照現(xiàn)有技術(shù)中的方式處理第一數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,若確定第一數(shù)據(jù)包是IP數(shù)據(jù)包,則該交換機(jī)可以判斷第一數(shù)據(jù)包的選項(xiàng)字段是否復(fù)用,即判斷第一數(shù)據(jù)包中是否攜帶有交換機(jī)的路由信息。具體的,交換機(jī)根據(jù)接收到的第一數(shù)據(jù)包的包頭的長度就可以確定第一數(shù)據(jù)包的選項(xiàng)字段中是否攜帶有信息,即,交換機(jī)根據(jù)接收到的第一數(shù)據(jù)包的包頭的長度就可以確定是否復(fù)用了第一數(shù)據(jù)包的選項(xiàng)字段,即可以確定第一數(shù)據(jù)包的選項(xiàng)字段中是否攜帶有交換機(jī)的路由信息,或者可以確定第一數(shù)據(jù)包的選項(xiàng)字段中是否攜帶有交換機(jī)的路由信息的總長度,而相應(yīng)的,若第一數(shù)據(jù)包的選項(xiàng)字段中攜帶有交換機(jī)的路由信息的總長度,自然第一數(shù)據(jù)包的數(shù)據(jù)字段中也就攜帶有交換機(jī)的路由信息。
如果確定第一數(shù)據(jù)包的選項(xiàng)字段已復(fù)用,則按照本發(fā)明中的流程進(jìn)行后續(xù)處理,如果確定第一數(shù)據(jù)包的選項(xiàng)字段沒有被復(fù)用,則該交換機(jī)按照現(xiàn)有技術(shù)中的方式處理第一數(shù)據(jù)包。
本發(fā)明實(shí)施例中,第一數(shù)據(jù)包中攜帶的是第一數(shù)據(jù)包的傳輸路徑所涉及到的至少一個(gè)交換機(jī)的路由信息,這里的至少一個(gè)交換機(jī),指的是該交換機(jī),以及第一數(shù)據(jù)包的傳輸路徑上位于該交換機(jī)之后的所有交換機(jī)。實(shí)際上該交換機(jī)從第一數(shù)據(jù)包中獲取的是至少一個(gè)交換機(jī)的路由信息,因?yàn)橹辽僖粋€(gè)交換機(jī)的路由信息表明的是第一數(shù)據(jù)包的傳輸路徑,因此也可以認(rèn)為該交換機(jī)從第一數(shù)據(jù)包中獲取的是第一數(shù)據(jù)包的傳輸路徑。
在第一數(shù)據(jù)包攜帶的至少一個(gè)交換機(jī)的路由信息中,包括該交換機(jī)的路由信息,以及還包括第一數(shù)據(jù)包的傳輸路徑上位于該交換機(jī)之后的所有交換機(jī)的路由信息,因此,本發(fā)明實(shí)施例中,將第一數(shù)據(jù)包攜帶的該交換機(jī)的路由信息稱為第一路由信息,將第一數(shù)據(jù)包攜帶的、第一數(shù)據(jù)包的傳輸路徑上位于該交換機(jī)之后的所有交換機(jī)的路由信息稱為第二路由信息。自然,第一路由信息的 用途為:該交換機(jī)根據(jù)第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表,第二路由信息的用途為:其他交換機(jī)根據(jù)第二路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表。
需要說明的是,在第一數(shù)據(jù)包中,第一路由信息和第二路由信息可以是一個(gè)整體,只是本發(fā)明實(shí)施例中為了方便描述而將其分別命名。
可選的,本發(fā)明實(shí)施例中,第一數(shù)據(jù)包為IP數(shù)據(jù)包;
傳輸路徑攜帶在第一數(shù)據(jù)包的選項(xiàng)字段中;或
傳輸路徑攜帶在第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及傳輸路徑的總長度攜帶在第一數(shù)據(jù)包的選項(xiàng)字段中。
這里的傳輸路徑,指的是如前所述的第一數(shù)據(jù)包中攜帶的至少一個(gè)交換機(jī)的路由信息。
即,控制器可以將第一數(shù)據(jù)包的傳輸路徑所涉及到的各交換機(jī)的路由信息攜帶在第一數(shù)據(jù)包的選項(xiàng)字段中,或者,控制器也可以將第一數(shù)據(jù)包的傳輸路徑所涉及到的各交換機(jī)的路由信息攜帶在第一數(shù)據(jù)包的數(shù)據(jù)字段中,而將第一數(shù)據(jù)包的傳輸路徑所涉及到的各交換機(jī)的路由信息的總長度攜帶在第一數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,
第一路由信息包括該交換機(jī)的標(biāo)識(shí)信息,以及該交換機(jī)的出端口信息;或
第一路由信息包括該交換機(jī)的出端口信息。
同樣的,第二路由信息可以分別包括第一數(shù)據(jù)包的傳輸路徑上位于該交換機(jī)之后的各交換機(jī)的標(biāo)識(shí)信息、以及各交換機(jī)的出端口信息,或者,第二路由信息也可以包括第一數(shù)據(jù)包的傳輸路徑上位于該交換機(jī)之后的各交換機(jī)的出端口信息。
即,交換機(jī)的路由信息可以包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息;或,交換機(jī)的路由信息包括交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,在交換機(jī)從第一數(shù)據(jù)包中獲取第一數(shù)據(jù)包的傳 輸路徑之后,即在步驟102之后,還包括:
交換機(jī)根據(jù)第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需要的流表。
即,該交換機(jī)從第一數(shù)據(jù)包中獲取的第一路由信息只是用于構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表的信息,交換機(jī)還需要根據(jù)獲取的第一路由信息來構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表。
請(qǐng)參見圖2,為本發(fā)明實(shí)施例中交換機(jī)構(gòu)造的流表的一種可能的格式,圖2中是以圖1所述的交換機(jī)構(gòu)造的流表為例。
圖2中,INGRESS PORT字段表示數(shù)據(jù)包的入端口。
IN_PHY PORT字段表示數(shù)據(jù)包的物理入端口。
MAC DST字段表示目的MAC(Media Access Control,媒體訪問控制)地址。
MAC SRC字段表示源MAC地址。
ETH TYPE字段表示以太網(wǎng)類型。
VLAN ID字段表示虛擬網(wǎng)絡(luò)ID。
IP SRC字段表示源IP地址。
IP DST字段表示目的IP地址。
TCP SPORT字段表示源TCP端口號(hào)。
TCP DPORT字段表示目的TCP端口號(hào)。
其中,INGRESS PORT字段、IN_PHY PORT字段、MAC DST字段、MAC SRC字段、ETH TYPE字段、VLAN ID字段、IP SRC字段、IP DST字段、TCP SPORT字段、以及TCP DPORT字段,均屬于Match Fields(匹配區(qū)域)。
Couters字段表示計(jì)數(shù)器。
Instructions(命令)中包括actions字段,actions字段攜帶的是在傳輸相應(yīng)數(shù)據(jù)包的過程中,本交換機(jī)的出端口的信息。例如圖2為Output port1(輸出端口1),即表明,該交換機(jī)在傳輸?shù)谝粩?shù)據(jù)包時(shí),出端口是端口1。
另外,流表中還有一些字段,例如Match Fields中還包括一些字段,在圖 2中省略了,具體的流表格式可參照現(xiàn)有技術(shù)。
其中,Match Fields中包括的各個(gè)字段所需的信息,交換機(jī)可以從數(shù)據(jù)包的包頭中獲取,這里的數(shù)據(jù)包指的是IP數(shù)據(jù)包,或者是其他協(xié)議格式的數(shù)據(jù)包,而不是packet_out消息。即,若交換機(jī)接收到的是packet_out消息,則可以從packet_out消息攜帶的數(shù)據(jù)包的包頭中獲取Match Fields中包括的各個(gè)字段所需的信息,若交換機(jī)接收到的就是數(shù)據(jù)包,則可以直接從接收的數(shù)據(jù)包的包頭中獲取Match Fields中包括的各個(gè)字段所需的信息。actions字段所需的信息,交換機(jī)可以從數(shù)據(jù)包的選項(xiàng)字段中獲取,或者也可以從數(shù)據(jù)包的數(shù)據(jù)字段中獲取,同樣,這里的數(shù)據(jù)包也是指IP數(shù)據(jù)包,或者也可以是指其他協(xié)議格式的數(shù)據(jù)包。
即,對(duì)于一個(gè)交換機(jī)來說,可以根據(jù)數(shù)據(jù)包的包頭、以及數(shù)據(jù)包中攜帶的該交換機(jī)的路由信息來生成與該數(shù)據(jù)包對(duì)應(yīng)的流表,例如對(duì)于本發(fā)明實(shí)施例中的交換機(jī)來說,可以根據(jù)第一數(shù)據(jù)包的包頭、以及第一數(shù)據(jù)包中攜帶的第一路由信息來生成與第一數(shù)據(jù)包對(duì)應(yīng)的流表。這里所說的與第一數(shù)據(jù)包對(duì)應(yīng),是指該交換機(jī)會(huì)根據(jù)該交換機(jī)生成的流表來轉(zhuǎn)發(fā)第一數(shù)據(jù)包,自然的,第一數(shù)據(jù)包的傳輸路徑所涉及到的每個(gè)交換機(jī)都需生成與第一數(shù)據(jù)包對(duì)應(yīng)的流表,而這些流表可能是不同的。
可選的,本發(fā)明實(shí)施例中,若交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息;
則,在交換機(jī)根據(jù)第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需要的流表之前,還包括:
交換機(jī)判斷第一數(shù)據(jù)包攜帶的傳輸路徑中的首個(gè)交換機(jī)的路由信息是否是該交換機(jī)的路由信息;
交換機(jī)根據(jù)第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需要的流表,包括:
若第一數(shù)據(jù)包攜帶的傳輸路徑中的首個(gè)交換機(jī)的路由信息是該交換機(jī)的路由信息,則該交換機(jī)根據(jù)第一數(shù)據(jù)包中攜帶的第一路由信息,構(gòu)造用于該交 換機(jī)轉(zhuǎn)發(fā)第一數(shù)據(jù)包的流表。
如果交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息,那么在一個(gè)交換機(jī)接收到攜帶有交換機(jī)的路由信息的數(shù)據(jù)包時(shí),可以先判斷該數(shù)據(jù)包中攜帶的至少一個(gè)交換機(jī)的路由信息中的首個(gè)交換機(jī)的路由信息是否是本交換機(jī)的路由信息,如果是的話,表明該數(shù)據(jù)包是按照傳輸路徑正常傳輸?shù)?,可以進(jìn)行本發(fā)明中的后續(xù)處理,即根據(jù)該數(shù)據(jù)包中攜帶的本交換機(jī)的路由信息,生成用于本交換機(jī)轉(zhuǎn)發(fā)該數(shù)據(jù)包的流表,而如果不是的話,表明該數(shù)據(jù)包在傳輸過程中出現(xiàn)了路徑錯(cuò)誤,則交換機(jī)可能對(duì)該數(shù)據(jù)包進(jìn)行其他處理,例如可能會(huì)丟棄該數(shù)據(jù)包。
交換機(jī)在構(gòu)造與第一數(shù)據(jù)包對(duì)應(yīng)的流表后,要從第一數(shù)據(jù)包攜帶的交換機(jī)的路由信息中刪除該交換機(jī)的路由信息,即從第一數(shù)據(jù)包攜帶的傳輸路徑中刪除第一路由信息,然后該交換機(jī)重新計(jì)算刪除第一路由信息之后的第一數(shù)據(jù)包的包頭,并根據(jù)計(jì)算得到的包頭重新封裝刪除第一路由信息之后的第一數(shù)據(jù)包,得到第二數(shù)據(jù)包,即,第二數(shù)據(jù)包是根據(jù)第一數(shù)據(jù)包和第二路由信息得到的。第二數(shù)據(jù)包與第一數(shù)據(jù)包的區(qū)別就在于,數(shù)據(jù)包的包頭不同,以及數(shù)據(jù)包中攜帶的交換機(jī)的路由信息不同,而兩個(gè)數(shù)據(jù)包中所攜帶的原始數(shù)據(jù)是相同的。這里的原始數(shù)據(jù),指的是一個(gè)數(shù)據(jù)包本來要傳輸?shù)臄?shù)據(jù)。
交換機(jī)在得到第二數(shù)據(jù)包后,按照第一路由信息,或者說按照該交換機(jī)構(gòu)造的轉(zhuǎn)發(fā)第一數(shù)據(jù)包的流表,將第二數(shù)據(jù)包轉(zhuǎn)發(fā)給第二數(shù)據(jù)包的傳輸路徑上的、該交換機(jī)的下一跳交換機(jī),具體的,下一跳交換機(jī)的路由信息應(yīng)該是第二數(shù)據(jù)包中攜帶的第二路由信息中的首個(gè)交換機(jī)的路由信息。
下一跳交換機(jī)在接收到第二數(shù)據(jù)包后,會(huì)進(jìn)行與該交換機(jī)同樣的處理,這樣,直到將一個(gè)數(shù)據(jù)包傳輸?shù)侥康墓?jié)點(diǎn)為止。
例如,一個(gè)數(shù)據(jù)包1傳輸?shù)浇粨Q機(jī)n時(shí)(n為正整數(shù)),交換機(jī)n按照與圖1流程中所述的交換機(jī)同樣的處理方式對(duì)數(shù)據(jù)包1處理完畢,得到數(shù)據(jù)包2,此時(shí)若在數(shù)據(jù)包2中已經(jīng)沒有攜帶交換機(jī)的路由信息了,則表明數(shù)據(jù)包2已經(jīng) 傳輸?shù)搅俗詈笠惶粨Q機(jī),則交換機(jī)n會(huì)直接將數(shù)據(jù)包2發(fā)送給目的節(jié)點(diǎn),傳輸結(jié)束。至此,數(shù)據(jù)包2的傳輸路徑上所涉及到的每個(gè)交換機(jī)都依次接收到了該數(shù)據(jù)包,也都分別生成了與該數(shù)據(jù)包對(duì)應(yīng)的流表,相當(dāng)于各交換機(jī)在一邊生成流表的同時(shí)也完成了對(duì)數(shù)據(jù)包的傳輸,無需像現(xiàn)有技術(shù)中那樣,先由控制器生成多個(gè)流表,然后控制器將每個(gè)流表分別下發(fā)給對(duì)應(yīng)的交換機(jī),然后再開始按照流表傳輸數(shù)據(jù)包,顯然,采用本發(fā)明實(shí)施例中的技術(shù)方案后,極大地縮短了傳輸數(shù)據(jù)包所需的時(shí)間,提高了傳輸效率,也極大地減少了需要傳輸?shù)臄?shù)據(jù)包的數(shù)量,盡量避免了通信通道的擁塞,保證通信的正常進(jìn)行??刂破鳠o需生成多個(gè)流表,減小了控制器的工作負(fù)荷。
請(qǐng)參見圖3,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供另一種數(shù)據(jù)包傳輸方法,該方法是與圖1流程所述的方法相對(duì)應(yīng)的控制器側(cè)的實(shí)施過程,所述方法的主要流程描述如下。
步驟301:控制器接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包。
例如,終端設(shè)備在有需要傳輸?shù)臄?shù)據(jù)包時(shí),會(huì)將該數(shù)據(jù)包發(fā)送給為該終端設(shè)備服務(wù)的交換機(jī),例如將該數(shù)據(jù)包稱為第三數(shù)據(jù)包。該交換機(jī)收到第三數(shù)據(jù)包時(shí),會(huì)在本地查找與該第三數(shù)據(jù)包所對(duì)應(yīng)的流表,若查找到了與第三數(shù)據(jù)包對(duì)應(yīng)的流表,則該交換機(jī)會(huì)按照現(xiàn)有技術(shù)中的方式來處理第三數(shù)據(jù)包,即按照查找到的流表來對(duì)第三數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)等操作。
如果該交換機(jī)在本地沒有查找到與第三數(shù)據(jù)包對(duì)應(yīng)的流表,即該交換機(jī)沒有存儲(chǔ)與第三數(shù)據(jù)包對(duì)應(yīng)的流表,則該交換機(jī)會(huì)將該第三數(shù)據(jù)包發(fā)送給控制器,以向控制器請(qǐng)求第三數(shù)據(jù)包所對(duì)應(yīng)的流表,這樣,控制器就會(huì)接收到交換機(jī)發(fā)送的第三數(shù)據(jù)包。這個(gè)交換機(jī),可以是指控制器所控制的交換機(jī)中的任一個(gè)交換機(jī)。
具體的,交換機(jī)可以將第三數(shù)據(jù)包封裝在packet_in(一種消息格式)消息中上報(bào)給控制器,本發(fā)明實(shí)施例中將攜帶有第三數(shù)據(jù)包的packet_in消息稱為 第二消息。即,控制器接收的packet_in消息中攜帶有第三數(shù)據(jù)包。此時(shí),packet_in消息用于向控制器請(qǐng)求獲得第三數(shù)據(jù)包對(duì)應(yīng)的流表。
步驟302:所述控制器確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;
步驟303:所述控制器根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并向所述交換機(jī)發(fā)送所述第三消息。
控制器在接收到packet_in消息后,從中解析出第三數(shù)據(jù)包,計(jì)算第三數(shù)據(jù)包的傳輸路徑,在計(jì)算出第三數(shù)據(jù)包的傳輸路徑后,控制器自然也就知道該傳輸路徑所涉及到的每個(gè)交換機(jī),以及知道每個(gè)交換機(jī)的路由信息。
可選的,本發(fā)明實(shí)施例中,以攜帶交換機(jī)的路由信息的數(shù)據(jù)包須是IP數(shù)據(jù)包為例,則在控制器確定第三數(shù)據(jù)包的傳輸路徑之后,控制器還可以判斷該第三數(shù)據(jù)包是否是IP數(shù)據(jù)包,如果是的話,再繼續(xù)本發(fā)明后續(xù)的流程,如果不是的話,則控制器會(huì)按照現(xiàn)有技術(shù)中的方式處理第三數(shù)據(jù)包。
另外,本發(fā)明實(shí)施例中,在控制器判斷該第三數(shù)據(jù)包是否是IP數(shù)據(jù)包之后,如果確定第三數(shù)據(jù)包是IP數(shù)據(jù)包,則可以繼續(xù)判斷第三數(shù)據(jù)包在其傳輸路徑中所涉及到的操作是否只有轉(zhuǎn)發(fā)操作,如果是的話,則繼續(xù)本發(fā)明后續(xù)的流程,如果不是的話,則控制器會(huì)按照現(xiàn)有技術(shù)中的方式處理第三數(shù)據(jù)包。因?yàn)橐粋€(gè)數(shù)據(jù)包的傳輸路徑所涉及到的各交換機(jī)可能對(duì)該數(shù)據(jù)包進(jìn)行多種不同的操作,例如可能都是轉(zhuǎn)發(fā)操作,或者可能有一些交換機(jī)會(huì)對(duì)數(shù)據(jù)包進(jìn)行數(shù)據(jù)修改操作,或者有一些交換機(jī)可能會(huì)丟棄數(shù)據(jù)包,等等,而若要應(yīng)用本發(fā)明實(shí)施例中的方法,需要每個(gè)交換機(jī)都只能對(duì)該數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)操作。
若第三數(shù)據(jù)包在其傳輸路徑中所涉及到的操作只有轉(zhuǎn)發(fā)操作,則,控制器可以修改第三數(shù)據(jù)包,即將該傳輸路徑所涉及到的每個(gè)交換機(jī)的路由信息均添加到第三數(shù)據(jù)包中,其中,對(duì)第三數(shù)據(jù)包里面原本攜帶的數(shù)據(jù)不作改動(dòng),相當(dāng)于增加了第三數(shù)據(jù)包的數(shù)據(jù)量。本發(fā)明實(shí)施例中將修改后的第三數(shù)據(jù)包稱為第 四數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,第三數(shù)據(jù)包為IP數(shù)據(jù)包;將傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到第三數(shù)據(jù)包中,包括:
將各交換機(jī)的路由信息添加到第三數(shù)據(jù)包的選項(xiàng)字段中;或
將各交換機(jī)的路由信息添加到第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及將各交換機(jī)的路由信息的總長度添加到第三數(shù)據(jù)包的選項(xiàng)字段中。
即,交換機(jī)的路由信息可以攜帶在第三數(shù)據(jù)包的選項(xiàng)字段中,因?yàn)檫x項(xiàng)字段一般都是備用字段,將交換機(jī)的路由信息添加在選項(xiàng)字段中,不會(huì)影響到第三數(shù)據(jù)包所攜帶的正常數(shù)據(jù)。
或者,交換機(jī)的路由信息也可以攜帶在第三數(shù)據(jù)包的數(shù)據(jù)字段中,只將各交換機(jī)的路由信息的總長度添加到第三數(shù)據(jù)包的選項(xiàng)字段中。因?yàn)閷?duì)于IP數(shù)據(jù)包來說,選項(xiàng)字段的長度一般都會(huì)受到IP包頭的限制,即選項(xiàng)字段的長度是有限的,所能夠攜帶的路由信息也就是有限的。如果一個(gè)數(shù)據(jù)包的傳輸路徑比較長,所涉及到的交換機(jī)比較多,那么優(yōu)選的,可以將各交換機(jī)的路由信息添加到該數(shù)據(jù)包的數(shù)據(jù)字段中,這樣可以攜帶的信息量比較多。
本發(fā)明實(shí)施例中,若要將交換機(jī)的路由信息攜帶在第三數(shù)據(jù)包的數(shù)據(jù)字段中,則第三數(shù)據(jù)包的數(shù)據(jù)字段中會(huì)攜帶交換機(jī)的路由信息和第三數(shù)據(jù)包中的原始數(shù)據(jù),具體交換機(jī)的路由信息是攜帶在第三數(shù)據(jù)包的數(shù)據(jù)字段中的哪個(gè)位置,可以根據(jù)協(xié)議或標(biāo)準(zhǔn)而定,或者也可以由控制器和交換機(jī)事先商定,本發(fā)明不作限制。
一般對(duì)于IP數(shù)據(jù)包來說,如果沒有復(fù)用選項(xiàng)字段,即如果選項(xiàng)字段沒有攜帶任何內(nèi)容,或者數(shù)據(jù)包中沒有包括選項(xiàng)字段,那么IP數(shù)據(jù)包的包頭的長度是固定的,而如果選項(xiàng)字段中攜帶有信息,則IP數(shù)據(jù)包的包頭的長度會(huì)比固定長度要長,因此,交換機(jī)根據(jù)接收到的數(shù)據(jù)包的包頭的長度就可以確定該數(shù)據(jù)包的選項(xiàng)字段中是否攜帶有信息,即,交換機(jī)根據(jù)接收到的數(shù)據(jù)包的包頭的長度就可以確定是否復(fù)用了該數(shù)據(jù)包的選項(xiàng)字段,即可以確定該數(shù)據(jù)包的選 項(xiàng)字段中是否攜帶有交換機(jī)的路由信息,或者可以確定該數(shù)據(jù)包的選項(xiàng)字段中是否攜帶有交換機(jī)的路由信息的總長度,而相應(yīng)的,若該數(shù)據(jù)包的選項(xiàng)字段中攜帶有交換機(jī)的路由信息的總長度,自然該數(shù)據(jù)包的數(shù)據(jù)字段中也就攜帶有交換機(jī)的路由信息。
可選的,本發(fā)明實(shí)施例中,
交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息;或
交換機(jī)的路由信息包括交換機(jī)的出端口信息。
本發(fā)明實(shí)施例中,交換機(jī)的標(biāo)識(shí)信息可以是指交換機(jī)的身份信息,例如是交換機(jī)的ID(Identity,身份標(biāo)識(shí)號(hào)),或者也可以是指其他的、能夠用于唯一標(biāo)識(shí)一個(gè)交換機(jī)的信息。
在將第三數(shù)據(jù)包修改完畢后,控制器自然需要重新計(jì)算修改后的第三數(shù)據(jù)包的包頭,例如第三數(shù)據(jù)包為IP數(shù)據(jù)包,則控制器相當(dāng)于重新計(jì)算IP數(shù)據(jù)包的包頭,具體的計(jì)算過程可參考現(xiàn)有技術(shù)。在計(jì)算完畢后,控制器根據(jù)重新計(jì)算的包頭重新封裝修改后的第三數(shù)據(jù)包,得到第四數(shù)據(jù)包。
控制器在得到第四數(shù)據(jù)包后,一般需要將第四數(shù)據(jù)包進(jìn)一步封裝,以將其封裝為packet_out消息,本發(fā)明實(shí)施例中將攜帶了第四數(shù)據(jù)包的packet_out消息稱為第三消息。因?yàn)閜acket_in消息和packet_out消息是控制器和交換機(jī)之間比較常用的消息格式,因此在傳輸數(shù)據(jù)包時(shí)一般也要將數(shù)據(jù)包進(jìn)行封裝后傳輸。
具體的,packet_out消息的格式可以參考圖4,圖4以交換機(jī)的路由信息包括交換機(jī)的身份信息以及交換機(jī)的出端口信息為例。
圖4左邊的表格表示各交換機(jī)的路由信息,例如左邊的表格中,每個(gè)格子代表32位,交換機(jī)的身份信息(表格中以Dpid ID表示)為64位,則在左邊的表格中,一個(gè)交換機(jī)的身份信息就需要占用兩個(gè)格子,而交換機(jī)的出端口信息(表格中以Port(端口)表示)為32位,則在左邊的表格中,一個(gè)交換機(jī)的出端口信息只需要占用一個(gè)格子。另外,在交換機(jī)的路由信息中可以只包括 交換機(jī)的出端口信息,而不包括交換機(jī)的入端口信息,這是因?yàn)榻粨Q機(jī)之間的連接方式是固定的,上一個(gè)交換機(jī)的出端口確定后,下一個(gè)交換機(jī)的入端口自然是唯一確定的,因此為了盡量減少第三數(shù)據(jù)包的數(shù)據(jù)量,可以無需攜帶交換機(jī)的入端口信息。
圖4中右邊上面的三個(gè)字段表示packet_out(一種消息格式)消息的格式。
packet_out消息包括packet_out包頭、攜帶數(shù)據(jù)包(Data)、以及Actions(動(dòng)作)(Output Port2(出端口2))三個(gè)字段。
packet_out包頭一般包括有header(頭)字段、buffer id(緩沖ID)字段、in_port(輸入端口)字段、actions_len(動(dòng)作長度)字段、以及pad(填充)字段等。其中,header中攜帶的是openflow包頭,buffer id攜帶的是由datapath(數(shù)據(jù)路徑)分配的ID,in_port字段攜帶的是數(shù)據(jù)包的輸入端口信息,actions_len字段攜帶的是action的長度信息(一般用字節(jié)(byte)數(shù)表示),pad為填充字段。
攜帶數(shù)據(jù)包部分,這里以攜帶的是第四數(shù)據(jù)包為例,第四數(shù)據(jù)包的格式可參考圖4中右邊的下半部分。
Actions部分一般攜帶的是數(shù)據(jù)包執(zhí)行的action列表,例如可以用于指示該packet_out消息從控制器的哪個(gè)端口輸出,例如圖4中就以從控制器的出端口2輸出為例。
圖4右邊的下半部分,就是第四數(shù)據(jù)包的格式。在第四數(shù)據(jù)包中,
版本字段的用于記錄數(shù)據(jù)報(bào)文具體符合哪一個(gè)版本的協(xié)議。
長度字段的用于指明第四數(shù)據(jù)包的包頭的長度
TOS(type of service,服務(wù)類型)字段一共包含8個(gè)比特,前3個(gè)比特表示優(yōu)先級(jí),第4個(gè)比特表示要求有更低的時(shí)延,第5個(gè)比特表示要求有更高的吞吐量,第6個(gè)比特表示要求更高的可靠性,第7個(gè)比特表示選擇價(jià)格更低廉的路由,最后一個(gè)比特暫時(shí)未用。
總長度字段包括第四數(shù)據(jù)包的包頭的長度和攜帶的數(shù)據(jù)的長度,最大長度 為216=65536字節(jié)。
左邊的分段標(biāo)識(shí)字段的用于數(shù)據(jù)分段,一個(gè)數(shù)據(jù)包在傳輸過程中可能分成若干段,分段標(biāo)識(shí)字段中攜帶的分段標(biāo)識(shí)符可以用于區(qū)分某個(gè)分段屬于某個(gè)報(bào)文,一個(gè)數(shù)據(jù)包的所有分段都具有相同的分段標(biāo)識(shí)符。
中間的標(biāo)識(shí)字段共包括三個(gè)比特,第一個(gè)比特?zé)o意義,第二個(gè)比特位稱為DF,當(dāng)DF為1時(shí)表示不分段,當(dāng)DF為0時(shí)表示允許分段。第三個(gè)比特位稱為MF,表示后面還有一個(gè)分段。且,除了最后一個(gè)分段之外,其他所有分段的MF均置為1。
片偏移字段的用于指明此分段在當(dāng)前數(shù)據(jù)包中的位置。
生存周期字段是用于限定分段生存期的計(jì)數(shù)器,當(dāng)該字段為0時(shí)則該分段被拋棄。時(shí)間單位為秒。
協(xié)議字段的用于指明傳輸此數(shù)據(jù)包的過程屬于哪一種傳送過程。
頭部校驗(yàn)和字段攜帶的是校驗(yàn)頭部的校驗(yàn)和。
源地址字段中攜帶的是第四數(shù)據(jù)包的源地址,也即第三數(shù)據(jù)包的源地址。
目的地址字段中攜帶的是第四數(shù)據(jù)包要發(fā)送到的目的地址,也即第三數(shù)據(jù)包的目的地址。
圖4是以將交換機(jī)的路由信息均攜帶在選項(xiàng)字段中為例,即,圖4中左邊表格所示的部分均要添加在右邊的選項(xiàng)字段中。
數(shù)據(jù)字段中攜帶的是第三數(shù)據(jù)包中原本攜帶的數(shù)據(jù)。
控制器在得到第二消息后,可以將第二消息下發(fā)給傳輸路徑中的第一個(gè)交換機(jī)。
在步驟301中介紹了,是由一個(gè)交換機(jī)(例如將其稱為交換機(jī)1)首先接收到第三數(shù)據(jù)包,交換機(jī)1由于在本地未查詢到與第三數(shù)據(jù)包對(duì)應(yīng)的流表,才將第三數(shù)據(jù)包發(fā)送給控制器,那么,控制器在計(jì)算第三數(shù)據(jù)包的傳輸路徑時(shí),一般都會(huì)將該交換機(jī)1設(shè)置為第三數(shù)據(jù)包的傳輸路徑中的第一個(gè)交換機(jī),即,控制器會(huì)將攜帶有第四數(shù)據(jù)包的packet_out消息下發(fā)給交換機(jī)1。
第四數(shù)據(jù)包會(huì)依次傳輸至第四數(shù)據(jù)包的傳輸路徑所對(duì)應(yīng)的每個(gè)交換機(jī),相應(yīng)的交換機(jī)在收到第四數(shù)據(jù)包后,都會(huì)根據(jù)其中攜帶的自身的路由信息來生成相應(yīng)的、與第四數(shù)據(jù)包對(duì)應(yīng)的流表。這樣,無需控制器分別將流表下發(fā)給對(duì)應(yīng)的交換機(jī),交換機(jī)都可以直接根據(jù)接收的數(shù)據(jù)包生成相應(yīng)的流表,減少了控制器的工作量,同時(shí),控制器由于無需下發(fā)大量的流表,而只需下發(fā)一個(gè)數(shù)據(jù)包即可,極大地減少了需要傳輸?shù)臄?shù)據(jù)包的數(shù)量,盡量避免控制器與交換機(jī)之間的通信通道被阻塞,保證通信的正常進(jìn)行。
本發(fā)明實(shí)施例中,若圖1流程中的交換機(jī)接收的第一消息來自于控制器,則如前所述的第一數(shù)據(jù)包與第四數(shù)據(jù)包為同一數(shù)據(jù)包,而若該交換機(jī)接收的第一消息來自于另一個(gè)交換機(jī),則第一數(shù)據(jù)包與第四數(shù)據(jù)包嚴(yán)格來說不是同一數(shù)據(jù)包,但第一數(shù)據(jù)包和第四數(shù)據(jù)包中所攜帶的原始的數(shù)據(jù)是相同的,只是第一數(shù)據(jù)包和第四數(shù)據(jù)包中攜帶的交換機(jī)的路由信息可能不同。
以下結(jié)合附圖介紹本發(fā)明實(shí)施例中的設(shè)備。
請(qǐng)參見圖5,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種交換機(jī),所述交換機(jī)可以是如前所述的交換機(jī)。所述交換機(jī)可以包括接收模塊501、獲取模塊502、第一構(gòu)造模塊503和發(fā)送模塊504。
接收模塊501,用于接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
獲取模塊502,用于從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息,所述第二路由信息是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;
第一構(gòu)造模塊503,用于根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;
發(fā)送模塊504,用于根據(jù)所述第一路由信息向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,所述第一數(shù)據(jù)包為IP數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第一數(shù)據(jù)包為IP數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及所述傳輸路徑的總長度攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第一路由信息包括所述交換機(jī)的標(biāo)識(shí)信息,以及所述交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,所述第一路由信息包括所述交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,所述交換機(jī)還包括第二構(gòu)造模塊,用于:
在獲取模塊502從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑之后,根據(jù)所述第一路由信息構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表。
請(qǐng)參見圖6,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種控制器,所述控制器可以包括接收模塊601、確定模塊602和構(gòu)造模塊603。
接收模塊601,用于接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包;
確定模塊602,用于確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;
構(gòu)造模塊603,用于根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并向所述交換機(jī)發(fā)送所述第三消息。
可選的,本發(fā)明實(shí)施例中,所述第三數(shù)據(jù)包為IP數(shù)據(jù)包;確定模塊602用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第三數(shù)據(jù)包為IP數(shù)據(jù)包;確定模塊602用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù) 包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及,將所述各交換機(jī)的路由信息的總長度添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,所述交換機(jī)的路由信息包括交換機(jī)的出端口信息。
請(qǐng)參見圖7,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種交換機(jī),所述交換機(jī)可以是如前所述的交換機(jī)。所述交換機(jī)可以包括存儲(chǔ)器701、處理器702和收發(fā)器703。其中,存儲(chǔ)器701和收發(fā)器703分別與處理器702相連。收發(fā)器703可以是一個(gè)整體模塊,該模塊既可以發(fā)數(shù)據(jù)也可以接收數(shù)據(jù),或者,收發(fā)器703也可以包括接收器和發(fā)送器兩部分,對(duì)于收發(fā)器703具體的結(jié)構(gòu)本發(fā)明不作限制。
存儲(chǔ)器701,用于存儲(chǔ)處理器702執(zhí)行任務(wù)所需的指令;
收發(fā)器703,用于接收第一消息,所述第一消息中包含第一數(shù)據(jù)包;
處理器702,用于從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑,所述傳輸路徑包括第一路由信息和第二路由信息,其中,所述第一路由信息是用于所述交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息,所述第二路由信息是用于其他交換機(jī)構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表的信息;根據(jù)所述第一數(shù)據(jù)包和所述第二路由信息構(gòu)造第二數(shù)據(jù)包;及,根據(jù)所述第一路由信息,通過收發(fā)器703向所述其他交換機(jī)轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
可選的,本發(fā)明實(shí)施例中,所述第一數(shù)據(jù)包為IP數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第一數(shù)據(jù)包為IP數(shù)據(jù)包;
所述傳輸路徑攜帶在所述第一數(shù)據(jù)包的數(shù)據(jù)字段中,以及所述傳輸路徑的總長度攜帶在所述第一數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第一路由信息包括所述交換機(jī)的標(biāo)識(shí)信息,以及所述交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,所述第一路由信息包括所述交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,處理器702還用于:
在從所述第一數(shù)據(jù)包獲取所述第一數(shù)據(jù)包的傳輸路徑之后,根據(jù)所述第一路由信息構(gòu)造轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包所需要的流表。
請(qǐng)參見圖8,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種控制器,所述控制器可以包括存儲(chǔ)器801、處理器802和收發(fā)器803,其中,存儲(chǔ)器801和收發(fā)器803分別與處理器802相連。收發(fā)器803可以是一個(gè)整體模塊,該模塊既可以發(fā)數(shù)據(jù)也可以接收數(shù)據(jù),或者,收發(fā)器803也可以包括接收器和發(fā)送器兩部分,對(duì)于收發(fā)器803具體的結(jié)構(gòu)本發(fā)明不作限制。
存儲(chǔ)器801,用于存儲(chǔ)處理器802執(zhí)行任務(wù)所需的指令;
收發(fā)器803,用于接收交換機(jī)發(fā)送的第二消息,所述第二消息中包含待傳輸?shù)牡谌龜?shù)據(jù)包;
處理器802,用于執(zhí)行所述指令,確定所述第三數(shù)據(jù)包的傳輸路徑,并將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,形成第四數(shù)據(jù)包;以及,根據(jù)所述第四數(shù)據(jù)包構(gòu)造第三消息,并通過收發(fā)器803向所述交換機(jī)發(fā)送所述第三消息。
可選的,本發(fā)明實(shí)施例中,所述第三數(shù)據(jù)包為IP數(shù)據(jù)包;處理器802用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述第三數(shù)據(jù)包為IP數(shù)據(jù)包;處理器802用于將所述傳輸路徑所涉及到的各交換機(jī)的路由信息均添加到所述第三數(shù)據(jù)包中,具體為:
將所述各交換機(jī)的路由信息添加到所述第三數(shù)據(jù)包的數(shù)據(jù)字段中,以及將所述各交換機(jī)的路由信息的總長度添加到所述第三數(shù)據(jù)包的選項(xiàng)字段中。
可選的,本發(fā)明實(shí)施例中,所述交換機(jī)的路由信息包括交換機(jī)的標(biāo)識(shí)信息,以及交換機(jī)的出端口信息。
可選的,本發(fā)明實(shí)施例中,所述交換機(jī)的路由信息包括交換機(jī)的出端口信息。
本發(fā)明實(shí)施例中,交換機(jī)在接收到攜帶第一數(shù)據(jù)包的第一消息時(shí),可以從中獲取第一數(shù)據(jù)包的傳輸路徑,交換機(jī)可以根據(jù)其中的第一路由信息構(gòu)造轉(zhuǎn)發(fā)第一數(shù)據(jù)包所需的流表,并將剩余的路由信息繼續(xù)傳輸給下一個(gè)交換機(jī),這樣,該數(shù)據(jù)包的傳輸路徑上的各交換機(jī)在接到該數(shù)據(jù)包時(shí)都可以根據(jù)該數(shù)據(jù)包生成對(duì)應(yīng)的流表,從而控制器只需向一個(gè)交換機(jī)傳輸數(shù)據(jù)包,無需向每個(gè)交換機(jī)下發(fā)流表,極大地減少了控制器所需要傳輸?shù)臄?shù)據(jù)量,并且控制器也無需生成多個(gè)流表,而只是將用于生成各流表的信息添加在該數(shù)據(jù)包中發(fā)送即可,減輕了控制器的負(fù)擔(dān)。各個(gè)交換機(jī)在接收到該數(shù)據(jù)包時(shí)就可以根據(jù)該數(shù)據(jù)包生成對(duì)應(yīng)的流表,并且,該數(shù)據(jù)包本身所攜帶的數(shù)據(jù)也得到了同步傳輸,相對(duì)于現(xiàn)有技術(shù)中要先下發(fā)流表然后再傳輸數(shù)據(jù)的方案來說,本發(fā)明實(shí)施例中的方案也提高了傳輸效率以及減少了需要傳輸?shù)臄?shù)據(jù)包的數(shù)量,節(jié)省系統(tǒng)資源。
另外,交換機(jī)和控制器之間的通信通道,即Secure Channel,的帶寬相對(duì)有限,一旦出現(xiàn)交換機(jī)大量上報(bào)請(qǐng)求、控制器大量下發(fā)流表等的大量數(shù)據(jù)流傳輸情況,則Secure Channel的可用帶寬可能會(huì)急速減小,甚至Secure Channel可能會(huì)被阻塞,造成Secure Channel鏈路中斷,甚至完全癱瘓,影響到正常數(shù)據(jù)的傳輸。在采用本發(fā)明實(shí)施例中的技術(shù)方案后,控制器只需向一個(gè)交換機(jī)傳輸數(shù)據(jù)包,無需向每個(gè)交換機(jī)下發(fā)流表,減少了需要傳輸?shù)臄?shù)據(jù)量,也就節(jié)省了Secure Channel的帶寬資源,盡量避免Secure Channel出現(xiàn)阻塞現(xiàn)象,保證數(shù)據(jù)的正常傳輸。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述 各功能單元的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或processor(處理器)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、ROM(Read-Only Memory,只讀存儲(chǔ)器)、RAM(Random Access Memory,隨機(jī)存取存儲(chǔ)器)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行了詳細(xì)介紹,但以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想,不應(yīng)理解為對(duì)本發(fā)明的限制。本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。