Марк Шаттлворт представил Fan, механизм расширения адресного пространства
Марк Шаттлворт анонсировал Fan, новую систему расширения адресного пространства для изолированных контейнеров. Fan пытается упростить настройку сети и распределение адресов в условиях запуска на одном хосте сотен и даже тысяч изолированных окружений, которые могут распределяться по группам виртуальных машин. Для обеспечения сетевой достижимости каждому контейнеру требуется свой IP-адрес, в то время как для виртуальной машины, в которой могут выполняться сотни контейнеров, число выделяемых адресов может быть ограничено.
Вместо применения SDN-сетей в подобных условиях Fan основывается на идее маппинга более крупных блоков адресов (например, 10.0.0.0/8) к менее крупным блокам (например, 172.16.0.0/16). Изолированному окружению назначаются непересекающиеся с другими окружениями адреса из крупной подсети, которые привязываются к зависящим от внешнего окружения адресам меньшей подсети, с дальнейшим автоматическим туннелированием трафика.
Адреса из крупного блока назначаются с использованием алгоритмического сопоставления, что избавляет от необходимости ведения БД с таблицами связи адресов внешней и внутренней подсетей. В частности, в блоке /8 достаточно адресов для автоматического выделения подсети /24 на основе простого смещения адреса, например, если виртуальной машине выделен IP 172.16.1.2, то можно сразу сопоставить с ним подсеть 10.1.2.0, для 172.16.99.200 - это будет 10.99.200.0 и т.д. Алгоритм трансляции при такой схеме сводится к простой замене "172.16." на "10.". Таким образом, для каждого предоставленного виртуальной машине IP-адреса удаётся выделить 253 дополнительных адреса для использования в контейнерах.
Метод расширения адресного пространства достаточно прост и при этом решает многие проблемы, возникающие с назначением адресов в системах виртуализации и контейнерной изоляции. В настоящее время рабочая реализация Fan уже доступна для Ubuntu в окружении AWS. Обеспечена интеграция с системами Doker, LXD и Juju. Для управления сопоставлением адресов и туннелингом между подсетями подготовлена утилита fanctl. Для определения статической конфигурации предлагается использовать файл /etc/network/fan. В дальнейшем компания Canonical намерена подготовить RFC, описывающий подобный метод расширения адресов.