New features in the IRCnet ircd 2.11
1. Preface
A nickname collision between two users using 2.11 ircd doesn't disconnect the two anymore (Please note that all Servers between those two Users have to be 2.11 to actually prevent Nickname Collisions). If you get KILLed[1], you can be certain that the kill originated from an IRC Operator. The nick collisions that we know from the times of 2.10 ircd are removed with the new protocol.

2. The problem
Nicks on a network have to be unique.
That's not a problem usually - if somebody is using a certain nick, nobody else can use it anymore. But when a split occurs and the connection between two servers is broken a problem occurs: one side is not aware of the nicks that are being used on the other. While the two parts are seperate that's not a big deal. But when the connection is established again, there are two users.
It would be enough to kill just one, but because of fairness both are killed (Nick Collision). Some people abuse this to disconnect (collide) innocent users.

3. The solution
UIDs (unique IDs) were introduced. That UID is -like the name suggests- unique on the whole network, because it starts with a SID (Server ID) and ends with a ID uniquely assigned by the server. Instead of disconnecting the user, just his nick is changed to the UID.
It's just important for an UID to start with a digit. Normal nicks can't contain that character at the first place.
The Server ID on IRCnet is 4 characters long and begins with 3 digits that are assigned based on the geographical location via <ISO3166 countrycode> and ends with an identifier of the server in the TLD.

The UID doesn't depend on the nick at all. It is generated by the server. The user "mc" could have a "2768ABC78" UID. In this example 276 is the ISO3166 code for Germany, 8 the ID of the german server and "ABC78" an "serial" number, assigned by the server.
You can see your UID in the 042 numeric when connecting.
A user can change his nick to that UID at any time (by doing /nick UID or simply /nick 0). Also you can already connect with nick "0", which frees you of the headache of choosing a nick. (This is useful for automatons, especially.)
The UID can be also used in bans, ban exceptions or invite lists. For example to ban all users on italian servers you could do:
/mode !channel +b 380*!*@*). /mode !channel +b *!*@*.it would ban the users with an italian hostmask on any server.

4. Other changes in 2.11
  1. Additionally to * and ?, # can also be used as a wildcard (for example in bans). # specifies one digit (0-9).
  2. /list doesn't disconnect an user anymore. If there are too many channels (the client's SendQ[2] becomes too full) the command is abandoned.
  3. Username (ident) and hostname are being checked for invalid characters more strictly.
  4. If the user supplies a quit message, it always gets enclosed in quotation marks. This way you can for example easily distinguish whether one did /quit Ping timeout ("Ping timeout") or it really was a Ping timeout (Ping timeout). It prevents fake quit messages to simulate error messages. In 2.10 just fake local kills or quit messages which looked like a netsplit got changed. (But in a different way.)
  5. If a /join after the /invite overrides a ban or a limit all the people on the channel are notified with a notice what exactly that invite overrides and who sent it.
  6. Bans, ban exceptions and invite lists now support CIDR notation. Example: /mode !channel +b *!*@10.1.2.0/24
  7. Because of the scandinavian origin of IRC [, \, ], and ^ were the letters {, |, } and ~ in uppercase. That logic was abandoned in 2.11.
    Until 2.11.1 all those characters will be blocked in nicknames. The reason why may be seen in this scenario: a 2.10 Server has a client with the nick [blah], a 2.11 introduces {blah} For 2.11 it will be two different Nicks, but for 2.10 it will be the same nick and it will kill both clients because of Nick-Collide. (The only exception is ^ because the lowercase letter ~ was not permitted in the nick before and is not problematic).
    If the {, |, }, ~ characters are used in the channelname, they will be automatically changed to their uppercase equivalents ([, \, ], ^). (This is a precaution in preparation of unicode support in ircd)
  8. An "ReOp List" has been added. So far channel operators may only remove these modes. In later 2.11 versions opped IRC operators have the power to also set +R. When the whole network switches to 2.11 any channel op will be able to set this +beI alike mode. (The current restriction is there to prevent abuse, as the new mode doesn't pass through 2.10 servers) The mode specifies who to reop when the channel becomes opless.
  9. Channel remembers who and when set the topic (known as 333 Numeric).
  10. The length of the topic has been extended to 160 Characters.
  11. /whois shows user signon time


Author: Grega "fiction" Pogacnik
Translation:
Last changed: $Date: 2004-11-10 17:41:29 $
Revision: $Revision: 1.13 $
1) KILLed
KILL means that you get disconnected from the server

2) SendQ
Send queue is a buffer internally used by the ircd. Everything is put into the SendQ before it is sent to the client. If the client can't receive that data fast enough the SendQ it is getting filled more and more. Hoping it's just a temporary failure on the link and then the client will be able to receive the whole bunch.