OpenStack networking – Neutron (quantum) Университет ИТМО Олег Лазо oll@niif.spb.su OpenStack и Neutron Архитектура Neutron Модели Neutron Взаимодействия компонентов Neutron Программа OpenStack и Neutron Архитектура Neutron Модели Neutron Взаимодействия компонентов Neutron Программа OpenStack: основные компоненты, которые (Nova) формируют комплексное решение IaaS Compute Создание и управление VM Dashboard (Horizon) Портал самообслуживания Identity (Keystone) Система аутентификации и авторизации Network(Neutron) обеспечивает «сеть как сервис» (NaaS) Image (Glance) Управление имиджами Block Storage (CInder) Object Storage (Swift) петабайты безопасного, надежного хранения 4 Neutron-NaaS *-as-a-Service Capability Compute OpenStack Service Nova Swift (Objects) Storage Cinder (Block) Glance (Images) identity Keystone Network Neutron Архитектура OpenStack Типовая загрузка VM Neutron и виртуализация сети 1.hypervisor 2.nova-scheduler 3.nova-computes 1.neutron-server 2.plugin 3.agents 8 OpenStack и Neutron Архитектура Neutron Модели Neutron Взаимодействия компонентов Neutron Программа Общая схема Neutron Типовая модель Neutron from http://docs.openstack.org/trunk/openstack-network/admin/content/connectivity.html Management network. Используется для внутреннего взаимодействия межу компонентами OpenStack. IP адреса этой сети должны быть доступны только внутри Data центра. Data network. Предназначена для передачи данных VM в рамках развертывания облаков. Требования к IP-адресации в этой сети зависят от используемого плагина Neutron. External network. Используется для обеспечения доступа VMs в Интернет. IP-адреса в этой сети должны быть аннонсированы в сети Интернет. API network. Предоставляет все интерфейсы API OpenStack, в том числе API Neutron. IP-адреса в этой сети должны быть аннонсированы в сети Интернет. Это может быть и та же сеть, что и External Network. Здесь может быть и подсеть Neutron, использующей часть диапазона IPадресов, под свои нужды. DHCP L3 Еще одна модель Neutron С несколькими агентами DHCP агент обслуживает только локальные VMs L3 агент обслуживает локальные VMs и плавающие IPs Мульти-хостовая модель Компоненты Neutron (для ovs, qemu и linux bridge plugin) metadata-agent l3-agent Neutron server & plugin Plugin agent ■ ■ ■ DHCP agent DB Queue Note: база данных (DB) и диспечер очередей сообщений (Queue) могут быть использованы другими службами OpenStack 15 Neutron сервер Осуществляет API и их расширения Применяет сетевую модель • Сети, подсети и порты IP адресация для каждого порта Plugin агент Запущен на каждой compute node Соединяет instances с сетевым портом DHCP агент В multi-host режиме, запущен на каждой compute node (отложенный) Старт/атоп DHCP сервер Поддерживает DHCP конфигурацию L3-агент Для реализации floating IPs и другие функции L3, такие как NAT Один на сеть Metadata-агент Работает между Neutron L3-агентом и Openstack nova metadata API сервером Уровни Neutron сервера Neutron API and extensions Common service (Validation, Authn, Authz) Neutron Core Plugin API Plugin DB 16 device Поставщик специальных plug-in или open source plug-in: linux bridge plugin openvswitch plugin nicira plugin … OpenStack и Neutron Архитектура Neutron Модели Neutron Взаимодействия компонентов Neutron Программа Основные модели Neutron port HealthMonitor Vip * Pool * * Member subnet Neutron LbaaS модель Сеть и физические связи Сеть Физическая сеть (Identified by name :) Модель виртуальной сети в Neutron Сетевые подключения provider network Tenant network GRE и локальные подключения не имеют физической сети VLAN Flat GRE local Локальные подключения для devstack одного поля Linux bridge plug-in не поддерживает GRE Понимание различий Neutron provider сети и сети tenant Другой путь рассмотрения сети internal Только fixed IPs выделяются здесь Private internal networks Shared internal networks Private external networks Shared external networks external Здесь можно выделять floating IPs и маршрутизатор должен иметь доступ к сети общего пользования private Только владелец tenant может создавать порты здесь. shared Другие tenants, кроме владельца tenat также могут создавать порты. Пример сети с fixed IPs (ovs plug-in) Host A network A local Vlan ID 1 network C local Vlan ID 3 int-br-eth1 br-int patch-tun patch-port veth int-br-eth2 network B local Vlan ID 2 phy-br-eth1 patch-int phy-br-eth2 Physnet1 vSwitch br-eth1 Physnet2 vSwith br-eth2 br-tun GRE eth1 VM ports eth2 physical net2 Flat Physical net1 vlan ID 1000 DHCP ports GRE network GRE host C host B local vlan id <-> tunnel id done by br-tun flow local vlan id <-> physical net vlan id done by physical net and br-int vSwitch Пример сети с fixed IPs (linux bridge plugin) Host A Network A (vlan 1) Network B (vlan 2) Network c Brq<net_id> Brq<net_id> Brq<net_id> eth1.1 eth1.2 tun veth veth Dhcp namespace (qdhcp-<net_id>) Dhcp namespace (qdhcp-<net_id>) Dhcp namespace (qdhcp-<net_id>) eth1 eth2 VM ports DHCP ports Physical net1 vlan ID 1 physical net2 Vlan ID 2 host C physical net3 Flat FloatingIP и маршрутизатор Vm 10.0.1.5/24 gw: 10.0.1.1/24 FloatingIP порт Floating IP, фиксированный порт на фиксированной IP сети Порт, подключеный к интерфейсу маршрутизатора, должен иметь адрес из сети шлюза Router interface 10.0.1.1/24 gw_port 10.0.7.2/24 Floating ip: 10.0.7.4/24 External network router external network vswitch br-ex internal nework Vm 10.0.20.5/24 gw: 10.0.20.1/24 eth0 l3_agent Для VM маршрутизатор используется для доступа снаружи и позволяет VM на разных подсетях или сетях получать доступ друг к другу с плавающим IP. Также используется для доступа VM во вне. маршрутизатором (ovs plugin) Host B L3-agent ovs-neutron-agent dhcp-agent network A local Vlan ID 3 Host A ovs-neutron-agent network A local Vlan ID 1 network C local Vlan ID 2 br-int Physnet1 vSwitch br-eth1 br-ex br-int network B local Vlan ID 1 external network D binding: local Physnet2 vSwith br-eth2 network B local Vlan ID 2 br-tun GRE eth0 eth1 eth2 Physnet1 vSwitch br-eth1 Physnet2 vSwith br-eth2 eth1 VM ports public net DHCP ports Router interface ports Router gateway and flaoting ip ports network C local Vlan ID 3 Physical net1 vlan ID 1000 physical net2 Flat br-tun GRE eth2 OpenStack и Neutron Архитектура Neutron Модели Neutron Взаимодействия компонентов Neutron Программа Использование частей AMQP компонентами Neutron Dhcp agent neutron-server get_active_networks get_network_info get_dhcp_port release_dhcp_port release_port_fixed_ip update_lease_expiration Plugin agent Neutron Rest API (resource CRUD) get_device_details update_device_down tunnel_sync network_delete Neutron topic Exchange: tunnel_update port_update q-agent-notifiernetwork-delete_fanout fanout q-agent-notifiertunnel-update_fanout fanout q-agent-notifierport-update_fanout fanout q-agent-notifiernetwork-delete_fanout _{uuid4} q-agent-notifiertunnel-update_fanout _{uuid4} q-agent-notifierport-update_fanout _{uuid4} dhcp Queue: Comsumer: q-plugin neutron-server <host.>dhcp Dhcp agent Plugin agent Последовательность загрузки VM с использованием Neutron компонент Доступ к Metadata Compute node Data network VM Network node Control node L3 agent namespace qrouter-<xy> Or DHCP agent namespace qdhcp-<xxx> nova-api-metadata neutron-ns-metadata-proxy unix socket neutron-metadata-agent Management network Mulitihost Data network Compute node Compute node nova-compute nova-compute neutron-dhcp-agent neutron-dhcp-agent neutron-l3-agent neutron-l3-agent neutron-<l2>-agent neutron-<l2>-agent VM VM VM external network VM DHCP qdhcp-xx namespace neutron-ns-metadata-proxy DHCP qdhcp-xx namespace neutron-ns-metadata-proxy unix socket VM Control node unix socket neutron-metadata-agent neutron-metadata-agent Management network VM LbaaS компоненты neutron.conf: service_plugins = neutron.services.loadbalancer.plugin.LoadBalancerPlugin lbaas_agent.ini: interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyN SDriver Management network Network node neutron-lbaas-agent Control node neutron-<l2>-agent Neutron-server Pool namespace xx haproxy Data network У меня все. Вопросы и пожелания?