Netsplit

From IRC Wiki
Jump to navigation Jump to search

A Netsplit is the event of two parts of a bigger network breaking up into two smaller subnets because of a link between two servers getting disconnected.

Cause

Due to the nature of the internet, connections aren't always reliable and might break up. Therefore, it is common that networks are split up at some point with two smaller temporary sub nets being created (the common Tree linking structure makes this problem worse by not providing multiple routes to another server to which one can fall back to).

Problems

Netsplits are the source for a couple of problems:

Channel takeover attempts

For the duration of the split, two separate copies of all channels exist and different things might be happening in each one of them. When the link is reestablished, the data will be merged again and the question arises which copy of the channel should become the new and only one: the channel may have separate topics, separate modes set, other users in them and most importantly, other channel operators.

E.g. a user might be the only one in a separated copy of the channel on server B and therefore gain op status there, while the user originally founding the channel is still located on server A and doesn't observe this and also has no means to stop this. When merging, the servers may either keep all channel operators or has to decide which ones to prefer.

When leaving all ops in place, the user on server B has successfully committed a channel takeover as he may now, when being fast enough, deop the original operator on server A after the merge and is now the only one controlling the channel despite not being the original founder before the split.

Luckily, there are takeover prevention techniques to prevent this from happening. Also, on today's networks where channel registration services are common, it is easy to regain channel operator status by using them for the proper channel owner and also to throw out any other users that managed to gain operator status through the netsplit.

Nick collisions

When the two network parts are separated for the duration of the split, one might rename to the nickname of a user on the other side of the split as now the server won't know about the existance of another similarly named user on the other half of the split. When the connection is reestablished, the servers have without further investigation no other choice than to remove both users as the protocol needs all users to have unique Nicknames. Still, there are prevention techniques to this that try to determine the user that had the nickname first and will attempt to protect him.

High traffic amount

When the two network parts split up, two separate copies of each channel that contains users from both sides of the now splitted network in it will be created and for each side, quit messages for all the users of the former other side that is now separated will be send. When the connection is reestablished and the channels are merged again, join events for all the users in the separate channel copies that are now coming back into the joined resulting channel are sent. For big channels, this can cause a lot of traffic that highly disrupts the chatting experience by taking up a lot of space in the chat window and also causes high load on the servers for the duration of the merge. Generally, (re-)linking two servers is performance intensitive.

See also