Netsplit документация

Встъпление

Netsplit, също така познати като Network Splits (разцепвания на мрежата), за съжаление са неразделна част от IRC. Тъй като IRC използва Интернет, IRC зависи от Интернет състоянието в дадена точка. Когато връзката м/у два или повече сървъра се разпадне (поради каквато и да е причина) netsplit-ът се появява. В тази документация ще ви обясним защо се появяват netsplits, как могат да се решат проблемите свързани с тях и какво да се прави, и да не се прави повреме на netsplit.

Съдържание

1 · Какво е netsplit

Netsplit се появява когато връзката м/у един или повече сървъри се разпадне с друг (поради каквато и да е причина). Мрежата се разделя на две половини. UniBG има много сървари, някой от които са хъбове, а някой са лийфове. Тези хъбове са свързани помежду си образуват мрежа. Към хъбовете също се свързват и други сървари които обикновено се наричат лийфове. Когато всички тези сървари са свързани помежду си, вие имате мрежа където всички сървъри са свързани или директно или индиректно един към друг.

За да разберете това по-добре мислете за него като за голямо дърво. Дървото има много разклонения които са свързани помежду си. Дървото също така има и листа които са свързани към определени разклонения. Когато се появи netsplit, лийф или хъб се разкача от останалата част от мрежата.

Когато това се случи, мрежата вече не е цяла и единна: има две части (или 'страни'). Едната страна с някой сървъри, а другата страна с другите сървъри които не са свързани помежду си по никакъв начин.

Ако това ви звучи объркващо, просто си помислете отново за дървото, ако единият клон падне частите на дървото отново ще стоят заедно, а останалата част (която ще бъде разклонението със всичките си листа) е някаде другаде. Тъй като те са част от една мрежа те са разделени и не могат да си комуникират. Ето пример който може да ви изглежда по простичък.

Пример. #1

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

В този пример два хъба са свързани заедно и всеки един от тях има по три други сървъра. Казано с други думи, 8 сървъра са свързани директно и индиректно и каквото стане на единият сървър става и на другите.

Пример. #2)

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

По-горе можете да видите, че вече хъбовете не са свързани заедно и тъй като хъбовете имат все още по 3 сървъра те не предават информацията на другите 3 сървъра.

Пример. #3)

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

Тук и двата хъба са свързани заедно, обаче на Hub#1 липсва един сървър. Този сървър може да бъде онлайн, но тъй като не е свързан с хъбът си само потребителите на този сървър ще могат да комуникират помежду си.

2 · Какво виждат потребителите

  • Когато сървър се разкачи от мрежата, потребителите от всяка страна на сплита ще видят другите потребители да изчезват. Quit съобщението ще изглежда така "irc.server1.net irc.server2.net", кадето server1 и server2 са сървърите които се разделят един от друг. Както и да е, това quit съобщение е различно от клиент до клиент.

    Пример. #1)

    vfork (fork@stupid.helper.com) Quit (irc.lirex.com irc.naturella.com)

    кадето naturella е сървърът на който е vfork и lirex е сървърът към който вие сте свързани)

    Както и да е, vfork от другата страна на сплитът ще види:

    Toshko (afrikanski@2.beer.or.not.2.beer.com) Quit (irc.naturella.com irc.lirex.com)

    където lirex е сървърът на който сте вие а naturella е сървърът на който е vfork.

    Пример. #2)

    Naturella------------Hub2
     |                    |
     |-Lirex              |-Leaf4
     |-Leaf2              |-Leaf5
     |-Leaf3              |-Leaf6
    

    Това е навсякаде едно и също, но по лесно да го разберете. Всеки на Lirex ще види така Naturella сякаш, че тя ги напуска и всеки на Naturella ще види така Lirex, сякаш че той ги напуска.

  • В случай, че на мрежата се получат повече от 2 или повече хъб сплитове, хората ще видят, така хъбовете сякаш те са на тези сървъри.

    Пример. #1)

    irc.Naturella.com и irc.spnet.net. Naturella все още държи Lirex, а spnet държи останалата част от сървърите.

    Quit съобщението ще изглежда ето така:

    vfork (fork@stupid.helper.com) Quit (irc.Naturella.com irc.spnet.net)

    и обратното от другата страна.

    Пример. #2)

    По лесен начин да излюстрираме това е да ви нарисуваме диаграма:

    Naturella        Spnet
     |                 |
     |-Lirex           |-Leaf1
                       |-Leaf2
                       |-Leaf3
    

    На тази илюстрация виждате, че Naturella е разделена от Spnet. Докато Lirex е все още свързан към Naturella, останалата мрежа я няма. В този случай ще видите Naturella и Spnet да се разделят, а не Lirex и Spnet.

  • И най-накрая, когато сървъвите се свържат отново, ще видите флуд от хора които се връщат в каналите и смяна на модовете в каналът от страна на сървърите, така че то да се върне както е било преди сплитът.

    Пример.

    [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] *** irc.Naturella.com sets mode: +ovvv user1 user2 user3 user4

    Това може да е нещо подобно на това което ще видите когато сървърите се свържат, сървърът който променя модовете в каналът е този който напуска мрежата и след това се връща.

3 · Как можем да решим проблемите с netsplits

Ето тук в играта се включват IRC операторите. Веднага щом netsplit-ът се появи, глобално съобщение ще бъде пратено от сървърът съдържащо кой сървър се е разделил от мрежата и защо (read errors, timeouts т.н...). И сега, обратно на очакванията на повечето хора IRC операторите наистина си вършат работата, доста добре и оправят тези разцепвания на мрежата колкото могат по бързо. IRC операторите винаги ще се опитват да свържат двата или повечето разделени сървъра към останалата част от мрежата. Когато това се провали, те ще се опитат да reroute сървърите към други хъбове които имат C/N линии (без тези линии не могат да се свържат два сървъра) за този сървър.

4 · Какво трябва и какво не трябва да правим повреме на netsplit

  • Най-безопасният начин да избегнете netsplit е просто да стоите там кадето сте и да чакате сървърите да се свържат.

  • НЕ се опитвайте да се свържете към разделеният сървър за да получите операторски статус в определен канал. Първо на първо всичко ще се провали понеже когато сървърите отново се свържат вашият операторски статус ще бъде премахнат или от другият сървър или от сървайсес. Второ, доста хора ще бъдат разярени от това което правите и на никой няма да му хареса.

  • Ако решите да смените сървърът, уверете се, че там където се свързвате са по-голямата част от потребителите. Бихме ви препоръчали да използвате друг псевдоним в случай, че един от сърварите е лагнат и ви записва като потребител на него. Както и да е, както вече бе казано най-добре е да стоите там където сте и да чакате всичко да се върне по стару му.

  • НЕ занимавайте IRC операторите когато видите netsplit, ако те са онлайн ще го видят сами, а ако са offline няма никакъв смисъл да ги тормозите.


Написано от Mystro ()