geektimes

Интернет убыточных вещей

  • пятница, 28 декабря 2018 г. в 00:14:09
https://habr.com/post/434422/
  • Интернет вещей
  • Разработка для интернета вещей
  • Сетевые технологии
  • Управление продуктом


Зовите детишек! Сейчас дядя Андрей расскажет рождественскую страшилку об NTP (Network Time Protocol).

Почти два года назад, в понедельник 16 января 2017 года, в нашу систему баг-репортов BitFolk поступил интересный тикет от постороннего лица. Отправитель представился как ведущий инженер-программист компании NetThings UK Ltd.

Тема: запрос NTP на IP 85.119.80.232

Привет,

Это может показаться странным, но мне нужно настроить сервер NTP по IP-адресу 85.119.80.232.

Что такого особенного в адресе 85.119.80.232? Это IP-адрес одного из NTP-серверов для обслуживания наших клиентов. За несколько недель до этого тикета сервер также был частью проекта NTP Pool.

Здесь важное слово «был». В конце декабря 2016 года я вывел NTP-серверы BitFolk из общественного пула и заблокировал их для посторонних.

Я так поступил, потому что из-за бага Snapchat NTP на них пошёл необычно большой трафик. На самом деле это не вызвало каких-то огромных проблем, просто такой объём трафика выталкивал полезную информацию из базы сохранения сетевого потока Jump фиксированного размера, а я не хотел разбираться с этим во время праздников, поэтому просто отключил публичный доступ к сервису.

NTP?


Эта статья попала на Hacker News, и там в нескольких комментариях просили вкратце объяснить, что такое NTP, поэтому я добавил этот нетехнический раздел. Если вы знаете технологию, то можете пропустить его.

Network Time Protocol — это средство, с помощью которого компьютер может использовать несколько других компьютеров, часто со всего интернета в совершенно разных сетях под управлением разных администраторов, чтобы точно определить текущее время. При использовании нескольких разных компьютеров некоторые из них выдают неточный результат, некоторые могут быть сломаны или вести себя враждебно, но протокол способен распознать «неправильные» часы и учитывать только результат от более точного большинства.

Предполагается, что NTP используется в иерархическом порядке: к нескольким серверам напрямую подключено аппаратное обеспечение для определения точного времени: атомные часы, GPS и т. д. Они называются серверами Stratum 1. Серверы второго уровня устанавливают своё время по серверам Stratum 1, обслуживают гораздо больше клиентов и так далее.

В прошлые времена бывало трудно найти доступные серверы NTP. В вашей собственной компании мог стоять один или два таких сервера, но на самом деле приходилось сверяться по крайней мере с 3−7 серверами, и лучше от разных организаций. В университетской среде было проще: вы могли поговорить с коллегами и обменяться доступом к NTP. Но по мере роста интернета количество запросов росло, в том числе от коммерческих компаний и частных лиц.

На помощь пришёл проект NTP Pool. Через простой веб-интерфейс желающие добавляли в пул собственные NTP-серверы: они коллективно обслуживались в общей зоне DNS с некоторыми базовыми средствами для распределения нагрузки. Частному лицу позволялось указать три имени из пула, и он бесплатно получал три разных (постоянно меняющихся) сервера NTP.

Предполагалось, что коммерческие компании будут обращаться в отдельную «зону вендоров». Они перечисляют проекту небольшой взнос — и получают зону DNS, выделенную для их продукта, так что администраторам пула проще направлять трафик.

К сожалению, многие компании не затрудняли себя изучением этих тонкостей и просто использовали общую зону пула. NetThings UK Ltd. пошла ещё дальше в очень неправильном направлении — и взяла IP-адрес из пула, просто используя его напрямую и предполагая, что он всегда будет доступен. На самом деле этот бесплатный сервис пожертвовала в общий пул компания BitFolk, а из-за временных неудобств услугу отключили.

Возвращаясь к нашей истории…

Они хотят… чего?


Ведущий инженер-программист продолжил:

Недавно службу NTP отключили, и мне интересно знать, есть ли какая-то возможность запустить её снова по указанному IP-адресу. Либо через текущего владельца IP-адреса, либо через миграцию текущей машины на другой адрес, чтобы мы могли арендовать 85.119.80.232.

Хм…

Я понимаю, что это странная просьба, но могу заверить вас, что она искренняя.

Так не получится


Очевидно, что 85.119.80.232 используют все наши клиентами как резолвер и NTP-сервер. Просить их всех изменить конфигурацию, чтобы отдать адрес в аренду NetThings UK Ltd. — это не вариант. Поэтому я просто убрал файрвол, так что 85.119.80.232 снова стал работать для NetThings UK Ltd., пока мы не выясним, что можно сделать.

Затем я задал несколько уместных вопросов, чтобы определить объём услуг, которые придётся предоставить:

  • Сколько клиентов у вас используют этот сервер?
  • Вы знаете их IP-адреса?
  • Когда им нужен NTP-сервер и как долго?
  • Можно ли их заставить правильно использовать пул (через зону вендоров)?

Глубже в лес


Ответы на некоторые вопросы оказались весьма разочаровывающими.

Сервер частично используется нашей производственной системой, где изначально установлены RTC. К сожалению, достаточно большое количество оборудования (~500 единиц с еженедельными вызовами NTP) работает по роумингу GPRS SIM. Я не знаю, можно ли в этом случае полагаться на исходный IP-адрес APN для настройки файрвола (я проверю). Мы также не можем удалённо обновить прошивку на этих устройствах, поскольку у них квота по трафику 5 МБ в месяц. Мы можем обновить их локально, но для этого потребуются месяцы, а не недели.

Судя по всему, NetThings UK Ltd производила термостаты с дистанционным управлением, контроллеры освещения для больших торговых площадей и т. д. Похоже, им в прошивку записали один из IP-адресов BitFolk, и эти устройства нельзя было идентифицировать или удалённо обновить.



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

Кстати, они решили свою проблему с жёстко прописанным IP-адресом, подняв локально на своём заводе IP-адрес BitFolk, чтобы установить начальную дату/время.



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

Еженедельно??


Вызовы NTP у нас запускает еженедельный крон без балансировки нагрузки на стороне клиента. Это приводит к потоку запросов в одно и то же время каждое воскресенье около 19:45.

Да, они заставили каждое из своих неопознанных устройств стучать на жёстко закодированный IP-адрес в течение двухминутного интервала каждый воскресный вечер.



Ведущий инженер-программист очень волновался, что они стали причиной того избыточного потока, о котором я упоминал ранее, но я заверил, что это определённо баг Snapchat. На самом деле их 500 девайсов никогда не отличались от фонового шума. Оказалось, что полтысячи запросов SNTP — довольно лёгкая нагрузка. Они делали это более двух лет, прежде чем возникла проблема.

Конечно, я отметил их везение, что мы быстро заметили проблему, иначе всё могло закончиться как в деле Netgear против университета Висконсина [когда устройства Netgear зафлудили запросами университетский NTP-сервер — прим. пер.].

Я чувствую себя очень, очень плохо из-за этого. Мне очень, очень жаль, если мы стали причиной ваших проблем.

Прощён. Должен отметить, что на протяжении всего этого времени с ведущим инженером было приятно работать.

Мы заключили сделку


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

Но NetThings UK Ltd. оказались в затруднительном положении, и запрет на доступ к NTP-серверу нанесёт им серьёзный финансовый урон. Потенциально я мог бы попросить много денег в тот момент, но я чувствовал (без сомнения, в ущерб своему карману), что это просто неправильно.

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

Кроме того, я предложил оплачивать один час консультаций в месяц в течение 12 месяцев для покрытия расходов на продолжение работы сервера NTP. Конечно, я не трачу по часу в месяц на возню с NTP, но такое нестандартное отклонение от моей обычной работы требовало определённого вознаграждения.

Я очень хотел отметить, что это не навсегда:

Наконец, это штрафная санкция. Похоже, вы сейчас в затруднительном положении, и есть соблазн взимать с вас максимальную сумму (во всяком случае, намного больше, чем £840 + НДС), но мне это кажется несправедливым. Тем не менее, предоставление услуг NTP третьим лицам — не наш бизнес, поэтому мы ожидаем, что контракт закончится в течение 12 месяцев. Если вам в конечном итоге придётся продлить эту услугу, это будет означать, что мы не взимали с вас достаточно, и мы увеличим цену.

Это кажется разумным?

NetThings UK Ltd. с радостью согласилась на такое предложение.

Ещё раз спасибо за информацию и помощь. Вы спасли меня от огромного количества дурацкой и бесполезной работы. У нас достаточно времени, чтобы всё исправить.

Ухабы на дороге


В дальнейшем я общался с ведущим инженером-программистом лишь однажды. Остальная переписка велась с финансовым персоналом, главным образом потому, что NetThings UK Ltd. не любила вовремя оплачивать счета.

За год NetThings UK Ltd. оплатила с опозданием три из четырёх счетов. В каждом случае я постарался взимать с них установленную законом пеню за просрочку платежа.

Неутешительные итоги года


Когда 2017 год подошёл к концу, я спросил ведущего инженера-программиста, как ситуация с нашим IP-адресом в прошивке их устройств, насколько успешно они решили проблему?

Если вкратце, в большинстве наших продуктов удалось избавиться от использования фиксированного IP-адреса. Осталось обновить ещё один проект, после чего производство новых единиц с такими прошивками будет полностью прекращено. Но у нас по-прежнему в продакшне около 1000 единиц, которые нелегко обновить: они продолжат отправлять еженедельные NTP-запросы на фиксированный IP-адрес. Поэтому, отвечая на ваш вопрос: да, нам по-прежнему потребуется услуга в январе 2018 года.

Это было слегка печально, ведь год назад было «около 500» устройств. Несмотря на все усилия в течение года, число, похоже, удвоилось.

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

Хотите поспорить?


Примерно через 15 недель после сообщения об удвоении цены финансовый директор NetThings UK Ltd. спросил, почему это произошло, одновременно сообщив о переводе одного из просроченных платежей:

Date: Wed, 21 Feb 2018 14:59:42 +0000

Уже оплатили, но не могли бы вы пояснить, почему цена удвоилась?

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

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

Ответа не последовало, так что платежи продолжались на ежеквартальной основе.

Вот и сказке конец


20 ноября 2018 года мы получили письмо от Deloitte:

Netthings Limited – In Administration (“The Company”)

Номер компании: SC313913


[…]

Прекращение деятельности

Компания прекратила деятельность с 15 ноября 2018 года.

Расследование

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

А потом 21 декабря:

В соответствии с пунктом 51(1)(б) закона «О несостоятельности и банкротстве» 1986 года, Управляющий имуществом не обязан созывать собрание кредиторов кроме случаев, когда у компании достаточно средств для распределения среди необеспеченных кредиторов или если встреча требуется по форме SADM_127 необеспеченными кредиторами с 10% и более стоимости долга. Средств для распределения среди необеспеченных кредиторов нет, поэтому собрание созываться не будет.

К счастью, их единственный неоплаченный счет был за обслуживание с ноября, так что всё было оплачено.



Вот такая история NetThings UK Ltd, смелого покорителя Интернета вещей, который думал, что общественный пул NTP — просто неотъемлемая часть интернета и каждый может использовать его бесплатно, достаточно выбрать наугад один IP-адрес и зашить его в тысячи своих устройств, которые распространяются по всей стране без возможности удалённого обновления.

Этой веры в сочетании с инновационным нежеланием ни за что вовремя платить, к сожалению, оказалось недостаточно, чтобы сохранить платёжеспособость.