войти зарегистрироваться

Серверная оптимизацияПодкрутим гайки TCP/IP в Solaris

Добрый день, уважаемые хабрапользователи, несмотря на тенденцию падения Oracle в глазах системных инженеров и компаний заказчиков. Операционная система, теперь уже Oracle Solaris продолжает жить и радовать наш глаз.
Недавно столкнулся с вопросом оптимизации некоторых параметров TCP/IP стека. Данная тема показалась мне интересна, многим она может показаться уже избитый, а кого то познакомит с новыми интересными моментами настройки. Итак начнем…

Сетевые технологииСделаем TCP быстрее

Компания Google опубликовала ряд рекомендаций, как уменьшить задержку (latency) для TCP-соединений между веб-сервером и браузером. В этих рекомендациях обобщаются исследования, которые компания вела в течение нескольких лет.

1. Увеличьте первоначальный размер congestion window до 10 (IW10). Сейчас в начале TCP-соединения отправляется три пакета данных в три раунда (RTT) для передачи небольшой информации (15 КБ). Наши эксперименты показывают, что IW10 уменьшает сетевую задержку для веб-соединений более чем на 10%.

2. Уменьшите первоначальный таймаут с 3 секунд до 1 секунды. RTT в 3 секунды был приемлем пару десятилетий назад, но в современном интернете нужен гораздо меньший таймаут. Наше обоснование для этого хорошо задокументировано здесь.

Сетевые технологииО сетях: всего понемногу

Недавно у нас были небольшие обучающие курсы для повышения нашей компетенции в сетевой части нашей инфраструктуры. Основную идею этих курсов, покрывающую OSPF/BGP/MPLS я тут повторять не буду ибо:
  • Пока ещё явно недостаточно компетентен.
  • Есть много более объективные ресурсы рассказывающие об этих темах.

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

Ссылки на вики зачастую более примечательны секциями «External links» и «References» нежели самим содержанием

АлгоритмыСоединение компьютер-компьютер через интернет с динамическими IP

Очень часто мы слышим о том, что установить соединение компьютер-компьютер через интернет с динамическими IP – нереально без внешнего сервера.
А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многое и тайное.

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

Все совпадения случайны, цифры изначально выдуманы.

Веб-разработкаСетевая утилита JInternetManiac для веб-разработчиков

С давних пор я пользовался небольшой сетевой утилитой Internet Maniac (весит 100 кб). Чаще всего в ней я пользовался функцией «Connect», с помощью которой можно создать TCP-соединение с сервером (обычно с веб-сервером), отправить запрос и увидеть ответ сервера. Такое можно повторить и с помощью консольного telnet, но в Internet Maniac это делать удобнее. Другие функции программы: host lookup (определение IP и/или имена хоста), listen (простейший TCP-сервер), сканер портов, ping, whois, проверка почты и др.

Программа давно не обновляется, я пытался найти ей замену, но нормальную бесплатную так и не нашёл. В итоге решил сделать собственный более продвинутый аналог на Java.

Erlang/OTPНеблокирующий TCP сервер без использования undocumented features

Введение


В замечательной статье с trapexit «Building a Non-blocking TCP server using OTP principles» рассказывается, как построить неблокирующий TCP сервер используя принципы OTP. Думаю, каждый, кто начинал изучать elrlang рано или поздно сталкивался с этой статьей. Для построения неблокирующего TCP сервера в указанной выше статье используется недокументированный функционал из модуля prim_inet.

Не буду филосовствовать хорошо или плохо использовать undocumented features, в некоторых «костыльных» решениях это действительно нужно, в продакшене я бы предпочел использовать проверенные средства. На заметку, даже в самой статье автор предупреждает: "Examining prim_inet module reveals an interesting fact that the actual call to inet driver to accept a client socket is asynchronous. While this is a non-documented property, which means that the OTP team is free to change this implementation, we will exploit this functionality in the construction of our server [1]."

Персональные блогиКак получить и измерить высокоскоростное соединение по TCP

Надежная передача данных в Интернете осуществляется на базе протокола TCP (Transmission Control Protocol), спецификация к которому была опубликована почти 30 лет назад. Алгоритм TCP (RFC793), позволяет подключенному устройству адаптироваться для работы в сети на скоростях в пределах десятков мегабит в секунду и задержки до 100 секунд. С бурным развитием новых технологий передачи данных, уже через 10 лет после внедрения стало ясно что производительность протокола не будет хватать для более широких каналов.

DIY или Сделай СамИнтерактивная карта из Arduino или по следам «Админского светофора» из песочницы

Для системного администратора, работающего у интернет провайдера, очень часто возникает задача мониторинга большого числа активного оборудования. Конечно для этих целей можно использовать nagios, cacti, zabbix и подобные им средства мониторинга. Но у всех у них есть один существенный недостаток — необходимо использовать браузер как средство отображения состояния контролируемых узлов сети.
Ознакомивших с «админским светофором» возникла идея создания интерактивной карты города, с расположенными на ней светодиодами: красный — узел недоступен, зеленый — доступен. Но если использовать описанный метод зажигания светодиодов, то понадобится 2 x n, где n — количество контролируемых узлов. Таким образом для контролирования 10 узлов понадобится 20 выводов. Понятно что указанный способ для решения задачи, в случае контролирования более чем 5 узлов, не подходит.

Персональные блоги Аудио и видео лекции по компьютерным сетям и операционным системам on-line

image
На «V конференции СПО в Высшей Школе» все участники и посетители получили диски с аудио и видео лекциями по компьютерным сетям и операционным системам проводимых Георгием Курячим в рамках проекта UNeex на факультете ВМИК МГУ.

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

Peer-to-PeerРелиз µTorrent 2.0

Тестирование новой версии µTorrent 1.9 началось ещё больше года назад. Постепенно программа обрастала новыми функциями, и номер версии в итоге был сменен на 2.0.
И вот, 25 явнваря, была выпущена тестовая сборка RC5 (17920), а сегодня, спустя неделю, по причине отсутствия проблем с последним билдом — он перешёл в статус финальной версии.
image
Ключевые особенности µTorrent 2.0:
  • Поддержка UDP-трекеров;
  • Поддержка микро-транспортного протокола µTP и TCP Rate Control;
  • Улучшения интерфейса: новый диалог установки, улучшенный встроенный тест скорости, новый дефолтный скин;
  • Функция Transfer Cap для контроля потребления траффика.
Про преимущества новых протоколов хорошо написано тут: habrahabr.ru/blogs/p2p/68332/

Скачать µTorrent 2.0 можно с официального сайта: download.utorrent.com/2.0/utorrent.exe

Тем временем автор программы не останавливается на достигнутом и продолжает развитие программы: свежие тестовые билды версии 2.1 можно найти на официальном форуме: forum.utorrent.com/viewtopic.php?id=63247