Jump to content
Калькуляторы

Настройка BRAS на CentOS

Доброго времени суток, коллеги! Был старый сервер с настроенным TC+NAT (настраивал не я). Нагрузка где-то 1000 абонентов. Сервер перестал справляться с нагрузкой и решили заменить его новым.

Поставил на новый сервер CentOS 6.5, обновил, скопировал скрипты настройки интерфейсов, настройки iptables и TC. Увеличил net.netfilter.nf_conntrack_max и /sys/module/nf_conntrack/parameters/hashsize.

В итоге новый сервер вместо 10 мбит для абонента выдаёт 6, есть потеря пакетов как в сторону интернета, так и в локалку. TC настроен только в сторону локалки. Канал не забивается, нагрузка на ЦП низкая. Если убрать фильтры с интерфейса (т.е. отдавать клиентам весь канал без ограничения скорости), канал забивается полностью. В /var/log/messages чисто. При загрузке (boot.log) тоже везде ОК. На сервере также стоит named и dhcpd. TC для фильтрации использует хэш-таблицы. На сервере поднято 180 интерфейсов (вланы).

 

Укороченный скрипт TC:

#!/bin/bash

tc qdisc del dev em2 root

tc qdisc add dev em2 root handle 1: htb default 100
tc class add dev em2 parent 1: classid 1:1 htb rate 1000mbit

tc class add dev em2 parent 1:1 classid 1:10 htb rate 1mbit ceil 500mbit

tc class add dev em2 parent 1:1 classid 1:20 htb rate 500mbit
tc class add dev em2 parent 1:1 classid 1:30 htb rate 50mbit

tc qdisc add dev em2 parent 1:10 handle 10: sfq perturb 10

tc filter add dev em2 protocol ip parent 1: u32 match ip src 10.0.0.1 flowid 1:10

tc class add dev em2 parent 1:20 classid 1:100 htb rate 500kbit ceil 10mbit quantum 2000

#Создаем корневой фильтр
tc filter add dev em2 parent 1:0 protocol ip u32

#Создаем 3 хеш таблицы для 1-3 октета
tc filter add dev em2 parent 1:0 handle 1: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 2: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 3: protocol ip u32 divisor 256

tc filter add dev em2 parent 1:0 handle 10: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 11: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 12: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 13: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 14: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 15: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 16: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 17: protocol ip u32 divisor 256
tc filter add dev em2 parent 1:0 handle 18: protocol ip u32 divisor 256

#Создаем фильтр направлящий весь трафик в хеш таблицу с ID 1
tc filter add dev em2 parent 1:0 protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 hashkey mask 0xff000000 at 16 link 1:

# ======= 1-й октет =======
tc filter add dev em2 parent 1:0 protocol ip u32 ht 1:a: match ip dst 10.0.0.0/8  hashkey mask 0xff0000 at 16 link 2:

#Добавляем правило в 2 хеш таблицу, если второй октет равен 0, то оправляем пакет в 3 хеш таблицу 
tc filter add dev em2 parent 1:0 protocol ip u32 ht 2:0: match ip dst 10.0.0.0/16 hashkey mask 0xff00 at 16 link 3:

tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:a: match ip dst 10.0.10.0/24 hashkey mask 0xff at 16 link 10:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:b: match ip dst 10.0.11.0/24 hashkey mask 0xff at 16 link 11:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:c: match ip dst 10.0.12.0/24 hashkey mask 0xff at 16 link 12:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:d: match ip dst 10.0.13.0/24 hashkey mask 0xff at 16 link 13:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:e: match ip dst 10.0.14.0/24 hashkey mask 0xff at 16 link 14:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:f: match ip dst 10.0.15.0/24 hashkey mask 0xff at 16 link 15:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:10: match ip dst 10.0.16.0/24 hashkey mask 0xff at 16 link 16:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:11: match ip dst 10.0.17.0/24 hashkey mask 0xff at 16 link 17:
tc filter add dev em2 parent 1:0 protocol ip u32 ht 3:12: match ip dst 10.0.18.0/24 hashkey mask 0xff at 16 link 18:

# Абоненты
tc class add dev em2 parent 1:20 classid 1:120 htb rate 256kbit ceil 2097152 quantum 3000
tc filter add dev em2 protocol ip parent 1:0 u32 ht 10:a: match ip dst 10.0.10.10/32 flowid 1:120

tc class add dev em2 parent 1:20 classid 1:103 htb rate 256kbit ceil 51200000 quantum 75000
tc filter add dev em2 protocol ip parent 1:0 u32 ht 10:2: match ip dst 10.0.10.2/32 flowid 1:103

tc class add dev em2 parent 1:20 classid 1:1241 htb rate 256kbit ceil 5365760 quantum 7500
tc filter add dev em2 protocol ip parent 1:0 u32 ht 11:26: match ip dst 10.0.11.38/32 flowid 1:1241

 

Полагаю, что нужно настроить что-то ещё, чтобы всё работало как надо. Подскажите, куда копать?

Edited by asid2006

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.