一種mtu探測(cè)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種MTU探測(cè)方法及裝置。
【背景技術(shù)】
[0002]在VXLAN(Virtual Extensible Local Area Network,虛擬擴(kuò)展局域網(wǎng))中,源主機(jī)和目標(biāo)主機(jī)可利用由兩端的虛擬轉(zhuǎn)發(fā)設(shè)備搭建的隧道進(jìn)行數(shù)據(jù)報(bào)文交互,該隧道中存在中間轉(zhuǎn)發(fā)設(shè)備。由于VXLAN協(xié)議不允許將數(shù)據(jù)報(bào)文分片,因此當(dāng)源主機(jī)向目標(biāo)主機(jī)發(fā)送數(shù)據(jù)報(bào)文時(shí),若該數(shù)據(jù)報(bào)文的長(zhǎng)度大于中間轉(zhuǎn)發(fā)設(shè)備的MTU (Maximum Transmiss1n Unit,最大傳輸單元)值,則會(huì)導(dǎo)致該數(shù)據(jù)報(bào)文被中間轉(zhuǎn)發(fā)設(shè)備丟棄。因此源主機(jī)在發(fā)送數(shù)據(jù)報(bào)文前需要探測(cè)中間轉(zhuǎn)發(fā)設(shè)備的MTU值,再根據(jù)該MTU值調(diào)整發(fā)送數(shù)據(jù)報(bào)文的長(zhǎng)度,以使該數(shù)據(jù)報(bào)文能夠順利通過(guò)中間轉(zhuǎn)發(fā)設(shè)備。
[0003]然而在現(xiàn)有技術(shù)中,源端虛擬轉(zhuǎn)發(fā)設(shè)備在轉(zhuǎn)發(fā)源主機(jī)的MTU探測(cè)報(bào)文時(shí),會(huì)對(duì)該MTU探測(cè)報(bào)文添加VXLAN類型的封裝字段,將MTU探測(cè)報(bào)文的源地址改為源端虛擬轉(zhuǎn)發(fā)設(shè)備的地址,因此當(dāng)中間轉(zhuǎn)發(fā)設(shè)備反饋攜帶自身MTU值的差錯(cuò)報(bào)文時(shí),該差錯(cuò)報(bào)文會(huì)被轉(zhuǎn)發(fā)到源端虛擬轉(zhuǎn)發(fā)設(shè)備,而非源端虛擬機(jī)。因此導(dǎo)致源端虛擬機(jī)無(wú)法獲取到中間轉(zhuǎn)發(fā)設(shè)備的MTU值,從而影響源虛擬機(jī)上數(shù)據(jù)報(bào)文的正常發(fā)送。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種MTU探測(cè)方法及裝置來(lái)解決VXLAN中的源端虛擬機(jī)無(wú)法獲取中間轉(zhuǎn)發(fā)設(shè)備MTU值的問(wèn)題。
[0005]具體地,本發(fā)明是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
[0006]一種最大傳輸單元MTU探測(cè)方法,所述方法應(yīng)用于VXLAN中的SDN控制器,所述SDN控制器分別與源端虛擬轉(zhuǎn)發(fā)設(shè)備、目的端虛擬轉(zhuǎn)發(fā)設(shè)備相連,所述方法包括:
[0007]接收所述源端虛擬轉(zhuǎn)發(fā)設(shè)備上送的,由下掛于該源端虛擬轉(zhuǎn)發(fā)設(shè)備的虛擬機(jī)發(fā)送的第一 MTU探測(cè)報(bào)文;
[0008]對(duì)所述第一 MTU探測(cè)報(bào)文添加封裝字段,并將封裝后的第一 MTU探測(cè)報(bào)文發(fā)送至所述源端虛擬轉(zhuǎn)發(fā)設(shè)備,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備將所述封裝后的第一 MTU探測(cè)報(bào)文發(fā)送至所述目的端虛擬轉(zhuǎn)發(fā)設(shè)備;
[0009]向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)控制策略,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述中間轉(zhuǎn)發(fā)設(shè)備根據(jù)封裝后的第一 MTU探測(cè)報(bào)文反饋的第一差錯(cuò)報(bào)文時(shí),將所述第一差錯(cuò)報(bào)文上送到所述SDN控制器;
[0010]當(dāng)收到所述第一差錯(cuò)報(bào)文時(shí),根據(jù)所述第一差錯(cuò)報(bào)文計(jì)算所述中間轉(zhuǎn)發(fā)設(shè)備的實(shí)際MTU值;
[0011]將所述實(shí)際MTU值發(fā)送至所述虛擬機(jī)。
[0012]進(jìn)一步的,所述向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)控制策略,包括:
[0013]向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)包含匹配字段的第一流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備將符合所述匹配字段的所述第一差錯(cuò)報(bào)文上送到所述SDN控制器。
[0014]進(jìn)一步的,在接收所述源端虛擬轉(zhuǎn)發(fā)設(shè)備上送的所述第一 MTU探測(cè)報(bào)文后,所述方法還包括:
[0015]提取所述第一 MTU探測(cè)報(bào)文的報(bào)文信息;
[0016]根據(jù)所述報(bào)文信息生成第二流表;
[0017]所述向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)控制策略,還包括:
[0018]向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)所述第二流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述虛擬機(jī)發(fā)送的攜帶所述報(bào)文信息的第二 MTU探測(cè)報(bào)文時(shí),根據(jù)所述第二流表將所述第二 MTU探測(cè)報(bào)文轉(zhuǎn)發(fā)至所述目的端虛擬轉(zhuǎn)發(fā)設(shè)備。
[0019]進(jìn)一步的,所述將所述實(shí)際MTU值發(fā)送至所述虛擬機(jī),包括:
[0020]控制所述源端虛擬轉(zhuǎn)發(fā)設(shè)備刪除所述第二流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述虛擬機(jī)發(fā)送的攜帶所述報(bào)文信息的第三MTU探測(cè)報(bào)文時(shí),將所述第三MTU探測(cè)報(bào)文上送到所述SDN控制器;
[0021]獲取所述第三MTU探測(cè)報(bào)文中的指定字段;
[0022]將所述指定字段與所述實(shí)際MTU值添加至第二差錯(cuò)報(bào)文后,將所述第二差錯(cuò)報(bào)文發(fā)送至所述虛擬機(jī)。
[0023]進(jìn)一步的,所述根據(jù)所述第一差錯(cuò)報(bào)文計(jì)算所述實(shí)際MTU值,包括:
[0024]獲取所述第一差錯(cuò)報(bào)文中攜帶的所述中間轉(zhuǎn)發(fā)設(shè)備的原始MTU值;
[0025]用所述原始MTU值減去所述封裝字段的大小得到所述實(shí)際MTU值。
[0026]基于相同的構(gòu)思,本發(fā)明還提供一種MTU探測(cè)裝置,所述裝置應(yīng)用于VXLAN中的SDN控制器,所述SDN控制器連接多個(gè)虛擬轉(zhuǎn)發(fā)設(shè)備,所述SDN控制器分別與源端虛擬轉(zhuǎn)發(fā)設(shè)備、目的端虛擬轉(zhuǎn)發(fā)設(shè)備相連,所述裝置包括:
[0027]報(bào)文接收單元,用于接收所述源端虛擬轉(zhuǎn)發(fā)設(shè)備上送的,由下掛于該源端虛擬轉(zhuǎn)發(fā)設(shè)備的虛擬機(jī)發(fā)送的第一 MTU探測(cè)報(bào)文;
[0028]第一發(fā)送單元,用于對(duì)所述第一 MTU探測(cè)報(bào)文添加封裝字段,并將封裝后的第一MTU探測(cè)報(bào)文發(fā)送至所述源端虛擬轉(zhuǎn)發(fā)設(shè)備,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備將所述封裝后的第一 MTU探測(cè)報(bào)文發(fā)送至所述目的端虛擬轉(zhuǎn)發(fā)設(shè)備;
[0029]策略下發(fā)單元,用于向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)控制策略,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述中間轉(zhuǎn)發(fā)設(shè)備根據(jù)封裝后的第一 MTU探測(cè)報(bào)文反饋的第一差錯(cuò)報(bào)文時(shí),將所述第一差錯(cuò)報(bào)文上送到所述SDN控制器;
[0030]MTU計(jì)算單元,用于在收到所述第一差錯(cuò)報(bào)文時(shí),根據(jù)所述第一差錯(cuò)報(bào)文計(jì)算所述中間轉(zhuǎn)發(fā)設(shè)備的實(shí)際MTU值;
[0031]第二發(fā)送單元,用于將所述實(shí)際MTU值發(fā)送至所述虛擬機(jī)。
[0032]進(jìn)一步的,所述策略下發(fā)單元,具體用于向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)包含匹配字段的第一流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備將符合所述匹配字段的所述第一差錯(cuò)報(bào)文上送到所述SDN控制器。
[0033]進(jìn)一步的,所述裝置還包括:
[0034]信息提取單元,用于在接收所述源端虛擬轉(zhuǎn)發(fā)設(shè)備上送的所述第一 MTU探測(cè)報(bào)文后,提取所述第一 MTU探測(cè)報(bào)文的報(bào)文信息;
[0035]信息添加單元,用于根據(jù)所述報(bào)文信息生成第二流表;
[0036]所述策略下發(fā)單元,還用于向所述源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)所述第二流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述虛擬機(jī)發(fā)送的攜帶所述報(bào)文信息的第二 MTU探測(cè)報(bào)文時(shí),根據(jù)所述第二流表將所述第二 MTU探測(cè)報(bào)文轉(zhuǎn)發(fā)至所述目的端虛擬轉(zhuǎn)發(fā)設(shè)備。
[0037]進(jìn)一步的,所述第二發(fā)送單元,包括:
[0038]流表刪除子單元,用于控制所述源端虛擬轉(zhuǎn)發(fā)設(shè)備刪除所述第二流表,以使所述源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到所述虛擬機(jī)發(fā)送的攜帶所述報(bào)文信息的第三MTU探測(cè)報(bào)文時(shí),將所述第三MTU探測(cè)報(bào)文上送到所述SDN控制器;
[0039]字段獲取子單元,用于獲取所述第三MTU探測(cè)報(bào)文中的指定字段;
[0040]報(bào)文發(fā)送子單元,用于將所述指定字段與所述實(shí)際MTU值添加至第二差錯(cuò)報(bào)文后,將所述第二差錯(cuò)報(bào)文發(fā)送至所述虛擬機(jī)。
[0041]進(jìn)一步的,所述MTU計(jì)算單元,具體用于獲取所述第一差錯(cuò)報(bào)文中攜帶的所述中間轉(zhuǎn)發(fā)設(shè)備的原始MTU值;用所述原始MTU值減去所述封裝字段的大小得到所述實(shí)際MTU值。
[0042]由此可見(jiàn),本發(fā)明可以通過(guò)SDN控制器向源端虛擬轉(zhuǎn)發(fā)設(shè)備下發(fā)控制策略,使源端虛擬轉(zhuǎn)發(fā)設(shè)備在收到中間轉(zhuǎn)發(fā)設(shè)備反饋的第一差錯(cuò)報(bào)文時(shí),將第一差錯(cuò)報(bào)文上送到SDN控制器,以使SDN控制器根據(jù)第一差錯(cuò)報(bào)文計(jì)算中間轉(zhuǎn)發(fā)設(shè)備的實(shí)際MTU值,并將實(shí)際MTU值發(fā)送至源端虛擬機(jī)。因此,源端虛擬機(jī)可以獲取所述中間轉(zhuǎn)發(fā)設(shè)備的實(shí)際MTU值,從而保證數(shù)據(jù)報(bào)文的正常發(fā)送。
【附圖說(shuō)明】
[0043]圖1是本發(fā)明一種示例性實(shí)施方式中的VXLAN架構(gòu)圖;
[0044]圖2是本發(fā)明一種示例性實(shí)施方式中的MTU探測(cè)方法的處理流程圖;
[0045]圖3是本發(fā)明一種示例性實(shí)施方式中的MTU探測(cè)方法的交互流程圖;
[0046]圖4是本發(fā)明一種示例性實(shí)施方式中的差錯(cuò)報(bào)文格式示意圖;
[0047]圖5是本發(fā)明一種示例性實(shí)施方式中的MTU探測(cè)裝置所在的SDN控制器的硬件結(jié)構(gòu)圖;
[0048]圖6是本發(fā)明一種示例性實(shí)施方式中的MTU探測(cè)裝置的邏輯結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0049]請(qǐng)參見(jiàn)圖1,是本發(fā)明一種示例性實(shí)施方式中的VXLAN架構(gòu)圖,VXLAN中包括虛擬機(jī)VMl和VM2,以及分別位于主機(jī)兩端的虛擬轉(zhuǎn)發(fā)設(shè)備VSwitch (Virtual Switch,虛擬交換機(jī))I和VSwitch2。VSwitchl跨過(guò)中間轉(zhuǎn)發(fā)設(shè)備與VSwitch2架設(shè)隧道(如圖1中虛線所示),從而實(shí)現(xiàn)VMl和VM2的遠(yuǎn)距離通信。上述VXLAN中還設(shè)置有SDN(Software DefinedNetwork,軟件定義網(wǎng)絡(luò))架構(gòu),其