Quote: | “Performance-wise, Golang is closer to Node.js than to C/C++” |
Another Quote: | “concurrency (leave alone efficient concurrency) is never easy” |
[→] |
Network programming is one field which everybody uses but very few people really know in depth. Our IT Hare did write a software which processes billions of network packets per day; moreover, they’ve done it in a very robust and efficient manner. And last but not least, they’re ready to share their experience :-)
Network Programming, page 1:
(Almost-)Zero-Additional-Latency UDP-over-TCP

Quote: | “we realize that for some of the Clients – UDP just doesn’t work because of some weird firewall between Client and Server” |
Another Quote: | “there is nothing to block us (so head-of-line blocking doesn’t apply)” |
[→] |
TCP Peculiarities as Applied to Games, Part II

Quote: | “Nagle’s algorithm aims to deal with those [CENSORED] developers who’re trying to send data over TCP in really small chunks (like 1 byte each time)” |
Another Quote: | “it seems that “proportional rate reduction” (PRR, reportedly used by Linux kernels by default starting from 3.2) performs for gaming purposes a little bit better than the alternatives” |
[→] |
TCP Peculiarities for Games, part 1

Quote: | “the best we can hope when using a single TCP connection over 5%-loss channel – is having 1.5-second “lag spike” every 5 or so minutes, and a 3-second “lag spike” every 2 hours.” |
Another Quote: | “we may already have the-information-we-need on the receiving host – but this information is hidden from us by layers of abstraction on receiving side” |
[→] |
Packet Loss for an App-Level Developer. Part II. Last Mile, Wi-Fi, and Summary

Quote: | “Burstable packet loss. May be caused by a neighbor preparing his breakfast” |
Another Quote: | “if there is a NAT device on the way from your Client to your Server – a sudden IP change can occur with absolutely no notification to Client whatsoever.” |
[→] |
Packet Loss for an App-Level Developer. Part I. Router Failures, BGP Convergence Time, AQM, Traffic Shapers.

Quote: | “All the routers, switches (actually – pretty much each and every device which forms Internet infrastructure) – are allowed to drop each and every packet.” |
Another Quote: | “TCP, when it observes a dropped packet, interprets it as an indication of congestion – and slows down.” |
[→] |
War on Clones, Part I. IP-based (non-)Identification. Identifying PCs and Macs

Quote: | “NEVER EVER use IPv4 for long-term bans” |
Another Quote: | “If using MAC addresses to identify devices, you SHOULD gather stats on repeating MAC addresses within your DB” |
[→] |