Все параметры в одном конфигурационном файле могут быть заданы только однократно.
Текст, начинающийся с ‘#’ и до конца строки, считается комментарием и игнорируется Продуктом.
Опции конфигурационного файла также можно задать в командной строке при прямом запуске бинарного файла /opt/l2svc/bin/l2svc, указав перед ними «--».
Опишем возможные параметры конфигурационного файла:
Обязательные параметры
• vif <name> – имя виртуального интерфейса (TAP). Рекомендуется tapN, где N – цифра.
• capture <name> – имя сетевого интерфейса, с которого будет осуществляться захват ethernet-фреймов. Этому интерфейсу не рекомендуется назначать IP-адрес.
• bridge <name> – имя виртуального интерфейса моста. Рекомендуется brN, где N – цифра.
Опциональные параметры
• local <host> – ip-адрес или символьное имя локального хоста.
• remote <host> [port] – ip-адрес или символьное имя и порт удалённого хоста.
• port <port> – номер используемого UDP-порта, используемый и для локального и для удалённого хостов. Значение по умолчанию – 1194 (порт протокола Openvpn).
• local_port <port> – номер порта на локальном хосте. Значение по умолчанию – 1194 (порт протокола Openvpn).
• hwaddr <hw> – MAC-адрес виртуального интерфейса.
• bonding [name] – включение bonding-режима.
В данном режиме трафик с одного физического интерфейса разделяется на
два l2-туннеля. При этом возможно увеличение производительности tcp трафика
либо многопоточного трафика. Имя bond-интерфейса – bond0.
Дополнительный параметр name может использоваться для использования другого
bond-интерфейса, но только совместно с дополнительной настройкой bond-драйвера.
При использовании bonding-режима нужно создать два конфигурационных файла
(по одному на туннель), отличающихся портами и tap-интерфейсами. Настройка
должна быть произведена с обеих сторон туннеля.
При распределении пакетов между tap-интерфейсами используется режим balance
xor с политикой хеширования (xmit_hash_policy)
layer2+3. В этом случае, на какой из tap-интерфейсов направить пакет,
вычисляется по полям: source mac, destination
mac, source ip, destination ip.
Возможно использование политики хэширования layer3+4, в этом режиме для
вычисления хэша будут учитываться поля: source
ip, destination ip, source port, destination port. Для этого надо
отредактировать скрипт /opt/l2svc/bin/up, а именно строку:
modprobe bonding
mode=2
xmit_hash_policy=layer2+3
>/dev/null 2>&1
• log <file> – писать логи в файл вместо протоколирования в syslog.
• verb <n> – уровень подробности протоколирования. Уровни:
• 0 – только критические ошибки
• 1 – информация о старте продукта и построении соединений, а также не критические сетевые ошибки;
• 2 – показ информации об измеренном MTU, открытии/закрытии TAP-интерфейсов, рестартах продукта и соответствии опций туннеля на локальном и удалённом хостах;
• 3 – на каждый входящий/исходящий UDP-пакет в лог будет писаться R/W, на каждый прочитанный/записанный TAP-интерфейсом пакет – r/w.
Значение по умолчанию – 1.
• mute [n] – не повторять более n однотипных сообщений подряд. Если n не указано, оно считается равным 1. По умолчанию в Продукте выставлено mute=1000.
• nice <n> – изменить приоритет процесса.
• status <file> [n] – писать в <file> каждые n секунд информацию о текущем состоянии туннеля. Если n не указано, обновление раз в минуту. В файл пишется информация о количестве переданных и полученных байт по udp-туннелю, а также количество байт, записанных и прочитанных TAP-интерфейсом.
• compression [always|adaptive] – использование сжатия библиотекой LZO. Adaptive – использование адаптивного алгоритма, позволяющее избежать проблем при передаче уже сжатого трафика. При этом регулярно проводится проверка, насколько удалось сжать пакет. Если выигрыш составляет менее 5%, то сжатие выключается до следующей проверки (на 1 минуту). Если не указано always либо adaptive, используется adaptive. Пакеты размером 100 байт и меньше не сжимаются. По умолчанию отключено.
• tun_mtu <n> – MTU туннеля, а именно mtu следующих интерфейсов: capture-интерфейса, виртуального tap-интерфейса (vif) и виртуального интерфейса моста (bridge). Значение по умолчанию – 1500.
• mssfix [n] [force] – при включении данной опции поле MSS всех проходящих через туннель tcp-пакетов будет выставлено в n, если текущее значение mss в пакете больше n. Также, если определены tun_mtu либо fragment, и их значения меньше указанного в mssfix, в пакет будет прописано минимальное из них. При указанной опции force будет прописано именно указанное в конфигурационном файле значение mssfix, даже если оно больше имеющегося в пакете. При этом tcp/ip стек отправителя и получателя сам уменьшит максимальный размер пакета, не прибегая к использованию icmp. Это позволит избежать фрагментации. Если параметр n отсутствует, будет взято значение параметра fragment, если оно определено. Работает только для tcp-трафика. Значение по умолчанию – 1380.
• fragment n – если задано, то все пакеты, большие n байт, будут фрагментированы самим продуктом (а не ip-стеком). Это происходит в usermode-режиме, поэтому выполняется медленнее, чем фрагментация IP-стеком. Однако фрагментация ip-стеком завязана на path mtu discovery и в реальных условиях может не работать. Фрагментирование производится после сжатия, если оно включено. Опции добавляет 4 байта к размеру пакета. Включение данной опции может искажать результаты mtu_test. По умолчанию отключено.
• passtos – выставить ToS-поле отправляемого UDP-пакета такое же, как у захваченного пакета. По умолчанию отключено.
• txqueuelen <n> – длина очереди отправки пакетов виртуального (TAP) интерфейса. Значение по умолчанию – 1000.
• sndbuf <n> – размер буфера отправки UDP-сокета. Значение по умолчанию – 65536 байт.
• rcvbuf <n> – размер буфера приёма UDP-сокета. Значение по умолчанию – 65536 байт.
• keepalive <n> <m> – при указании данного параметра Продукт будет посылать по туннелю keepalive-пакеты собственного формата раз в n секунд. Если на отправленный пакет не будет ответа в течение m секунд либо от партнёра не придёт любого другого пакета – будет произведён частичный перезапуск продукта (будут пересозданы сокеты и виртуальный интерфейс, произойдёт пересоздание моста. Конфигурационные файлы перезачитываться не будут). Так как происходт пересоздание моста (bridge), использование keepalive невозможно при построении топологии «звезда». Рекомендуется выставлять keepalive на обоих концах туннеля и с одинаковыми значениями параметров. По умолчанию отключено.
• no_timestamps – не писать время в логи. По умолчанию время пишется.
• no_paging – запретить использование файла подкачки. По умолчанию отключено.
Пример описания туннеля:
#just another l2-tunnel
vif tap0
capture eth0
bridge br0
remote 1.2.3.4 2345
tun_mtu 6000
mssfix 1380