Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Сети в облаке на OpenStack: проблемы с которыми
сталкиваемся и их решение
Наша инсталляция
● три географически разнесенных региона облака
● релиз OpenStack Pike
● сеть облака Neutron ML2 plugin + OVS
● физическая сеть на Leaf-Spine стеках (Juniper/Brocade)
● нет vendor lock
● > 100 собственных патча компонентов OpenStack
О чем поговорим
● DDoS атаки
○ на пропускную способность канала (UDP amplification,
ICMP flood)
○ на ОС (TCP syn/ack/enc flood)
● Аномальный исходящий трафик
○ спам
○ исходящие DoS атаки / флуд
○ флуд MAC адресами
● гибридные сети (bare-metal -> cloud)
● DCI (Data Center Interconnect) сети
● траблшутинг оверлейных сетей
● проблемы neutron при переходе на новый релиз
DDoS атаки на канал
● балансировка трафика на аплинках
● множество провайдеров
● партнерство с системами защиты
● автоматическое обнаружение атаки + blackhole [1][2]
● > 20Gb/sec на каждый сервер
ссылки:
1. https://github.com/pavel-odintsov/fastnetmon
2. https://github.com/velp/ddosdetector
3. https://blog.selectel.ru/all-details-of-ddos-protection/
DDoS на ОС
● тюнинг TCP/IP стека Linux [1]
● >28 ядер на каждой сетевой ноде
● сетевые карты Intel и Mellanox
● > 4Mpps TCP-syn флуда
ссылки:
1. https://www.youtube.com/watch?v=I4hsTi92SsM
Спам
● vflow collector [1]
● nats + свой подписчик [2]
● clickhouse
● анализатор данных на Go
ссылки:
1. https://github.com/VerizonDigital/vflow
2. https://nats.io
Исходящие DDoS атаки / флуд
● мониторинг на уровне виртуального роутера
● мониторинг через зеркало трафика OVS на ноде
MAC address flood
● MAC адреса спрятаны в оверлей
● neutron port_security (OVS OpenFlow) [1]
ссылки:
1. https://docs.openstack.org/dragonflow/latest/specs/mac_spoofing.html
Neutron port_security
ссылки:
1. https://docs.openstack.org/dragonflow/latest/specs/mac_spoofing.html
Гибридные сети
● сервер администрируется клиентом
● нельзя использовать оверлейные сети облака
● сложность поддержки и администрирования
● сложная автоматизация
Гибридные сети
● Neutron + VLAN provider network [1]
● Neutron + L2 gateway plugin [2]
● Neutron + OpenDaylight (SDN networking) [3]
● Neutron + ML2-OVN + VLAN provider network *
ссылки:
1. https://docs.openstack.org/ocata/install-guide-ubuntu/launch-instance-networks-provider.html
2. https://github.com/openstack/networking-l2gw
3. https://wiki.opendaylight.org/view/OVSDB:Hardware_VTEP
4. https://bugs.launchpad.net/networking-ovn/+bug/1457569
VLAN provider network
L2gw plugin / OpenDaylight
Почему VXLAN?
VXLAN GENEVE GRE (OVS) NVGRE STT
Based protocol UDP UDP GRE GRE TCP
Tunnel ID field
size (bit)
24 24 32 24 + 8 64
Encapsulation
overhead
(bytes)
50 54 42 42 76
NIC offload checksum / UFO checksum / UFO checksum checksum checksum / TSO
Bare-metal
support
yes no yes no no
VXLAN vs GRE
VXLAN GREFlamegraph ksoftirq/0 (10sec)
OVS <-> VTEP
DCI сети
● Neutron + BaGpipe + BGPVPN plugin [1]
● Neutron + Tricircle (+ nova API-GW, cinder API-GW) [2]
● Neutron + L2 gateway plugin + настройка физической сети
ссылки:
1. https://docs.openstack.org/networking-bgpvpn/latest/
2. https://wiki.openstack.org/wiki/Tricircle
BaGpipe + BGPVPN
BaGpipe + BGPVPN
Минусы:
● сложность поддержки и администрирования
● L3 между всеми нодами
● уникальные ip адреса
Плюсы:
● быстрое схождение
ссылки:
1. https://www.youtube.com/watch?v=kGW5R8mtmRg
2. https://www.youtube.com/watch?v=LCDeR7MwTzE
Tricircle / L2 gateway + настройка
Минусы:
● VXLAN по публичным сетям
● контроллер как точка отказа
Плюсы:
● гибкость
● простота и нативная поддержка
Tricircle / L2 gateway + настройка
neutron port 8bbd66f0-cced-4c3e-8d59-3263206fa5bc -> tap8bbd66f0-cc
# ovs-vsctl get interface tap8bbd66f0-cc ofport
1479
Troubleshooting OF
# ovs-appctl ofproto/trace br-int in_port=1479,dl_dst=fa:16:3e:8f:db:4b
...
bridge("br-tun")
----------------
0. in_port=1, priority 1, cookie 0xfae4f6cc2f294b64
goto_table:2
2. dl_dst=00:00:00:00:00:00/01:00:00:00:00:00, priority 0, cookie
0xfae4f6cc2f294b64
goto_table:20
20. dl_vlan=73,dl_dst=fa:16:3e:8f:db:4b, priority 2, cookie 0xfae4f6cc2f294b64
pop_vlan
set_field: 0x2793->tun_id
output:2560
-> output to kernel tunnel
0x2793 -> 10131 (provider:segmentation_id)
Troubleshooting OF
# ovs-appctl vlog/list
console syslog file
------- ------ ------
backtrace OFF ERR INFO
bfd OFF ERR INFO
bond OFF ERR INFO
....
# ovs-appctl vlog/set ofproto:file:dbg
Troubleshooting OVS
# ip link add name snooper-tun type dummy
# ip link set dev snooper-tun up
# ovs-vsctl add-port br-tun snooper-tun 
-- --id=@p get port snooper-tun 
-- --id=@m create Mirror name=mymirror select-all=true output-port=@p 
-- set bridge br-tun mirrors=@m
# tcpdump -i snooper-tun -n -e
Troubleshooting
# pip install scapy
# scapy
>>> p =
IP(src="192.168.0.3",dst="192.168.0.4")/UDP(sport=1337,dport=4789)/VXLAN(vni=42
)/Ether()/IP()
>>> sendp(p)
.
Sent 1 packets.
# tcpdump -i eth0 -e -n dst port 4789
16:49:28.991713 fa:16:3e:2f:cf:e2 > fa:16:3e:e5:7b:d5, ethertype IPv4
(0x0800), length 98: 192.168.0.3.1337 > 192.168.0.4.4789: VXLAN, flags [.]
(0x04), vni 42
00:00:00:00:00:00 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 34:
127.0.0.1 > 127.0.0.1: ip-proto-0 0
Troubleshooting
● *.pyc файлы
● DeadLock в базе при rpc_workers > 1
● port status = DOWN если neutron-openvswitch-agent недоступны
● медленная синхронизация виртуального роутера
● медленная синхронизация туннелей neutron-openvswitch-agent
● растущая очередь сообщений в rabbit
Смена релиза OpenStack
● ponomarev@selectel.ru
● https://t.me/velizarx
● https://www.linkedin.com/in/vadim-ponomarev-53671538/
Q&A

More Related Content

Networks in the cloud on OpenStask: problems we face and their solution

  • 1. Сети в облаке на OpenStack: проблемы с которыми сталкиваемся и их решение
  • 2. Наша инсталляция ● три географически разнесенных региона облака ● релиз OpenStack Pike ● сеть облака Neutron ML2 plugin + OVS ● физическая сеть на Leaf-Spine стеках (Juniper/Brocade) ● нет vendor lock ● > 100 собственных патча компонентов OpenStack
  • 3. О чем поговорим ● DDoS атаки ○ на пропускную способность канала (UDP amplification, ICMP flood) ○ на ОС (TCP syn/ack/enc flood) ● Аномальный исходящий трафик ○ спам ○ исходящие DoS атаки / флуд ○ флуд MAC адресами ● гибридные сети (bare-metal -> cloud) ● DCI (Data Center Interconnect) сети ● траблшутинг оверлейных сетей ● проблемы neutron при переходе на новый релиз
  • 4. DDoS атаки на канал ● балансировка трафика на аплинках ● множество провайдеров ● партнерство с системами защиты ● автоматическое обнаружение атаки + blackhole [1][2] ● > 20Gb/sec на каждый сервер ссылки: 1. https://github.com/pavel-odintsov/fastnetmon 2. https://github.com/velp/ddosdetector 3. https://blog.selectel.ru/all-details-of-ddos-protection/
  • 5. DDoS на ОС ● тюнинг TCP/IP стека Linux [1] ● >28 ядер на каждой сетевой ноде ● сетевые карты Intel и Mellanox ● > 4Mpps TCP-syn флуда ссылки: 1. https://www.youtube.com/watch?v=I4hsTi92SsM
  • 6. Спам ● vflow collector [1] ● nats + свой подписчик [2] ● clickhouse ● анализатор данных на Go ссылки: 1. https://github.com/VerizonDigital/vflow 2. https://nats.io
  • 7. Исходящие DDoS атаки / флуд ● мониторинг на уровне виртуального роутера ● мониторинг через зеркало трафика OVS на ноде
  • 8. MAC address flood ● MAC адреса спрятаны в оверлей ● neutron port_security (OVS OpenFlow) [1] ссылки: 1. https://docs.openstack.org/dragonflow/latest/specs/mac_spoofing.html
  • 10. Гибридные сети ● сервер администрируется клиентом ● нельзя использовать оверлейные сети облака ● сложность поддержки и администрирования ● сложная автоматизация
  • 11. Гибридные сети ● Neutron + VLAN provider network [1] ● Neutron + L2 gateway plugin [2] ● Neutron + OpenDaylight (SDN networking) [3] ● Neutron + ML2-OVN + VLAN provider network * ссылки: 1. https://docs.openstack.org/ocata/install-guide-ubuntu/launch-instance-networks-provider.html 2. https://github.com/openstack/networking-l2gw 3. https://wiki.opendaylight.org/view/OVSDB:Hardware_VTEP 4. https://bugs.launchpad.net/networking-ovn/+bug/1457569
  • 13. L2gw plugin / OpenDaylight
  • 14. Почему VXLAN? VXLAN GENEVE GRE (OVS) NVGRE STT Based protocol UDP UDP GRE GRE TCP Tunnel ID field size (bit) 24 24 32 24 + 8 64 Encapsulation overhead (bytes) 50 54 42 42 76 NIC offload checksum / UFO checksum / UFO checksum checksum checksum / TSO Bare-metal support yes no yes no no
  • 15. VXLAN vs GRE VXLAN GREFlamegraph ksoftirq/0 (10sec)
  • 17. DCI сети ● Neutron + BaGpipe + BGPVPN plugin [1] ● Neutron + Tricircle (+ nova API-GW, cinder API-GW) [2] ● Neutron + L2 gateway plugin + настройка физической сети ссылки: 1. https://docs.openstack.org/networking-bgpvpn/latest/ 2. https://wiki.openstack.org/wiki/Tricircle
  • 19. BaGpipe + BGPVPN Минусы: ● сложность поддержки и администрирования ● L3 между всеми нодами ● уникальные ip адреса Плюсы: ● быстрое схождение ссылки: 1. https://www.youtube.com/watch?v=kGW5R8mtmRg 2. https://www.youtube.com/watch?v=LCDeR7MwTzE
  • 20. Tricircle / L2 gateway + настройка
  • 21. Минусы: ● VXLAN по публичным сетям ● контроллер как точка отказа Плюсы: ● гибкость ● простота и нативная поддержка Tricircle / L2 gateway + настройка
  • 22. neutron port 8bbd66f0-cced-4c3e-8d59-3263206fa5bc -> tap8bbd66f0-cc # ovs-vsctl get interface tap8bbd66f0-cc ofport 1479 Troubleshooting OF
  • 23. # ovs-appctl ofproto/trace br-int in_port=1479,dl_dst=fa:16:3e:8f:db:4b ... bridge("br-tun") ---------------- 0. in_port=1, priority 1, cookie 0xfae4f6cc2f294b64 goto_table:2 2. dl_dst=00:00:00:00:00:00/01:00:00:00:00:00, priority 0, cookie 0xfae4f6cc2f294b64 goto_table:20 20. dl_vlan=73,dl_dst=fa:16:3e:8f:db:4b, priority 2, cookie 0xfae4f6cc2f294b64 pop_vlan set_field: 0x2793->tun_id output:2560 -> output to kernel tunnel 0x2793 -> 10131 (provider:segmentation_id) Troubleshooting OF
  • 24. # ovs-appctl vlog/list console syslog file ------- ------ ------ backtrace OFF ERR INFO bfd OFF ERR INFO bond OFF ERR INFO .... # ovs-appctl vlog/set ofproto:file:dbg Troubleshooting OVS
  • 25. # ip link add name snooper-tun type dummy # ip link set dev snooper-tun up # ovs-vsctl add-port br-tun snooper-tun -- --id=@p get port snooper-tun -- --id=@m create Mirror name=mymirror select-all=true output-port=@p -- set bridge br-tun mirrors=@m # tcpdump -i snooper-tun -n -e Troubleshooting
  • 26. # pip install scapy # scapy >>> p = IP(src="192.168.0.3",dst="192.168.0.4")/UDP(sport=1337,dport=4789)/VXLAN(vni=42 )/Ether()/IP() >>> sendp(p) . Sent 1 packets. # tcpdump -i eth0 -e -n dst port 4789 16:49:28.991713 fa:16:3e:2f:cf:e2 > fa:16:3e:e5:7b:d5, ethertype IPv4 (0x0800), length 98: 192.168.0.3.1337 > 192.168.0.4.4789: VXLAN, flags [.] (0x04), vni 42 00:00:00:00:00:00 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 34: 127.0.0.1 > 127.0.0.1: ip-proto-0 0 Troubleshooting
  • 27. ● *.pyc файлы ● DeadLock в базе при rpc_workers > 1 ● port status = DOWN если neutron-openvswitch-agent недоступны ● медленная синхронизация виртуального роутера ● медленная синхронизация туннелей neutron-openvswitch-agent ● растущая очередь сообщений в rabbit Смена релиза OpenStack
  • 28. ● ponomarev@selectel.ru ● https://t.me/velizarx ● https://www.linkedin.com/in/vadim-ponomarev-53671538/ Q&A