Skype - известная система интернет-телефонии, которой пользуется очень много народу по всему миру. Разберемся как оно работает.
Skype для работы использует P2P соединения, а не клиент-серверную модель. Что неудивительно, если вспомнить, что авторы Skype - те же люди, что работали над Kazaa. Однако совсем от клиент-серверной архитектуры им отойти не удалось. У них есть логин-серверы - это единственной централизованный компонент Скайпа (список серверов, к которым надо коннектиться запрятан в исходники Скайповского клиента). И этот единственный централизованный компонент их как-то раз подвел. В 2007 году пользователи Скайпа не могли с ним работать в течение двух дней. Причиной было то, что был выпущен Виндовый патч, который вызвал ребут всех пользовательских машин. Машины ребутнулись и стали дружно логиниться. Сервера Skype были погребены под огромным количеством одновременных логинов.
P2P соединения - это, конечно, хорошо. Однако как быть, если два пользователя, которые хотят сконнектиться, сидят за фаирволлами? Skype борется с симметричными NATами и фаирволлами следующим образом - гонит трафик через тех пользователей, кто не сидит за фаирволлом. Вообще в скайповской сети машины подразделяются на ноды - обычные машины, суперноды - которые разруливают трафик нодов, ну и на их собственные логин-серверы. Так вот, если у вас публичный IP адрес, достаточная мощность CPU, много памяти и пропускная способность сети не подкачала, то вы - супернод! И через вас пойдет чужой трафик. :-)
В качестве базы данных для работы Skype использует PostgreSQL. Но им пришлось PostgreSQL под себя затачивать. Результаты заточки распространяются под BSD лицензией. Лежат тут. Недавно поставили себе амбициозную цель: PostgreSQL должен масштабироваться до одного миллиарда пользователей.
Исходники Скайпа закрыты, протокол тоже закрыт. Есть, правда, Skype API, который позволяет расширять пользовательский интерфейс. Однако пытливые умы ковыряются в скайповском протоколе и находят интересные вещи. Есть очень известный доклад Vanilla Skype, в котором подробно рассказывается об особенностях работы Скайпа и о потенциальных его уязвимостях.
Еще парочка фактов: Для передачи звука они используют Global IP Sound (GIPS). Железо - dual или quad Opteron'ы со SCSI RAID.
Ссылки по теме:
Доклад Vanilla Skype part1[.pdf] и part2[.pdf]. Можно посмотреть видеозапись этого доклада. Осторожно, английский с сильным французским акцентом.
Skype Protocol - статья в Википедии
An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol - довольно старые слайды
Иван Золотухин в своем докладе на РИТ2007 немного говорил о скайповском PostgreSQL.
воскресенье, мая 11, 2008
Архитектура Skype
в 23:15:00
Категории: programming
Подписаться на:
Комментарии к сообщению (Atom)
26 коммент.:
Молодцы они - эти ребята, что skype сделали, я достойных конкурентов как-то не наблюдаю
вот конкурент
но в 2009 году :-)
2Виталий:
И в чем же они молодцы?
Советую поискать в сети документик о том, что представляет из себя скайп на самом деле. Имени файла не помню, но помню, что это был PDF.
Очень жаль конечно, что нет достойного open-source аналога...
Всегда знал что Skype - унылое дерьмо, теперь еще раз убедился. У меня трафик не бесплатный, чтоб соседи за мой счет разговаривали, да и не сильно приятно, что мои разговоры будут идти через какого-то васю пупкина.Да и считаю, не красиво поступает контора, берущая деньги за звонки наружу и из вне, перенося вычислительные мощности на клиентов. Лохов имхо делают из пользователей.
что надо сделать чтобы не быть супернодом?
чтобы через тебя не гнали трафик а то он у нас дорогой =\
Я так понимаю, чтобы не стать супернодом, достаточно поместить машины со Skype за Nat - решение кривое, но может помочь
Можно просто запретить входящие соединения для Skype... входящий порт вроде бы настраивается.
Трафик там шифрованный, перенаправление его через кого-бы то ни было вряд ли позволит подслушать разговоры...
В FAQ кстати упоминается, что "и также некоторые звонки передаются через других участников сети."
Но с другой стороны при использование хоста для перекачивания трафика стоило бы спросить владельца. То есть галочка "Хочу быть супарнодом" была бы правильным решением. И за трафик начислять деньги на счет :)
Сам скайпом не пользуюсь, поэтому могу где-то наврать. Извините.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype\Phone]
"DisableSupernode"=dword:00000001
Как это конкурнетов нет? Вроде полно подобных сервисов, размах не такой конечно, но работают не хуже скайпа.
2Abava:
вот конкурент
но в 2009 году :-)
Им будет очень сложно влезть в уже занятую нишу. Там в статье хорошо написано: Isn’t it too little, too late? Realistically speaking, there’s a slim chance of anyone catching up with Skype.
2RedChrom
Очень жаль конечно, что нет достойного open-source аналога...
Есть! Google Talk.
2Salvator:
Всегда знал что Skype - унылое дерьмо, теперь еще раз убедился. У меня трафик не бесплатный, чтоб соседи за мой счет разговаривали
В принципе, так все P2P сети работают. Skype тут ничем от других не отличается.
2RedLiner:
что надо сделать чтобы не быть супернодом?
О, народ занервничал :-). Я так понимаю, большинство вопрошающих сидит за NATами и фаирволлами, тут супернодом не станешь.
Также Анонимный привел ключ в реестре, где это настраивается. Предполагаю, что к этому ключу можно и через настройки клиента как-то доступиться.
Не могу не рассказать страшилку на ночь. Мой муж как-то стал супернодом. Было это довольно давно. Он на работе в пятницу вечером скачал себе музыку и забыл закрыть P2P клиент (Shareaza если кому интересно). Который проработал все выходные. Быстрый хост с публичным айпишником быстро был признан стабильным и через него пошел поисковый трафик. В понедельник начальник с грустными глазами и логом от провайдера стал вопрошать, а не качал ли кто чего. "И тут меня осенило" (с).
Алена, скажите от куда такая информация что для передачи звука и видео нужны Opteron'ы??? Так же хочу заметить что собственно трафику все равно куда ползти а грамотно настроенный фаервол без труда может соединить двух пользователей skype :)
Аналоги - Twinga, Ekiga.
Самый =главный= факт - ребята из Skype пытались намедни отрицать лицензию GPL.
http://www.securitylab.ru/news/352841.php
А я борюсь с качелями =просто=. Не с грустными глазами, а с посчитанным по хостам траффиком хожу. Вообще - самая эффективная борьба - на административно-организационном уровне. Человек, заплативший 8-10 тыщ рублей за закачку, сидит потом тихо. ((:
Интересные «ванильные» PDF-ы!
Что скажете об этом, господа? Развивающийся сервес. Прекрасное качество видео даже на 32kbps
2mczim:
Алена, скажите от куда такая информация что для передачи звука и видео нужны Opteron'ы???
Нужны, почему нужны? Скайповцы используют Opteron'ы. Информация отсюда.
Так же хочу заметить что собственно трафику все равно куда ползти а грамотно настроенный фаервол без труда может соединить двух пользователей skype :)
Эээ... Если пользователи сидят за симметричными NATами, то их не получится без релея законнектить.
2Abu:
А я борюсь с качелями =просто=. Не с грустными глазами, а с посчитанным по хостам траффиком хожу. Вообще - самая эффективная борьба - на административно-организационном уровне. Человек, заплативший 8-10 тыщ рублей за закачку, сидит потом тихо. ((:
Жестоко. Мало ли, ошибся человек, бывает. Зачем же сразу так. Мужа моего просто попросили больше так не делать. Ну он и не делал...
2VZOChat:
Что скажете об этом, господа? Развивающийся сервес. Прекрасное качество видео даже на 32kbps
Здорово, но зарулить Skype все равно будет очень и очень непросто. Даже с прекрасным качеством видео.
2Алёна
=
Жестоко. Мало ли, ошибся человек, бывает. Зачем же сразу так. Мужа моего просто попросили больше так не делать. Ну он и не делал...
=
А когда 200-300 человек в конторе и, допустим, ошиблось 10 ? ((: Конечно же, всякое бывает, подход не абсолютно однозначный - наказывать. Но когда начальство приходит и спрашивает - тут ничего поделать нельзя - траффик считается, все об этом знают.
Вообще проблема скайпов и прочих Р2Р-сетей на административном уровне решается лучше, чем на уровне NAT и прочего, не побоюсь этого слова, рукоблудия на стороне сисадмина.
Всегда есть открытые порты. Всегда есть Mail-agent, например, который невинно лезет во все дыры ((: и всегда есть человек.
http://www.openwengo.org/ - отличная открытая альтернатива скайпу и совместима с нормальными протоколами. И в россию я звонил нормально
занятное про скайп от Касперски:
http://www.xakep.ru/magazine/xa/100/064/1.asp
Юзайте SIP телефоны и будет вам щастье ;)
Скайп мне очень нравится. Но опенсорсный был бы лучше :)
Алёна:
В понедельник начальник с грустными глазами и логом от провайдера стал вопрошать, а не качал ли кто чего. "И тут меня осенило" (с).
The best!
Пользуемся скайпом ежедневно для общения с московским офисом. Выглядит это так: минуту слушаешь нормальную речь, потом минуту слушаешь хрюканье и шипение, потом минуту объясняешь человеку с какого момент ты перестал его слышать, потом минуту ждёшь, пока он вспомнит, что успел наговорить за это время и так далее по кругу. Нет, я понимаю, что перебои трафика неизбежны, но ведь можно придумать всякое! Идея номер раз: как только клиент определяет, что трафик не доходит до оппонента, то сразу индицировать это. Чтобы не говорить зря в devnull и не вспоминать потом, что успел наговорить. Идея номер два: при нестабильном канале накапливаем буферное время, которое позволяет информации таки дойти и воспроизвестись без паузы. Идея номер три: для компенсации времени используем плавное изменение скорости проигрывания (частоту звука при этом, разумеется, не трогаем). Идея номер четыре: если звук таки пришлось прервать (данные ещё не пришли, а фора по времени исчерпана), то по прешествии данных отматываем звук слегка назад и фэйдим, чтобы легче восстанавливался контекст. Ну, и т.п.
Скайп хорош.
А все аналоги пока какие-то невнятные. Огорчил также скандал в Германии.
Skype рулит!!! :)
Skype и как messanger вплоне отличен
Отправить комментарий