首页 > 其他分享 >ip ss 网络相关命令

ip ss 网络相关命令

时间:2022-12-29 18:25:04浏览次数:40  
标签:SNDBUF ss ip 网络 tcp SO send RCVBUF 接收

从系统cache中查看 tcp_metrics item
ip tcp_metrics show
确认运行中每个连接 CWND/ssthresh(slow start threshold)
ss -itn dst 11.163.187.32 |grep -v "Address:Port"
接收窗口和SO_RCVBUF的关系
ss 查看socket buffer大小
初始接收窗口一般是 mss乘以初始cwnd(为了和慢启动逻辑兼容,不想一下子冲击到网络),如果没有设置SO_RCVBUF,那么会根据 net.ipv4.tcp_rmem 动态变化,如果设置了SO_RCVBUF,那么接收窗口要向下面描述的值靠拢。
初始cwnd可以大致通过查看到:

ss -itmpn dst "10.81.212.8"
State      Recv-Q Send-Q Local Address:Port  Peer Address:Port


如下是tcp_sendmsg流程,sk_stream_wait_memory就是tcp_wmem不够的时候触发等待

如果sendbuffer不够就会卡在上图中的第一步 sk_stream_wait_memory, 通过systemtap脚本可以验证:

 #!/usr/bin/stap
    # Simple probe to detect when a process is waiting for more socket send
    # buffer memory. Usually means the process is doing writes larger than the
    # socket send buffer size or there is a slow receiver at the other side.
    # Increasing the socket's send buffer size might help decrease application
    # latencies, but it might also make it worse, so buyer beware.

probe kernel.function("sk_stream_wait_memory")
{
    printf("%u: %s(%d) blocked on full send buffern",
        gettimeofday_us(), execname(), pid())
}

probe kernel.function("sk_stream_wait_memory").return
{
    printf("%u: %s(%d) recovered from full send buffern",
        gettimeofday_us(), execname(), pid())
}
  • 一般来说绝对不要在程序中手工设置SO_SNDBUF和SO_RCVBUF,内核自动调整比你做的要好;
  • SO_SNDBUF一般会比发送滑动窗口要大,因为发送出去并且ack了的才能从SO_SNDBUF中释放;
  • 代码中设置的SO_SNDBUF和SO_RCVBUF在内核中会翻倍分配;
  • TCP接收窗口跟SO_RCVBUF关系很复杂;
  • SO_RCVBUF太小并且rtt很大的时候会严重影响性能;
  • 接收窗口比发送窗口复杂多了;
  • 发送窗口/SO_SNDBUF–发送仓库,带宽/拥塞窗口–马路通畅程度,接收窗口/SO_RCVBUF–接收仓库;
  • 发送仓库、马路宽度、长度(rt)、接收仓库一起决定了传输速度–类比一下快递过程。

标签:SNDBUF,ss,ip,网络,tcp,SO,send,RCVBUF,接收
From: https://www.cnblogs.com/codestack/p/17013204.html

相关文章

  • fiddler手机抓包遇到的问题-SecureClientPipeDirect failed: System.IO.IOException
    问题一:SecureClientPipeDirectfailed:System.IO.IOException无法从传输连接中读取数据:远程主机强迫关闭了一个现有的连接。系统:IOS原因:证书未被信任,导致主机拒绝......
  • css总结
    行内标签通过设置position:absolute/float可以设置行内元素支持宽高先将一下position的各个属性static:使用正常的布局行为,即此时的top,right,left,bottom和z-index......
  • 折腾了我一周,原来Netty网络编程就是这么个破玩意儿!!!
    1、阻塞阻塞模式下,相关方法都会导致线程暂停ServerSocketChannel.accept会在没有连接建立时让线程暂停SocketChannel.read会在通道中没有数据可读时让线程暂停阻塞......
  • Error(15) 解决 sshd: no hostkeys available -- exiting.
     Error(15)解决sshd:nohostkeysavailable--exiting.(31条消息)Error(15)解决sshd:nohostkeysavailable--exiting._郑清的博客-CSDN博客执行sudoservi......
  • Kubernetes 网络模型基础指南
    Kubernetes是为运行分布式集群而建立的,分布式系统的本质使得网络成为Kubernetes的核心和必要组成部分,了解Kubernetes网络模型可以使你能够正确运行、监控和排查应用程......
  • linux使用iperf3测试带宽
    1、https://www.alibabacloud.com/help/zh/express-connect/latest/test-the-performance-of-an-express-connect-circuit使用yum安装iperf3 本地服务器:[root@loaclh......
  • JavaScript如何实现多线程?
    我们都知道JS是一种单线程语言,即使是一些异步的事件也是在JS的主线程上运行的。像setTimeout、ajax的异步请求,或者是dom元素的一些事件,都是在JS主线程执行的,这些操作并没有......
  • ip网络音频传输模块EA2101T网络音频传输控制模块
    广州新悦网络设备有限公司EA2101T网络音频模块是一款高性能的10/100M网络音频模块,采用高性能ARM处理器及专业Codec,能接收网络音频数据流,转换成音频模拟信号输出,具有CD级的......
  • OneAccess | 面对庞大复杂的身份和权限管理,企业该怎么办?
    OneAccess |面对庞大复杂的身份和权限管理,企业该怎么办?随着各领域加快向数字化、移动化、互联网化的发展,企业信息环境变得庞大复杂,身份和权限管理面临巨大的挑战:应用规模快......
  • HTTPS 钓鱼攻击:黑客如何使用 SSL 证书假装信任
    让我们回到1994年。无需翻出寻呼机或穿上法兰绒衬衫。这是第一个SSL协议诞生的一年。它由Netscape推出,以满足对称为Internet的新奇发明增加安全性的日益增长的需......