Нетсплиты

Version 1.0.0


Last translated by Azeri`H () and The_Paranormal () on 2005-07-04

Originally written by Mystro () on 2000-10-01

Please direct any comments or feedback about this document (only! no help requests!) to docs@dal.net. If you need help on issues not covered in this document, please see the information at http://help.dal.net.

Введение

Нетсплиты (Netspits - Network Splits) - к сожалению неизбежная проблема всех IRC сетей. Так как IRC использует Интернет, то он и зависит от Интернета полностью. Когда нарушается соединение (по любой причине) между двумя серверами, начинается нетсплит. В настоящем документе я объясню почему происходят нетсплиты, как они устраняются, а также что делать и чего не делать во время нетсплита.

Contents

1 · Что такое нетсплит

Нетсплиты происходят когда по какой-либо причине нарушается соединение между двумя или более серверами. Тогда сеть разделяется на две независимые части. DALnet имеет множесто серверов, которые бывают двух типов: хабы и листья. Хабы соединены между собой и образуют сеть. Также хабы связывают один или более дополнительных серверов, называемых листьями. Когда все эти сервера соединены, у Вас есть сеть, где любой сервер соединен с другим напрямую или косвенно.

Чтобы лучше проиллюстрировать ситуацию, предлагаю Вам представить некое большое дерево. Дерево имеет множество веток, соединенных между собой посредством ствола. Дерево также имеет листья, соединенные с ветками. Нетсплит - это когда срывается лист или отламывается ветка.

В этом случае сеть больше не представляет собой единое целое - теперь существуют две части (или "стороны"). Одна сторона с несколькими серверами и другая - с другими серверами, и эти стороны, а, следовательно, и сервера, больше не соединены между собой.

Если это кажется путанным, просто представьте дерево: одна ветка со всеми своими листьями отламывается и падает, а остальная часть дерева остается и больше не поддерживает "связь" с отломанной веткой. Это выглядит примерно так:

Пример #1

Hub1------------Hub2
 |               |
 |-Leaf1         |-Leaf4
 |-Leaf2         |-Leaf5
 |-Leaf3         |-Leaf6

В данном примере 2 хаба соединены между собой и каждый хаб имеет по три сервера. Другими словами, 8 серверов прямо или косвенно соединены между собой и все, что случается на одном сервере, случается и на другом.

Пример #2)

Hub1            Hub2
 |               |
 |-Leaf1         |-Leaf4
 |-Leaf2         |-Leaf5
 |-Leaf3         |-Leaf6

Выше в примере видно, что хабы больше не соединены между собой и, хотя каждый хаб все еще держит по три сервера, сервера эти больше не обмениваются друг с другом информацией.

Пример #3)

Hub1-----------Hub2
 |              |
 | Leaf1        |-Leaf4
 |-Leaf2        |-Leaf5
 |-Leaf3        |-Leaf6

Здесь оба хаба соединены, но хаб#1 потерял один свой сервер. Этот сервер все еще может быть онлайн, но так как он больше не подсоединен к хабу, пользователи на сервере будут как бы отсечены от всей остальной сети - пользователи сети не видят, что происходит на этом сервере, а пользователи сервера не видят, что происходит во всей остальной сети.

2 · Что видят пользователи

  • Когда сервера разделяются, пользователи каждой из сторон видят как остальные пользователи исчезают. Их quit сообщения выглядят примерно так: "server1.xx.xx.dal.net server2.xx.xx.dal.net", где server1 и server2 - сервера, отделяющиеся друг от друга. Однако, квит сообщения могут различаться на разных клиентах.

    Пример #1)

    Mystro (mystro@mystro.canshell.com) Quit (liberty.nj.us.dal.net vader.ny.us.dal.net)

    Где Vader - это сервер, на котором находится Mystro, и liberty - это сервер, на котором находитесь Вы.

    Mystro по другую сторону нетсплита увидит что-то вроде:

    WhateverNick (someperson@someisp.com) Quit (vader.ny.us.dal.net liberty.nj.us.dal.net)

    (Для справки: Vader - это хаб на DALnet, не разрешающий публичные соединения, и я использовал его только в демонстрационных целях)

    Пример #2)

    Vader----------------Hub2
     |                    |
     |-Liberty            |-Leaf4
     |-Leaf2              |-Leaf5
     |-Leaf3              |-Leaf6
    

    Это тот же пример, что и выше только с названиями сервера и хаба. Все, кто на liberty увидят как все, кто на Vader как будто покидают их, а все, кто на Vader увидят, что выходят пользователи liberty.

  • В случае нетсплита между двумя или несколькими хабами, люди увидят ситуацию так, как будто они находятся на хабах.

    Пример #1)

    Vader.ny.us.dal.net and Journey.ca.us.dal.netsplit. Vader все еще удерживает liberty и Journey удерживает оставшуюся часть серверов.

    Quit сообщение будет выглядеть примерно так:

    Mystro (mystro@mystro.canshell.com) Quit (vader.ny.us.dal.net journey.ca.us.dal.net)

    И наоборот для пользователей по другую сторону.

    Пример #2)

    Продемонстрируем это на диаграмме:

    Vader           Journey
     |                 |
     |-Liberty         |-Leaf1
                       |-Leaf2
                       |-Leaf3
    

    В данном примере Вы видите, что Vader отсоединился от Journey. Liberty соединен с Vader, но остальная часть сети потерялась. В этом случае я увижу что сплит произошел между Vader и Journey, а не между liberty и Journey.

  • Наконец, после того как сервера соединятся снова, Вы можете увидеть поток пользователей, входящих на канал(ы) и еще сервер скорее всего будет менять режимы, так, чтобы вернуть все в досплитовое состояние.

    Пример

    [16:22] *** user1 (user1@blah.com) has joined #blah

    [16:22] *** user2 (user2@blah.com) has joined #blah

    [16:22] *** user3 (user3@blah.com) has joined #blah

    [16:22] *** user4 (user4@blah.com) has joined #blah

    [16:22] *** user5 (user5@blah.com) has joined #blah

    [16:22] *** liberty.nj.us.dal.net sets mode: +ovvv user1 user2 user3 user4

    Сервер, меняющий режимы, всегда будет тем, который отключался от сети (и затем, соответственно, перезашел в нее).

3 · Как устраняются сплиты

Это как раз тот момент, когда в игру вступают IRC Операторы. Как только начинается нетсплит, сервером рассылается глобальное сообщение всем Иркопам о том, какой сервер и по какой причине (ошибки чтения, таймауты и т.д.) отключается от сети. И Иркопы выполняют свою работу быстро и точно, с максимально возможной скоростью устраняя нетсплиты. Они сразу же начинают пытаться пересоединить два или более серверов к остальной сети. Если это не удается, они перемаршрутизируют сервера на другие хабы, содержащие строки C/N (линковочные строки, без которых нельзя соединить один сервер с другим) для данного сервера.

4 · Что делать и чего не делать во время нетсплита

  • Наиболее удачное решение в случае нетсплита состоит в том, чтобы просто оставаться там, где Вы есть, и ждать пока сервера переконнектятся.

  • НЕ пытайтесь соединиться с выпавшим сервером для получения опа на каком-либо канале. Во-первых, это бесполезно с тех пор, как сервера DALnet перестали позволять людям получать опа на каналах во время нетсплита. А во-вторых, сервера восстанавливают режимы в досплитовое состояние, так что Вы будете деопнуты как только сервера переконнектятся.

  • Если Вы все-таки решили переключиться на другой сервер, убедитесь, что переключаетесь на тот, где больше всего пользователей, так же я рекомендую использовать другой ник, на тот случай, если какой-то из серверов лаганет и будет считать, что Вы все еще находитесь на этом сервере (в этом случае после реконнекта серверов Вас может килльнуть с причиной "Nick collision"). Хотя, повторюсь, лучшим вариантом будет просто оставаться там, где Вы есть и спокойно переждать, пока все не вернется на круги своя.

  • НЕ закидывайте Иркопов сообщениями о том, что Вы увидели нетсплит! Если они у "пульта", то и так будут в курсе, а если нет, то они и не увидят что Вы им что-то говорите.

5 · Глоссарий

IRC

IRC означает Internet Relay Chat. Позволяет тысячам пользователей, подобным Вам и мне, общаться с тысячей других пользователей со всего мира.

IRC Оператор

IRCop (Иркоп) - пользователь с особым доступом к IRC серверу. Иркоп следит за тем, чтобы сервер работал без сбоев, отслеживает нетсплиты и устраняет их, наказывает "проблемных" для сети пользователей. Иркопов часто ошибочно зовут "Копами" (Коп = мент на англ.), что, однако, совсем не верно. Они скорее техники, следящие за работой сети. Для блага пользователей.

Хаб и лист

"Хаб" - это сервер, соединяющий 2 или более серверов между собой, образуя сеть. Лист же не может соединяться более чем с одним сервером и, в большинстве случаев этим сервером является хаб.

6 · Заключение

DALnet старается сделать пребывание "иркеров" в сети как можно более приятным. Если и когда случаются нетсплиты, администрация (Иркопы и Админы) сразу же принимается за работу, чтобы как можно быстрее устранить нетсплит и позволить пользователям продолжать нормальное общение. К сожалению ни одна IRC сеть не исключила полностью нетсплиты, и в случае, когда они случаются, все, о чем мы просим - это немного терпения, пока Иркопы выполняют свою работу, чтобы Вы могли вернуться к тому, чем занимались до сплита %)