一个MSS参数引发的“血案”

最近在玩一些淘汰下来的FW,在马云家淘了一些二手的玩玩,在家搭建了一台zabbix监控,配置了onealert的免费通知插件(支持微信、QQ、邮件、短信、电话等),用来监控我家小PP看动画片时长,时间过长就要远程断网或shutdown交换机接口,因为当着面关他电视后果很严重,断他网他会知道是“坏了”,没那么闹腾。

回到正题,以前一直用无线路由器做NAT转发,发现即使是cisco 6900和网件R 7000等千元路由器级别都会用到死机。后来帮别人做项目发现juniper ssg和SRX这种企业级的FW在某宝只要几百元,果断出手搞了一些不同型号来测试。

本文的主角:JUNIPER SRX 210H正式登场

当我用210配置完PPPOE后,部分网站可以打开,部分网站打不开,并且在JUNIPER SSG5上面没有这个问题,所以断定问题在210上。排错思路如下:

一、检查PPPOE链路状态

看起来正常

[email protected]#run show interfaces pp0

Physical interface: pp0, Enabled, Physical link is Up

Interface index: 128, SNMP ifIndex: 501

Type: PPPoE, Link-level type: PPPoE, MTU: 1532

Device flags   : Present Running

Interface flags: Point-To-Point SNMP-Traps

Link type      : Full-Duplex

Link flags     : None

Input rate     : 232 bps (0 pps)

Output rate    : 0 bps (0 pps)

Logical interface pp0.0 (Index 79) (SNMP ifIndex 563)

Flags: Point-To-Point SNMP-Traps 0x0 Encapsulation: PPPoE

PPPoE:

State: SessionUp, Session ID: 34772,

Session AC name: SZ-BJ-BAS-5.MAN.NE40E, Remote MAC address: da:86:8e:6c:00:19,

Configured AC name: None, Service name: None,

Auto-reconnect timeout: 10 seconds, Idle timeout: Never,

Underlying interface: fe-0/0/1.0 (Index 78)

Input packets : 24

Output packets: 16

Keepalive settings: Interval 10 seconds, Up-count 1, Down-count 3

Keepalive: Input: 3 (00:00:08 ago), Output: 7 (00:00:01 ago)

LCP state: Opened

NCP state: inet: Opened, inet6: Not-configured, iso: Not-configured, mpls: Not-configured

CHAP state: Closed

PAP state: Success

Security: Zone: Null

Protocol inet, MTU: 1492

Flags: Sendbcast-pkt-to-re, User-MTU, Negotiate-Address

Addresses, Flags: Kernel Is-Preferred Is-Primary

Destination: 183.12.26.1, Local: 183.12.26.79

二、检查区域和策略

也都正常,策略全放开

三、根据网上的建议调整MTU为1400

然并卵,问题依旧

set interfaces pp0 unit 0 family inet mtu 1400

四、根据度娘搜遍了大量相关的蛛丝马迹,发现一个很少有人问津的tcp-mss参数调整

凭借我多年运维的经验直觉告诉我,真相很快就要浮出水面了。

The maximum segment size (MSS) is a parameter of the options field of the TCP header that specifies the largest amount of data, specified in bytes, that a computer or communications device can receive in a single TCP segment. It does not count the TCP header or the IP header.[1] The IP datagram containing a TCP segment may be self-contained within a single packet, or it may be reconstructed from several fragmented pieces; either way, the MSS limit applies to the total amount of data contained in the final, reconstructed TCP segment.

To avoid fragmentation in the IP layer, a host must specify the maximum segment size as equal to the largest IP datagram that the host can handle minus the IP header size and TCP header sizes.[2] Therefore, IPv4 hosts are required to be able to handle an MSS of 536 octets (= 576[3] - 20 - 20) and IPv6 hosts are required to be able to handle an MSS of 1220 octets (= 1280[4] - 40 - 20).

Small MSS values will reduce or eliminate IP fragmentation, but will result in higher overhead.[5]

Each direction of data flow can use a different MSS.

For most computer users, the MSS option is established by the operating system.

上面一段话其实简要概之就是,它和TCP有关。。。也别太较真了

于是乎就抱着试一试的态度,结果之前打不开的网页都能打开了

set security flow tcp-mss all-tcp mss 1350

五、pppoe全部配置参考本人以下博文

http://yangye.blog.51cto.com/922715/1874180

时间: 2024-11-07 20:29:14

一个MSS参数引发的“血案”的相关文章

一个二级菜单引发的血案

近期发现自己css不是很好,于是又看了一遍<css权威指南>.总感觉自己抓不到重点.弃疗中...于是看看其他书.然后学妹跟我说她的二级菜单写得很乱.当时我心里就在想二级菜单,有何难?自认为10分钟能搞定.跟她要效果图并很自大的说了句“等会儿,我写个简单的”.于是血案由此引发... 二级菜单要实现的原效果图是: (如发现雷同,不是巧合,是我从别的网页上截屏下来的 ~_~).既然说了简单,肯定效果没这么精美.但是至少基本效果和原理要实现. 10分钟过去了....15分钟过去了....这个“等会儿”

一个多线程问题引发的血案-(代码段执行完毕,子进程未执行完毕导致段错误)

今天遇到一个问题,gdb执行程序完全没有问题,但直接执行就会段错误,百思不得其解,各种纠结,各种搜索引擎都试了一遍,无果!后来问题还是被我自己挖出来了. 看下边一段代码: int TaskSendControl() { pthread_t prov_thread[CLIENT_NUM]; int prov[CLIENT_NUM]; for(int i=0; i< CLIENT_NUM; i++) { prov[i] = i; if( pthread_create(&prov_thread[i

一个Sqrt函数引发的血案

我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然有可能你平时没有想过这个问题,不过正所谓是"临阵磨枪,不快也光",你"眉头一皱,计上心来",这个不是太简单了嘛,用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数:如果小了,就再拿右区间的中间数来试.比如求sqrt(16)的结果,你先试

【转载】一个Sqrt函数引发的血案

转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/sotry-about-sqrt.html 源码下载地址:http://diducoder.com/sotry-about-sqrt.html 好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获. 我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这

一个参数引发的血案

天天写代码出bug解bug,真得有很low的感觉,但也有happy的感觉,因此我认为它是有价值的. 这类bug遇到无数次,每次解决就过去了,再次遇到又是惊出一身冷汗,这就是乐趣啊. 过程如下: 程序无响应 ps查看进程,发现进程已经退出 怎么办 发现大概的问题代码块 重启进程 gdb attach之 在问题代码块处密集断点 continue 制造触发条件 入断点 c c 崩溃 bt看调用栈 定位 是他:tg_log_fce("dpl_hlist_search(%s).In(%s)[%d], fi

一个网站图标引发的血案!绕过同源策略,判断你是否登录了某网站

前言 我要告诉大家的是,在没有得到你同意的情况下,目前大多数主流的网络平台都会泄漏你的登录状态.无论你当前是否进行了登录操作,攻击者都可以检测到你电脑登录了那些网络平台.而且目前有很多平台可以提供人口统计以及个性分析之类的服务,所以攻击者也可以就此推测出你的人物特性. 演示站点:[点我访问] 技术分析 对于绝大多数的平台而言,它们都可以利用登录机制来检测用户是否登录了自己的网络服务.虽然这个漏洞已经存在多年了,而且这也是一个众所周知的漏洞,但是目前大多数公司似乎并不打算去修复它. 需要注意的是,

记一次由tcp_tw_recycle参数引发的血案

一,故障描述: 从昨天开始,在值班群中陆续值班人员反映系统后台存在卡顿问题,如下图:而且在卡顿的同时登陆服务器也会卡好久.此现象只在一台服务器有出现. 二,故障分析: 1,登陆服务器查看资源使用top,vmstat等命令查看了一番发现服务器各项指标都没有异常.于是将问题转向了网络层.2,客户端端值班人员反映只有在访问系统后台的时候才会出现卡顿,访问其他网站正常.3,本地使用ping服务器外网ip正常返回,无丢包,延迟也正常.4,使用http-ping工具时,问题出现了,会经常性的出现连接失败:(

一个文件下载接口引发的血案Content-Disposition之殇

今天在迁移一个老系统到新服务器的时候,在测试下载接口的时候发现:同一个接口,有些文件可以下载,有些文件不能下载. 调试了半天发现,好像是文件名的问题. string fileName = "38374-fjf(1).13jk"; string contentDisposition = string.Format("attachment;filename={0}",fileName); msg.Content.Headers.ContentDisposition =

ZigBee中内存管理(一个内存空间引发的血案)

这个Zigbee的项目好久没有写了,现在对这个项目有点陌生,好多东西都搞不懂了.今天写一个简单的无线发送小程序时,一直出问题,程序调用zstack中的AF_DataRequest函数,如下 AF_DataRequest( &Coor_Addr, &App_epDesc,                        APP_CLUSTERID_ADC,                        sizeof(ADC_Value),                        (uin