对于我们服务器环境的网络灾难模拟,我们正在寻找一种有意使 TCP 套接字超时的方法。现有的套接字有什么简单的方法吗?此外,小的 C 测试用例程序将是一个加分项。
我们已经尝试在 TCP 缓冲区读取期间关闭网络接口,并从断开连接的挂载资源 (samba) 中读取。
出测试服务器是 Ubuntu 12.04.4。
对于外部服务器环境中的灾难测试场景,我们正在寻找一种简单的方法来使进程陷入 D(不间断睡眠)状态。
有什么简单的方法吗?一个示例 C 示例代码将是一个加号:)
编辑- 第一个答案是半正确的,因为进程显示为处于 D 状态,但它仍然收到信号并且可以被杀死
是否有可能在数据包数据到达接口之前和接收之后拦截它?例如预处理它并在途中将其送回?
我想创建一个自定义解决方案,就像这个名为 vtun 的伟大程序一样。它创建了一个充当接口的虚拟设备。这使其能够执行各种操作,例如流量压缩、加密、整形等。
我想知道现在是否可以更轻松地完成(vtun 已经很老了……)。我的目标操作系统是 Ubuntu 14.04。
在我们的生产服务器(ubuntu 12.04,3.2.0-63 内核)上,路由缓存达到了它的容量。修改rhash_entries
是不可能的,因为它是内核引导参数,我们不能重启服务器。
我们有哪些选择?
机器有 8GB 如果 ram(我知道,很少,但它是旧的......)。
输出grep . /proc/sys/net/ipv4/route/*
看起来像这样:
/proc/sys/net/ipv4/route/error_burst:1250
/proc/sys/net/ipv4/route/error_cost:250
/proc/sys/net/ipv4/route/gc_elasticity:1
/proc/sys/net/ipv4/route/gc_interval:60
/proc/sys/net/ipv4/route/gc_min_interval:0
/proc/sys/net/ipv4/route/gc_min_interval_ms:0
/proc/sys/net/ipv4/route/gc_thresh:262144
/proc/sys/net/ipv4/route/gc_timeout:300
/proc/sys/net/ipv4/route/max_size:4194304
/proc/sys/net/ipv4/route/min_adv_mss:256
/proc/sys/net/ipv4/route/min_pmtu:552
/proc/sys/net/ipv4/route/mtu_expires:600
/proc/sys/net/ipv4/route/redirect_load:5
/proc/sys/net/ipv4/route/redirect_number:9
/proc/sys/net/ipv4/route/redirect_silence:5120
Run Code Online (Sandbox Code Playgroud)