udp之關於linux udp收發包緩衝區大小

一、修訂單個socket的緩衝區大小:經過setsockopt使用SO_RCVBUF來設置接收緩衝區,該參數在設置的時候不會與rmem_max進行對比校驗,可是若是設置的大小超過rmem_max的話,則超過rmem_max的部分不會生效;
二、修訂linux系統udp緩衝區大小:經過rmem_max來設置系統中udp緩存的上限,該值可經過以下方式查看:
root@ubuntu:/mnt/hgfs/vm-shared/socket# cat /proc/sys/net/core/rmem_max
131071
經過以下方式進行修訂:
root@ubuntu:/mnt/hgfs/vm-shared/socket# vi /etc/sysctl.conf
在文件/etc/sysctl.conf中新增以下信息:
rmem_max=MAX
須要注意的這裏設置的rmem_max參數是整個系統的大小,不是單個socket的大小。
修訂後的大小能夠經過以下命令查看:
root@ubuntu:/mnt/hgfs/vm-shared/socket# sysctl -a | grep rmem_maxlinux

net.core.rmem_max = 131071ubuntu

 

1. tcp 收發緩衝區默認值緩存

[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem socket

4096    87380   4161536tcp

87380  :tcp接收緩衝區的默認值spa

[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_wmemip

4096    16384   4161536get

16384  : tcp 發送緩衝區的默認值udp

2. tcp 或udp收發緩衝區最大值grep

[root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_max

131071

131071:tcp 或 udp 接收緩衝區最大可設置值的一半。

也就是說調用 setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen);  時rcv_size 若是超過 131071,那麼

getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 去到的值就等於 131071 * 2 = 262142

[root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_max 

131071

131071:tcp 或 udp 發送緩衝區最大可設置值得一半

跟上面同一個道理

3. udp收發緩衝區默認值

[root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_default  

111616:udp接收緩衝區的默認值

[root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_default

111616

111616:udp發送緩衝區的默認值

4. tcp 或udp收發緩衝區最小值

tcp 或udp接收緩衝區的最小值爲 256 bytes,由內核的宏決定;

tcp 或udp發送緩衝區的最小值爲 2048 bytes,由內核的宏決定

相關文章
相關標籤/搜索