Профессор электротехники и компьютерных наук Стэнфордского университета Ник Маккеон прочитал на Digital October лекцию «Сеть по новым правилам». Slon публикует ее основные тезисы.
Передача пакетов сети интернет идет от одной точки к другой. Для того чтобы пакет дошел от одного компьютера к другому, он должен преодолеть некоторую сеть, состоящую из энного количества маршрутизаторов, коммутаторов. Вот эта операция пересылки выполняется аппаратным способом, причем используется в основном специализированное, специально выделенное оборудование. Как правило, эти устройства обладают широчайшим функционалом, абсолютно бесполезным для рядового пользователя и даже для большинства стандартных сетей, и при этом работают очень ненадежно. Огромная часть этих маршрутизаторов и коммутаторов построена по проприетарным технологиям; по сути, они являются черными ящиками. SDN – Software Defined Network – это сеть, определяемая программным обеспечением, или сеть с программным управлением. С централизации софта она и начинается. В рамках такой сети ваша централизованная операционная система дает вам целостное представление обо всех устройствах, которые находятся в сети, и о том, как они работают. Собственно, эта операционная система уже самостоятельно будет составлять топологическую карту сети и постоянно поддерживать ее в состоянии актуальности. Представьте себе, что вы создаете программу, в которой, вместо того чтобы писать, например, на ассемблере, на языке конкретных процессорных команд, вы скорее описываете то, что хотите получить, а потом запускаете компилятор, и компилятор уже переводит все на язык, понятный и ассемблеру. Собственно говоря, в SDN-сетях мы пытаемся делать приблизительно то же самое. Мы пытаемся абстрагировать программную часть от железной, от аппаратной. В последние пять лет на рынок вышло около десяти, может быть, двенадцати операционных систем для сетевого оборудования. Какие-то хорошие, какие-то плохие. Я думаю, их станет раза в два, а то и в три больше в ближайшие десять лет. Я надеюсь, что на том же самом временном отрезке мы наконец получим операционную систему, которая будет работать совершенно независимо от конкретных коробок, то есть будет одинаково хорошо работать с любым железом. Можно будет дать сетевому оборудованию провести тот же самый уровень виртуализации, который сейчас доступен для компьютеров. Ну, представьте себе облачный центр обработки данных, который предоставляет компьютерные услуги большому количеству пользователей-клиентов. У них собственные компьютеры, они как-то подключаются к ЦОДу. У клиентов будет приятная возможность управлять своим парком машин, находящихся физически внутри ЦОДа. С одной стороны, интернет-провайдер должен обрабатывать постоянно растущий трафик, а с другой стороны, не имеет морального права брать с нас больше денег. Это значит, что оператор должен изыскивать какие-то механизмы снижения собственных затрат. Что может сделать оператор в этой ситуации? Оператор может сократить капиталовложения. Что это значит? Использовать более дешевое оборудование. Пока это сделать очень трудно, поскольку все операторы покупают одинаковое оборудование у очень узкого круга поставщиков. Большинство сетей имеют весьма неорганизованную топологию, и запросы приходят из фактически любого участка сети. Тут же встает задача реплицирования и, соответственно, балансировки загрузки, поскольку серверов много, но естественным образом получается так, что запросы приходят неравномерно. Первым делом нужно признать, что балансировка загрузки – это, по сути, просто более умный подход к маршрутизации. То есть это вопрос того, как можно быстрее выбрать правильный маршрут трассировки пакета, который пройдет мимо наиболее загруженных машин и коммутаторов. Хотелось бы, конечно, по максимуму использовать возможности беспроводных сетей. Там, где я сейчас нахожусь, мой телефон ловит 12 сетей сотовых операторов и порядка 10 сетей Wi-Fi. Но подключиться я могу только к одной. Резонный вопрос: а что будет, если мы сможем одновременно подключаться к нескольким сетям, и что для этого нужно? Раз у нас на самом деле много точек доступа, мы сейчас по-другому настроим свое оборудование, так, чтобы мы могли передавать, например, видеокартинку сразу через несколько точек доступа, исходя из того, где канал лучше. Для того чтобы провести этот эксперимент, понадобилась бы всего лишь нашлепка на операционной системе длиной в 250 строк кода. Когда у вас есть глобальное представление о сети, есть четкое понимание топологии и нормальные механизмы управления сетевыми ресурсами, вы сразу получаете мощнейший инструментарий для повышения качества работы сети. Сетевое оборудование и сетевые технологии будут определяться софтом. Сколько лет потребуется для этой трансформации, пока сказать трудно. Может быть, пять, может быть, больше. Но приведенные чуть раньше аналогии из мира ПК убеждают лично меня в том, что эти изменения неизбежны. Они приведут к тому, что экспериментировать станет проще, инновации будут появляться и внедряться быстрее. На тему архитектуры управления сетями существует очень мало приличных курсов, учебников. Это до сих пор искусство, а не наука. Скорее это можно назвать философией, идеологией. Мы говорим о том, что управление современной сетью – это йо-йо, в том смысле, что ты сам должен во всем этом разобраться и тебе никто не поможет. В современных сетях, если вы хотите, скажем, провести DDoS-атаку или, например, вывести из строя контрольную часть, вам нужно будет провести эту атаку по всему парку типового оборудования. В SDN-сети для того, чтобы получить контроль над сетью, вам нужно будет нащупать control plane, который фактически будет распределенным. Он не будет локализован на одной машине, то есть контрольная часть сети может находиться в том элементе сетки, который будет закрыт для внешней сети, может находиться, скажем, в каком-то большом WAN-сегменте, куда в принципе не проникают пакеты извне. То есть уже таким образом можно обеспечить безопасность control plane, он будет фактически невидим снаружи. Стандартизация здесь будет естественным врагом прогресса. Можно вспомнить историю возникновения стандартов POSIX, которые как раз и регулируют написание операционных систем и софта. Первая версия POSIX вышла лет через пятнадцать после появления первой версии UNIX, так что, я думаю, пройдет еще лет пять – десять, прежде чем мы придем к общему пониманию того, каким должен быть API, стоящий поверх операционной системы. Я вообще бы предпочел, чтобы мы никогда не дошли до стандартизации в этой области. Мне кажется, что лучше дождаться того, что просто де-факто возникнут какие-то стандарты, что сложится некий узел, некая передовая практика, которой будут пользоваться все. Трудно сказать, кто больше выиграет, то ли операторы ЦОДов, то ли операторы больших публичных WAN-сетей. Им это все, безусловно, пойдет на пользу, поскольку новые сети, я думаю, будут работать лучше и надежнее. Что же касается вендоров, то от этих изменений выиграют, конечно, поставщики софта. Сюда, конечно, нужно помимо VMware добавить, видимо, и Microsoft и похожие на них компании. История развития компьютерной отрасли учит нас тому, что крупные компании, вроде IBM, Hewlett Packard, ушли от производства специализированного железа в сторону производства софта. Рано или поздно, но все они приняли правильное решение.
Посмотреть видеозапись лекции и прочитать ее полную расшифровку можно на сайте Digital October.