场景说明
两个数据中心,通过广域承载网络互联,实现服务器之间跨DC的通信。其中灰色部分是DC内部网络,由CloudEngine系列交换机(下文简称CE交换机)组成,部署VXLAN网络。DC1的DCI Leaf与DC2的DCI Leaf之间,建立跨承载网(图中绿色底纹所示)的VXLAN隧道,转发跨DC流量。此时需要端到端进行MTU的规划,否则报文在跨DC转发过程中容易丢包。
图1-1 两个数据中心互连示意图
DC内部对报文的处理:对转发报文不分片
CE交换机不会对长度超过接口MTU值的转发报文进行分片,即服务器发出的报文,经过DC内部交换机转发时,尽管报文长度超过了CE交换机的MTU,也不会分片。
CE默认支持的JUMBO帧为9216字节。极端情况下,服务器侧MTU设置为9000字节(一般默认为1500字节),加上VXLAN封装的50字节(20字节IP头+8字节UDP头 + 8字节VXLAN头 + 14字节MAC头)后,CE交换机也能支持正常的报文转发(且不分片)。
CE交换机只对本机发出的主机报文(例如协议类报文)进行基于接口MTU值的分片。
为什么要规划MTU?
在跨DC的VXLAN互联时,VXLAN报文需要经过第三方承载网络(如上图绿色部分,承载网络仅做Underlay转发)。由于封装VXLAN后的报文比承载网络中某些设备的MTU值大(中间的设备有时不允许调整MTU值,或者有的设备较老,MTU值较小),导致在Underlay转发时,VXLAN报文被分片。根据VXLAN 7348 RFC,VXLAN报文不建议分片,否则在接收端VTEP上会丢弃分片的报文,造成跨DC通信的丢包。
RFC参考:https://datatracker.ietf.org/doc/rfc7348/?include_text=1
规划建议
综上所示,建议在部署前就对MTU进行全局规划,有如下建议,其中推荐第一条。
- 方式一(推荐):修改应用层服务器发送报文的长度值,修改后的长度值加上VXLAN封装的50字节后,需保证在整个承载网中,均小于设备的MTU值。使用此方法,修改难度低,需要IT侧配合。
- 方式二:修改承载网中每一跳网络设备的MTU值,需保证MTU值大于收到的VXLAN报文长度,从而保证不分片(建议承载网中设备设置的MTU值需大于CE交换机的默认JUMBO的大小,即9216字节)。此方式常常受到约束:承载网络中设备众多、分布广泛,且涉及不同厂商,修改难度大;常常没有修改权限(他人资产,不可控)。