Маркировка ECN в IP-заголовке выполняется по умолчанию в Ubuntu (ядро 4.15.x) или нужно перекомпилировать ядро со специальной опцией? Я настроил входную очередь RED на машине Ubuntu, net.ipv4.tcp_ecn установлен на 1 на всех хостах сети, а ECN включен в команде tc qdisc.
Я использую 4 машины ubuntu с такой топологией: клиент --- rt1 --- rt2 --- сервер.
iperf -s
работает на стороне сервера и iperf -c server -P 100 -d
на стороне клиента.
(клиент --- rt1): задержка 100 Мбит 1 мс; (rt1 --- rt2): задержка 10 Мбит 1 мс; (rt2 --- сервер): задержка 100 Мбит 1 мс;
Очередь RED настроена на клиентском интерфейсе rt1 следующим образом:
tc qdisc add dev $ext handle ffff: ingress
ifconfig $ext_ingress up
tc filter add dev $ext parent ffff: protocol all u32 match u32 0 0 action mirred egress redirect dev $ext_ingress
tc qdisc add dev $ext_ingress root red limit 50000 min 4167 max 12500 burst 7 avpkt 1000 probability 0.5 bandwidth 100mbit ecn
Я вижу отброшенные пакеты как раннее отбрасывание из-за перегрузки, но помеченных пакетов нет.
Вам следует проверить конфигурацию ядра для:
IP_NF_TARGET_ECN
NETFILTER_XT_MATCH_ECN
Возможно, с ядром Ubuntu это просто дополнительный модуль, который нужно загрузить.