How does this synchronization protocol work? How does one join the mesh? I've read the wikipedia article, and it kinda talks to the topology and such, but not in great detail.
How does this synchronization protocol work? How does one join the mesh? I've read the wikipedia article, and it kinda talks to the topology and such, but not in great detail.
Some of the big timesharing services (think Telenet and Tymnet, eventually even AOL) out there ran their own servers, which a lot of smaller services dialed into.
How do you join the mesh? You met someone at Usenix or a similar conference and said "I'm sitting on a whopping 800mb of storage and a T1 line at my university. I'm tired of waiting a week to get the new comp.lang.c hotness. Think I could hook up to your machine for Usenet?" and they'd be like "Cool! Yeah, here's the dialup number. Try to call after 11pm so my boss doesn't know about it."
NNTP took this concept of syncing files and made it Internet native and specific to Usenet. But the architecture remained largely the same.
I used to work in London, for Olivetti, which was partnered with AT&T. Olivetti's office was in Finsbury, just north of The City. AT&T were south of the river, near Vauxhall. I believe our Usenet feed (and our internet email) was couriered-over from Vauxhall on mag tape.
In those days, most ordinary businesses didn't have fixed-line internet access, and maintaining a Usenet feed over dial-up was expensive, even text-only.
You configure both configure your servers to exchange messages and then... they exchange messages :)
It's good practice to have a couple peers, in case one goes offline or doesn't carry the groups you're interested in -- or filters things you might want. I run NoCeM on-spool and have stricter-than-normal CleanFeed rules, which translated from Usenet admin speak means my server drops a lot of spam and garbage posts, and if you want those you'll have to get them from another peer.
A server might decide to exchange messages in groups A, B, C… with peers X, Y, Z. Choice of peers depends on their capacity, working hours, geographic location, network position, personal connections, access to dedicated lines… Choice of groups depends on popularity, space requirements, personal preferences, user requests… Some of them allow messages to spread step-by-step to all or almost all of the network, those are global groups. Some of them are only shared by a couple of servers or exist on a single server, those are local. Nothing prevents you from making a “boobble.shmoobble.goobble” group and stating that it's the central most important point of all Usenet. You only need to make all the rest believe it. Then there are additional complexities and tools to deal with batch transfers, figuring out which messages have not yet been seen by a peer since the previous interchange (you don't want X to send lots of updates to Z, then Y to take the same long time sending mostly the same updates to Z), choice of best next hop (routing, manual load balancing), and so on.
Of course, when synchronization is needed — say, for group moderator to be able to delete spam message from many servers holding that group instead of each admin doing that on each server independently, and to prevent reintroduction and further spread of the message, — it results in hairy ball of hacks on top of original architecture, and ad-hoc external trust channels, like with signatures. Understandably, Usenet appeared in a hierarchical and controlled professional environment (users were bound by formal and informal rules), then it was re-purposed for free for all operation.