Серверная оптимизация → Подкрутим гайки TCP/IP в Solaris
Добрый день, уважаемые хабрапользователи, несмотря на тенденцию падения Oracle в глазах системных инженеров и компаний заказчиков. Операционная система, теперь уже Oracle Solaris продолжает жить и радовать наш глаз.
Недавно столкнулся с вопросом оптимизации некоторых параметров TCP/IP стека. Данная тема показалась мне интересна, многим она может показаться уже избитый, а кого то познакомит с новыми интересными моментами настройки. Итак начнем…
Недавно столкнулся с вопросом оптимизации некоторых параметров TCP/IP стека. Данная тема показалась мне интересна, многим она может показаться уже избитый, а кого то познакомит с новыми интересными моментами настройки. Итак начнем…
Сетевые технологии → Сделаем TCP быстрее
Компания Google опубликовала ряд рекомендаций, как уменьшить задержку (latency) для TCP-соединений между веб-сервером и браузером. В этих рекомендациях обобщаются исследования, которые компания вела в течение нескольких лет.
1. Увеличьте первоначальный размер congestion window до 10 (IW10). Сейчас в начале TCP-соединения отправляется три пакета данных в три раунда (RTT) для передачи небольшой информации (15 КБ). Наши эксперименты показывают, что IW10 уменьшает сетевую задержку для веб-соединений более чем на 10%.
2. Уменьшите первоначальный таймаут с 3 секунд до 1 секунды. RTT в 3 секунды был приемлем пару десятилетий назад, но в современном интернете нужен гораздо меньший таймаут. Наше обоснование для этого хорошо задокументировано здесь.
1. Увеличьте первоначальный размер congestion window до 10 (IW10). Сейчас в начале TCP-соединения отправляется три пакета данных в три раунда (RTT) для передачи небольшой информации (15 КБ). Наши эксперименты показывают, что IW10 уменьшает сетевую задержку для веб-соединений более чем на 10%.
2. Уменьшите первоначальный таймаут с 3 секунд до 1 секунды. RTT в 3 секунды был приемлем пару десятилетий назад, но в современном интернете нужен гораздо меньший таймаут. Наше обоснование для этого хорошо задокументировано здесь.
Сетевые технологии → О сетях: всего понемногу
Недавно у нас были небольшие обучающие курсы для повышения нашей компетенции в сетевой части нашей инфраструктуры. Основную идею этих курсов, покрывающую OSPF/BGP/MPLS я тут повторять не буду ибо:
Так что тут я опишу интересные около-сетевые моменты которые были затронуты в процессе обучения. Часть из этого может показаться вам банальным, однако постараюсь компенсировать возможную скуку при прочтении обилием ссылок на дополнительные материалы
Ссылки на вики зачастую более примечательны секциями «External links» и «References» нежели самим содержанием
- Пока ещё явно недостаточно компетентен.
- Есть много более объективные ресурсы рассказывающие об этих темах.
Так что тут я опишу интересные около-сетевые моменты которые были затронуты в процессе обучения. Часть из этого может показаться вам банальным, однако постараюсь компенсировать возможную скуку при прочтении обилием ссылок на дополнительные материалы
Ссылки на вики зачастую более примечательны секциями «External links» и «References» нежели самим содержанием
Алгоритмы → Соединение компьютер-компьютер через интернет с динамическими IP
Очень часто мы слышим о том, что установить соединение компьютер-компьютер через интернет с динамическими IP – нереально без внешнего сервера.
А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многоеи тайное.
Однако скайп, аська для передачи файлов, торренты, в конце концов, используют каким-то образом прямое подключение.
Как? Об этом я и хочу рассказать.
Все совпадения случайны, цифры изначально выдуманы.
А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многое
Однако скайп, аська для передачи файлов, торренты, в конце концов, используют каким-то образом прямое подключение.
Как? Об этом я и хочу рассказать.
Все совпадения случайны, цифры изначально выдуманы.
Веб-разработка → Сетевая утилита JInternetManiac для веб-разработчиков
С давних пор я пользовался небольшой сетевой утилитой Internet Maniac (весит 100 кб). Чаще всего в ней я пользовался функцией «Connect», с помощью которой можно создать TCP-соединение с сервером (обычно с веб-сервером), отправить запрос и увидеть ответ сервера. Такое можно повторить и с помощью консольного telnet, но в Internet Maniac это делать удобнее. Другие функции программы: host lookup (определение IP и/или имена хоста), listen (простейший TCP-сервер), сканер портов, ping, whois, проверка почты и др.
Программа давно не обновляется, я пытался найти ей замену, но нормальную бесплатную так и не нашёл. В итоге решил сделать собственный более продвинутый аналог на Java.
Программа давно не обновляется, я пытался найти ей замену, но нормальную бесплатную так и не нашёл. В итоге решил сделать собственный более продвинутый аналог на 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 узлов, не подходит.
Ознакомивших с «админским светофором» возникла идея создания интерактивной карты города, с расположенными на ней светодиодами: красный — узел недоступен, зеленый — доступен. Но если использовать описанный метод зажигания светодиодов, то понадобится 2 x n, где n — количество контролируемых узлов. Таким образом для контролирования 10 узлов понадобится 20 выводов. Понятно что указанный способ для решения задачи, в случае контролирования более чем 5 узлов, не подходит.
Персональные блоги → Аудио и видео лекции по компьютерным сетям и операционным системам on-line

На «V конференции СПО в Высшей Школе» все участники и посетители получили диски с аудио и видео лекциями по компьютерным сетям и операционным системам проводимых Георгием Курячим в рамках проекта UNeex на факультете ВМИК МГУ.
Георгий великолепно рассказывает о довольно сложных понятиях. Обычно, лекция разбавляется шутками и авторскими афоризмами, что делает их еще более интересными и запоминающимися.
Peer-to-Peer → Релиз µTorrent 2.0
Тестирование новой версии µTorrent 1.9 началось ещё больше года назад. Постепенно программа обрастала новыми функциями, и номер версии в итоге был сменен на 2.0.
И вот, 25 явнваря, была выпущена тестовая сборка RC5 (17920), а сегодня, спустя неделю, по причине отсутствия проблем с последним билдом — он перешёл в статус финальной версии.

Ключевые особенности µTorrent 2.0:
Скачать µTorrent 2.0 можно с официального сайта: download.utorrent.com/2.0/utorrent.exe
Тем временем автор программы не останавливается на достигнутом и продолжает развитие программы: свежие тестовые билды версии 2.1 можно найти на официальном форуме: forum.utorrent.com/viewtopic.php?id=63247
И вот, 25 явнваря, была выпущена тестовая сборка RC5 (17920), а сегодня, спустя неделю, по причине отсутствия проблем с последним билдом — он перешёл в статус финальной версии.

Ключевые особенности µTorrent 2.0:
- Поддержка UDP-трекеров;
- Поддержка микро-транспортного протокола µTP и TCP Rate Control;
- Улучшения интерфейса: новый диалог установки, улучшенный встроенный тест скорости, новый дефолтный скин;
- Функция Transfer Cap для контроля потребления траффика.
Скачать µTorrent 2.0 можно с официального сайта: download.utorrent.com/2.0/utorrent.exe
Тем временем автор программы не останавливается на достигнутом и продолжает развитие программы: свежие тестовые билды версии 2.1 можно найти на официальном форуме: forum.utorrent.com/viewtopic.php?id=63247