1. 结论:NFSv4 DELEGATION 机制导致的问题 参考 GitLab 的文档,在 NFS Server 上关闭 NFSv4 的 delegation 机制即可解决,操作如下: 在 /etc/sysctl.conf 中加入 fs.leases-enable=0 ,然后运行 sysctl -p 应用设置 重启 NFS Server 2. 问题分析 近期发现作为 NFSv4 client 的服务器,运行 I/O 操作多、运行时间长的程序后,系统会出现一个名为“[NF […]
Category: 操作系统
暨南大学珠海校区校园网 – 802.1x Linux 客户端
暨大珠区有线校园网,部分区域用的是 802.1x 认证。学校网站也没提供珠区 802.1x 的 Linux 客户端。 珠区校园网客户端是 H3C 的 iNode,别的学校已经有大佬实现过这款 Linux 客户端了,可以拿来珠区用。 这里选用了这个:https://github.com/Besfim/inode-njit 1. 编译安装(Debian 11 为例) 安装编译所需的工具和库
1 |
apt install build-essential pkg-config dh-autoreconf libpcap-dev libssl-dev git |
下载源码
1 |
git clone https://github.com/Besfim/inode-njit.git |
编译
1 2 3 4 |
cd inode-njit autoreconf --install ./configure make -j$(nproc) install |
UDP SndbufErrors & ENOBUFS
最近一部分服务器上,遇到UDP发包速率太高会出现大量丢包的情况。这个丢包不是发生在中间网络设备上丢,也不在接收方上,而是发生在发送方kernel中。为什么会知道是在kernel丢的?因为用户空间程序的统计的发包量,跟内核统计的有很大差距,所以可以肯定用户空间把包交给内核后,内核并没有全发出去。 通过kernel的snmp,发现UDP的SndbufErrors计数器有很高的值:
1 2 3 |
root@Server:~# grep "^Udp:" /proc/net/snmp | column -t Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti Udp: 52452374 5805 2117 247991616 2117 6669891 0 1 |
这个计数器是在哪、什么情况下增长的?翻了一下kernel的源码,在net/ipv4/udp.c中找到两个,一个在udp_sendmsg()中: [cray […]
KCP-GO的重传机制以及带宽利用率的提升
1. KCP 按KCP的README,这协议并不是设计来跑大流量的: TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而 KCP是为流速设计的(单个数据包从一端发送到一端需要多少时间),以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。 从它的技术特性,你也可以得知这协议相对TCP的重点改进是在重传上,而不是拥塞控制。那它为什么快(某些情况下)呢?一方面,它重传机制的改进,丢包后可以更早重传,对方更早收到补发的包,更早能把数据递交给应用层,缓冲区的释放更快,发送方也能更早继续发送后续的数据;另一方面,它技术特性里面有个“非退让流控”,名字听起 […]
PowerDNS Recursor设定默认EDNS Client Subnet值
授权DNS服务器可以根据递归DNS服务器发送的EDNS Client Subnet(ECS)中的值,返回不同的结果。如果客户端是通过内网IP向递归DNS服务器发起查询的,而且递归DNS服务器发出的递归查询使用的公网IP跟客户端使用的公网IP不是一个地区时,就无法给客户端提供一个最优的解析结果了。 PowerDNS Recurse 4.2增加了一个设置“ecs-add-for”,可以指定哪些subnet允许作为ECS的值,对于不允许作为ECS值的subnet,将会取ecs-scope-zero-address的值作为ECS的值。所以通过这两个设置可以为内网客户端设定一个默认的ECS值。 配置文件 […]