• Как мы изобретали оптический рефлектометр


      История про высокий порог входа, забеги по граблям и уверенность в завтрашем дне, а также про оптику, схемотехнику и немного про FPGA. На КДПВ — то, что получилось, работает и используется в production, а ниже — рассказ про процесс создания этого "чуда враждебной техники".


      В одно хмурое зимнее утро декабря 2007 года маркетологи небольшой компании, занимающейся разработкой электроники, решили, что пора таки сделать свой OTDR.

      Читать дальше →
    • Анонс конференции Linux Piter 2016 — второй международной Linux-конференции в России

        Сейчас мы активно готовим вторую конференцию Linux Piter и, пока формируется список докладчиков, давайте вспомним как прошла её первая часть.

        image

        Читать дальше →
      • Syncookied — OpenSource ddos protection system

          Когда в нашей компании LTD BeGet встала задача прозрачной фильтрации атак на 4 уровне модели OSI, мы написали свое решение Syncookied. Данным решением мы бы хотели поделиться с Internet-сообществом, так как на текущий момент аналогов ему мы не нашли (или мы о них не знаем). Есть платные решения на подобии Arbor, F5, SRX, но стоят они совершенно других денег и в них используются другие технологии защиты.

          Почему для разработки мы выбрали язык Rust и фреймворк NetMap, с какими сложностями мы столкнулись в процессе — будет рассказано в этой статье.

          » GitHub
          » GitHub модуль ядра
          » Страница проекта


          Читать о Syncookied
        • Особенности использования машинного обучения при защите от DDoS-атак



            Этот пост подготовлен по материалам выступления Константина Игнатова, Qrator Labs, на партнёрской конференции «1С-Битрикс».

            Допустим, на ваш сайт началась DDoS-атака. Как вы об этом узнаете? Как ваша система безопасности определяет, что вы подверглись нападению? Каковы способы защиты? Какая последовательность действий и событий должна произойти в случае атаки?

            Как правило, владелец ресурса узнает об атаке только в тот момент, когда ему начинают звонить недовольные пользователи. Эту ситуацию большинство компаний встречают неподготовленными. В момент пожара разрабатывать план спасения поздно, и все бросаются на поиски универсального средства, которое окажется под рукой. Но «волшебной пилюли» против DDoS, которая мгновенно бы устранила проблему, нет. Готовиться необходимо заранее.
            Читать дальше →
            • +23
            • 9,4k
            • 6
          • SYN-флудим со спуффингом на 14 mpps или нагрузочная вилка V 2.0

              Что-то меня пробило на написание заметок последнее время, поэтому пока энтузиазм не спал раздаю долги.
              Год назад я пришёл на хабр со статьёй "TCP(syn-flood)-netmap-generator производительностью 1,5 mpps", после которой многие писали и даже звонили с просьбой описать создание такой же «вилки» со спуффингом на максимуме возможностей 10GB сети. Я всем обещал, а руки всё не доходили.
              Кто-то скажет, что это руководство для хакеров, но ведь свинья грязи найдёт, а те кому нужен этот инструмент в благонадёжных целях могу остаться ни с чем.

              image
              Читать дальше →
            • SO_TIMESTAMPING в картинках. Прием пакета


              Бывает, что приложению требуется узнать точное время приема или отправки сетевого пакета. Например, для синхронизации часов (см. PTP, NTP) или тестирования задержек в сети (см. RFC2544).


              Наивным решением будет запоминать в приложении время сразу после получения пакета от ядра (или перед отправкой ядру):


                recv(sock, buffer, length, flags);
                clock_gettime(CLOCK_REALTIME, timespec);

              Ясно, что полученное таким образом время может заметно отличаться от момента, когда пакет был получен сетевым устройством. Для получения более точного времени нужна поддержка от операционной системы, драйвера и/или сетевого устройства.


              Начиная с версии 2.6.30 Линукс поддерживает опцию сокета SO_TIMESTAMPING. Она позволяет пользовательскому сокету получать временные метки для отправляемых и принимаемых пакетов. Временные метки могут быть сняты самим ядром, драйвером или сетевым устройством (см. список поддерживающих устройств и драйверов). О том, что это вообще такое и как этим пользоваться, стоит почитать в Documentation/networking/timestamping.txt


              В этой статье я расскажу о том, как пакеты доставляются от сетевого устройства пользователю, когда при этом снимаются временные метки, как они доставляются пользователю и насколько они точны. Приведенные примеры кода ядра взяты из версии 4.1.

              Читать дальше →
            • Как мы тестировали российский speedtest

                Тестирование сервиса wiTest.ru

                Все хотя бы раз в жизни пользовались сервисом speedtest.net для измерения скорости доступа в Интернет дома или на работе. Точность не высокая, но зато бесплатно. Аналогичных сервисов мне лично известно более 20 как российских, так и зарубежных.

                Возникла мысль оценить, насколько эти сервисы показывают «правду» относительно реальной картинки. Для этого был собран стенд, который имитирует «последнюю милю» абонентского подключения по технологиям: FTTx, GPON и xDSL. Логическая схема собранного стенда представлена на рисунке ниже.

                Стенд тестирования wiTest

                В качестве подопытного сервиса мы взяли сервис, который опубликован на сайте Банки.ру.
                Читать дальше →
              • Что такое 100G?

                В 2011-2012 телекоммуникационный мир шагнул в эру 100G. В смысле, массово шагнул, повсеместно. Если уважаемым хабрачитателям будет интересно, каким образом это произошло – немного знаний под катом.
                Читать дальше →
              • Графический VGA-контроллер на SoC без знаний HDL

                • Tutorial

                Всем привет!
                В одной из предыдущих статей мой коллега Des333 реализовал фреймбуфер для LCD, работающего на графическом контроллере ILI9341. Однако, его написание потребовало существенного опыта в разработке RTL-кода.

                К тому же, не у каждого под рукой есть embedded LCD-дисплей, зато наверняка есть монитор с VGA-входом.Что же делать, если опыта разработки под FPGA мало, но есть SoC, а сделать что-то интересное хочется?

                В этой статье мы расскажем, как разработать графический контроллер, имея на руках плату с SoC (Altera Cyclone V), дисплей с VGA и минимальные знания языков HDL (в нашем случае — Verilog).

                Для примера будем использовать наши платки, но всё описанное заработает и на других.
                Кому интересно, прошу под кат.

                Читать дальше →
              • Мониторинг IPTV

                Возникла необходимость проводить мониторинг мультикаст потоков. Начался поиск готовых решений. Первое что удалось нагуглить: IPTV-Analyzer, NetUP IPTVProbe. У каждого решения были свои недостатки или стоили немалых денег. Было принято решение создать свой собственный мониторинг. Основная задача уведомлять и логировать падение мультикаст потока.
                Читать дальше →
              • Наглядный мониторинг большого числа обьектов (например, каналы IPTV) с помощью Arduino

                В данной статье я расскажу как реализовал свою давнюю задумку — наглядное отображение состояния иптв-каналов. Вообще изначально речь шла вообще о мониторинге — например, карта города, на нее расставлены светодиоды (в тех местах где находится оборудование), и глядя на эту карту всегда можно сразу наглядно увидеть — что где сломалось.
                Но в моем случае речь идет именно про IPTV каналы.

                Каналов этих у нас много, 160 штук почти, это не считая служебных, из которых например мультиплексируются федералка (т.е. берется например канал ТНТ с двух ресиверов расположенных в разных частях города (в идеале хочется конечно вообще из другого города), мультикастом приватными потоками пригоняются в мультиплексор, который уже выдает один публичный мультикаст, при этом при аварии одного из каналов автоматически переключает на резерв.
                Читать дальше →
              • JetCat: микроQt для тех, кому попроще

                  Я люблю Qt. Честно-честно. Я начал изучать его на грузовом пароме из Травемюнде в Хельсинки в компании пьяных дальнобойщиков, их полупьяных подруг, автоперегонщиков и просто забулдыг, которым суточное путешествие по морю позволяет эффективно бороться с суровостью финских антиалкогольных правил. Каюты у меня не было, Интернета тоже, так что к концу поездки я уже довольно бодро тасовал QML-теги и даже необходимость использовать QString не вызывала былой икоты. Нет-нет, я в самом деле люблю Qt.

                  Но еще сильнее я люблю Turbo Vision. Для меня он — привет из молодости, когда мир был проще, когда люди не таскали туда-сюда могучие фреймворки, задачи на четыре строчки решались четырьмя строчками и никому не приходило в голову рисовать тривиальные картинки с помощью HTML, CSS и джаваскрипта. Когда кнопку можно было поставить в точку X и быть уверенным, что она останется там в любую погоду. Когда задачи не решались методами “скачать” и “установить”, а также “подобрать” и “сконфигурировать”. Когда запрещалось использовать код, у которого “неизвестно, что там внутри”, а любую проблему можно было отладить за конечное число шагов. Когда документация представляла собой книжку, а не распечатку с форума.

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

                  Рисовать UI для нас — задача непрофильная и всегда решалась по остаточному принципу, не барское это дело — кнопочки по экрану расставлять. Но, раз приперло, надо делать.
                  Вы понимаете, о чем я? Да, мы написали свой Qt. Вернее, конечно, не его, поскольку нет смысла переписывать уже написанное.

                  Читать дальше →
                • Серверный шкаф с интеллектуальным активным шумоподавлением

                    Не секрет, что серверное оборудование, как правило, устанавливается в стойку/шкаф, которые, в свою очередь, размещаются в специально выделенном месте.
                    Система охлаждения серверного оборудования проектируется исходя из требований к эффективности отвода тепла из корпуса, а такой параметр как уровень шума в расчет не берётся. Поэтому установка серверного шкафа или стойки вблизи с рабочими местами сотрудников исключена.
                    В основном, оборудование размещают в удалённых дата-центрах, локальных серверных или любом другом помещении предприятия, которое должно быть изолировано от рабочего пространства офиса и обеспечивать необходимый внутренний температурный режим.
                    В больших и средних организациях проблем с выделением помещения под серверную комнату не возникает. Да и в маленьких офисах можно встретить серверную «кладовку» размером два на полтора метра.
                    Но что делать, если IT-инфраструктура включает существенное кол-во стоечного оборудования, а места для серверной, по каким-либо причинам, не предусмотрено? Как решить вопрос размещения серверного шкафа в офисном помещении без ущерба для комфорта рабочего процесса сотрудников компании? Или же стоит задача демонстрации на выставочных мероприятиях стоечного оборудования или комплексных инфраструктурных решений. При установке классического шкафа/стойки, комфортно вести переговоры вблизи подобного стенда не получится.
                    Для решения подобных задач разработан уникальный серверный шкаф Silentium AcoustiRACK ACTIVE, который позволяет обеспечить отвод до 8 кВт тепла, минимизируя при этом шум, издаваемый установленным в нём оборудованием. Решение не ново, но все же я хочу посвятить ему эту статью, т.к. шкаф уже есть в лаборатории STSS и я проверил его способности на реальных задачах.
                    Секрет заключён не только в конструкции шкафа: стеклопакет в передней двери, шумоизоляция всех стенок, заглушек и задней двери безусловно снижают звукопроводимость. Но в шкафу должны быть отверстия для беспрепятственного прохода воздушного потока, обеспечивающего эффективное охлаждение оборудования. Как быть с подавлением шума, выходящего через них?
                    Для этих задач разработаны уникальные вентиляторные блоки, оснащённые интеллектуальной акустической системой активного шумоподавления.
                    Принцип работы заключается в анализе через встроенный микрофон общего шума оборудования и собственных вентиляторов, и формировании противофазного акустического сигнала, который компенсирует этот шум.
                    Подробный фото-отчет и реальные испытания
                  • Более чем 80 средств мониторинга системы Linux

                      Ниже будет приведен список инструментов мониторинга. Есть как минимум 80 способов, с помощью которых ваша машинка будет под контролем.



                      1. первый инструмент — top

                      Консольная команда top- удобный системный монитор, простой в использовании, с помощью которой выводится список работающих в системе процессов, информации о этих процессах. Данная команда в реальном времени сортирует их по нагрузке на процессор, инструмент предустановлен во многих системах UNIX.
                      читать дальше
                    • Embedded World 2016: куда катится embedded-мир?

                        Всем привет!

                        Давненько мы ничего не писали. А тем временем...

                        В тридевятом царстве, в тридесятом государстве, в баварской вотчине, в средневековом городе Нюрнберге проходит выставка под названием Embedded World. Цель выставки — собрать в одном месте производителей, разработчиков, студентов и других заинтересованных граждан. Проходит она три дня — с 23 по 25 февраля.




                        Сайт выставки: http://www.embedded-world.de

                        Около 900 участников, примерно 25 тысяч посетителей. Двух дней еле-еле хватает, чтобы понять, что к чему. Поэтому выставка длится три дня :)

                        Судьба забрасывает меня на это мероприятие уже не в первый раз: мы с коллегами по НТЦ Метротек посещали выставку в 2013, 2014 и 2015 годах. Именно здесь мы впервые увидели Cyclone V SoC (System On Chip c ARM и FPGA на борту), который впоследствии лёг в основу новых девайсов производства НТЦ Метротек (это — Беркут-ЕТ, EthOnd, BlueSoM, ETL-N). Именно здесь мы нашли производителей корпусов EMKO и наладили с ними сотрудничество, теперь все стоечные приборы (свитч Metrotek X10-24, Беркут-МХ) выглядят единообразно. Здесь мы узнаём о новинках и трендах.

                        Под катом больше информации об участниках, новых продуктах и просто вещах, которые нам понравились и запомнились.
                        С фотографиями и ссылками.
                        Читать дальше →
                      • Ansible — давайте попробуем

                        • Tutorial
                        Ansible — сравнительно молодая система управления конфигурацией, его история насчитывает чуть более трех лет. Но, несмотря на это, он стремительно и быстро ворвался в мир систем управления конфигурацией, потеснив Chef, Puppet и SaltStack.

                        Давайте посмотрим на него внимательно, чтобы понять, почему он так любим технарями.

                        Итак, чем же хорош ansbile:
                        • низкий порог входа;
                        • декларативный язык описания конфигурации;
                        • на управляемые узлы не нужно устанавливать никакого дополнительного ПО;
                        • просто написать дополнительный модуль.

                        Читать дальше →
                      • Public Text Chat Server

                          image
                          Данная статья будет интересна людям, интересующимся сетями, логическим устройством серверов и нативным программированием. Здесь не будет долгих листингов исходных кодов, а только общие наброски и подходы.
                          TL;DR GitHub

                          Это как имиджборж только текстовый

                          Такой же текстовый, как и по большей мере этот пост.
                          Возвращаясь к своей детской мечте, мне захотелось сделать текстовый чат. Для меня это как один из вариантов увеличить количество недостающих api в библиотеке, т.к. только таким путем понимаешь по настоящему, что необходимо программисту, когда пишешь что-то более менее прикладное.

                          Читать дальше →
                          • +14
                          • 11,1k
                          • 7
                        • Фурье-вычисления для сравнения изображений

                            Традиционная техника “начального уровня”, сравнения текущего изображения с эталоном основывается на рассмотрении изображений как двумерных функций яркости (дискретных двумерных матриц интенсивности). При этом измеряется либо расстояние между изображениями, либо мера их близости.

                            Как правило, для вычисления расстояний между изображениями используется формула, являющаяся суммой модулей или квадратов разностей интенсивности:
                            d(X,Y) = SUM ( X[i,j] — Y[i,j] )^2

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

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

                            Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов сравнения изображений не очень сложной задачей для программирования.
                            Читать дальше →
                          • SoC: пишем реализацию framebuffer для контроллера в FPGA

                            • Tutorial


                            Приветствую!

                            В прошлый раз мы остановились на том, что подняли DMA в FPGA.
                            Сегодня мы реализуем в FPGA примитивный LCD-контроллер и напишем драйвер фреймбуфера для работы с этим контроллером.

                            Вы ещё раз убедитесь, что разработка под FPGA и написание драйверов под Linux дело очень простое, но интересное.

                            Также в конце есть маленький опрос — хочется узнать мнение сообщества. Если не сложно, прошу проголосовать.

                            Добро пожаловать
                          • Разомнем мозг при помощи Forth?

                            image

                            Порой возникает желание размять свой погрязший в объектно-ориентированном программировании мозг чем-то новеньким и необычным. Конечно, на помощь в этой ситуации может прийти любой функциональный язык программирования, например, Haskell, Erlang, Lisp или OCaml. Но сейчас даже ими уже вряд ли кого-то можно удивить. Нет, хочется чего-то совершенно другого. В такой ситуации на помощь к нам спешит Forth — стековый язык программирования.

                            Читать дальше →