Рубрика «сетевые протоколы» - 2

image

В мае этого года я участвовал в качестве игрока в MMO-мероприятии KatherineOfSky. Я заметил, что когда количество игроков достигает определённого числа, через каждые несколько минут часть из них «отваливается». К счастью для вас (но не для меня), я был одним из тех игроков, которые отключались каждый раз, даже при наличии хорошего подключения. Я воспринял это как личный вызов и начал искать причины проблемы. Спустя три недели отладки, тестирования и исправлений ошибка наконец устранена, но это путешествие было не таким уж простым.

Проблемы многопользовательских игр очень трудно отследить. Обычно они возникают в очень конкретных условиях параметров сетей и при очень специфичных состояниях игры (в данном случае — наличие более 200 игроков). И даже когда удаётся воспроизвести проблему, её невозможно должным образом отлаживать, потому что вставка контрольных точек останавливает игру, путает таймеры и обычно приводит к завершению соединения из-за превышения срока ожидания. Но благодаря упорности и замечательному инструменту под названием clumsy мне удалось выяснить, что же происходит.

Если вкратце: из-за ошибки и неполной реализации симуляции состояния задержки клиент иногда оказывался в ситуации, когда ему приходится за один такт отправлять сетевой пакет, состоящий из вводимых игроком действий выбора примерно 400 игровых сущностей (мы называем его «мегапакетом»). После этого сервер не только должен правильно получить все эти действия ввода, но и отправить их всем остальным клиентам. Если у тебя 200 клиентов, это быстро становится проблемой. Канал к серверу быстро забивается, что приводит к утере пакетов и каскаду повторно запрошенных пакетов. Откладывание действий ввода затем приводит к тому, что ещё больше клиентов начинает отправлять мегапакеты, и их лавина становится ещё сильнее. Удачливым клиентам удаётся восстановиться, все остальные «отваливаются».
Читать полностью »

В прошлый раз мы говорили об истощении IPv4 — о том, кто владеет небольшой долей оставшихся адресов и почему так получилось. Сегодня обсуждаем альтернативу — протокол IPv6 и причины его медленного распространения — кто-то говорит, что виновата высокая стоимость миграции, а кто-то заявляет, что технология уже устарела.

Кто внедряет IPv6, и что тормозит его развитие - 1Читать полностью »

Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Combat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.

TCP против UDP или будущее сетевых протоколов - 1
Осторожно, под катом 99 иллюстраций и схем и все важные.
Читать полностью »

Я уверен, что многие из читателей Хабра знают, или хотя бы слышали, об аудио-аппаратуре компании Onkyo. Современные сетевые плееры и A/V ресиверы имеют на борту Линукс, а также возможность проводного/беспроводного подключения к сети. Компания Onkyo предоставляет своё фирменное мобильное приложение для удалённого управления подобным устройством — Onkyo Controller. Информации, как это приложение работает, практически нет — есть крохи на форумах, а также несколько проектов на github.
Протокол ISCP-eISCP от Onkyo: управление устройствами Onkyo по сети - 1

Но можно отыскать в сети описание протокола Integra Serial Communication Protocol over Ethernet (eISCP), который и лежит в основе этого приложения. Протокол интересный. На Хабре ни одной статьи по этому протоколу найти не удалось. С одной стороны, ничего трагичного в этом нет, так как эта проприетарщина нигде, кроме Onkyo, вроде бы и не используется. С другой стороны есть шанс, что найдутся энтузиасты, которые захотят самостоятельно порулить своим плеером или ресивером Onkyo. Также статья может быть интересна тем, кто чисто из теоретического любопытства коллекционирует знания по различным сетевым протоколам. Если заинтересовал, прошу под кат.
Читать полностью »

Позавчера, 13 октября 2018 года, состоялось достаточно знаменательное событие. Согласно открытой статистике Google, общее количество IPv6-соединений с серверами компании превысило 25%. Сейчас эта цифра составляет 25,04%. Учитывая массовость Google и присутствие компании на всех крупных рынках кроме Китая, эту статистику можно назвать «умеренно релевантной» и на ее основе утверждать, что мир постепенно движется к переходу на прокол IPv6 с IPv4, адресов которого уже серьезно не хватает.

Пользователи Google перешагнули 25% рубеж по количеству IPv6-соединений - 1
Карта распространенности IPv6-подключений

Самыми активными странами по использованию протокола IPv6 являются Германия (39,14%), Греция (36,53%) и США (34,23%). С небольшим отставанием за этой тройкой идут Индия (33,51%), Уругвай (32,45%) и Малайзия (28,89%). А вот очевидная для всех инноваторская Япония позади этих стран с показателем в ~26,72%. Еще можно выделить Канаду, Францию, Финляндию, Бразилию, Перу, Саудовскую Аравию и даже Эквадор. А вот на территориях за пределами Европы и обеих Америк дела обстоят значительно хуже. На территории СНГ IPv6 почти не используется (<1% соединений).
Читать полностью »

Сейчас онлайн-курсы не создает только ленивый. Я решил присоединиться к этому движению и перенести в онлайн вводный курс по компьютерным сетям, который читаю в университете. Видео курса есть на YouTube в открытом доступе.

Онлайн курс по компьютерным сетям начального уровня - 1

Зачем нужен еще один курс?

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

Я решил сделать курс начального уровня, в котором кратко и ёмко рассказать об основных понятиях компьютерных сетей. Для этого мне пришлось убрать из курса много сложных технических деталей, которые не являются обязательными для понимания принципов работы сетей. В результате получился короткий видеокурс, который можно посмотреть за обозримое время (2-3 дня). А после того, как вы поняли основные принципы, в технических деталях можно разобраться самостоятельно по книжкам или материалам в интернет.
Читать полностью »

Швейцарские исследователи описали HORNET, аналог Tor, который работает быстрее - 1Анонимная криптографическая сеть виртуальных туннелей Tor обладает целым рядом достоинств. Tor легко подменяет адрес соединения, позволяя входить в обычный Интернет с использованием IP одной из выходных нод. Также можно разместить в сети Tor скрытые веб-сайты, установить реальное физическое местоположение которых будет невозможно (по крайней мере, в теории). Это и делает Tor инструментом политических активистов, наркоторговцев, журналистов и обычных пользователей Сети. При всех своих привлекательности и защищённости от прослушки и отслеживания Tor обладает значительным недостатком: он работает слишком медленно. Исследователи из Швейцарской высшей технической школы Цюриха создали концепт тороподобной анонимной сети, которая работает быстрее.
Читать полностью »

Цель данной статьи — познакомить читателя с различными сетевыми протоколами прикладного уровня, которые используются в GPS-трекерах. Практически каждый производитель оборудования для GPS-мониторинга считает своим долгом изобрести новый протокол для взаимодействия между устройством и сервером мониторинга. Часто при разработке оных инженеры прибегают к изощренным решениям для экономии трафика или упрощения жизни разработчикам прошивки устройств.
Читать полностью »

Введение в Distributed Switch Architecture: технология управления сетью как единым устройством - 1

Команда дизайн-центра электроники Promwad возвращается на Хабр после зимних каникул с новыми статьями о разработке встроенного ПО и новых устройств для серийного производства. Сегодня мы поделимся своим опытом в теме сетевых технологий.

Среднестатистическая домашняя сеть, также как и сеть небольшого предприятия, — это уже давно не просто два–три компьютера, соединенные через первый попавшийся китайский коммутатор. Вместе с ростом объема контента (базы данных, потоковое аудио/видео и т.д.) и увеличением количества устройств (VoIP-устройства, серверы, NAS-ы, IP-камеры, а в домашних сетях — телевизоры и прочий «интернет вещей») растет и количество передаваемых данных через сетевую инфраструктуру. Потоки данных нужно разделять между собой, при этом не забывая о приоритезации трафика: например, VoIP-трафик желательно пускать с большим приоритетом, чем IPTV, а IPTV в свою очередь — чем торренты. Поэтому не удивительно, что со временем даже малые локальные сети усложняются, а емкости портов одиночных коммутаторов становится недостаточно…
Читать полностью »

Melange — DSL для сетевых протоколовВсем программистам рано или поздно приходится передавать данные. Ни для кого не секрет, что библиотек сериализации в Java существует примерно >9000, а в C++ они вроде и есть, а вроде их и нет. К счастью для большинства, несколько лет назад появился Google Protobuf, который принёс достаточно удобный способ определять структуры данных и быстро завоевал всенародную любовь. Это была фактически первая, доступная широким массам библиотека, позволяющая гонять по сети готовые структуры данных, не связываясь при этом с чем-то вроде XML. На дворе был 2008 год.

Вернёмся немного назад. В 2006 году простой индийский программист (как бы подозрительно это ни звучало!) Анил Мадхавапедди, один из самых известных сейчас в мире OCaml-разработчиков и автор свежевышедшей книги Real World OCaml, защищал в Кембридже кандидатскую диссертацию. Именно о ней я сегодня вам и расскажу.

Анил сразу пошёл дальше, чем Google. Он сразу подумал, для чего люди обычно пересылают по сети какие-то формализованные структуры данных? Чтобы реализовать какой-то протокол. А что такое протокол? Это какой-то конечный автомат. А где мы можем взять хороший пример сложного, хорошо спроектированного и проверенного временем протокола? Да прямо в обычном сетевом стеке! Итак, были взяты набор сетевых структур данных и протоколов: Ethernet frame, IPv4, ICMP, TCP, UDP, SSH, DNS и DHCP и постановка задачи: большая часть этих протоколов (особенно SSH и DNS) реализуются, что называется «руками», а хочется, чтобы не было типичных для C переполнений буфера, все переходы совершались автоматически, это всё можно было верифицировать, и чтобы работало быстро, а не как обычно.

Поскольку никто не будет читать диссертацию, сразу скажу: это более чем удалось. По результатам работы были написаны референсные реализации DNS и SSH-сервера и произведено сравнение с BIND и OpenSSH. OCaml-реализации давали по сравнению с традиционными прирост производительности от незначительного, до почти двухкратного. Кроме того была найдена ошибка в RFC на SSH (рабочая группа была уведомлена и RFC исправлен). О том, что было сделано, и как с этим жить, читайте под катом. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js