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. Гибридные сети
● сервер администрируется клиентом
● нельзя использовать оверлейные сети облака
● сложность поддержки и администрирования
● сложная автоматизация
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
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
27. ● *.pyc файлы
● DeadLock в базе при rpc_workers > 1
● port status = DOWN если neutron-openvswitch-agent недоступны
● медленная синхронизация виртуального роутера
● медленная синхронизация туннелей neutron-openvswitch-agent
● растущая очередь сообщений в rabbit
Смена релиза OpenStack