末影随想
54 subscribers
367 photos
4 videos
1 file
43 links
Provided ​"AS IS" without any warranty.

@moycat · ☀️ · 🌈 · 🐱 · 🐳
Download Telegram
to view and join the conversation
#TIL 跨境SSH提速妙招:

1. 增加SSH客户端channel window大小。OpenSSH默认2 MiB,200 ms RTT时极限速度只有10 MiB/s。

2. 启用SSH连接复用(ControlMaster),可以节省连接时很多个RTT的开销。
今日份的💩:几台服务器一起出维修工单,但又写着「无需处理」,通过后某自动化程序强制umount了数据盘,还把/etc/fstab橄榄了,服务大爆炸。

贵司怎么还没死啊🤮
末影随想
今日社交恐怖分子演讲主题:《谈谈我对开源的理解》
恐怖分子他回来了😭😭😭
好像还增殖了😭😭😭
⚽️🏀了我这周已经够倒霉了🤮
果然晦气不会在周末终结。周四切到贵司某「极致易用性、高性能、极致弹性」的自研产品,周日凌晨一点就被加急说这玩意烂了😅

怎么说呢,贵司很多东西造出来纯粹是恶心人,既完成了自己的OKR,又阻止别人完成OKR,计划通。
想憋篇 #blog 出来,又失败了。
要不要请一天假专门写博客呢?
我将时间烧成灰烬,酿作苦酒,一饮而尽。今夜的反刍是0.9%的咸。
实属当了回大聪明。贵司在推IPv6单栈适配,又典中典只给每台机器/128的地址,访问IPv4又是刚需,一通推导下来,必须搞点隧道。

首先试了试WireGuard,没成想贵司魔改内核直接阉了wireguard模块,wireguard-go速率低至1 Gbps。

突发奇想自己写封装,用TUN设备加UDP包装,Go写出来无加密也只有1.5 Gbps。回到梦开始的地方,C写UDP socket还是才3 Gbps。一profile内核时间拉满,原来是TUN性能极度不堪。

于是看了看Linux网络栈架构,发现TC能提供eBPF的环境在内核虚拟机里玩弄数据包。搞了两天升到5.10内核终于跑通单向封装,POC能提供12 Gbps的带宽。可是比起25 Gbps网卡还是擀面杖搅洗衣机。

正当不知是否要继续缝合这滩CPythonGo的奇美拉,忽然想起老熟人GRE,现成的内核模块级隧道,我还写个毛。一测直接跑满链路速度,牛逼。而且Linux的GRE支持多对多,比当年玩的企业圾网关舒服多了。
本周的op就当到这里😋
#TIL iptables可以用来点亮主机上的LED灯
末影随想
实属当了回大聪明。贵司在推IPv6单栈适配,又典中典只给每台机器/128的地址,访问IPv4又是刚需,一通推导下来,必须搞点隧道。 首先试了试WireGuard,没成想贵司魔改内核直接阉了wireguard模块,wireguard-go速率低至1 Gbps。 突发奇想自己写封装,用TUN设备加UDP包装,Go写出来无加密也只有1.5 Gbps。回到梦开始的地方,C写UDP socket还是才3 Gbps。一profile内核时间拉满,原来是TUN性能极度不堪。 于是看了看Linux网络栈架构,发现T…
准备干票大的,把Calico的垃圾overlay用缝合隧道替换掉,搞点高性能跨主机容器通信。

首先,每台机器一个any模式的ip6tnl隧道,远端设置成IPv6公网段的保留地址。这是隧道的发射器。

接着用iptables的u32模块判断封装内的IP包地址,判断路由打上mark,再用nftables做stateless DNAT,把公网保留地址替换为真实的目标主机。用两种netfilter前端是因为它们互相做不了对方的事。

接收用remote any的另一个ip6tnl直接解包,无需netfilter介入,避免耗时的SNAT。

隧道和规则的配置器用Go实现,作为DaemonSet部署在K8s上,监听Calico的网段分配,只在分配情况变动时工作。整个项目只算Calico禁用IPIP与VXLAN后的插件。

这样封装和解包全部在内核空间完成,碾压UDP中转的VXLAN(IPIP也快,但在贵司用要烂),点对点POC的速率从6 Gbps提升到40 Gbps(线速)。而且支持容器跨主机用IPv6通信,无需主机在大二层里。那