Кратко

  • PlanetLab slice был не распределённой собственностью, а составным разрешением на использование: на каждом узле сервис получал ограниченную долю ресурсов в локальной виртуальной машине, или sliver.
  • Глобальная служба могла сформировать запрос и связать части в одно развёртывание, однако реальное исполнение определяли node manager, доступная ёмкость, планировщик и политика принимающей организации.
  • Свобода эксперимента опиралась на изоляцию, учёт ресурсов и цепочку ответственности. Внешнее действие должно было оставаться прослеживаемым до конкретного principal.

Единая учётная запись пересекала границы, право собственности — нет

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

PlanetLab превратил сеть таких одолжений в общую исследовательскую инфраструктуру. Группа могла получить аккаунт, охватывающий много площадок, и развернуть на них один сервис. Совокупность его распределённых частей получила название slice.

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

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

Под slice всегда находился конкретный sliver

Термин sliver связывал глобальное обещание с локальным фактом. Это была виртуальная машина и выделенная ей часть процессора, памяти, диска и сетевой пропускной способности одного узла. Только сеть таких частей становилась slice.

Верхний уровень оставался намеренно свободным. PlanetLab не навязывал единую overlay-топологию, язык или среду исполнения. Команда могла выбрать собственную схему взаимодействия и построить распределённый сервис поверх обычного Интернета.

Но свобода архитектуры не создавала ресурсы. Slice мог выбрать, как его компоненты обмениваются сообщениями, но не мог придумать процессорное время на перегруженном хосте. Он мог запросить определённую площадку, но не заставить выключенную машину ответить. Он мог получить отдельное окружение, но не root-доступ к общему компьютеру.

Ранний проектный документ объяснял это через tickets и leases. В ticket указывались узел, объём ресурса и временной интервал. Предъявление ticket могло привести к lease только после решения локального admission control. Документ был рабочим черновиком, а не окончательным описанием всех версий PlanetLab. Тем не менее модель власти в нём ясна: глобальный распределитель мог принести требование к порогу, но открыть дверь мог только узел.

Центр собирал намерение, площадка подтверждала исполнение

PlanetLab не был сказкой о полном отсутствии центра. Первая архитектура включала PlanetLab Central. Он связывался с node manager на выбранных машинах, а локальный менеджер создавал и контролировал виртуальные среды. Привилегированный код оставался необходим: первый сервис нельзя запустить через бесконечную цепь ещё не запущенных сервисов.

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

Поэтому создание каждого sliver пересекало отдельную границу полномочий. Глобальная база могла указывать, что сервис должен работать в Princeton, Berkeley или иной точке. Фактическое состояние определяли местный node manager, планировщик, загрузка и пределы хоста. Устаревшая запись не могла отменить нехватку памяти или отсутствие связи. Реестр фиксировал замысел; running code показывал существующий slice.

Так появляется важное различие между членством и ёмкостью. Сотня зарегистрированных узлов не означает сотню доступных долей. Даже сотня запущенных ВМ не означает одинаковый класс ресурса или сопоставимое качество измерения.

Одного слова «изоляция» было недостаточно

Ресурсная изоляция ограничивала влияние одного сервиса на процессор, память, диск и канал другого. Изоляция безопасности разделяла пространства имён и данные. Стабильная программная основа не позволяла непривилегированному сервису менять механизм, от которого зависели соседи.

Эти обещания не заменяли друг друга. Защищённая ВМ могла испытывать непредсказуемую задержку на загруженном узле. Справедливая доля CPU не была reservation. Корректная программа могла показать иной результат, если принимающая площадка ограничила исходящую полосу.

Эксплуатационные статьи откровенно описывали эту щель. Сначала best effort казался достаточным, но высокая нагрузка сделала производительность нестабильной. PlanetLab применял справедливое разделение, явные reservations и token-based scheduling. При нехватке памяти watchdog мог перезапустить крупного потребителя; площадка могла ограничить исходящий трафик.

В одном опыте 2006 года базовый путь занимал 74 миллисекунды, а overlay round trip без особого процессорного режима колебался от 76 до 135 миллисекунд. Reservation и real-time scheduling убрали большую часть разрыва, но не всякую активность ядра и не весь jitter. Это не оценка всей платформы. Это доказательство более узкого тезиса: глобальное пространство имён не делало глобальную инфраструктуру выделенной.

Ответственность была условием права на эксперимент

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

Поэтому статья 2004 года требовала не только подсчитывать ресурсы, но и после события относить действия к slice. В более позднем тексте о принципах проектирования появилась chain of responsibility: внешне наблюдаемое действие должно прослеживаться через slice до ответственного пользователя.

Такая цепочка делала широкое делегирование приемлемым. Хосту не требовалось лично доверять каждой исследовательской группе. Ему были нужны исполнимые ограничения, способ установить principal и сторона, способная отреагировать. Slice являлся одновременно границей свободы и границей доказательства.

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

Разделение управления уменьшало незаменимое ядро

Другой важный ход PlanetLab — отделение локального механизма от сетевых служб управления. Создание slice, поиск ресурсов, мониторинг и доставка программ могли быть сервисами над базовой ОС узла. Несколько вариантов могли развиваться параллельно вместо того, чтобы одна программа получила вечный привилегированный трон.

В node OS предполагалось оставить локальные абстракции и явные совместно используемые интерфейсы. Глобальные сущности строились поверх них. Это сокращало набор функций, которым приходилось безусловно доверять как уникальным.

Ядро всё же не исчезало. Кто-то должен был создать локальную ВМ, применить лимит и запустить первый сервис. Авторы это признавали. Достижением была не инфраструктура без власти, а меньшая и лучше наблюдаемая граница привилегий.

Здесь исторический материал перекликается с сегодняшними принципами Heng Lu о минимальной исходной спецификации и приоритете исполняемого кода. Общий слой полезен, когда закрепляет лишь локальные инварианты безопасной композиции. Глобальные службы могут смениться или исчезнуть. Их запись не создаёт физическую ёмкость, а общее имя не становится титулом на нижележащие машины. Это редакционное сопоставление, а не утверждение о мотивах авторов PlanetLab.

Предвосхитить облако — не значит владеть его происхождением

В ретроспективе Princeton 2026 года говорится, что PlanetLab достиг 1 353 узлов на 717 площадках в 48 странах и официально завершился в 2020 году. Формулировка Peterson точнее любой легенды об изобретателе: PlanetLab не создал облако, но предвосхитил его.

Он показывал среду, где пользователь просит абстрактный ресурс, развёртывает код на удалённых машинах и делит физическую ёмкость с другими. Одновременно он открывал вопросы, которые современная панель управления может спрятать: кто дал ресурс, какой именно класс был выделен, кто способен отказать или сбросить VM, кто отвечает за вредный трафик?

Нельзя объявлять PlanetLab единственным предком виртуальных машин, контейнеров, CDN или оркестрации. Эти истории шире. Его особый вклад — работа глобальной ресурсной абстракции в публичной неоднородной среде, под реальной нагрузкой и над машинами разных владельцев.

Проект закончился, а проверка локальных разрешений под глобальным объектом осталась необходимой.

Место Larry Peterson — внутри коллективной работы

Larry Peterson был ключевым организатором, архитектором и оператором PlanetLab; Princeton называет его Robert E. Kahn Professor, Emeritus and Senior Research Scholar. Но система не была единоличным изобретением.

Blueprint 2002 года Peterson написал вместе с Tom Anderson, David Culler и Timothy Roscoe. Среди авторов статьи 2004 года — Andy Bavier, Mic Bowman, Brent Chun, David Culler, Scott Karlin, Steve Muir, Peterson, Roscoe, Tammo Spalink и Mike Wawrzoniak. Опыт 2006 года описали Peterson, Bavier, Marc E. Fiuczynski и Muir. Документ о динамическом создании slice был работой Architecture Team под редакцией Peterson и Amin Vahdat с другими названными участниками.

Это не церемониальная оговорка. PlanetLab исследовал совместное устройство без выдуманного единого владельца. Рассказ о его авторах должен сохранять ту же правду.

Источники