报文分片导致连接阿里云SLB和OSS出错

最近在公司测试一款正在开发的家用路由器设备时,发现该设备上传文件到我们的云服务器上时,总是出错。通过抓包发现,设备和云的连接通常是小的报文,而一旦上传文件,报文则开始分片,从而引发故障。

从理论上来说,即使是分片报文,按tcp/ip协议,是合理的报文,为什么连云服务器会出错呢?我们的云服务器是租用的阿里云,咨询阿里云后,给我们的回复是他们的SLB和OSS都不支持分片报文。

因此需要我们自己来解决这个问题,下面是我们的两种解决方案:

  1. 将路由器WAN口的MTU设置为1400(缺省是1500),和上级的路由器配置一致,这样报文就不会出现分片。
  2. 我们的设备是基于linux开发的,该linux的sdk里,/proc/sys/net/ipv4/ip_no_pmtu_disc是置为1的。只要将该位置为0,启动MTU自动发现,也可以解决该问题。

另外,我们还发现,该路由器在家里的电信网络中,不会出现该问题。通过抓包,发现路由器的WAN口有分片报文,但是在服务器上,报文却没有分片。这说明,在电信的网络中,有设备进行了分片重组。因此我从网上搜索了一下,确实有设备实现了IP报文虚拟重组功能。该文章指出: 如果设备上配置了NAT、防火墙、SAC(Smart Application Control)或深度安全防御功能,虚拟分片重组功能默认使能,且不能去使能,即执行命令undo ip virtual-reassembly不生效。电信为节省ip地址,家用网络基本都是NAT网络,因此这些NAT设备启动了IP报文虚拟重组功能,没有出现上面我们在公司的开发网络中出现的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IPv4分组 IPv4,即现在普遍使用的IP协议(版本为4)。IP协议定义数据传送的基本单元——IP分组及其确切的...
    CodeKing2017阅读 2,009评论 0 0
  • # 图解TCP/IP 标签(空格分隔): 2018招聘 --- ##第1章 网络基础知识 ### ### 1.1 ...
    Kai_a3da阅读 1,504评论 0 2
  • 网络层简介 1. 概念 为解决经由多条链路的交付问题,从而设计了网络层。其主要负责主机到主机的交付,并且在分组经过...
    顾慎为阅读 3,207评论 0 0
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,551评论 0 6
  • 连续暴雨的第九天,我吃完了家里所有的泡面,喝完了冰箱里的果汁,被逼无奈一定要出门。 我在储物间里找了半个小时才从最...
    鹿老板阅读 417评论 0 1