Removed TS5 description as it is no longer supported
This commit is contained in:
parent
f9d5f40a62
commit
ea3ab4a938
1 changed files with 0 additions and 151 deletions
|
@ -1,151 +0,0 @@
|
||||||
Overview of the TS5 system
|
|
||||||
Lee H <lee@leeh.co.uk>
|
|
||||||
|
|
||||||
$Id: ts5.txt 6 2005-09-10 01:02:21Z nenolod $
|
|
||||||
|
|
||||||
For the purposes of this document, ircd versions:
|
|
||||||
hybrid6.0
|
|
||||||
ircd-comstud-1.12
|
|
||||||
CSr31pl4
|
|
||||||
|
|
||||||
and prior, are TS3.
|
|
||||||
|
|
||||||
ircd-hybrid-6.2 and later support TS5.
|
|
||||||
|
|
||||||
|
|
||||||
Whats TS5?
|
|
||||||
----------
|
|
||||||
|
|
||||||
The difference between TS5 and TS3 is what happened on opless channels. TS
|
|
||||||
works by establishing which server has the oldest version of the channel,
|
|
||||||
the version that is oldest, keeps its modes and ops, the version that is
|
|
||||||
youngest, removes their modes and ops, and accepts the older version.
|
|
||||||
|
|
||||||
There was an exception to this rule with opless channels, if a channel was
|
|
||||||
opless, TS3 would allow anybody to keep their ops and modes on the channel.
|
|
||||||
TS5 aims to stop this, by removing this exception.
|
|
||||||
|
|
||||||
Example1:
|
|
||||||
|
|
||||||
An irc network, with server A (every server is ts3)
|
|
||||||
|
|
||||||
UserA is on ServerA, in channel #broken. This channel is opless, and has a
|
|
||||||
TS of 800000000. ServerA splits, and whilst it is split, UserA cycles
|
|
||||||
channel #broken, recreates the channel and is given ops. On ServerA #broken
|
|
||||||
now has a TS of 900000000 and has ops. ServerA rejoins with the network,
|
|
||||||
via HubB. HubB realises #broken is opless, so allows UserA to retain ops.
|
|
||||||
The TS is moved forward to 900000000.
|
|
||||||
|
|
||||||
The network now sees #broken as having a TS of 900000000, with UserA being
|
|
||||||
opped.
|
|
||||||
|
|
||||||
Example2:
|
|
||||||
|
|
||||||
An irc network, with server C (every server is ts5)
|
|
||||||
|
|
||||||
Same scenario as above. ServerC splits and UserC cycles channel #broken,
|
|
||||||
recreating it with a TS of 900000000. ServerC rejoins with the network via
|
|
||||||
HubD. HubD realises #broken has a TS of 800000000 locally, and ServerC is
|
|
||||||
showing a TS of 900000000, it ignores ServerC's modes and ops. The channel
|
|
||||||
remains opless. ServerC receives HubD's modes, and it notices HubD has a
|
|
||||||
lower TS of channel #broken. It removes UserC's ops, removes the channel
|
|
||||||
modes on #broken, and accepts HubD's status.
|
|
||||||
|
|
||||||
The network version of #broken hasnt changed. It is still opless, with a TS
|
|
||||||
of 800000000.
|
|
||||||
|
|
||||||
|
|
||||||
As you can see, TS5 makes splitting a server to regain ops useless, as it
|
|
||||||
cannot be abused to give ops after a netsplit.
|
|
||||||
|
|
||||||
The problem with TS5 however, is what happens on a mixed TS5/TS3 network.
|
|
||||||
Channels where the older TS has ops will behave the same way on TS5 and TS3,
|
|
||||||
however an opless channel will behave differently, as you can see above.
|
|
||||||
|
|
||||||
The result of TS5/TS3 mixed can be a desync:
|
|
||||||
|
|
||||||
Example1:
|
|
||||||
|
|
||||||
As per Example1 above, except the rest of the network is TS5, ServerA is
|
|
||||||
TS3. ServerA would keep its modes and ops, whilst the rest of the network
|
|
||||||
would remove them. This means only ServerA would see UserA as opped. The
|
|
||||||
desync can be abused, as UserA can send modes. Hybrid6.0 servers will
|
|
||||||
accept these modes from the unopped client, so if UserA ops UserB, who then
|
|
||||||
ops UserA, the channel will be the same across all Hybrid6.0 and Hybrid6.1
|
|
||||||
servers.
|
|
||||||
|
|
||||||
Example2:
|
|
||||||
|
|
||||||
As per Example2 above, except the rest of the network is TS3. ServerC is
|
|
||||||
TS5. ServerC would remove its modes and ops, therefore UserC would not be
|
|
||||||
opped on ServerC, therefore it could not send any mode changes to the
|
|
||||||
channel. Although it is opped elsewhere, it isnt opped locally, so the
|
|
||||||
desync cannot be abused.
|
|
||||||
|
|
||||||
As you can see, the desync's that can occur can either be resynced, or are
|
|
||||||
useless to the user, so a mixed TS5/TS3 network is not a huge problem,
|
|
||||||
although a desync is NOT a good thing to have.
|
|
||||||
|
|
||||||
|
|
||||||
Why TS5?
|
|
||||||
--------
|
|
||||||
|
|
||||||
We have jumped to TS5 from TS3, because there was a version of ircd that was
|
|
||||||
TS4, so it was thought better to avoid a clash with an existing version.
|
|
||||||
|
|
||||||
|
|
||||||
Advantages
|
|
||||||
----------
|
|
||||||
|
|
||||||
Its a realistic event that a server will be attacked so it splits off a
|
|
||||||
network, then used to regain ops in a channel. TS5 makes this pointless,
|
|
||||||
the server will never give ops on a netsplit. TS5 is network wide, so it
|
|
||||||
leaves individual servers free to choose options like NO_JOIN_ON_SPLIT,
|
|
||||||
whilst keeping splits useless to users.
|
|
||||||
|
|
||||||
|
|
||||||
Disadvantages
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Its virtually impossible for a user to actively regain ops themselves (some
|
|
||||||
regard this as an advantage..) because on a large sized channel, its
|
|
||||||
impossible to get people to leave so it can be recreated, therefore if a
|
|
||||||
network did not have some form of services, it could possibly end up
|
|
||||||
requiring oper intervention, as you cant get everybody to leave, and you
|
|
||||||
cant use splits to regain ops, therefore if the channel is open (an
|
|
||||||
invite-only channel would gradually destroy itself as noone new can join) it
|
|
||||||
could be impossible for a user to regain ops.
|
|
||||||
|
|
||||||
On a network that has some form of services, The effect of TS5 would be
|
|
||||||
minimal, however the services must be of sufficient quality to fix opless
|
|
||||||
channels, as TS5 renders netsplits for ops worthless.
|
|
||||||
|
|
||||||
|
|
||||||
Recommendations
|
|
||||||
---------------
|
|
||||||
|
|
||||||
If your network has good stable services, we recommend TS5 is enabled, as
|
|
||||||
people have no reason to abuse netsplits anyway.
|
|
||||||
|
|
||||||
If your network has no services at all, then TS5 may cause problems with
|
|
||||||
users being left with a permanently opless channel.
|
|
||||||
|
|
||||||
If your network occupies the middle ground, then its a choice between users
|
|
||||||
needing to be able to use splits to regain ops, or making netsplits that are
|
|
||||||
caused to regain ops worthless.
|
|
||||||
|
|
||||||
If TS5 is chosen, the FULL network must upgrade and this should be done in a
|
|
||||||
relatively short space of time to minimise the possible desync effects.
|
|
||||||
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
There is also NO_JOIN_ON_SPLIT and NO_OP_ON_SPLIT, however these use the
|
|
||||||
configuration of minimum servers and users, and sometimes a split that is
|
|
||||||
above these limits is enough to be abused to regain ops, whereas if the
|
|
||||||
limits are too high, clients will never be able to join anything or be opped
|
|
||||||
when they create a channel.
|
|
||||||
|
|
||||||
|
|
||||||
EOF
|
|
Loading…
Reference in a new issue