Контроллер доставки приложений 33 BIT
Техническое описаниеы
АННОТАЦИЯ
Настоящий документ является Техническим описанием на программу, предназначенную для эффективного распределения сетевой нагрузки приложений между несколькими серверами (далее – Программа).
Программа применятся при необходимости повысить производительность приложений, уменьшить время отклика и уменьшить задержку сети. Так же применяется для равномерного распределение нагрузки между серверами для повышения производительности приложений.
ACL – Access Control List
ADC – Application Delivery Controller
CPS – Cost-per-Sale
DNS – Domain Name System
DNSSEC – Domain Name System Security Extensions
DPDK – Data Plane Development Kit
EDNS – механизм расширения DNS
FTP – File Transfer Protocol
GSLB – Global Server Load Balancing
HTTP – HyperText Transfer Protocol
IMAP – Internet Messaging Access Protocol
IPS – Intrusion Prevention System
LDAP – Lightweight Directory Access Protocol
NAT – Network Address Translation
NNTP – Network News Transfer Protocol
NTLM – New Technology LAN Manager
OAuth – Open Authorization
OWASP – Open Worldwide Application Security Project
PCI – Peripheral Component Interconnect
PDK – Plugin Development Kit
POP3 – Post Office Protocol
RDP – Remote Desktop Protocol
SAML – security assertion markup language
SLB – Server Load Balancing
SMTP – Simple Mail Transfer Protocol
SNAT – Source Network Address Translation
SSL – Secure Sockets Layer
URL – Uniform Resource Locator
VLAN – Virtual Local Area Network
VXLAN – Virtual Extensible LAN
WAF – Web Application Firewall
1.1. Наименование программы
Полное наименование программы: «Контроллер доставки приложений 33 bit».
Сокращенное наименование программы: ADC.
1.2. Область применения
ADC предназначена для эффективного распределения сетевой нагрузки приложений между несколькими серверами.
ADC применятся при необходимости повысить производительность приложений, уменьшить время отклика и уменьшить задержку сети. Так же применяется для равномерного распределение нагрузки между серверами для повышения производительности приложений.
1.3. Краткое описание возможностей
ADC обладает следующей функциональностью:
– настройка с помощью шаблонов приложений;
– работа с сетью;
– высокая доступность;
– балансировка нагрузки сервера;
– глобальная балансировка нагрузки сервера (GSLB);
– продвинутая маршрутизация GSLB (глобальная система балансировки нагрузки).
Рис. 1 – Основные компоненты архитектуры ADC
Основные компоненты ADC:
– службы ADC (прокси уровня 4, прокси уровня 7, прокси VS SSL, AAA, GSLB, WAF и т. д.) –процессы, выполняемые в пользовательском пространстве Linux;
– FastPacket – модуль между базовыми службами DPDK и ADC. Это уровень абстракции, поэтому службы ADC и DPDK изолированы. С помощью DPDK он обходит обычное ядро Linux и накладные расходы сводятся к минимуму;
– пакеты поступают от собственных устройств PCI в режиме опроса, DPDK или необработанных пакетов от ядра. Пользовательские драйверы сетевых адаптеров (в основном Intel i350, 82599ES, XL710, E810 и Mellanox Connect-3/4) на устройствах ADC оптимизированы.
2.1.1. Службы ADC
Назначение служб ADC:
– службы ADC отвечают за функции балансировки нагрузки, такие как L4/7, разгрузка SSL, AAA и т. д.;
– имеют собственные механизмы управления огромной памятью, оптимизированные для соединений/потоков LB;
– большинство служб ADC (за исключением WAF, Snort, Bird) являются многопоточными для использования нескольких ядер процессора. Это позволяет выполнять несколько процессов одновременно.
2.1.2. FastPacket
Назначение FastPacket:
– FastPacket обеспечивает уровень абстракции между службами ADC и DPDK, потому что DPDK работает в том же процессе, что и службы ADC, и он будет владеть всем объемом памяти, что полностью противоречит управлению памятью служб ADC. FastPacket берет на себя управление и сообщает DPDK, какой список мощностей может принадлежать DPDK;
– нулевое копирование, DPDK использует структуру данных mbuf, но служба ADC использует другую структуру;
– обработка буферов между службами DPDK и ADC, PDK выделяет некоторые буферы заранее. FastPacket предназначен для изоляции обработки буферов между службой ADC и DPDK;
– FastPacket отвечает за резервирование ядра процессора службы ADC в зависимости от нагрузки.
2.1.3. Пользовательские драйверы сетевых карт
Драйвер сетевой карты играет важную роль в производительности, особенно современная сетевая карта с MSI-X (несколько ядер, назначенных очередям rx/tx сетевой карты).
Большинство стандартных драйверов сетевых карт в *nix не оптимизированы, особенно сетевые карты от Intel.
Это влечет за собой некоторые последствия с точки зрения производительности:
– применимо понятие распределения нагрузок (технически это прерывания) по всем ядрам, или равномерно нагруженных. Это приводит к минимуму конкуренцию за блокировку;
– службы ADC работают параллельно, когда одна служба занимает ядра процессора A, а другая служба использует ядра процессора B, система автоматически определяет уровень конкуренции за блокировку, цель состоит в том, чтобы свести к минимуму конкуренцию блокировок, а не использовать как можно больше ядер процессора.
2.2. Требования к аппаратному обеспечению
Сервер, на котором планируется устанавливать ADC, должен отвечать следующим минимальным характеристикам:
– процессор: Intel X86 CPU (не менее 2 ядер);
– сеть: не менее 2 сетевых портов (Intel i350, i210, 82599, X710, E810, Mellanox ConnectX-4/5);
– оперативная память: не менее 2 ГБ;
– жесткий диск: не менее 40 ГБ;
– SSL-карта: Cavium Nitrox v3/v5.
2.3. Поддерживаемые операционные системы
Программное обеспечение ADC является автономным и включает в себя операционную систему на базе ядра Linux 4.14.137.
3. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ
ADC поддерживает следующие функциональные возможности:
1) настройка с помощью шаблонов приложений;
2) работа с сетью:
– переадресация на основе NAT;
– поддержка SNAT;
– VLAN (802.1q);
– VXLAN;
– связывание интерфейса в режимах active-back и active-active(802.3ad);
– двойной стек IPv6/IPv4;
– QoS поддерживает отображение всех соединений, CPS, RPS, пропускная способность глобально и отдельно для каждого виртуального сервер;
– сквозной доступ DSCP и DSCP в ручном режиме;
– ACL (листы доступа) – как глобальные, так и для каждого отдельного виртуального сервера;
– VPN в облако между сайтами (Сайт-сайт).
3) высокая доступность:
– высокая доступность (Active-Passive) аппаратных устройств, виртуальных платформ и облачного решения;
– настройки высокой доступности аппаратных и программных устройств (Active-Passive) поддерживают синхронизацию соединений на уровне 4 и сохраняемость сеанса на уровне 7;
– кластеризация (Active-Active, до 16 устройств), виртуальная платформа;
– кластеризация поддерживается только в облаке со включенной многоадресной рассылкой.
4) балансировка нагрузки сервера:
– проверка работоспособности:
а) проверка на уровне 2/3, включая ICMP, порт TCP, Telnet;
б) проверка приложений, включая LDAP, RDP, NNTP, FTP, SMTP, POP3, IMAP;
в) HTTP(s) уровня 7, включая коды состояний, URL, HTTP/1.1, метод HTTP;
г) двоичное сканирование на уровне 4/7;
д) цепочка рабочих серверов.
– политика балансировки нагрузки:
а) циклический перебор;
б) пропорциональный циклический перебор;
в) наименьшее соединение;
г) пропорциональное наименьшее соединение;
д) предсказуемая (Active-Backup);
е) пропорциональное время ответа;
ж) хэш IP-адреса источника;
з) хэш URL;
и) настраиваемый агент.
сохраняемость сеанса:
а) уровень 7 – настраиваемый cookie-файл HTTP, заголовок, запрос;
б) идентификатор сеанса;
в) IP-адрес источника;
г) источник/служба RDP.
– аутентификация пользователей:
а) предаутентификация;
б) аутентификация (LDAP, Radius, NTLM, Kerberos, SAML,OAuth 2.0, RSA SecurID, сертификат X.509, смарт-карты);
в) двухфакторная аутентификация;
г) настраиваемая форма входа;
д) перенаправление на разные URL-адреса на основе пользовательской группы (поддерживается только в Active Directory).
– разгрузка SSL:
а) поддержка SSL v3, TLS v1.0/1.1/1.2/1.3;
б) настраиваемые наборы шифров;
в) сквозной доступ по клиентскому сертификату;
г) поддержка SNI;
д) поддержка HSTS;
е) проверка клиентских сертификатов;
ж) поддержка OCSP;
з) поддержка сертификата EC;
и) поддержка STARTTLS на POP3, SMTP и IMAP;
к) поддержка FIPS 140-2, уровень 1 (программное обеспечение) и уровень 2 (аппаратное обеспечение).
– правила уровня 7:
а) правила переключения содержимого и URL;
б) правила запросов и ответов HTTP – глобально и для каждого отдельного рабочего сервера;
в) поддержка цепочки правил на уровне 7.
– WAF:
а) защита от 10 самых опасных атак по версии OWASP;
б) защита от атак в реальном времени;
в) ежедневное обновление репутации IP-адресов.
– устранение ошибок:
а) настраиваемая HTML-страница ошибок или недоступности сервиса;
б) настраиваемый код состояние HTTP;
в) настраиваемый сервер устранения неисправностей.
– дополнительно:
а) поддержка HTTP/2;
б) упаковка и кэширование HTTP(s);
в) мультиплексирование HTTP/1.1;
г) автоматическое преобразование HTTP/2 – HTTP/1.1;
д) IPS с поддержкой SNORT.
5) Глобальная балансировка нагрузки сервера (GSLB):
– кластеризация GSLB:
а) до 64 узлов LB узлов в кластеризации GSLB;
б) интеграция GSLB и SLB.
– политика балансировки нагрузки:
а) Active-Passive;
б) циклический перебор;
в) пропорциональный циклический перебор;
г) статическая близость;
д) поддержка EDNS на основе расположения;
е) настраиваемая Загрузка (Поддерживается только в интеграции GSLB и SLB);
ж) динамические метрики, основанные на соединениях датацентра и времени ответа (Поддерживается только в интеграции GSLB и SLB).
– дополнительно:
а) поддержка DNSSEC;
б) данные DNS-запрос ожидают несколько интерфейсов;
в) ежедневно обновляемый черный список ACL для блокировки известных источников атак;
г) DNS-записи A/AAAA, TXT, MX, CNAME;
д) сохраняемость GSLB;
6) продвинутая маршрутизация GSLB.
4. ИСПОЛЬЗУЕМЫЕ ЗАВИСИМОСТИ
При работе ADC используются следующие программные средства:
– lighttpd 1.4.76;
– PHP zend framework;
– openssl 1.1.1n;
– php 7.4;
– Linux Kernel 4.14.137;
– strongSwan 5.8.4;
– syslog-ng-3.25.1;
– iproute2 2-5.13.0;
– net-snmp 5.6.1;
– curl 7.44.0;
– libxml2 2.9.5;
– traceroute 2.0.19;
– freeradius 1.1.8;
– bash 4.3;
– zLib 1.2.3;
– BIND 9.16.25;
– krb5-1.17;
– OpenLDAP 2.4.59;
– tcpdump 4.99.1;
– ethtool v4.18;
– dhcpd v1.3.22-pl4;
– libjwt v1.10.2;
– MaxMind GeoIP v1.4.8;
– rsync v2.6.9;
– vmxnet v2.0.4.0.
5. ПОДДЕРЖИВАЕМЫЕ СТАНДАРТЫ И ПРОТОКОЛЫ
При работе ADC поддерживает следующие международные стандарты и протоколы:
– RFC 2459;
– RFC 2045;
– RFC 1035;
– RFC 2142;
– RFC 2865;
– RFC 5424;
– RFC 1738;
– RFC 2616;
– RFC 7231;
– RFC 4271:Border Gateway Protocol 4 (BGP);
– RFC 1997:BGP Communities Attribute;
– RFC 2385:Protection of BGP Sessions via TCP MD5 Signature;
– RFC 2545:Use of BGP Multiprotocol Extensions for IPv6;
– RFC 2918:Route Refresh Capability;
– RFC 3107:Carrying Label Information in BGP;
– RFC 4360:BGP Extended Communities Attribute;
– RFC 4364:BGP/MPLS IPv4 Virtual Private Networks;
– RFC 4456:BGP Route Reflection;
– RFC 4486:Subcodes for BGP Cease Notification Message;
– RFC 4659:BGP/MPLS IPv6 Virtual Private Networks;
– RFC 4724:Graceful Restart Mechanism for BGP;
– RFC 4760:Multiprotocol extensions for BGP;
– RFC 4798:Connecting IPv6 Islands over IPv4 MPLS;
– RFC 5065:AS confederations for BGP;
– RFC 5082:Generalized TTL Security Mechanism;
– RFC 5492:Capabilities Advertisement with BGP;
– RFC 5549:Advertising IPv4 NLRI with an IPv6 Next Hop;
– RFC 5575:Dissemination of Flow Specification Rules;
– RFC 5668:4-Octet AS Specific BGP Extended Community;
– RFC 6286:AS-Wide Unique BGP Identifier;
– RFC 6608:Subcodes for BGP Finite State Machine Error;
– RFC 6793:BGP Support for 4-Octet AS Numbers;
– RFC 7311:Accumulated IGP Metric Attribute for BGP;
– RFC 7313:Enhanced Route Refresh Capability for BGP;
– RFC 7606:Revised Error Handling for BGP UPDATE Messages;
– RFC 7911:Advertisement of Multiple Paths in BGP;
– RFC 7947:Internet Exchange BGP Route Server;
– RFC 8092:BGP Large Communities Attribute;
– RFC 8203:BGP Administrative Shutdown Communication;
– RFC 8212:Default EBGP Route Propagation Behavior without Policies;
– RFC 8654:Extended Message Support for BGP;
– RFC 9072:Extended Optional Parameters Length for BGP OPEN Message;
– RFC 9117:Revised Validation Procedure for BGP Flow Specifications;
– RFC 9234:Route Leak Prevention and Detection Using Roles.
6. ИНФОРМАЦИЯ О СОВМЕСТИМОСТИ
6.1. Программное обеспечение
ADC – это автономное программное обеспечение, которое может работать на физических серверах. Для версии виртуального устройства он может работать с гипервизорами, представленными в таблице 1.
Таблица 1 – Гипервизоры
Гипервизор | Поддерживаемые версии |
Windows Hyper-v | – Windows Server 2008 R2 и Hyper-V Server 2008 R2; – Windows Server 2012 R2 и Hyper-V Server 2012 R2; – Windows Server 2016 и Hyper-V Server 2016; – Windows Server 2019 и Hyper-V Server 2019; – Windows Server 2022 и Hyper-V Server 2022 |
vSphere/EXSi | – VMware vSphere ESXi 4.0/4.1/5.0/5.1/6.0/6.5/6.7/7.0/8.0; – VMware vSphere ESX 4.0/4.1/5.0/5.1; – Гипервизор VMware vSphere 5.0/5.1 |
KVM | – CentOS 20.x; – Debian 6.x |
VirtualBox | 5.2.8 или более поздней версии |
6.2. Аппаратное обеспечение
Физический сервер с процессором архитектуры Intel x86.
7. ТРЕБОВАНИЯ К ЛИЦЕНЗИРОВАНИЮ И АКТИВАЦИИ
Лицензирование связано с MAC-адресом/процессором/жестким диском, и для активации лицензии не требуется доступ к Интернету.
8. РЕКОМЕНДАЦИИ ПО РАЗВЕРТЫВАНИЮ В КОРПОРАТИВНОЙ СРЕДЕ
Режимы развертывания включают в себя:
– балансировщик с промежуточным прокси (на одном интерфейсе);
– балансировщик с оконечным прокси (на двух интерфейсах – в разрыв);
– прямой возврат с сервера (Direct server return, DSR).
2. АРХИТЕКТУРА И СИСТЕМНЫЕ ТРЕБОВАНИЯ
2.1. Архитектура ADC
Архитектура программного обеспечения ADC содержит три основных компонента и представлена на рис. 1: