Перейти к содержимому
Калькуляторы

Такие же симптомы. У нас роутер: 2xAMD Opteron 2212 2.0GHz проца, 4 Gb памяти, встроеная двухпортовая Broadcom Corporation NetXtreme BCM5780 Gigabit Ethernet и вставлена двохпортовая интел Intel Corporation 82546EB Gigabit Ethernet Controller. На роутере нат, шейпер с хешами на 10к адресов ipset, фаер.

 

 sar -n DEV 1
Linux 2.6.20-1.2320.1.113billsmp (VPN3)    11.09.2009

23:44:03        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
23:44:04           lo      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         eth0  24640,00  24189,00 11036272,00 20544477,00      0,00      0,00      0,00
23:44:04         eth1      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         eth2      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         eth3  24570,00  24743,00 20665994,00 11066997,00      0,00      0,00      0,00
23:44:04         eth4      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         imq0  24584,00  24320,00 10618575,00 10394712,00      0,00      0,00      0,00
23:44:04         imq1  24105,00  24199,00 20102201,00 20210717,00      0,00      0,00      0,00
23:44:04         imq2      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         imq3      0,00      0,00      0,00      0,00      0,00      0,00      0,00
23:44:04         gre0      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Среднее:        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
Среднее:           lo      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         eth0  24640,00  24189,00 11036272,00 20544477,00      0,00      0,00      0,00
Среднее:         eth1      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         eth2      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         eth3  24570,00  24743,00 20665994,00 11066997,00      0,00      0,00      0,00
Среднее:         eth4      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         imq0  24584,00  24320,00 10618575,00 10394712,00      0,00      0,00      0,00
Среднее:         imq1  24105,00  24199,00 20102201,00 20210717,00      0,00      0,00      0,00
Среднее:         imq2      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         imq3      0,00      0,00      0,00      0,00      0,00      0,00      0,00
Среднее:         gre0      0,00      0,00      0,00      0,00      0,00      0,00      0,00

top - 00:08:53 up 4 days,  2:57,  2 users,  load average: 1.50, 1.61, 1.59
Tasks:  86 total,   3 running,  83 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 74.8% id,  0.2% wa,  0.0% hi, 25.0% si,  0.0% st
Mem:   4137680k total,  2126852k used,  2010828k free,   223676k buffers
Swap:  8795548k total,        0k used,  8795548k free,   219024k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   12 root      39  19     0    0    0 R  100  0.0   2059:10 ksoftirqd/3
    1 root      15   0  1956  688  596 S    0  0.0   0:01.05 init
    2 root      RT   0     0    0    0 S    0  0.0   0:01.93 migration/0
    3 root      34  19     0    0    0 S    0  0.0   0:00.10 ksoftirqd/0
    4 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0


$ cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:       1186     148443    5716763  348526440   IO-APIC-edge      timer
  1:          0          0          5        488   IO-APIC-edge      i8042
  2:          0          0          0          0    XT-PIC-XT        cascade
  6:          0          0          0          5   IO-APIC-edge      floppy
  8:          0          0          0          1   IO-APIC-edge      rtc
  9:          0          0          0          0    XT-PIC-XT        acpi
10:          0          0          0          2   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
11:          0          0          0          0   IO-APIC-fasteoi   libata
12:          0          0          0          4   IO-APIC-edge      i8042
14:         12       1994      54207    3113420   IO-APIC-edge      ide0
16:          9       5049     122777    5983237   IO-APIC-fasteoi   eth4
20:       2148     304459   14343208 1495690145   IO-APIC-fasteoi   eth0
21:          1        745      28937     147073   IO-APIC-fasteoi   eth1
27:       3004     717115   49594481 2300287721   IO-APIC-fasteoi   eth3
28:          1        235       5596    1302720   IO-APIC-fasteoi   aacraid
NMI:          0          0          0          0
LOC:  354388880  354389072  354388879  354385080
ERR:          0
MIS:          0

sbin/ethtool -i eth0
driver: e1000
version: 7.6.15.4-NAPI
firmware-version: N/A
bus-info: 0000:02:07.0

/sbin/ethtool -i eth3
driver: tg3
version: 3.72
firmware-version: 5780-v3.24
bus-info: 0000:04:04.1

/sbin/ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:             4096
RX Mini:        0
RX Jumbo:       0
TX:             4096
Current hardware settings:
RX:             4096
RX Mini:        0
RX Jumbo:       0
TX:             4096

/sbin/ethtool -g eth3
Ring parameters for eth3:
Pre-set maximums:
RX:             511
RX Mini:        0
RX Jumbo:       0
TX:             511
Current hardware settings:
RX:             511
RX Mini:        0
RX Jumbo:       0
TX:             511

 

Когда отключаеш шейпер нагрузка падает до 0. Ввел хеши, думал случится чудо..... Что посоветуете?

Изменено пользователем taric

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Когда отключаеш шейпер нагрузка падает до 0. Ввел хеши, думал случится чудо..... Что посоветуете?
Чуда не произошло? Должно было вобще-то, если дело действительно в шейпере. Ты уверен, что у тебя сопоставление при поиске класса выполняется именно по хешу? Потому что при линейном шейпере на 10к, должно было произойти огромное облегчение после перехода на хеш.

Кстати очередь сетевушки какую ставите на гигабитный канал? По идее она должна соотноситься с tcp backlog. Покрутите

net.ipv4.tcp_max_syn_backlog

net.core.netdev_max_backlog

На загрузку CPU по идее влиять не должно, но увеличивает максимальную пропускную способность, в замен на увеличение латентности.

Опять же смотрите NAPI должен быть, для eth3 я что то в названии драйвера этого не увидел, есть?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хэш нужно делать не один, а деревом, тогда точно сильно полегчать должно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

taric

12 root 39 19 0 0 0 R 100 0.0 2059:10 ksoftirqd/3
Банально CPU не хватает, смотрите как оптимизировать tc/iptables и/или метяйте сетевуху и/или уносите оттуда NAT и избавляйтесь от IMQ.

 

Xeon 5110 1.6GHz без ната лопатит по 50кппс в обоих направлениях с ~75% загрузкой.

 

SokolovS

Почему-то кажется, что *backlog на форвардинг трафика в принципе влиять не должно, а только на установленные соединения к самому серверу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2vitalyb: очередь в сетевухе точно влияет на форвард, особенно на больших скоростях. Если на шейпере используется роутинг а не бриджинг, то и tcp backlog влияет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2vitalyb: очередь в сетевухе точно влияет на форвард, особенно на больших скоростях. Если на шейпере используется роутинг а не бриджинг, то и tcp backlog влияет.

Поясните пожалуста как тюнинг tcp влияет на роутинг и шейпинг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не писал что это влияет на шейпинг, скорее на максимально выжимаемую из интерфейса скорость.

А что форвард уже в реалтайме без буферов выполняется? При роутинге как я понимаю задействуется L3 и те же самые буферы? Могу ошибаться, поправьте.

То что буфер сетевух и наличие NAPI/poling влияет на максимльно выжимаемую скорость это точно, проверено многими в т.ч. и мной на практике, иначе CPU не по делу грузиться будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2Max P:

Шейп такого вида:

$tc qdisc add dev imq0 root handle 1: prio bands 3
$tc qdisc add dev imq0 parent 1:1 handle 10: pfifo
$tc qdisc add dev imq0 parent 1:2 handle 11: pfifo
$tc qdisc add dev imq0 parent 1:3 handle 12: htb default d
$tc  class add dev imq0 parent 12: classid 12:d htb rate 57078584bit ceil 968884224bit  quantum 968884224
$tc  qdisc add dev imq0 parent 12:d handle d sfq  perturb 5
# hash filters 10.30.0.0/16
$tc filter add dev imq0 parent 12: prio 3 handle 3: protocol ip u32 divisor 256
$tc filter add dev imq0 parent 12: prio 3 handle 4: protocol ip u32 divisor 256
$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x0000ff00 at 12 link 3:
$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x000000ff at 12 link 4:
$tc class add dev imq0 parent 12: classid 12:1233 htb rate 262144bit ceil 262144bit quantum 1514 mtu 16500
$tc qdisc add dev imq0 parent 12:1233 handle 1233: sfq perturb 5
$tc filter add dev imq0 protocol ip parent 12: prio 7 u32 ht 3:14: ht 4:21: match ip src 10.30.20.33 flowid 12:1233
.........
.........
$tc filter add dev imq0 protocol ip parent 12:0  prio 4 u32 match ip src 10.30.0.0/16 flowid 1:3

#hash filters 10.20.0.0/16
$tc filter add dev imq0 parent 12: prio 3 handle 5: protocol ip u32 divisor 256
$tc filter add dev imq0 parent 12: prio 3 handle 6: protocol ip u32 divisor 256
$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.20.0.0/16 hashkey mask 0x0000ff00 at 12 link 5:
$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.20.0.0/16 hashkey mask 0x000000ff at 12 link 6:
$tc class add dev imq0 parent 12: classid 12:2aa5 htb rate 65536bit ceil 65536bit quantum 1514 mtu 16500
$tc qdisc add dev imq0 parent 12:2aa5 handle 2aa5: sfq perturb 5
$tc filter add dev imq0 protocol ip parent 12: prio 7 u32 ht 5:ac: ht 6:7a: match ip src 10.20.172.122 flowid 12:2aa5
...........
...........
$tc filter add dev imq0 protocol ip parent 1:0 prio 4 u32 match ip src 10.20.0.0/16 flowid 1:3

 

и еще пару сетей /16 в таком виде для imq1 идентично..... может по другому переписать?

 

 

 

2SokolovS:

по поводу NAPI для eth3 я так понимаю нужно посвежее ядро поставить или есть другой способ?

 

 

Вот чаcть вывода sysctl -a:

net.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 60
net.netfilter.nf_conntrack_udp_timeout = 4
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_loose = 3
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 150
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_established = 100
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_buckets = 32768
net.netfilter.nf_conntrack_count = 55548
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_generic_timeout = 150
net.unix.max_dgram_qlen = 10
net.token-ring.rif_timeout = 600000
net.ipv4.netfilter.ip_conntrack_log_invalid = 0
net.ipv4.netfilter.ip_conntrack_checksum = 1
net.ipv4.netfilter.ip_conntrack_buckets = 32768
net.ipv4.netfilter.ip_conntrack_count = 55538
net.ipv4.netfilter.ip_conntrack_max = 262144
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 60
net.ipv4.netfilter.ip_conntrack_udp_timeout = 4
net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3
net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0
net.ipv4.netfilter.ip_conntrack_tcp_loose = 3
net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 150
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 100
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.netfilter.ip_conntrack_generic_timeout = 150
net.ipv4.conf.eth4.promote_secondaries = 0
net.ipv4.conf.eth4.force_igmp_version = 0
net.ipv4.conf.eth4.disable_policy = 0
net.ipv4.conf.eth4.disable_xfrm = 0
net.ipv4.conf.eth4.arp_accept = 0
net.ipv4.conf.eth4.arp_ignore = 0
net.ipv4.conf.eth4.arp_announce = 0
net.ipv4.conf.eth4.arp_filter = 0
net.ipv4.conf.eth4.tag = 0
net.ipv4.conf.eth4.log_martians = 0
net.ipv4.conf.eth4.bootp_relay = 0
net.ipv4.conf.eth4.medium_id = 0
net.ipv4.conf.eth4.proxy_arp = 0
net.ipv4.conf.eth4.accept_source_route = 0
net.ipv4.conf.eth4.send_redirects = 1
net.ipv4.conf.eth4.rp_filter = 1
net.ipv4.conf.eth4.shared_media = 1
net.ipv4.conf.eth4.secure_redirects = 1
net.ipv4.conf.eth4.accept_redirects = 1
net.ipv4.conf.eth4.mc_forwarding = 0
net.ipv4.conf.eth4.forwarding = 1
net.ipv4.conf.eth3.promote_secondaries = 0
net.ipv4.conf.eth3.force_igmp_version = 0
net.ipv4.conf.eth3.disable_policy = 0
net.ipv4.conf.eth3.disable_xfrm = 0
net.ipv4.conf.eth3.arp_accept = 0
net.ipv4.conf.eth3.arp_ignore = 0
net.ipv4.conf.eth3.arp_announce = 0
net.ipv4.conf.eth3.arp_filter = 0
net.ipv4.conf.eth3.tag = 0
net.ipv4.conf.eth3.log_martians = 0
net.ipv4.conf.eth3.bootp_relay = 0
net.ipv4.conf.eth3.medium_id = 0
net.ipv4.conf.eth3.proxy_arp = 0
net.ipv4.conf.eth3.accept_source_route = 0
net.ipv4.conf.eth3.send_redirects = 1
net.ipv4.conf.eth3.rp_filter = 1
net.ipv4.conf.eth3.shared_media = 1
net.ipv4.conf.eth3.secure_redirects = 1
net.ipv4.conf.eth3.accept_redirects = 1
net.ipv4.conf.eth3.mc_forwarding = 0
net.ipv4.conf.eth3.forwarding = 1
net.ipv4.conf.eth0.promote_secondaries = 0
net.ipv4.conf.eth0.force_igmp_version = 0
net.ipv4.conf.eth0.disable_policy = 0
net.ipv4.conf.eth0.disable_xfrm = 0
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.tag = 0
net.ipv4.conf.eth0.log_martians = 0
net.ipv4.conf.eth0.bootp_relay = 0
net.ipv4.conf.eth0.medium_id = 0
net.ipv4.conf.eth0.proxy_arp = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth0.send_redirects = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.shared_media = 1
net.ipv4.conf.eth0.secure_redirects = 1
net.ipv4.conf.eth0.accept_redirects = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.lo.promote_secondaries = 0
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.default.promote_secondaries = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.all.promote_secondaries = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.tag = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.neigh.eth4.base_reachable_time_ms = 30000
net.ipv4.neigh.eth4.retrans_time_ms = 1000
net.ipv4.neigh.eth4.locktime = 99
net.ipv4.neigh.eth4.proxy_delay = 79
net.ipv4.neigh.eth4.anycast_delay = 99
net.ipv4.neigh.eth4.proxy_qlen = 64
net.ipv4.neigh.eth4.unres_qlen = 3
net.ipv4.neigh.eth4.gc_stale_time = 60
net.ipv4.neigh.eth4.delay_first_probe_time = 5
net.ipv4.neigh.eth4.base_reachable_time = 30
net.ipv4.neigh.eth4.retrans_time = 99
net.ipv4.neigh.eth4.app_solicit = 0
net.ipv4.neigh.eth4.ucast_solicit = 3
net.ipv4.neigh.eth4.mcast_solicit = 3
net.ipv4.neigh.eth3.base_reachable_time_ms = 30000
net.ipv4.neigh.eth3.retrans_time_ms = 1000
net.ipv4.neigh.eth3.locktime = 99
net.ipv4.neigh.eth3.proxy_delay = 79
net.ipv4.neigh.eth3.anycast_delay = 99
net.ipv4.neigh.eth3.proxy_qlen = 64
net.ipv4.neigh.eth3.unres_qlen = 3
net.ipv4.neigh.eth3.gc_stale_time = 60
net.ipv4.neigh.eth3.delay_first_probe_time = 5
net.ipv4.neigh.eth3.base_reachable_time = 30
net.ipv4.neigh.eth3.retrans_time = 99
net.ipv4.neigh.eth3.app_solicit = 0
net.ipv4.neigh.eth3.ucast_solicit = 3
net.ipv4.neigh.eth3.mcast_solicit = 3
net.ipv4.neigh.eth0.base_reachable_time_ms = 30000
net.ipv4.neigh.eth0.retrans_time_ms = 1000
net.ipv4.neigh.eth0.locktime = 99
net.ipv4.neigh.eth0.proxy_delay = 79
net.ipv4.neigh.eth0.anycast_delay = 99
net.ipv4.neigh.eth0.proxy_qlen = 64
net.ipv4.neigh.eth0.unres_qlen = 3
net.ipv4.neigh.eth0.gc_stale_time = 60
net.ipv4.neigh.eth0.delay_first_probe_time = 5
net.ipv4.neigh.eth0.base_reachable_time = 30
net.ipv4.neigh.eth0.retrans_time = 99
net.ipv4.neigh.eth0.app_solicit = 0
net.ipv4.neigh.eth0.ucast_solicit = 3
net.ipv4.neigh.eth0.mcast_solicit = 3
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.locktime = 99
net.ipv4.neigh.lo.proxy_delay = 79
net.ipv4.neigh.lo.anycast_delay = 99
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.unres_qlen = 3
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.base_reachable_time = 30
net.ipv4.neigh.lo.retrans_time = 99
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.gc_thresh3 = 1024
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.locktime = 99
net.ipv4.neigh.default.proxy_delay = 79
net.ipv4.neigh.default.anycast_delay = 99
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.unres_qlen = 3
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.delay_first_probe_time = 5
net.ipv4.neigh.default.base_reachable_time = 30
net.ipv4.neigh.default.retrans_time = 99
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.tcp_allowed_congestion_control = bic reno
net.ipv4.tcp_available_congestion_control = bic reno
net.ipv4.cipso_rbm_strictvalid = 1
net.ipv4.cipso_rbm_optfmt = 0
net.ipv4.cipso_cache_bucket_size = 10
net.ipv4.cipso_cache_enable = 1
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_dma_copybreak = 4096
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.tcp_base_mss = 512
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_abc = 0
net.ipv4.tcp_congestion_control = bic
net.ipv4.tcp_tso_win_divisor = 3
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 600
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_frto = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.icmp_ratemask = 6168
net.ipv4.icmp_ratelimit = 1000
net.ipv4.tcp_adv_win_scale = 2
net.ipv4.tcp_app_win = 31
net.ipv4.tcp_rmem = 3000000     3000000 3000000
net.ipv4.tcp_wmem = 3000000     3000000 3000000
net.ipv4.tcp_mem = 3000000      3000000 3000000
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_ecn = 0
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_fack = 1
net.ipv4.tcp_orphan_retries = 0
net.ipv4.inet_peer_gc_maxtime = 120
net.ipv4.inet_peer_gc_mintime = 10
net.ipv4.inet_peer_maxttl = 600
net.ipv4.inet_peer_minttl = 120
net.ipv4.inet_peer_threshold = 65664
net.ipv4.igmp_max_msf = 10
net.ipv4.igmp_max_memberships = 20
net.ipv4.route.secret_interval = 600
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.error_burst = 5000
net.ipv4.route.error_cost = 1000
net.ipv4.route.redirect_silence = 20480
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_load = 20
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_timeout = 300
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.max_size = 524288
net.ipv4.route.gc_thresh = 32768
net.ipv4.route.max_delay = 10
net.ipv4.route.min_delay = 2
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.ip_local_port_range = 32768    61000
net.ipv4.tcp_max_syn_backlog = 10000
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_stdurg = 0
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.ipfrag_time = 30
net.ipv4.ip_dynaddr = 0
net.ipv4.ipfrag_low_thresh = 196608
net.ipv4.ipfrag_high_thresh = 262144
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 20
net.ipv4.ip_nonlocal_bind = 0
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.ip_default_ttl = 64
net.ipv4.ip_forward = 1
net.ipv4.tcp_retrans_collapse = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.core.netdev_budget = 300
net.core.somaxconn = 128
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_aevent_etime = 10
net.core.optmem_max = 1000000
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_max_backlog = 10000
net.core.dev_weight = 64
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_max = 1048576

 

 

Может кто-то поделится частью своей черной магии)

Изменено пользователем taric

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

taric

Уберите sfq и поставьте "на листах" pfifo. На сколько это повлияет не знаю, но pfifo определенно легче.

 

И почему Вы решили, что на eth3 NAPI не работает? Вроде должен....

 

$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x0000ff00 at 12 link 3:

$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x000000ff at 12 link 4:

$tc class add dev imq0 parent 12: classid 12:1233 htb rate 262144bit ceil 262144bit quantum 1514 mtu 16500

$tc qdisc add dev imq0 parent 12:1233 handle 1233: sfq perturb 5

$tc filter add dev imq0 protocol ip parent 12: prio 7 u32 ht 3:14: ht 4:21: match ip src 10.30.20.33 flowid 12:1233

у меня на 2.6.30+iproute2-2.6.28 такой синтаксис не работает. Ошибки в нем нет, но работает только хеш-фильтр 4. Хеширование по больше чем 8 битам делается не так - надо "последовательно" применять хеши.

 

#hash filters 10.20.0.0/16

там же на imq0 вообще не нужны - добавляете фильтры туда же куда и 10.30.0.0/16

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не писал что это влияет на шейпинг, скорее на максимально выжимаемую из интерфейса скорость.

А что форвард уже в реалтайме без буферов выполняется? При роутинге как я понимаю задействуется L3 и те же самые буферы? Могу ошибаться, поправьте.

То что буфер сетевух и наличие NAPI/poling влияет на максимльно выжимаемую скорость это точно, проверено многими в т.ч. и мной на практике, иначе CPU не по делу грузиться будет.

tcp backlog всетаки не буфер сетевух, а tcp - это L4. Тюнинг tcp, как уже выше написали, повлияет только на соединения открываемые роутером/к роутеру, и обычно их очень мало - bgp да ssh

Изменено пользователем 2c2i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у вас правильно шейпит при этом?

10.30.0.0/16 раскладываются по маске 0x000000ff в 256 классов если я не ошибаюсь.

Буду на работе выложу свой конфиг

 

сделайте чтоб

net.netfilter.nf_conntrack_buckets было немного больше net.netfilter.nf_conntrack_count

 

Изменено пользователем 2c2i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

taric

Уберите sfq и поставьте "на листах" pfifo. На сколько это повлияет не знаю, но pfifo определенно легче.

И почему Вы решили, что на eth3 NAPI не работает? Вроде должен....

Замена sfq на pfifo сильно не повлияет, пробовал на 5к.

А вот NAPI в драйвере tg3 действительно включен, по крайне мере у меня на этой версии работает:

ethtool -i eth0
driver: tg3
version: 3.86
firmware-version: 5721-v3.58
bus-info: 0000:03:00.0

 

Я не писал что это влияет на шейпинг, скорее на максимально выжимаемую из интерфейса скорость.

А что форвард уже в реалтайме без буферов выполняется? При роутинге как я понимаю задействуется L3 и те же самые буферы? Могу ошибаться, поправьте.

То что буфер сетевух и наличие NAPI/poling влияет на максимльно выжимаемую скорость это точно, проверено многими в т.ч. и мной на практике, иначе CPU не по делу грузиться будет.

tcp backlog всетаки не буфер сетевух, а tcp - это L4. Тюнинг tcp, как уже выше написали, повлияет только на соединения открываемые роутером/к роутеру, и обычно их очень мало - bgp да ssh

Ну вобще я к конечно 2 параметра указывал и очередь по дефолту для netdev, а обычно рекомендуют их ставить согласованными, т.е. в одно значение. tcp буфер, да скорее всего на форвард не повлияет, тут был не прав, но ставить в одно значение все таки нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x0000ff00 at 12 link 3:

$tc filter add dev imq0 protocol ip parent 12: prio 3 u32 match ip src 10.30.0.0/16 hashkey mask 0x000000ff at 12 link 4:

Я хотел бы еще раз напомнить, что в ядрах начиная с 2.6.25 появился классификатор flow с более простым синтаксисом правил, позволяющий хэшировать сразу по 16 битам. http://www.mail-archive.com/netdev@vger.ke...g/msg60638.html
Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

photon

Поправьте если ошибаюсь, flow я не использовал, он просто "отображает" набор битов сразу в класс. Т.е. нельзля задать произвольное отображение как с помощью u32, в частности, например, нельзя трафик двух заданных произвольных IP адресов отправить в один класс (10.10.a.b и 10.10.c.d при /16, понятно, что 10.10.a.b и 10.20.a.b попадут в один). Если это так, то заменой u32 его считать нельзя. Это не делает классификатор плохим, он просто другой.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если карточки PCI-Express, то желательно заставить их работать через MSI, нужно проверить включена-ли в kernel'e его поддержка.

Проверить flow-control - должен быть выключен.

Попробовать использовать карточки поотдельности - может быть проблема в bond'e.

И для высоких скоростей весьма желательно повысить Rx дескрипторы - можно даже до максимально возможных значений.

Вывод top'a хотелось-бы увидеть, чтобы понять, что запущено и что кушает процессор.

Каковы функции компьютера - сервер или роутер?

Собрал я ядро с MSI.

 

cat /proc/interrupts

 

CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7

0: 166 0 0 0 0 0 0 0 IO-APIC-edge timer

1: 0 0 0 0 0 0 0 0 IO-APIC-edge i8042

9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi

16: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3

18: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb8

19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb5, uhci_hcd:usb7

21: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4

23: 76 79 78 70 81 77 81 75 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6

24: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

25: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

26: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

27: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

28: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

29: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv

33: 38238843 38278694 38210335 38265774 6483814 6433531 6477907 6483999 PCI-MSI-edge eth0

34: 9299323 9263342 9328108 9277013 80029549 80112398 80154473 80005064 PCI-MSI-edge eth1

NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts

LOC: 9190782 9190372 9190972 9186836 9234314 9223137 9236628 9225914 Local timer interrupts

SPU: 0 0 0 0 0 0 0 0 Spurious interrupts

RES: 4629 4016 15478 4018 16164 11990 5232 13842 Rescheduling interrupts

CAL: 2978 5480 5409 5506 5316 5347 5405 5222 Function call interrupts

TLB: 128443 122016 538515 140306 673010 724586 343729 639522 TLB shootdowns

TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts

ERR: 0

MIS: 0

 

Видно что стало с MSI.

Субьективно стало лучше.

Сейчас в среднем ~45kpps.

Вроде все стабильно packet drop есть небольшой.

 

bond0 Link encap:Ethernet HWaddr 00:18:71:EC:3B:40

inet addr:172.17.0.1 Bcast:172.17.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1

RX packets:1350220224 errors:0 dropped:168935 overruns:0 frame:67

TX packets:1298329121 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:1498757459 (1.3 GiB) TX bytes:402783563 (384.1 MiB)

 

eth0 Link encap:Ethernet HWaddr 00:18:71:EC:3B:40

UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1

RX packets:974614697 errors:0 dropped:168935 overruns:0 frame:0

TX packets:653502892 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:4160643509 (3.8 GiB) TX bytes:4002647367 (3.7 GiB)

Memory:fcce0000-fcd00000

 

eth1 Link encap:Ethernet HWaddr 00:18:71:EC:3B:40

UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1

RX packets:375605527 errors:0 dropped:0 overruns:0 frame:67

TX packets:644826229 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:5000

RX bytes:1633081246 (1.5 GiB) TX bytes:695103492 (662.9 MiB)

Interrupt:17

 

eth0 - e1000e

ethtool -g eth0

Ring parameters for eth0:

Pre-set maximums:

RX: 4096

RX Mini: 0

RX Jumbo: 0

TX: 4096

Current hardware settings:

RX: 2048

RX Mini: 0

RX Jumbo: 0

TX: 2048

 

eth1 - tg3

Ring parameters for eth1:

Pre-set maximums:

RX: 511

RX Mini: 0

RX Jumbo: 0

TX: 511

Current hardware settings:

RX: 511

RX Mini: 0

RX Jumbo: 0

TX: 511

 

vmstat 1

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

2 0 0 3147100 1216 29360 0 0 0 1 62 34 2 17 82 0

1 0 0 3146348 1216 29360 0 0 0 0 15256 19245 7 22 71 0

3 0 0 3145760 1216 29360 0 0 0 0 15145 23729 7 22 71 0

3 0 0 3145000 1216 29360 0 0 0 0 13384 15484 5 22 73 0

2 0 0 3144364 1216 29360 0 0 0 11 12640 17377 5 21 74 0

1 0 0 3144232 1216 29364 0 0 0 0 13323 436 0 21 79 0

2 0 0 3144108 1216 29364 0 0 0 0 13119 287 0 19 81 0

1 0 0 3143860 1216 29364 0 0 0 0 13431 328 0 19 81 0

 

Иногда не надолго подскакиывает пинг до 30-50 мс на секунды 2-3.

Что еще можете посоветовать?!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

photon

Поправьте если ошибаюсь, flow я не использовал, он просто "отображает" набор битов сразу в класс. Т.е. нельзля задать произвольное отображение как с помощью u32, в частности, например, нельзя трафик двух заданных произвольных IP адресов отправить в один класс (10.10.a.b и 10.10.c.d при /16, понятно, что 10.10.a.b и 10.20.a.b попадут в один). Если это так, то заменой u32 его считать нельзя. Это не делает классификатор плохим, он просто другой.

Ну я и не говорю, что это полноценная замена u32. Это очевидно из структуры возможных хэшей:

u32: любой dword => filter1 => ... => filterN => qdisc

flow: <arg> => qdisc,

где <arg> -- некие предопределенные поля, вроде IP-адресов и портов. Но судя по исходникам, там можно делать не только and 0xFFFF над аргументом, но и другие операции (or, xor, rshift, append). Для простых классификаций можно обойтись и этим.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у вас правильно шейпит при этом?

10.30.0.0/16 раскладываются по маске 0x000000ff в 256 классов если я не ошибаюсь.

Буду на работе выложу свой конфиг

 

Если можна, буду вам очень признателен.

 

 

сделайте чтоб

net.netfilter.nf_conntrack_buckets было немного больше net.netfilter.nf_conntrack_count

# echo 65536 > /proc/sys/net/netfilter/nf_conntrack_buckets

bash: /proc/sys/net/netfilter/nf_conntrack_buckets: Операция не позволяется

 

# /sbin/sysctl -w net.netfilter.nf_conntrack_buckets=65536

error: "Operation not permitted" setting key "net.netfilter.nf_conntrack_buckets"

 

Не хочет....

 

Изменено пользователем taric

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм, моя проблема решилась. После перезагрузки роутера ошибки на бродкомах пропали. Прерывания распределяет irqbalance, после перезагрузки у меня стало

 

peer ~ # cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:        450        409          0          0   IO-APIC-edge      timer
  1:          0          0          0          0   IO-APIC-edge      i8042
  2:          0          0          0          0    XT-PIC-XT        cascade
  8:         23         22         23         22   IO-APIC-edge      rtc0
14:          0          0          0          0   IO-APIC-edge      ata_piix
15:          0          0          0          0   IO-APIC-edge      ata_piix
16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
18:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
19:        366        365     306155     719452   IO-APIC-fasteoi   ata_piix, uhci_hcd:usb2
23:          8         10          9          9   IO-APIC-fasteoi   uhci_hcd:usb1
501:        119        130 3496557977  723291953   PCI-MSI-edge      eth3
502:        291         17  581941850 3645091331   PCI-MSI-edge      eth2
503:        232      27207 1357883760 1316655386   PCI-MSI-edge      eth1
504:         92         84 1443060061 1154695024   PCI-MSI-edge      eth0
NMI:          0          0          0          0   Non-maskable interrupts
LOC:   16014165    3834410   18347372   17061618   Local timer interrupts
RES:        302        351       1357        981   Rescheduling interrupts
CAL:      16457      16500      16500         85   Function call interrupts
TLB:       6530       4901       8076      15230   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
SPU:          0          0          0          0   Spurious interrupts
ERR:          0
MIS:          0

peer ~ # cat /proc/irq/501/smp_affinity
08
peer ~ # cat /proc/irq/502/smp_affinity
04
peer ~ # cat /proc/irq/503/smp_affinity
08
peer ~ # cat /proc/irq/504/smp_affinity
04

 

Что было до перезагрузки не помню, но каждая сетевая сидела на своем процессоре.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

taric

echo N > /sys/module/nf_conntrack/parameters/hashsize

 

/proc/sys/net/netfilter/nf_conntrack_buckets, как не сложно посмотреть, read-only.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

только в 31 ядре появилась возможность на ходу менять, Для более ранних ядер при подгрузке модуля

# cat /etc/modules
e1000e
nf_conntrack hashsize=1048576
ipt_NETFLOW destination=x.x.x.x:2055

 

хешфильтры. Я отделяю трафик к местной IX в отдельные классы и выдаю юзерам скорость на внешку + IX на повышенной

 

function filters {
UP_DEV=$1
DOWN_DEV=$2

tc filter add dev ${UP_DEV} parent 1:0 prio 1 protocol ip u32
tc filter add dev ${DOWN_DEV} parent 1:0 prio 1 protocol ip u32

tc qdisc add dev ${UP_DEV} ingress
tc filter add dev ${UP_DEV} parent ffff: protocol ip prio 10 u32  match u32 0 0 flowid 1:${FI}01 action mirred egress redirect dev ${DOWN_DEV}


tc filter add dev $UP_DEV protocol ip prio 5 u32  ht 800::  match ip src 192.168.0.0/16 classid 1:${FI}10 ## some local trafic
tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip dst 10.0.0.0/8 classid 1:${FI}10

tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip dst 172.16.100.0/22 classid 1:${FI}13 ## p2p

tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip dst 192.168.0.0/16 classid 1:${FI}10
tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip src 10.0.0.0/8 classid 1:${FI}10

                                                                #####???#####
tc filter add dev $DOWN_DEV protocol ip prio 5 u32 ht 800:: match ip src 172.16.100.0/22 classid 1:${FI}13


tc filter add dev ${UP_DEV} protocol ip prio 5 parent 1: handle 4: u32 divisor 1
tc filter add dev ${UP_DEV} protocol ip prio 5 parent 1: handle 5: u32 divisor 1
tc filter add dev ${DOWN_DEV} protocol ip prio 5 parent 1: handle 4: u32 divisor 1
tc filter add dev ${DOWN_DEV} protocol ip prio 5 parent 1: handle 5: u32 divisor 1


############ IX ENABLED
for net in `cat /etc/ppp/ix.lst`
do
        tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip dst ${net} link 4:
        tc filter add dev $DOWN_DEV protocol ip prio 5 u32 ht 800:: match ip src ${net} link 4:
done

tc filter add dev $UP_DEV protocol ip prio 5 u32 ht 800:: match ip src 0.0.0.0/0 link 5:
tc filter add dev $DOWN_DEV protocol ip prio 5 u32 ht 800:: match ip dst 0.0.0.0/0 link 5:
}

function hashfilters {
DEV=$1
DIRECTION=$2
HT=$3       ## HEX!!!
STARTCLASSPREFIX=$4 ## HEX!!!
STARTHTPREFIX=$5
if [ "$DIRECTION" = "src" ]
then
OFFSET=12
else
OFFSET=16
fi
echo "$DIRECTION - $OFFSET"
tc filter add dev ${DEV} parent 1: prio 5 handle $(($STARTHTPREFIX)): protocol ip u32 divisor 256
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $HT:: match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0x0000ff00 at ${OFFSET} link $(($STARTHTPREFIX)):

                tc filter add dev ${DEV} parent 1: prio 5 handle $(($STARTHTPREFIX+1)): protocol ip u32 divisor 256
                tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX)):64:  match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0xff at ${OFFSET} link $(($STARTHTPREFIX+1)):

for class in `seq 1 255`
do
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX+1)):`printf %x $class`:  match ip ${DIRECTION} 0.0.0.0/0 classid 1:${STARTCLASSPREFIX}`printf %x $class`
done

# entries for 172.16.101.0/24

               tc filter add dev ${DEV} parent 1: prio 5 handle $(($STARTHTPREFIX+2)): protocol ip u32 divisor 256
                tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX)):65:  match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0xff at ${OFFSET} link $(($STARTHTPREFIX+2)):

for class in `seq 1 255`
do
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX+2)):`printf %x $class`:  match ip ${DIRECTION} 0.0.0.0/0 classid 1:$((${STARTCLASSPREFIX}+1))`printf %x $class`
done


# entries for 172.16.102.0/24

               tc filter add dev ${DEV} parent 1: prio 5 handle $(($STARTHTPREFIX+3)): protocol ip u32 divisor 256
                tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX)):66:  match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0xff at ${OFFSET} link $(($STARTHTPREFIX+3)):

for class in `seq 1 255`
do
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX+3)):`printf %x $class`:  match ip ${DIRECTION} 0.0.0.0/0 classid 1:$((${STARTCLASSPREFIX}+2))`printf %x $class`
done

## entries for 172.16.103.0/24

                tc filter add dev ${DEV} parent 1: prio 5 handle $(($STARTHTPREFIX+4)): protocol ip u32 divisor 256
                tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX)):67:  match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0xff at ${OFFSET} link $(($STARTHTPREFIX+4)):

for class in `seq 1 255`
do
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX+4)):`printf %x $class`:  match ip ${DIRECTION} 0.0.0.0/0 classid 1:$((${STARTCLASSPREFIX}+3))`printf %x $class`
done

## entries for 172.16.200.0/24
                tc filter add dev ${DEV} parent 1: prio 5 handle $((${STARTHTPREFIX}+5)): protocol ip u32 divisor 256
                tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $((${STARTHTPREFIX})):c8:  match ip ${DIRECTION} 0.0.0.0/0 hashkey mask 0xff at ${OFFSET} link $((${STARTHTPREFIX}+5)):

for class in `seq 1 255`
do
tc filter add dev ${DEV} protocol ip parent 1: prio 5 u32 ht $(($STARTHTPREFIX+5)):`printf %x $class`:  match ip ${DIRECTION} 0.0.0.0/0 classid 1:$((${STARTCLASSPREFIX}+5))`printf %x $class`
done

ip link set ifb0 up
ip link set eth0 up

erase_classes eth0
erase_classes ifb0
create_classes eth0
create_classes ifb0
filters eth0 ifb0
hashfilters eth0 src 4 70 30 ## traf to IX
hashfilters eth0 src 5 64 10 ## traf to WORLD
hashfilters ifb0 dst 4 70 30 ## traf from IX
hashfilters ifb0 dst 5 64 10 ## traf from WORLD

 

Вобщем то правильнее и для отделения трафика в IX делать хеш фильтр, Но пока что там сетей немного и я их просто просуммировал.

Изменено пользователем 2c2i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

только в 31 ядре появилась возможность находу менять, Для более ранних ядер при подгрузке модуля

# cat /etc/modules
e1000e
nf_conntrack hashsize=1048576
ipt_NETFLOW destination=x.x.x.x:2055

echo 524288 > /sys/module/nf_conntrack/parameters/hashsize

echo 524288 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

 

# uname -r

2.6.26-1-686

Изменено пользователем DemYaN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у меня не получалось так :-)

Это где то можно включить?

Изменено пользователем 2c2i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2c2i

Аналогично, работает и с более ранними ядрами, никаких манипуляций не делал дополнительных... nf_conntrack_core.c вроде никаких настроек в этом плане и не предусматривает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.