CLI¶
Обзор¶
Сервис — это виртуальная сущность, агрегирующая в себе все настройки, которые описывают логику обработки запросов для Access Points: правила Content Switch/Modification, Persistence, Target-группа по умолчанию и SSL-сертификаты.
Настройка¶
Все настройки выполняются в режиме конфигурации ADC. Для перехода в него из режима enable mode выполните команду:
- configuration terminal¶
- vlb service NAME¶
Создать Сервис.
- default-target-group NAME¶
Добавить Target-группу к Сервису.
Необязательные поля включают:
- [no] ssl-profile ![NAME]¶
SSL-профиль. Назначить SSL-профиль всему Сервису.
- [no] persistence-group ![NAME]¶
Persistence. Добавить Persistence-группу к Сервису.
- [no] persistence-timeout ![(1-65535)]¶
Установить таймаут для Persistence-группы (таймаут, заданный в Сервисе, имеет приоритет над таймаутом в Persistence-группе).
Настроить опцию совместного использования Persistence. Обеспечивает совместное использование данных о сеансах между несколькими виртуальными сервисами, гарантируя, что клиенты направляются на один и тот же backend даже при доступе к разным портам или сервисам. См. ниже для объяснения и примеров.
- tcp tcp-profile NAME¶
- [no] rate-limit ![(1-4294967295) <bps|Kbps|Mbps|Gbps>]¶
Задать ограничение скорости в bps, Kbps, Mbps или Gbps.
- http content-switch rule (0-1000000000) http-content NAME if EXPRESSION...¶
Добавить правило Content Switch, где
EXPRESSION— это выражение правила. См. Правила Content Switch для справки. Если условие, описанное вEXPRESSION, истинно, будет показана страница в HTTP-контенте.
- http content-switch rule 4 target-group NAME if EXPRESSION...¶
Добавить правило Content Switch, где
EXPRESSION— это выражение правила. См. Правила Content Switch для справки. Если условие, описанное вEXPRESSION, истинно, запросы будут перенаправлены в указанную Target-группу.
- http no-workers-content NAME¶
Показать страницу-заглушку, если все Workers в Target-группе становятся недоступными. Для настройки этой страницы используйте Custom HTTP Content.
Access Points¶
Access Point определяется уникальной комбинацией маски подсети, порта, VRF и типа. Используется для предоставления клиентам доступа к Сервису.
- access-point type <l4-tcp|l4-udp|l4-dsr-tcp|l4-dsr-udp|tcp|http> ip A.B.C.D/M port <(0-65535)|any> [vrf VRFNAME] [dp-access-list ACLNAME] [tcp-profile NAME]¶
Добавить Access Point к Сервису.
Ключ
Аргумент
Описание
type<l4-tcp|l4-udp|l4-dsr-tcp|l4-dsr-udp|tcp|http>Режим обработки трафика для данной Access Point
ipA.B.C.D/MIP-адрес, на котором ADC будет принимать соединения. Можно указать подсеть или отдельный адрес с маской /32
port<(0-65535)|any>Порт, на котором ADC будет принимать соединения. Используйте
anyдля прослушивания всех портов[vrf][VRFNAME]По умолчанию на ADC создаётся VRF с именем
default[dp-access-list][ACLNAME]См. Access-лист
[tcp-profile]NAMEСм. TCP-профиль
- access-point type <ssl|https> ip A.B.C.D/M port <(0-65535)|any> [vrf VRFNAME] [dp-access-list ACLNAME] [tcp-profile NAME] [ssl-profile NAME]¶
Если используется тип Access Point
sslилиhttps, добавляется параметрssl-profile.
- access-point type <l4-tcp|l4-udp|l4-dsr-tcp|l4-dsr-udp> ipv6 X:X::X:X/M port <(0-65535)|any> [vrf VRFNAME] [dp-access-list ACLNAME] [tcp-profile NAME]¶
Для IPv6 доступны только типы
l4-tcp,l4-udp,l4-dsr-tcpиl4-dsr-udp
Типы Access Point:
Тип |
Описание |
|---|---|
|
L4-балансировка трафика TCP или UDP. ADC не терминирует сессии |
|
L4-балансировка трафика TCP или UDP в режиме DSR (Direct Server Return). Ответный трафик обходит ADC и напрямую направляется клиентам |
|
L4-балансировка с терминацией TCP (TCP-прокси). ADC обрабатывает только TCP-стек и балансировку |
|
L4-балансировка с терминацией TCP (TCP-прокси) и TLS offloading. HTTP-парсер отключен |
|
L7-балансировка HTTP-трафика. Включает TCP-стек, балансировку и парсинг HTTP. Поддерживает Content Switch и Modification Rules |
|
L7-балансировка HTTPS-трафика. Включает TCP-стек, SSL offloading, балансировку и HTTP-парсинг, включая Content Switch/Modification Rules, сертификаты и цепочки сертификатов |
L4 TCP/UDP Content Switch Rules¶
Эти правила определяют, как L4 TCP/UDP-трафик распределяется между Target-группами.
- <l4-tcp|l4-udp> content-switch rule (0-1000000000) target-group NAME if EXPRESSION...¶
Добавить новое правило и заполнить следующие поля:
Ключ
Аргумент
Описание
rule(0-1000000000)Правила выполняются в порядке возрастания. Правило срабатывает только если:
Условие правила имеет значение
trueВсе предыдущие правила (с меньшим ID) имеют значение
false
target-groupNAMETarget-группа, на которую происходит балансировка. Обязательное поле
if EXPRESSIONОпределяет условие, при котором срабатывает правило. Только одна переменная может использоваться в выражении:
$client_addr. Адрес клиента можно задать как подсеть (A.B.C.D/M) или Access-лист. В последнем случае Access-лист можно использовать для формирования списка сетей
Примеры
Если IP-адрес клиента
192.168.10.2/32, запросы балансируются на Target-группуtg1:
l4-tcp content-switch rule 1 target-group tg1 if $client_addr == 192.168.10.2/32
Если запросы поступают из подсетей
192.168.10.0/24или192.168.11.0/24, они балансируются на Target-группуtg1:
!
ip dp-access-list L4-TCP 10 permit src-ip 192.168.10.0/24
ip dp-access-list L4-TCP 15 permit src-ip 192.168.11.0/24
!
...
!
vlb service s0
l4-tcp content-switch rule 0 target-group tg1 if $client_addr == L4-TCP
Show-команды¶
- show vlb service [NAME]¶
Показать информацию и статистику обо всех созданных Сервисах или указанном Сервисе. Счётчики такие же, как для Access Points. Если в Сервисе более одной Access Point, счётчики будут суммированы.
- clear vlb service [NAME]¶
Очистить статистику обо всех Сервисах или указанном Сервисе.
- show vlb service [NAME] detail¶
Показать информацию и статистику для Access Point(s) и Сервиса.
- show vlb access-point type <l4-tcp|l4-udp|l4-dsr-tcp|l4-dsr-udp|tcp|ssl|http|https> ip A.B.C.D/M port <(0-65535)|any> [vrf VRF] [<dp-access-list|counters>]¶
Показать статистику для указанной Access Point. Вывод статистики может различаться в зависимости от выбранного типа Access Point
dsr-adc-1# show vlb access-point type https ip 203.0.113.3/32 port 443 vrf in_clients Total Connections: 7 Active Connections: 0 Dead Connections: 7 Application Errors: 0 Framework Errors: 0 TCP Handshake Errors: 0 TCP Handshake RST Errors: 0 HTTP(S) statistics: Requests: 7 Responses: 6 Parser Errors: 0 No Resources Errors: 0 No Responses: 0 Request Payload Bytes: 525 Response Payload Bytes: 2010 SSL Offload statistics: Handshakes OK: 7 RX Bytes: 5215 TX Bytes: 18810 Total Cached Hits: 0 Handshake Errors: 0 No Resources Error: 0 TLS Parser Errors: 0 SSL Errors: 0 Content switch rules: default-target-group https-server-1 (0 hits)
Счётчики Access Point
Описание
Total ConnectionsОбщее количество соединений между клиентом и ADC за всё время
Active ConnectionsКоличество активных соединений в данный момент
Dead ConnectionsОбщее количество закрытых соединений за всё время
Application ErrorsОшибка при инициализации сессии L7 на уровне TCP/HTTP/HTTPS. Этот счётчик обычно увеличивается из-за нехватки памяти
Framework ErrorsНе удалось выделить память для сессии L7. Обычно вызывается слишком большим количеством соединений, что приводит к исчерпанию памяти
TCP Handshake ErrorsНе удалось установить TCP-сессию из-за таймаута соединения
TCP Handshake RST ErrorsПолучен пакет TCP RST от клиента на этапе рукопожатия
Счётчики HTTP(s)
Описание
RequestsКоличество успешных клиентских запросов к ADC
ResponsesКоличество успешных ответов, отправленных клиенту
Parser ErrorsОшибка при парсинге HTTP/HTTPS (например, некорректные заголовки, недопустимые символы, повреждённые данные и т.д.)
No Resources ErrorsНе удалось выделить новый mbuf пакета при модификации HTTP-контента при добавлении заголовков или cookies
Request Payload BytesОбщее количество байт, отправленных клиентом на ADC
Response Payload BytesОбщее количество байт, полученных клиентом от ADC
Счётчики SSL Offload
Описание
Handshakes OKКоличество успешных TLS-рукопожатий между клиентом и ADC
RX BytesКоличество байт, полученных от клиента
TX BytesКоличество переданных байт
Total Cached HitsКоличество повторно использованных (кэшированных) TLS-сессий
Framework ErrorsНе удалось выделить память для L7-сессии
Handshake ErrorsОшибка при выполнении TLS-рукопожатия
No Resources ErrorОшибка выделения памяти при обработке TLS-потока (например, дешифрование)
- clear vlb access-point type <l4-tcp|l4-udp|l4-dsr-tcp|l4-dsr-udp|tcp|ssl|http|https> ip A.B.C.D/M port <(0-65535)|any> [vrf VRF] [<dp-access-list|counters>]¶
Очистить статистику Access Point.
Show-команды для L4¶
- show <vlb|vlb6> sessions [FILTER]¶
Показать полную таблицу L4-сессий с необязательной фильтрацией по полям: внутренние/внешние/удалённые IP-адреса, протоколы, порты, пул или VRF.
Фильтр
Ключи
proto:tcp:syn-receivedestablishedfin-receivedclosingtransitory
udp
int-ipДля IPv4 — внутренний IP-адрес
A.B.C.DДля IPv6 — внутренний IP-адрес
X:X::X:X
int-portПорт клиента. Диапазон:
1-65535ext-ipIP-адрес Worker в формате
A.B.C.Dext-portПорт Worker. Диапазон:
1-65535rem-ipIP-адрес Сервиса в формате
A.B.C.Drem-portПорт Сервиса. Диапазон:
1-65535poolИмя NAT-пула
NAMEvrfИмя VRF
NAMEПример
trafficsoft# show vlb sessions ------------------------------------------------------------------------------------------------------ Protocol Internal External Remote Pool ------------------------------------------------------------------------------------------------------ tcp (o) 203.0.113.2:80 203.0.113.2:80 192.168.0.11:49708 - tcp (o) 203.0.113.2:80 203.0.113.2:80 192.168.0.11:41382 - tcp (o) 203.0.113.2:80 203.0.113.2:80 192.168.0.11:33306 - tcp (o) 203.0.113.2:80 203.0.113.2:80 192.168.0.11:33288 - tcp (o) 203.0.113.2:80 203.0.113.2:80 192.168.0.11:33304 - ------------------------------------------------------------------------------------------------------
Полный формат команды:
- show <vlb|vlb6> sessions proto <tcp [{syn-received|established|fin-received|closing|transitory}]|udp> [{int-ip A.B.C.D|int-port (1-65535)|ext-ip A.B.C.D|ext-port (1-65535)|rem-ip A.B.C.D|rem-port (1-65535)|pool NAME|vrf NAME}]¶
Показать все L4-сессии или те, которые соответствуют указанному фильтру.
- clear vlb sessions [{int-ip A.B.C.D|int-port (1-65535)|ext-ip A.B.C.D|ext-port (1-65535)|rem-ip A.B.C.D|rem-port (1-65535)|pool NAME|vrf NAME}]¶
Очистить L4-сессии, соответствующие указанному фильтру.
- show <vlb|vlb6> sessions [vrf NAME] STRING...¶
Показать подробную информацию о L4-сессии по её полному ключу. Ключ можно скопировать из вывода команды
show <vlb|vlb6> sessions.
- clear <vlb|vlb6> sessions [vrf NAME] STRING...¶
Очистить указанную L4-сессию по её полному ключу.
- show <vlb|vlb6> counters¶
Показать текущую нагрузку по сессиям и IP-фрагментам.
- show <vlb|vlb6> counters protocols¶
Вывести количество трансляций по протоколам (ICMP, TCP и UDP):
trafficsoft# show vlb6 counters protocols ------------------------------------------------------------------------------------ Counter ICMP TCP UDP ------------------------------------------------------------------------------------ Translations Outbound 0 0 0 Translations Inbound 0 0 0 ------------------------------------------------------------------------------------
Где:
Translations Outbound— количество трансляций от Worker к клиентуTranslations Inbound— количество трансляций от клиента к Worker
Трансляция — это замена IP-адреса и порта Сервиса на IP-адрес и порт Worker для входящих пакетов и наоборот для исходящего трафика.
- show <vlb|vlb6> counters [vrf NAME] rate¶
Показать скорость трансляций (tps — трансляции в секунду), пропускную способность (bps) и создание сессий (sps — сессии в секунду).
- show <vlb|vlb6> counters [vrf NAME] overall¶
Показать все L4-счётчики для IPv4 или IPv6. Эти счётчики накопительные и не показывают текущую нагрузку системы. Ниже приведены некоторые счётчики и их краткое описание:
Счётчик
Описание
Inbound and Outbound TranslationsКоличество трансляций от Worker к клиенту (
outbound) и от клиента к Worker (inbound)Inbound and Outbound BytesВесь трафик через ADC без учёта заголовков Ethernet и VLAN
Inbound and Outbound Fragment TranslationsВсе IP-фрагменты, полученные из внутренней сети (исходящие) или внешней (входящие)
Inbound and Outbound Fragment BytesТо же самое, но в байтах
Session CreationsНакопительный счётчик созданных сессий
Unsupported L4 Protocol DropsПакет с неподдерживаемым L4-протоколом
No RSS DropsRSS не учитывался сетевой картой/драйвером
Balance DropsНет Worker, на который можно балансировать запросы
TTL DropsВремя жизни пакета истекло, что указывает на петлю в сети или на слишком низкое значение TTL IP-пакета
ACL DropsОтброс пакета (deny) согласно правилам Access-листа
Fragment Timeout DropsДо прибытия первого фрагмента трансляция невозможна. Фрагменты хранятся в цепочках. Цепочка существует определённое время. Если первый пакет не прибудет в течение указанного интервала, цепочка будет удалена. Интервал по умолчанию — 15 секунд
Fragment Duplicated DropsФрагмент дублирует фрагмент, который уже был обработан
Fragment Overlap DropsФрагмент пересекается с другим, который уже был обработан
Fragment With Zero Size DropsIP-фрагмент с нулевой полезной нагрузкой (без данных). Если после разбора IP-заголовка размер полезной нагрузки L4 в пакете составляет 0 байт, пакет будет отброшен, так как это сетевая атака
Fragment Control Queue Too Short DropsМассив, используемый для проверки отсутствия перекрытий входящих фрагментов, оказался недостаточным — пакет отбрасывается
TCP No SYN DropsTCP-пакеты без флага SYN, для которых сессия не была найдена
TCP NULL Flags DropsTCP-пакеты без каких-либо TCP-флагов
TCP SYN & FIN DropsПакеты с установленными флагами TCP SYN и FIN одновременно
TCP XMAS DropsTCP-пакеты с установленными флагами FIN, URG, PSH одновременно. Такие пакеты являются недопустимыми согласно RFC 793
TCP SYN Fragments DropsTCP-пакеты SYN, которые являются IP-фрагментами
Счётчики лимитов означают, что была попытка превысить установленный лимит. В этом случае запись/пакет отбрасывается, и счётчик увеличивается на 1. Лимиты:
Счётчик
Описание
Session Entry Limit DropsСессии vLB. Глобальное ограничение, задаётся командой
<vlb|vlb6> limits sessions (1-536870911) [vrf NAME]Pending Fragments Limit DropsФрагменты, обрабатываемые в данный момент для vLB. Глобальный лимит, задаётся командой
<vlb|vlb6> limits pending-fragments (1-536870911) [vrf NAME]Fragment Chain Limit DropsПревышено ограничение для цепочки фрагментов
- clear <vlb|vlb6> counters [vrf NAME] overall¶
Очистить все L4-счётчики для IPv4 или IPv6.
Show-команды для L7¶
- show vlb l7 sessions¶
Показать таблицу L7-сессий.
- clear vlb l7 sessions [{ext-ip A.B.C.D/M|ext-port (1-65535)|rem-ip A.B.C.D/M|rem-port (1-65535)}]¶
Очистить L7-сессии или те, которые соответствуют указанному фильтру.
- show vlb tcp sessions [{int-ip A.B.C.D|int-ip A.B.C.D/M|int-port (1-65535)|ext-ip A.B.C.D|ext-ip A.B.C.D/M|ext-port (1-65535)|rem-ip A.B.C.D|rem-ip A.B.C.D/M|rem-port (1-65535)|vrf NAME}]¶
Показать полную таблицу L7-сессий с необязательной фильтрацией по полям: внутренние/внешние/удалённые IP-адреса, протоколы, порты, пул или VRF. Вывод покажет сессию от клиента до Access Point и сессию от ADC до Worker.
trafficsoft# show vlb tcp sessions --- global --- tcp sessions in-use: 4 tcp sessions allocated: cumulative counter of all sessions 7545 tcp sessions released: cumulative counter of closed sessions 7541 tcp sessions put: 0 --- socket 0 --- --- tcp task 0 --- [2173:3] 172.16.2.2:80 -> 100.64.1.41:55797 [CLOSED] [VRF out_servers] left 104.969s [4270:0] 192.168.0.11:48172 -> 203.0.113.3:443 [ESTABLISHED] [VRF in_clients] left 899.842s [5107:3] 172.16.2.2:80 -> 100.64.1.41:9170 [ESTABLISHED] [VRF out_servers] left 899.851s [12840:0] 192.168.0.11:48270 -> 203.0.113.3:80 [CLOSED] [VRF in_clients] left 104.958s
Фильтр
Ключи
tcp sessions in-useТекущие используемые сессии
tcp sessions allocatedСуммарный счётчик всех открытых сессий
tcp sessions releasedСуммарный счётчик всех закрытых сессий
socket 0На каком сокете происходит обработка сессии
tcp task 0Какое ядро, предназначенное для обработки сессий, используется для этих сессий
- clear vlb tcp sessions [{int-ip A.B.C.D|int-ip A.B.C.D/M|int-port (1-65535)|ext-ip A.B.C.D|ext-ip A.B.C.D/M|ext-port (1-65535)|rem-ip A.B.C.D|rem-ip A.B.C.D/M|rem-port (1-65535)|vrf NAME}]¶
Очистить все L7-сессии или те, которые соответствуют указанному фильтру.