韓英賢
中國電信股份有限公司無錫分公司
無錫城域網啟動城域網虛擬化試點,引入vBRAS資源池規(guī)模承載小流量、大并發(fā)的ITMS業(yè)務。vBRAS資源池集中部署,將硬件BRAS承載的ITMS業(yè)務遷移至vBRAS,ITMS割接需寬帶接入網POP交換機(DCSW)通過VXLAN隧道將二層業(yè)務報文上送vBRAS。
某天,某局點覆蓋OLT的ITMS業(yè)務從上聯(lián)的硬件BRAS(國脈Ne40e、春申路M6000)割接到vBRAS后,部分終端(e8-C、天翼網關)TR069配置下發(fā)不成功,針對出現(xiàn)障礙的終端,ping大包(2000 bytes)不通。
由于障礙現(xiàn)象為對出現(xiàn)障礙的終端ping大包不通,初步判斷有網絡設備中繼端口的IP MTU值設置過小,導致VXLAN報文分片。
VXLAN(Virtual eXtensible Local Area Network,虛 擬 擴展局域網),是由IETF定義的NVO3(Network Virtualization over Layer 3)標準技術之一,采用L2 over L4(MAC-in-UDP)的報文封裝模式,將二層報文用三層協(xié)議進行封裝,可實現(xiàn)二層網絡在三層范圍內的擴展。VXLAN作為一種隧道技術,隧道的起始和終點為VTEP(VXLAN Tunnel End Point),VTEP對報文進行VXLAN隧道的封裝和解封裝;VXLAN可以將二層以太網幀封裝在VXLAN隧道中,因此可以實現(xiàn)跨三層的二層組網,組建大二層網絡。
VXLAN的報文格式如圖1所示。
圖1 VXLAN的報文格式
VXLAN報文是在原始二層以太網幀的外面加1個8字節(jié)的VXLAN頭,包括24比特的VNI字段,用于標識不同的用戶,實現(xiàn)用戶之間的隔離。之后再加UDP頭,這個UDP頭的目的端口固定為4789,源端口通過原始以太網幀哈希后獲得。在UDP外會加上IP頭,源地址為源Vtep地址、目的地址為目的Vtep地址。
根據標準,VXLAN報文不能進行分片處理,如三層網絡中的中間設備將VXLAN報文分片,Vtep會將分片后的報文丟棄。為了確保VXLAN報文不被中間設備分片處理,需要修改VXLAN隧道途經所有設備中繼端口的IP MTU值。
目前,城域網內VXLAN報文的最大報文尺寸1558 bytes,測算依據如下:
原始二層以太幀的IP負荷(包括IP報頭):1500 bytes
vlan頭(包括qinq):8 bytes
原始二層以太幀頭:14 bytes
vxlan頭:8 bytes
UDP頭:8 bytes
外層IP報頭:20 bytes
為確保VXLAN報文不被分片,IP MTU值需根據最大VXLAN報文的大小設置。城域網的中繼均為以太鏈路,以太端口的默認IP MTU值為1500 bytes。為確保VXLAN報文不分片,城域骨干網三層中繼端口的IP MTU均設置為1600 bytes。
由于障礙現(xiàn)象為ping大包不通,因此首先檢查VXLAN隧道途經設備端口的IP MTU值配置。
在寬帶接入網POP交換機與vBRAS之間建vxlan隧道,檢查沿途設備(包括POP交換機、硬件BRAS、CR、核心交換機、vBRAS)三層中繼端口的IP MTU值,均為1600 bytes,沒有問題,網絡拓撲如圖2所示。
圖2 網絡拓撲圖
由于只有部分終端不能下發(fā)配置,通過檢查障礙終端類型確定是否和終端型號有關。通過TR069網管服務器、終端MAC地址等信息,發(fā)現(xiàn)障礙終端均為友華,但僅部分友華終端不能下發(fā)配置。
由于之前已遷移50萬ITMS業(yè)務(POP交換機均上聯(lián)華為硬件BRAS),未發(fā)現(xiàn)此類問題。本次遷移涉及的硬件BRAS包括一臺中興M6000。因此先在M6000上關閉下聯(lián)POP交換機承載VXLAN報文的子接口,VXLAN報文均通過另1臺硬件BRAS Ne40e轉發(fā),障礙終端ping大包能通,下發(fā)配置正常。確定障礙點在M6000。同時,由于POP交換機雙上聯(lián)2臺硬件BRAS,通過Ne40e轉發(fā)的VXLAN報文正常,因此該障礙只影響部分終端。
根據維護經驗,對終端管理地址ping大包不通,原因均為VXLAN報文被分片,因此仍然懷疑VXLAN報文在M6000被分片。
在vBRAS側對障礙終端ping大包,在障礙終端側抓包,發(fā)現(xiàn)終端側已正常收到ping的request報文,并已回應ping echo報文。說明從vBRAS側發(fā)往終端的報文沒有問題。盡管vBRAS側不方便抓包,但仍可判斷是終端回應的ping echo報文在M6000被分片。
再檢查M6000相關中繼的IP MTU值,由于MTU值只針對出方向有效,因此重點檢查M6000上聯(lián)CR的10GE端口。發(fā)現(xiàn)M6000的端口分別有三個MTU值,MTU(默認 9216 bytes)、IP MTU(默認 1500 bytes)、MPLS MTU(默認 1550 bytes),MTU針對二層以太幀,IP MTU已根據要求改為1600 bytes,MPLS MTU為默認值1550 bytes。將MPLS MTU也改為1600 bytes后,障礙終端大包能ping通,且配置下發(fā)正常。障礙解決。
M6000三層端口的MTU值設置區(qū)分為IP MTU和MPLS MTU,從POP交換機發(fā)出的VXLAN報文外層報頭的目的地址為vBRAS loopback地址,該地址為/32掩碼路由,通過isis宣告,M6000針對/32位IGP路由會自動生成MPLS標簽,通過MPLS標簽轉發(fā)。因此VXLAN報文從M6000上聯(lián)CR端口轉發(fā)時,按照MPLS標簽轉發(fā),是MPLS MTU值生效,IP報文增加MPLS標簽(4 bytes)后,最大IP報文達到1554 bytes(ITMS原始二層報文中未含vlan標簽),由于默認MPLS MTU為1550 bytes,所以VXLAN報文在出M6000時被分片,導致該報文在vBRAS側被丟棄。華為硬件BRAS(Ne40e、Me60)端口三層MTU值不區(qū)分IP和MPLS報文,因此三層MTU值設置為1600 bytes后,對IP和MPLS報文均生效,所以經過華為硬件BRAS的VXLAN報文不會被分片。
只對友華終端有影響的原因,是由于友華終端Wan口IP MTU默認為1500 bytes,其余終端均為1492bytes,因此只有友華終端回應的報文經過M6000時,最大報文長度由于超過了M6000 默認MPLS MTU值而被分片。
本次障礙的原因是VXLAN報文在M6000上聯(lián)端口出方向被分片,導致分片報文在vBRAS側被丟棄。與華為BRAS不同,中興M6000上聯(lián)端口的IP MTU和MPLS MTU需分別設置,盡管IP MTU已設置為1600 bytes,MPLS MTU仍為默認的1550 bytes。M6000在轉發(fā)VXLAN報文時,默認為MPLS轉發(fā),基于IP轉發(fā)的VXLAN報文最大為1550 bytes(上聯(lián)端口報文不含vlan id),加上4 bytes MPLS標簽后,報文最大長度為1554 bytes,超出了M6000默認的端口MPLS MTU,導致報文分片。
解決措施:城域網內所有M6000上聯(lián)CR的中繼端口MPLS MTU均設置為1600 bytes。
隨著網絡云化、BRAS池化、網業(yè)分離等城域網架構逐步調整,VXLAN技術將在城域網、數據中心得到廣泛應用。由于VXLAN報文不能被分片的特性,在城域網、數據中心部署基于VXLAN的應用時,需重點關注MTU值的問題,包括IP MTU和MPLS MTU。在分析VXLAN報文長度和轉發(fā)方式的基礎上,需注意不同廠商設備的配置差異,建議現(xiàn)網部署時,網絡設備三層端口的IP MTU和MPLS MTU均設置為1600 bytes。