Menu

IT Hare on Soft.ware

Tap to confirm selection

Subscribe:

Your mileage may vary. Batteries not included

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/5 :


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”

Marshalling and Encodings

Quote:
“Encoded data size is especially important for Client-Server communications, and less important (within reason) for Server-to-Server ones and for locally-stored format.”
Another Quote:
“On the other hand, due to being optimized for CPU operation, Flatbuffers are NOT optimized space-wise; even compared to not-so-optimal-space-wise Google Protocol Buffers, Flatbuffers can lose additional 1.5x in size”