OpenStack networking – Neutron (quantum) Университет ИТМО Олег Лазо oll@niif.spb.su 1
Программа OpenStack и Neutron Архитектура Neutron Модели Neutron
Программа OpenStack и Neutron Архитектура Neutron Модели Neutron
OpenStack: основные компоненты, которые формируют комплексное решение IaaS Compute (Nova) Создание и управление VM Dashboard (Horizon) Портал самообслуживания Identity (Keystone) Система аутентификации и авторизации Network(Neutron) обеспечивает «сеть как сервис» (NaaS) Image (Glance) Управление имиджами Block Storage (CInder) Object Storage (Swift) петабайты безопасного, надежного хранения 4 4 4
Neutron-NaaS *-as-a-Service Capability OpenStack Service Compute Nova Swift (Objects) Storage Cinder (Block) Glance (Images) identity Keystone Network Neutron 5 5
Архитектура OpenStack
Типовая загрузка VM
Neutron и виртуализация сети 1.hypervisor 2.nova-scheduler 3.nova-computes 1.neutron-server 2.plugin 3.agents 8 8 8
Программа OpenStack и Neutron Архитектура Neutron Модели Neutron
Общая схема Neutron
Типовая модель Neutron 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- адресов, под свои нужды. Типовая модель Neutron from http://docs.openstack.org/trunk/openstack-network/admin/content/connectivity.html
Еще одна модель Neutron DHCP L3 Еще одна модель Neutron
С несколькими агентами
Мульти-хостовая модель DHCP агент обслуживает только локальные VMs L3 агент обслуживает локальные VMs и плавающие IPs Мульти-хостовая модель
Компоненты Neutron (для ovs, qemu и linux bridge plugin) Осуществляет 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 сервером metadata-agent l3-agent Neutron server & plugin Plugin agent DHCP agent DB Queue Note: база данных (DB) и диспечер очередей сообщений (Queue) могут быть использованы другими службами OpenStack 15 15 15
Уровни Neutron сервера Поставщик может добавлять расширения для увеличения функциональности Neutron API and extensions Common service (Validation, Authn, Authz) Neutron Core Plugin API Поставщик специальных plug-in или open source plug-in: linux bridge plugin openvswitch plugin nicira plugin … Plugin DB device 16 16 16
Программа OpenStack и Neutron Архитектура Neutron Модели Neutron
Основные модели Neutron 18
Neutron LbaaS модель * * * 19 port Vip HealthMonitor Pool Member subnet Neutron LbaaS модель 19
Сеть и физические связи Модель виртуальной сети в Neutron Физическая сеть (Identified by name :) Сетевые подключения provider network Tenant network GRE и локальные подключения не имеют физической сети VLAN Flat GRE local Локальные подключения для devstack одного поля Linux bridge plug-in не поддерживает GRE Понимание различий Neutron provider сети и сети tenant 20
Другой путь рассмотрения сети Shared internal networks internal Private internal networks Только fixed IPs выделяются здесь external Private external networks Shared external networks Здесь можно выделять floating IPs и маршрутизатор должен иметь доступ к сети общего пользования private Только владелец tenant может создавать порты здесь. Другие tenants, кроме владельца tenat также могут создавать порты. shared 21
Пример сети с 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 eth2 Physical net1 vlan ID 1000 physical net2 Flat GRE network VM ports DHCP ports 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 22
Пример сети с fixed IPs (linux bridge plugin) Host A Network A (vlan 1) Network B (vlan 2) Network c tun Brq<net_id> Brq<net_id> Brq<net_id> veth veth eth1.1 eth1.2 Dhcp namespace (qdhcp-<net_id>) Dhcp namespace (qdhcp-<net_id>) Dhcp namespace (qdhcp-<net_id>) eth1 eth2 physical net3 Flat Physical net1 vlan ID 1 physical net2 Vlan ID 2 VM ports DHCP ports host C 23
FloatingIP и маршрутизатор Vm 10.0.1.5/24 gw: 10.0.1.1/24 Floating IP, фиксированный порт на фиксированной IP сети Порт, подключеный к интерфейсу маршрутизатора, должен иметь адрес из сети шлюза FloatingIP порт Router interface 10.0.1.1/24 External network gw_port 10.0.7.2/24 Floating ip: 10.0.7.4/24 internal nework router external network vswitch br-ex Vm 10.0.20.5/24 gw: 10.0.20.1/24 eth0 l3_agent Для VM маршрутизатор используется для доступа снаружи и позволяет VM на разных подсетях или сетях получать доступ друг к другу с плавающим IP. Также используется для доступа VM во вне. 24
Пример сети с fixed IP и маршрутизатором (ovs plugin) Host B L3-agent ovs-neutron-agent dhcp-agent Host A ovs-neutron-agent network A local Vlan ID 3 network C local Vlan ID 2 network A local Vlan ID 1 network C local Vlan ID 3 br-int br-int external network D binding: local network B local Vlan ID 1 network B local Vlan ID 2 br-ex Physnet1 vSwitch br-eth1 Physnet2 vSwith br-eth2 br-tun Physnet1 vSwitch br-eth1 Physnet2 vSwith br-eth2 br-tun GRE GRE eth0 eth1 eth1 eth2 eth2 public net Physical net1 vlan ID 1000 VM ports physical net2 Flat DHCP ports Router interface ports Router gateway and flaoting ip ports 25
Программа OpenStack и 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 tunnel_update port_update q-agent-notifier- network-delete_fanout fanout q-agent-notifier- tunnel-update_fanout fanout q-agent-notifier- port-update_fanout fanout Exchange: Neutron topic dhcp Queue: q-agent-notifier- network-delete_fanout _{uuid4} q-agent-notifier- tunnel-update_fanout _{uuid4} q-agent-notifier- port-update_fanout _{uuid4} q-plugin <host.>dhcp Comsumer: neutron-server Dhcp agent Plugin agent 27
Последовательность загрузки VM с использованием Neutron компонент 28
Доступ к Metadata Compute node Network node Control 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 Compute node Compute node Control node Data network DHCP qdhcp-xx namespace neutron-ns-metadata-proxy neutron-metadata-agent unix socket Compute node VM neutron-dhcp-agent neutron-l3-agent neutron-<l2>-agent nova-compute DHCP qdhcp-xx namespace neutron-ns-metadata-proxy neutron-metadata-agent unix socket Compute node VM neutron-dhcp-agent neutron-l3-agent neutron-<l2>-agent nova-compute external network Control node Management network 30
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
У меня все. Вопросы и пожелания?