🇺🇸 · Noisebridge · Mcint
create page New page {{meetups/infra}} <!-- header --> {{TODO/summary}} == Introductions == * [name] - [background]. [goals for meetup, or interests to explore] * Loren - freelance backend engineering, * Robert - involved in startups, adding * T - * J - * Sophia - onion monger * Doug - like computers, like self-hosting, * Victor - background working in infra & dev tools, big nix fan * Frank - * Daniel - making a cooking robot, tele-operated, from Shenzhen. LiveKit, just started dropping half of packets, started being * Danny - bg in 3d graphics & gaming, interest in multiplayer network for games * Erik - getting a couple of our services * Ciara - I play with noisegarden, self-hosting, packaging, infrast * Daniel - general [capable] computer man * Ellie - do a lot of dev tools & terminal stuff, interested in the networking stuff today, done a lot of infrastructure == Lesson or Demo == * Read aloud: clarify for meetup. We are taking notes in a riseup pad (or I am--help appreciated, and links). We have meeting notes posted to the wiki. noisebridge.net, search Infra, or Meetups/Infra. (the Infrastructure page has a disambiguation link.) * Shell, web services, self-hosting, networking! * Congestion control ** tor network performance ** real time communication with china from usa to control robotics *** currently using live kit https://github.com/livekit/livekit * (some others) tcp state machine what does tcp garuntee tcp - sibbling proto-s: udp, quic udp where, why? streaming use-cases tcp - guarantees ordered byte stream implicitly ack a bunch of stuff open a web page quic media over quic (moq) tcp is not modern/mobile latency people have annoyances with TCP * https://en.wikipedia.org/wiki/Nagle%27s_algorithm - Nagle - * https://news.ycombinator.com/item?id=24535528 To avoid network congestion, the TCP stack implements a mechanism that waits for the data up to 0.2 seconds so it won’t send a packet that would be too small. This mechanism is ensured by Nagle’s algorithm, and 200ms is the value of the UNIX implementation. Sigh. If you're doing bulk file transfers, you never hit that problem. If you're sending enough data to fill up outgoing buffers, there's no delay. If you send all the data and close the TCP connection, there's no delay after the last packet. If you do send, reply, send, reply, there's no delay. If you do bulk sends, there's no delay. If you do send, send, reply, there's a delay. The real problem is ACK delays. The 200ms "ACK delay" timer is a bad idea that someone at Berkeley stuck into BSD around 1985 because they didn't really understand the problem. A delayed ACK is a bet that there will be a reply from the application level within 200ms. TCP continues to use delayed ACKs even if it's losing that bet every time. If I'd still been working on networking at the time, that never would have happened. But I was off doing stuff for a startup called Autodesk. John Nagle * no multiplexing HTTP/2 is a good example TCP - reliable transmission - helps us quickly use full link tries, then adjust to measurement quickly ramp up quickly ramp down knows ~ when to ramp down bandwidth-delay product https://insights.profitap.com/osi-7-layers-explained-the-easy-way https://en.wikipedia.org/wiki/Bandwidth-delay_product why do i care about how many bytes are on the wire edge network device - has knowledge some some things known rates it can operate - 3-30 or more hops - Buffer Bloat how does tcp help us find the max bandwidth a connections support, find it use it tcp needs to behave well over single ms latency and thousands of ms additive increase multiplicative decrease slowly climb and quickly fallback every time it gets a packet, it learns new information, and it only update model when send and recieve packets, or not get a packet back add to sending window everytime you revcieve an ack what is ECN? https://en.wikipedia.org/wiki/Explicit_Congestion_Notification BACK 2 BUFFER BLOAT https://en.wikipedia.org/wiki/TCP_congestion_control mtu typically 1500 bytes for no reason afaik sysctl -a you can see some of these variables also config for https://en.wikipedia.org/wiki/Multilayer_switch possibly is congestion control dependent on hardware? https://ipcisco.com/lesson/ethernet-basics/ https://john.fun/elevators https://witestlab.poly.edu/blog/tcp-congestion-control-basics/ mtu ipv6 path mtu discovery https://en.wikipedia.org/wiki/Path_MTU_Discovery - IPv6 Jumbo packets - in-practice, on existing networks - determined by lowest common denominator, the iDRAC, the printer, that doesn't support it, makes that device incompatible with the rest of the network. Then you have to downgrade. Advice: only use on SAN networks with SANs talking to SANs 1gb at 1500 mtu is like a million packets, how come they don't change * everything is so optimized for this that to change it prob breaks these optimizations modern linux does send more than mtu tcp and other various congestion protos are focused on the sender detecting when to stop sending? new protos are homa? i want to send a gb, b wants to send 10 bytes, does this get reordered if you have not a ton of packets to send? congestion control algos * cubic is linux default packet drops is used by cubic bbr uses rtt instead https://web.stanford.edu/class/cs244/papers/bbr.pdf https://blog.acolyer.org/2017/03/31/bbr-congestion-based-congestion-control/ https://en.wikipedia.org/wiki/Cubic_function https://en.wikipedia.org/wiki/CUBIC_TCP https://dipsingh.github.io/TCP-Congestion-Experiment/ https://en.wikipedia.org/wiki/IEEE_802.11 Retry: Sometimes frames require retransmission, and for this, there is a Retry bit that is set to one when a frame is resent. This aids in the elimination of duplicate frames. https://en.wikipedia.org/wiki/QUIC as reliablilty goes up, waiting for latency is less risky https://quicwg.org/ https://www.noisebridge.net/wiki/Decentralized_Web https://tls13.xargs.org/ == Outros == * Ciara - touch grass * Robert - learned a lot today - BBR vs CUBIC, network congestion in general, have a ton of links to explore - looking for work, if you're hiring, right ghere * Bobby - Congestion algs * Joe - buffers, QUIC * Ellie - I'd never pieced together that TCP congestion control algs were from cities in Nevada where's BBR, NV - where's CUBIC, NV * Elan - had never pieced together all the elements of TCP * Doug - searching for light industrial units in NV, looking at Nagle's alg will noodle * Perry - had forgotted that Ethernet frames do not blindly wrap individual TCP packets * Victor - I feel a need to go home, open wireshark, and watch network * Mark - thought WiFi didn't have retry, but yeah, they do - curious about * Frank - pulled up the QUIC RFC, RFC 9000 * Danny - lots of stuff I'm new to * Erik - would like danny to show off his cool device * Joel - new to this - firewall constraints on packet * Daniel - new to networking - too advanced, == Questions, Discussion, or Coworking == * [Issue] = For next time = == Questions == == Readings & Exercises == * Readings ** * Exercises ** == Join online == * Try it yourself! ** Join libera.chat #nb-meetup-infra https://www.noisebridge.net/wiki/Meetups/Infra