Специалисты Microsoft планируют открыть исходный код Open Network Emulator, системы, которая имитирует всю сеть, обеспечивающую функционирование гипермасштабной «облачной» платформы компании. Microsoft использовала ее примерно в течение года для тестирования изменений, вносимых в сеть, прежде чем развернуть их в производстве. Исследователи утверждают, что в предложенных изменениях удалось обнаружить сотни ошибок и предотвратить серьезные аварии.

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

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

Система Open Network Emulator (ONE) имитирует все аппаратные и программные устройства, составляющие сеть, и их межсоединения. Она выполняется в контейнерах Docker и на виртуальных машинах и предназначена для тестирования изменений, вносимых инженерами в сеть, перед их развертыванием в действующей сети.

«Передача технологии в общий доступ поможет крупным компаниям повысить время доступности сети и одновременно у исследователей появится инструмент для моделирования гипермасштабных сетей, подобных построенным Microsoft, Google и Amazon, и их совершенствования без соприкосновения с реальными сетями», — объясняет Виктор Баль, директор подразделения Microsoft Research по мобильности и сетевым технологиям.

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

Компания впервые представила систему (https://www.datacenterknowledge.com/networks/microsoft-runs-simulation-entire-azure-network-prevent-outages) в 2017 году, примерно спустя шесть месяцев после начала ее внутреннего использования. В то время она называлась CrystalNet — хрустальный шар, в котором видно будущее сети, и специалисты Microsoft уже тогда думали о том, чтобы сделать технологию общедоступной.

«Наша сеть разнородная, сложная и постоянно подвергается изменениям. В такой среде даже небольшие проблемы, вызванные отказами устройств, ошибками в программном обеспечении, ошибками в настройках и ненадежными инструментами управления, могут быстро привести к крупным авариям, — объясняется в описании ONE (https://conferences.sigcomm.org/sigcomm/2018/files/indus-demos-final-versions/final-ONE-Microsoft-demo.pdf), представленном на конференции Sigcomm. — Поэтому способность оценить влияние каждого планируемого изменения, прежде чем оно внедрено в производство, критически важна для поддержания и повышения надежности сети».

Компании все больше зависят от «облачных» служб, в частности принадлежащих Microsoft, и добиться безотказной работы этих служб сегодня намного важнее, чем когда-либо раньше. Но независимо от того, насколько хорошо спроектированы системы, насколько квалифицированы и бдительны обслуживающие их инженеры, время от времени человек совершает ошибки. Незначительная оплошность, допущенная в процессе изменения в гипермасштабной сети, может привести к гигантской аварии.

«Предположим, что все работает безупречно. Если нет аппаратных отказов, все должно быть превосходно, — комментирует Баль. — Но затем кто-то из участников вашей команды что-то где-то изменяет, и это изменение, как бывало в прошлом, может обрушить «облако» в целом регионе, поскольку, как известно, если сеть неисправна, ваши пакеты отправляются в никуда. В глобальном масштабе такое отключение может повлиять на миллионы людей, и я не хочу оказаться виновником такого происшествия».

Теперь, когда сетевые инженеры Azure вносят изменения, эти изменения применяются сначала к модели, но для них этот шаг не прозрачен. «Они даже не знают, вносят ли они изменение в сеть, — поясняет Баль. — В действительности они изменяют эмулятор. Он настолько удачно имитирует базовую сеть, что они не видят отличий».

Если изменение не приводит ни к каким ошибкам в модели, то оно автоматически переносится в рабочую сеть.