本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種虛擬端口創(chuàng)建方法及網(wǎng)絡(luò)系統(tǒng)。
背景技術(shù):
在軟件定義網(wǎng)絡(luò)(英文:Software Defined Network,簡稱:SDN)中很重要的兩個實體是虛擬交換機(jī)vSwitch跟控制器Controller。Controller在網(wǎng)絡(luò)中相當(dāng)于網(wǎng)絡(luò)管理員,可以知道網(wǎng)絡(luò)中所有的消息,可以給交換機(jī)下發(fā)指令。vSwitch就是一個實現(xiàn)Controller指令的實體,只不過這個交換機(jī)跟傳統(tǒng)的交換機(jī)不一樣,他的轉(zhuǎn)發(fā)規(guī)則由流表指定,而流表由控制器發(fā)送,vSwitch與Controller相連接是一個vSwitch主動連接的行為,vSwitch通過連接Controller的TCP:6633端口來創(chuàng)建連接通道,當(dāng)Controller與vSwitch成功連接后,可以對vSwitch進(jìn)行流表操作。
當(dāng)前SDN技術(shù)要實現(xiàn)虛擬端口的創(chuàng)建、刪除或者修改,需要Controller通過socket連接vSwitch的ofdb進(jìn)程來操作,與openflow協(xié)議相隔離,SDN真正控制vSwitch需要創(chuàng)建兩個控制通道(openflow協(xié)議和ofdb通道),Controller連接通道冗余。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種虛擬端口創(chuàng)建方法及網(wǎng)絡(luò)系統(tǒng),用以解決現(xiàn)有技術(shù)中通過ofdb進(jìn)程來操作虛擬端口導(dǎo)致連接通道冗余的問題。
其具體的技術(shù)方案如下:
一種虛擬端口創(chuàng)建方法,所述方法包括:
虛擬交換機(jī)通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;
判定所述控制信息的消息類型是否為指定消息類型;
若是,則根據(jù)所述控制信息創(chuàng)建虛擬端口。
可選的,在通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息之前,所述方法還包括:
獲取各個指定消息類型;
建立各個指定消息類型與各自對應(yīng)的操作指令之間的對應(yīng)關(guān)系。
可選的,判定所述控制信息的消息類型是否為指定消息類型,包括:
確定所述控制消息的消息類型;
將所述消息類型在預(yù)存的各個指定消息類型中匹配,判定所述消息類型是否為所述指定消息類型。
一種虛擬端口創(chuàng)建方法,所述方法包括:
控制器接收虛擬端口創(chuàng)建指令;
基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;
將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī)。
可選的,在將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī)之后,所述方法還包括:
在接收到刪除所述虛擬端口的刪除指令時,生成具有指定消息類型的指示信息;
將所述指示信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī),以使所述虛擬交換機(jī)刪除所述虛擬端口。
一種虛擬交換機(jī),包括:
接收模塊,用于通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;
處理模塊,用于判定所述控制信息的消息類型是否為指定消息類型;若存在,則根據(jù)所述控制信息創(chuàng)建虛擬端口。
可選的,所述接收模塊,還用于獲取各個指定消息類型;
所述處理模塊,還用于建立各個指定消息類型與各自對應(yīng)的操作指令之間的對應(yīng)關(guān)系。
一種控制器,包括:
接收單元,用于接收虛擬端口創(chuàng)建指令;
處理單元,用于基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;
發(fā)送單元,用于將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī)。
可選的,所述處理單元,還用于在接收到刪除所述虛擬端口的刪除指令時,生成具有指定消息類型的指示信息;
所述發(fā)送單元,還用于將所述指示信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī),以使所述虛擬交換機(jī)刪除所述虛擬端口。
一種網(wǎng)絡(luò)系統(tǒng),包括:
控制器,用于接收虛擬端口創(chuàng)建指令;基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī);
虛擬交換機(jī),用于通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;判定所述控制信息的消息類型是否為指定消息類型;若存在,則根據(jù)所述控制信息創(chuàng)建虛擬端口。
在本發(fā)明所提供的技術(shù)方案中,對虛擬交換機(jī)的虛擬端口創(chuàng)建、修改以及刪除的操作指令通過指定消息類型的控制信息來指示,并且可以通過openflow協(xié)議通道來傳輸,這樣就避免使用ofdb通道來進(jìn)行虛擬端口的操作,減少了控制器與虛擬交換機(jī)之間的通道冗余。
附圖說明
圖1為本發(fā)明實施例中一種虛擬端口創(chuàng)建方法的流程圖之一;
圖2為本發(fā)明實施例中一種虛擬端口創(chuàng)建方法的流程圖之二;
圖3為本發(fā)明實施例中一種虛擬交換機(jī)結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例中一種控制器結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例中一種網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
在本發(fā)明實施例所提供的方法中,在openflow協(xié)議下定義了一個指定消息類型,該指定消息類型用于指示虛擬交換機(jī)創(chuàng)建/修改/刪除虛擬端口。這樣控制器可以通過openflow協(xié)議通道將具有指定消息類型的控制信息,從而使得虛擬交換機(jī)可以根據(jù)該控制信息進(jìn)行虛擬端口的創(chuàng)建/修改/刪除虛擬。
下面通過附圖以及具體實施例對本發(fā)明技術(shù)方案做詳細(xì)的說明,應(yīng)當(dāng)理解,本發(fā)明實施例以及實施例中的具體技術(shù)特征只是對本發(fā)明技術(shù)方案的說明,而不是限定,在不沖突的情況下,本發(fā)明實施例以及實施例中的具體技術(shù)特征可以相互組合。
實施例一:
如圖1所示為本發(fā)明實施例中一種虛擬端口創(chuàng)建方法的流程圖,該方法包括:
S101,虛擬交換機(jī)通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;
S102,判定所述控制信息的消息類型是否為指定消息類型;
若是,則執(zhí)行S103,若否,則執(zhí)行S104。
S103,根據(jù)所述控制信息創(chuàng)建虛擬端口。
S104,直接響應(yīng)該控制信息。
具體來講,實施例一所提供的方法應(yīng)用到SDN的虛擬交換機(jī)中,在SDN中,控制器通過下發(fā)指令到虛擬交換機(jī),從而控制虛擬交換機(jī)進(jìn)行對應(yīng)的操作,當(dāng)前主要會使用到的消息類型為:OFPT_HELLO、OFPT_ERROR、OFPT_FEATURES、OFPT_PACKET_IN、OFPT_PACKET_OUT、OFPT_FLOW_MOD;
OFPT_HELLO:主要用于Controller與vSwitch進(jìn)行連接后,定時的檢測控制通道是否正常。
OFPT_ERROR:主要用于vSwitch上報錯誤信息給Controller。
OFPT_FEATURES:主要用于Controller去獲取vSwitch當(dāng)前的功能列表。
OFPT_PACKET_IN:主要用于將vSwitch收到的報文復(fù)制一份給Controller。
OFPT_PACKET_OUT:主要用于Controller構(gòu)造一個報文使vSwitch從某個虛擬接口發(fā)出去。
OFPT_FLOW_MOD:主要用于Controller給vSwitch下發(fā)一個流表策略,包括添加流表,刪除流表,和修改流表。
在一次通信中,只是一種消息類型的控制信息會發(fā)送給虛擬交換機(jī),虛擬交換機(jī)接收到控制信息之后,判斷消息類型來做出不同的響應(yīng)。
基于上述的openflow協(xié)議原理,本發(fā)明實施例中定義了一種消息類型,具體來講該消息類型可以是OFPT_VPORT_MOD,該消息類型用于指示虛擬交換機(jī)創(chuàng)建或者修改或者刪除虛擬端口。
因此,為了使得虛擬交換機(jī)能夠按照該消息類型來執(zhí)行對應(yīng)操作,所以虛擬交換機(jī)獲取到各個指定消息類型時,建立各個指定消息類型與各自對應(yīng)的操作指令之間的對應(yīng)關(guān)系。
比如說,虛擬交換機(jī)對OFPT_VPORT_MOD的響應(yīng),就需要在虛擬機(jī)交換機(jī)中設(shè)置對應(yīng)指定流程,也就是接收到OFPT_VPORT_MOD之后的處理流程。這樣保證虛擬交換機(jī)能夠準(zhǔn)確的對OFPT_VPORT_MOD進(jìn)行響應(yīng)。
在完成上述的設(shè)置之后,虛擬交換機(jī)在接收到通過openflow協(xié)議通道傳輸?shù)目刂菩畔r,虛擬機(jī)交換機(jī)將對該控制信息進(jìn)行消息類型的確定,也就是將該控制消息的消息類型與預(yù)存的各個指定消息類型進(jìn)行匹配。從而判定控制消息對應(yīng)的消息類型。
比如說,在上述的內(nèi)容中,消息類型包含了OFPT_HELLO、OFPT_ERROR、OFPT_FEATURES、OFPT_PACKET_IN、OFPT_PACKET_OUT、OFPT_FLOW_MOD、OFPT_VPORT_MOD。在虛擬交換機(jī)接收到控制消息之后,就確定該控制消息對應(yīng)的消息類型。
若是該控制消息的消息類型為OFPT_VPORT_MOD時,虛擬交換機(jī)將執(zhí)行創(chuàng)建虛擬端口的操作。
當(dāng)然,該OFPT_VPORT_MOD的消息類型還可以指示虛擬交換機(jī)執(zhí)行修改或者刪除虛擬端口的操作。具體為何種操作在控制消息中有具體的標(biāo)識,此處就不再贅述。
綜上來講,在本發(fā)明實施例中,對虛擬交換機(jī)的虛擬端口創(chuàng)建、修改以及刪除的操作指令通過指定消息類型的控制信息來指示,并且可以通過openflow協(xié)議通道來傳輸,這樣就避免使用ofdb通道來進(jìn)行虛擬端口的操作,減少了控制器與虛擬交換機(jī)之間的通道冗余。
實施例二:
本發(fā)明實施例中還提供了一種虛擬端口創(chuàng)建方法,具體如圖2所示,該方法包括:
S201,接收虛擬端口創(chuàng)建指令;
S202,基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;
S203,將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī)。
具體來講,實施例二所提供的方法應(yīng)用到SDN的控制器中,在SDN中,控制器通過下發(fā)指令到虛擬交換機(jī),從而控制虛擬交換機(jī)進(jìn)行對應(yīng)的操作,當(dāng)前主要會使用到的消息類型為:OFPT_HELLO、OFPT_ERROR、OFPT_FEATURES、OFPT_PACKET_IN、OFPT_PACKET_OUT、OFPT_FLOW_MOD。
在一次通信中,只是一種消息類型的控制信息會發(fā)送給虛擬交換機(jī),虛擬交換機(jī)接收到控制信息之后,判斷消息類型來做出不同的響應(yīng)。
基于上述的openflow協(xié)議原理,本發(fā)明實施例中定義了一種消息類型,具體來講該消息類型可以是OFPT_VPORT_MOD,該消息類型用于指示虛擬交換機(jī)創(chuàng)建或者修改或者刪除虛擬端口。
因此,為了使得虛擬交換機(jī)能夠按照該消息類型來執(zhí)行對應(yīng)操作,所以虛擬交換機(jī)獲取到各個指定消息類型時,建立各個指定消息類型與各自對應(yīng)的操作指令之間的對應(yīng)關(guān)系。
比如說,虛擬交換機(jī)對OFPT_VPORT_MOD的響應(yīng),就需要在虛擬機(jī)交換機(jī)中設(shè)置對應(yīng)指定流程,也就是接收到OFPT_VPORT_MOD之后的處理流程。這樣保證虛擬交換機(jī)能夠準(zhǔn)確的對OFPT_VPORT_MOD進(jìn)行響應(yīng)。
在完成上述的設(shè)置之后,在控制器接收到虛擬端口創(chuàng)建指令之后,控制器將生成具有指定消息類型的控制信息。
具體來講,在本發(fā)明實施例中,由于定義虛擬端口的操作通過OFPT_VPORT_MOD消息類型來指示,所以控制將生成具有OFPT_VPORT_MOD消息類型的控制信息,并將該控制信息通過openflow協(xié)議下發(fā)至虛擬機(jī)。
虛擬交換機(jī)在接收到通過openflow協(xié)議通道傳輸?shù)目刂菩畔r,虛擬機(jī)交換機(jī)將對該控制信息進(jìn)行消息類型的確定,也就是將該控制消息的消息類型與預(yù)存的各個指定消息類型進(jìn)行匹配。從而判定控制消息對應(yīng)的消息類型。
比如說,在上述的內(nèi)容中,消息類型包含了OFPT_HELLO、OFPT_ERROR、OFPT_FEATURES、OFPT_PACKET_IN、OFPT_PACKET_OUT、OFPT_FLOW_MOD、OFPT_VPORT_MOD。在虛擬交換機(jī)接收到控制消息之后,就確定該控制消息對應(yīng)的消息類型。
若是該控制消息的消息類型為OFPT_VPORT_MOD時,虛擬交換機(jī)將執(zhí)行創(chuàng)建虛擬端口的操作。
當(dāng)然,該OFPT_VPORT_MOD的消息類型還可以指示虛擬交換機(jī)執(zhí)行修改或者刪除虛擬端口的操作。具體為何種操作在控制消息中有具體的標(biāo)識,此處就不再贅述。
綜上來講,在本發(fā)明實施例中,控制器對虛擬交換機(jī)的虛擬端口創(chuàng)建、修改以及刪除的操作指令通過指定消息類型的控制信息來指示,并且可以通過openflow協(xié)議通道來傳輸,這樣就避免使用ofdb通道來進(jìn)行虛擬端口的操作,減少了控制器與虛擬交換機(jī)之間的通道冗余。
實施例三:
對應(yīng)本發(fā)明實施例一中的一種虛擬端口創(chuàng)建方法,本發(fā)明實施例中還提供了一種虛擬交換機(jī),如圖3所示為本發(fā)明實施例中一種虛擬交換機(jī)的結(jié)構(gòu)示意圖,該虛擬交換機(jī)包括:
接收模塊301,用于通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;
處理模塊302,用于判定所述控制信息的消息類型是否為指定消息類型;若存在,則根據(jù)所述控制信息創(chuàng)建虛擬端口。
進(jìn)一步,在本發(fā)明實施例中,所述接收模塊301,還用于獲取各個指定消息類型;
所述處理模塊302,還用于建立各個指定消息類型與各自對應(yīng)的操作指令之間的對應(yīng)關(guān)系。
在實施例一中已經(jīng)對虛擬交換機(jī)的功能以及實現(xiàn)原理做了詳細(xì)的描述,此處就不再贅述。
實施例四:
對應(yīng)本發(fā)明實施例二中的一種虛擬端口創(chuàng)建方法,本發(fā)明實施例中還提供了一種控制器,如圖4所示為本發(fā)明實施例中一種控制器的結(jié)構(gòu)示意圖,該控制器包括:
接收單元401,用于接收虛擬端口創(chuàng)建指令;
處理單元402,用于基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;
發(fā)送單元403,用于將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī)。
進(jìn)一步,在本發(fā)明實施例中,所述處理單元402,還用于在接收到刪除所述虛擬端口的刪除指令時,生成具有指定消息類型的指示信息;
所述發(fā)送單元403,還用于將所述指示信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī),以使所述虛擬交換機(jī)刪除所述虛擬端口。
在實施例二中已經(jīng)對控制器的功能以及實現(xiàn)原理做了詳細(xì)的描述,此處就不再贅述。
實施例五:
本發(fā)明實施例中還提供了一種網(wǎng)絡(luò)系統(tǒng),如圖5所示為本發(fā)明實施例中一種網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)示意圖,該網(wǎng)絡(luò)系統(tǒng)包括:
控制器501,用于接收虛擬端口創(chuàng)建指令;基于所述創(chuàng)建指令,生成具有指定消息類型的控制信息;將所述控制信息通過openflow協(xié)議通道下發(fā)至虛擬交換機(jī);
虛擬交換機(jī)502,用于通過openflow協(xié)議通道,接收控制器下發(fā)的控制信息;判定所述控制信息的消息類型是否為指定消息類型;若存在,則根據(jù)所述控制信息創(chuàng)建虛擬端口。
在實施例一以及實施例二中已經(jīng)對虛擬交換機(jī)以及控制器的功能以及實現(xiàn)原理做了詳細(xì)的描述,此處就不再贅述。
盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的普通技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。