SlideShare a Scribd company logo
1 of 19
Download to read offline
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Autorzy:
Lucjan Kisiel i Marcin Matyla
Korbank S.A. Wrocław
email: noc@k.pl
Plan
1. Hardware
1.1. Hardware wycena
2. System operacyjny
2.1 Dobór kart sieciowych
2.2 Firewall
3. Tuning systemu
3.1. Zwiększenie buforów
3.2. Inne parametry
4. Statystyki
4.1. Statystyki ruchu
4.2. Top w szczycie
4.3. Przydatne polecenia
5. Podsumowanie
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
1. Hardware
● Płyta główna Intel S5520HC
1200 zł
– 5 slotów PCI-Express
– Intelligent Platform Management
Interface 2.0 z Serial over LAN
● Procesor Intel Xeon X5650 2.67GHz
12M Cache, 6.40 GT/s QPI,
6 Cores, 12 Threads
3100 zł
● # top -PSH
● CPU 0: 0.0% user, 0.0% nice, 24.8% system, 15.4% interrupt, 59.8% idle
CPU 1: 0.4% user, 0.0% nice, 4.1% system, 17.7% interrupt, 77.8% idle
CPU 2: 0.0% user, 0.0% nice, 1.1% system, 21.1% interrupt, 77.8% idle
CPU 3: 0.0% user, 0.0% nice, 1.5% system, 13.5% interrupt, 85.0% idle
CPU 4: 0.0% user, 0.0% nice, 10.5% system, 0.0% interrupt, 89.5% idle
CPU 5: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle
CPU 6: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle
CPU 7: 0.0% user, 0.0% nice, 7.5% system, 0.0% interrupt, 92.5% idle
CPU 8: 0.0% user, 0.0% nice, 21.4% system, 0.0% interrupt, 78.6% idle
CPU 9: 0.0% user, 0.0% nice, 30.1% system, 0.0% interrupt, 69.9% idle
CPU 10: 0.0% user, 0.0% nice, 5.3% system, 0.0% interrupt, 94.7% idle
CPU 11: 0.0% user, 0.0% nice, 21.0% system, 0.0% interrupt, 79.0% idle
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
1.1 Hardware wycena:
● Płyta główna Intel S5520HC
1200 zł
● Procesor Intel Xeon X5650 2.67GHz
12M Cache, 6.40 GT/s QPI, 6 Cores,12 Threads
3100 zł
● DDR3 2x 2GB Kingstone
100 zł
● WD AV-GP 160GB VS 3.5" 16MB SATAII
300 zł
● Zasilacz + Obudowa
300 zł + 400 zł
● Karty 5x INTEL Gigabit CT Desktop
5x 100 zł
CAŁOŚĆ 5900 zł. NETTO
2. System operacyjny
FreeBSD 8.2
Problemy z soft updates
Jan 19 09:13:41 fox syslogd: kernel boot file is /boot/kernel/kernel
Jan 19 09:13:41 fox kernel: dev = ad0s1f, block = 1, fs = /usr
Jan 19 09:13:41 fox kernel: panic: ffs_blkfree: freeing free block
Jan 19 09:13:41 fox kernel: cpuid = 0
Jan 19 09:13:41 fox kernel: Uptime: 44m25s
Jan 19 09:13:41 fox kernel: Cannot dump. No dump device defined.
Jan 19 09:13:41 fox kernel: Automatic reboot in 15 seconds – press a key on the console to abort
Jan 19 09:13:41 fox kernel: Rebooting…
„Freeing free block podczas pracy systemu i dysku, to bug samego
systemu, z którym już od kilku lat borykają się autorzy dystrybucji
FreeBSD.”
Rozwiązaniem jest wyłączenie softupdates dla danego systemu plików
(przy instalacji lub potem poleceniem „tunefs”)
●
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
2. System operacyjny
2.1. Dobór kart sieciowych:
- Intel Gigabit CT Desktop
igb0@pci0:1:0:0:
vendor = 'Intel Corporation'
device = '82575EB Gigabit Network Connection'
cap 05[50] = MSI supports 1 message, 64 bit
cap 11[60] = MSI-X supports 10 messages in map 0x1c enabled
- Intel PRO/1000PT Giga Server
em3@pci0:5:0:0:
vendor = 'Intel Corporation'
device = 'PRO/1000 PT'
cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
cap 10[e0] = PCI-Express 1 endpoint max data 256(256) link x1(x1)
●
- Broadcom BCM5761 - problemy
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
0 root -68 0 0K 320K - 9 61:57 28.66% {em1 taskq}
0 root -68 0 0K 320K CPU0 1 52:09 27.93% {em4 taskq}
0 root -68 0 0K 320K - 8 49:56 23.49% {em0 taskq}
0 root -68 0 0K 320K - 11 37:56 19.87% {em3 taskq}
0 root -68 0 0K 320K - 5 40:11 18.02% {igb0 que}
0 root -68 0 0K 320K - 7 16:49 12.40% {igb1 que}
12 root -68 - 0K 544K CPU2 2 24:59 11.96% {irq268: igb1:que}
12 root -68 - 0K 544K WAIT 1 26:24 10.89% {irq267: igb1:que}
12 root -68 - 0K 544K WAIT 3 23:19 10.06% {irq269: igb1:que}
12 root -68 - 0K 544K WAIT 0 25:56 9.72% {irq266: igb1:que}
12 root -68 - 0K 544K RUN 2 13:50 8.54% {irq263: igb0:que}
12 root -68 - 0K 544K WAIT 1 14:23 6.64% {irq262: igb0:que}
12 root -68 - 0K 544K WAIT 3 12:17 5.81% {irq264: igb0:que}
12 root -68 - 0K 544K WAIT 0 17:10 5.57% {irq261: igb0:que}
0 root -68 0 0K 320K RUN 6 3:57 2.64% {igb0 que}
0 root -68 0 0K 320K - 6 4:12 2.39% {igb1 que}
0 root -68 0 0K 320K - 6 3:51 2.20% {igb1 que}
0 root -68 0 0K 320K - 10 6:35 1.90% {em2 taskq}
0 root -68 0 0K 320K - 7 2:56 1.27% {dummynet}
0 root -68 0 0K 320K - 4 3:00 1.22% {igb0 que}
0 root -68 0 0K 320K - 4 2:52 1.22% {igb0 que}
0 root -68 0 0K 320K - 4 3:03 1.17% {igb1 que}
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
2.2. Firewall
Jako firewalla używamy mechanizmu IPFW
- allow na kartach WAN na początku!
- skipy klas IP w ipfw (gdy dużo reguł)
Problem z zawieszaniem się IPFW podczas
czyszczenia regół i jego obejście
/sbin/sysctl net.inet.ip.fw.one_pass=1
fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f table 0 flush
${fwcmd} -f table 1 flush
${fwcmd} -f table 2 flush
. /etc/firewall/rules.new
echo "nowe regoly... done"
/sbin/sysctl net.inet.ip.fw.one_pass=0
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
00053 293453767 205438169422 allow ip from any to any via vlan48
00054 317542234 206678601842 allow ip from any to any via vlan1681
00055 24603860 20143882653 allow ip from any to any via vlan575
00056 119136520 97131970719 allow ip from any to any via vlan300
00500 195110 37433082 skipto 1300 ip from 10.7.1.0/24 to any
00500 500645 615970388 skipto 1300 ip from any to 10.7.1.0/24
00501 279798 22924187 skipto 1600 ip from 10.7.144.0/24 to any
00501 848766 875772492 skipto 1600 ip from any to 10.7.144.0/24
00502 181931 19445103 skipto 1900 ip from 10.7.177.0/24 to any
00502 445762 529416128 skipto 1900 ip from any to 10.7.177.0/24
23001 235598 277887231 pipe 1 ip from any to any
23001 188006 245656561 skipto 60000 ip from any to any
23002 535871 575831887 pipe 2 ip from any to any
23002 534188 574437776 skipto 60000 ip from any to an
#ipfw pipe show 2
00002: 4.096 Mbit/s 0 ms burst 0
q131074 50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
sched 65538 type FIFO flags 0x1 2048 buckets 4 active
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytesPkt/Byte
Drp
11 ip 0.0.0.0/0 10.7.144.4/0 529 511035 0 0 0
12 ip 0.0.0.0/0 10.7.144.3/0 1062 239965 0 0 0
14 ip 0.0.0.0/0 10.7.177.1/0 265 45764 0 0 0
254 ip 0.0.0.0/0 10.7.177.241/0 2 242 0 0 0
3. Tuning systemu
Polega na zmianie parametrów jądra odpowiedzialnych (tu) za obsługę sieci. Chodzi tu o:
- liczbę buforów i ich wielkość na obsługe połączeń
- wielkość tablic haszujących do pamietania połączeń
- włączeniu przyśpieszenia firewalla
- zmniejszenie „keepalive'ów” dla dynamicznych reguł
Jest on sensowny gdy obciążenie powoduje kończenie się zasobów. Zawsze można
kupować mocniejszy sprzęt, ale po co gdy można jeszcze trochę z niego wycisnąć. W
naszym przypadku nie da się kupić już mocniejszego bo ten jest najmocniejszy więc
softwarowo należy wycisnąć ile się da.
Skuteczność takiego tuningu to kilkanaście a nawet kilkadziesiąt procent w CPU.
Realizuje się go we FreeBSD przez program sysctl. Za jego pomocą można odczytywać
jaki zmieniać wiele parametrów w locie podczas pracy systemu. Część z nich można tylko
ustawić podaczas startu systemu i wtedy ustawia się je w /boot/loader.conf.
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
3.1. Zwiększenie buforów (przy 4GB RAM):
kern.ipc.nmbclusters = 262144 - określa maksymalną liczbę klastrów mbuf, które mogą być
używane przez stos sieciowy w dowolnym momencie
net.inet.tcp.recvspace = 262144 - maksymalny rozmiar przychodzącego pakietu
net.inet.tcp.sendspace = 262144 - maksymalny rozmiar wychodzącego pakietu
kern.ipc.maxsockbuf = 16777216 - maksymalny rozmiar bufora socketa
net.inet.ip.fw.dyn_ack_lifetime = 30 – czas życia dynamicznej reguły dla ACK
net.inet.ip.fw.dyn_syn_lifetime = 10 – czas życia dynamicznej reguły dla SYN
net.inet.ip.fw.dyn_max = 262144 – maksymalna liczba dynamicznych reguł dummynetu
net.inet.ip.dummynet.hash_size = 2048 – określa wielkość tab. hasz. do dummynetu
Poniższe ustawiane w /boot/loader.conf :
net.inet.tcp.syncache.hashsize=2048 – określa wielkość tab. hasz. syncache
net.inet.tcp.syncache.bucketlimit=100 – określa wielkość per-bucket
net.inet.tcp.tcbhashsize=4096 - określa wielkość tab. haszującej TCP control-block
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
3.2. Inne parametry:
net.link.ether.ipfw = 0 – wyłączenie sprawdzanie reguł II warstwy w ipfw
kern.polling.enable = 0 – wyłączenie poolingu
net.inet.ip.fastforwarding = 1 – włączenie szybkiego forwardowania
net.inet.ip.dummynet.io_fast = 1 - włączenie przyspieszenia dummynetu
net.inet.tcp.delayed_ack = 0 - nakazuje systemowi, aby próbował załączać potwierdzenia TCP ACK
do pakietu danych, zamiast wysyłać dodatkowe pakiety w celu zasygnalizowania końca połączenia.
net.inet.ip.portrange.first = 10000 – rozszeszenie zakresu portów połączeń wyjściowych
net.inet.ip.portrange.last = 65535 – rozszeszenie zakresu portów połączeń wyjściowych
net.inet.ip.portrange.randomized = 0 – używaj naturalnych numerów portów zamiast losowych
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
4. Statystyki:
a) 7 kart sieciowych 1Gb
b) 104 interfejsy vlan:
root@Korbotron82|pts/2|23:30:53|/home/loocek # ifconfig | grep vlan | grep ' metric 0 mtu 1500' | nl | tail -5
100 vlan992: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
101 vlan150: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
102 vlan2597: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
103 vlan304: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
104 vlan1681: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
root@Korbotron82|pts/2|23:30:59|/home/loocek #
c) 325 adresów IP:
root@Korbotron82|pts/2|23:34:12|/home/loocek # ifconfig | grep -w inet | nl | tail -5
321 inet 10.21.1.1 netmask 0xfffffff8 broadcast 10.21.1.7
322 inet 193.239.58.109 netmask 0xfffffffc broadcast 193.239.58.111
323 inet 172.16.2.2 --> 172.16.2.1 netmask 0xffffff00
324 inet 212.127.90.117 --> 212.127.90.118 netmask 0xffffffff
325 inet 193.111.38.226 netmask 0xfffffffc broadcast 193.111.38.227
root@Korbotron82|pts/2|23:34:20|/home/loocek #
d) 500 reguł taryfikujących w ipfw, z 50 reguł filtrującychw pf-ie
e) ok. 450 000! połączeń typu UNICAST w szczycie!
f) 14 sesji BGP (w tym 2 full-feedy, dwie Polski i in.)
g) dodatkowo NAT na 100Mb (w pf-ie), z logowaniem połączeń na softflowd
4.1. Statystyki z ruchu (Cacti)
Utylizacja (Mb/s)
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Utylizacja (Mb/s)
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
UNICAST/sek
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
UNICAST/sek
4.2. Top w szczycie:
root@Korbotron82|pts/4|20:43:35|/home/loocek # date
Sun Feb 26 20:43:39 CET 2012
root@Korbotron82|pts/4|20:43:39|/home/loocek # top -PSH
st pid: 31150; load averages: 2.80, 2.57, 2.43
162 processes: 21 running, 111 sleeping, 30 waiting
CPU 0: 0.0% user, 0.0% nice, 32.6% system, 32.2% interrupt, 35.2% idle
CPU 1: 0.0% user, 0.0% nice, 13.5% system, 45.5% interrupt, 41.0% idle
CPU 2: 0.0% user, 0.0% nice, 7.9% system, 40.8% interrupt, 51.3% idle
CPU 3: 0.0% user, 0.0% nice, 0.7% system, 38.2% interrupt, 61.0% idle
CPU 4: 0.0% user, 0.0% nice, 29.6% system, 0.0% interrupt, 70.4% idle
CPU 5: 0.0% user, 0.0% nice, 15.4% system, 0.0% interrupt, 84.6% idle
CPU 6: 0.0% user, 0.0% nice, 15.0% system, 0.0% interrupt, 85.0% idle
CPU 7: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle
CPU 8: 0.0% user, 0.0% nice, 53.0% system, 0.0% interrupt, 47.0% idle
CPU 9: 0.0% user, 0.0% nice, 63.7% system, 0.0% interrupt, 36.3% idle
CPU 10: 0.0% user, 0.0% nice, 8.6% system, 0.0% interrupt, 91.4% idle
CPU 11: 0.0% user, 0.0% nice, 47.4% system, 0.0% interrupt, 52.6% idle
Mem: 403M Active, 582M Inact, 767M Wired, 152K Cache, 412M Buf, 2096M Free
Swap: 10G Total, 10G Free
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 171 ki31 0K 192K CPU10 10 967:57 94.24% {idle: cpu10}
11 root 171 ki31 0K 192K RUN 5 909:51 92.97% {idle: cpu5}
11 root 171 ki31 0K 192K CPU6 6 936:18 92.72% {idle: cpu6}
11 root 171 ki31 0K 192K CPU7 7 930:39 90.04% {idle: cpu7}
11 root 171 ki31 0K 192K RUN 4 919:04 83.79% {idle: cpu4}
0 root -68 0 0K 320K CPU4 6 220:13 64.31% {em4 taskq}
11 root 171 ki31 0K 192K RUN 3 849:16 63.48% {idle: cpu3}
0 root -68 0 0K 320K CPU9 0 242:30 62.94% {em1 taskq}
0 root -68 0 0K 320K CPU8 8 199:12 61.13% {em0 taskq}
11 root 171 ki31 0K 192K RUN 11 841:28 60.45% {idle: cpu11}
11 root 171 ki31 0K 192K CPU2 2 831:44 58.89% {idle: cpu2}
0 root -68 0 0K 320K CPU11 11 160:51 47.31% {em3 taskq}
11 root 171 ki31 0K 192K RUN 8 802:20 44.82% {idle: cpu8}
11 root 171 ki31 0K 192K RUN 1 802:18 42.77% {idle: cpu1}
11 root 171 ki31 0K 192K RUN 9 760:05 40.72% {idle: cpu9}
11 root 171 ki31 0K 192K CPU0 0 680:09 31.05% {idle: cpu0}
12 root -68 - 0K 544K CPU1 1 103:14 30.71% {irq267: igb1:que}
12 root -68 - 0K 544K RUN 3 94:00 24.80% {irq269: igb1:que}
12 root -68 - 0K 544K WAIT 9 93:11 24.37% {irq266: igb1:que}
12 root -68 - 0K 544K WAIT 2 93:17 23.68% {irq268: igb1:que}
0 root -68 0 0K 320K - 7 147:45 20.70% {igb0 que}
12 root -68 - 0K 544K RUN 1 61:25 19.29% {irq262: igb0:que}
12 root -68 - 0K 544K CPU3 3 54:00 14.45% {irq264: igb0:que}
12 root -68 - 0K 544K WAIT 2 57:47 14.31% {irq263: igb0:que}
12 root -68 - 0K 544K WAIT 0 56:36 13.23% {irq261: igb0:que}
0 root -68 0 0K 320K - 6 81:48 11.82% {igb1 que}
0 root -68 0 0K 320K - 10 22:15 4.39% {em2 taskq}
0 root -68 0 0K 320K - 5 16:20 4.05% {igb0 que}
0 root -68 0 0K 320K - 6 16:16 4.05% {igb0 que}
0 root -68 0 0K 320K - 4 16:07 3.91% {igb1 que}
0 root -68 0 0K 320K - 10 17:49 3.56% {igb0 que}
0 root -68 0 0K 320K - 6 12:46 3.12% {igb1 que}
0 root -68 0 0K 320K - 5 15:24 2.73% {igb1 que}
0 root -68 0 0K 320K - 7 9:07 1.37% {dummynet}
root@Korbotron82|pts/2|19:43:02|/home/loocek #
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
4.3. Przydatne polecenia:
- vmstat -z – ważne polecenie, liczniki alokacji pamięci przez: buckety,
tablice haszujące, sockety i in.
- netstat -m – liczniki zużycia tych newralgicznych mbufów
- netstat -s – liczniki dla róznych protokołów: tcp, udp, icmp, ip, ip6, arp
- top -PSH – wiadomo, obciążenie systemu online
- bmon – niezawodzący progami do wielkości ruchu na interfejsach (w Bajtach)
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
Router brzegowy
z wydolnością 3 Gb ruchu za 5 tys.
5. Podsumowanie
Przedstawiliśmy kompletne rozwiązanie wysoko wydajnego routera. Podaliśmy sprzęt oraz sposób
tuningu do osiągnięcia wysokiej wydajności. Zwróciliśmy uwagę na kruczki (problemy), które
istnieją i jak sobie z nimi poradzić. Wskazaliśmy narzędzia do diagnostyki obciążenia. Stosując się
do wszystkich naszych wskazówek dostanie się wydajny router za nieduże pieniądze.
Na koniec przy okazji zapraszamy wszystkich do współpracy. Gdyby ktoś chciał u siebie taki
router zainstalować to pomożemy, doradzimy a może nawet zrealizujemy.
Dziękujemy za uwagę!
Autorzy:
Lucjan Kisiel i Marcin Matyla
Korbank S.A. Wrocław
email: noc@k.pl

More Related Content

What's hot

PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PROIDEA
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PROIDEA
 
HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2hpepolska
 
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PROIDEA
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...Future Processing
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PROIDEA
 
[DSG] Przyczajony GPU - ukryty smok
[DSG] Przyczajony GPU - ukryty smok[DSG] Przyczajony GPU - ukryty smok
[DSG] Przyczajony GPU - ukryty smokKonrad Szałkowski
 
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...PROIDEA
 

What's hot (11)

PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
 
HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2
 
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
 
Red Hat Linux 8. Biblia
Red Hat Linux 8. BibliaRed Hat Linux 8. Biblia
Red Hat Linux 8. Biblia
 
JDBC. Leksykon kieszonkowy
JDBC. Leksykon kieszonkowyJDBC. Leksykon kieszonkowy
JDBC. Leksykon kieszonkowy
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
 
[DSG] Przyczajony GPU - ukryty smok
[DSG] Przyczajony GPU - ukryty smok[DSG] Przyczajony GPU - ukryty smok
[DSG] Przyczajony GPU - ukryty smok
 
Zaliczenie Sem 2
Zaliczenie Sem 2Zaliczenie Sem 2
Zaliczenie Sem 2
 
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...
PLNOG15: IP services architecture with TDM quality in MPLS/IP networks - Mare...
 

Similar to PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.

PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania
PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania
PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania PROIDEA
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
 
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PROIDEA
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Semihalf
 
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PROIDEA
 
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PROIDEA
 
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...PROIDEA
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPROIDEA
 
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PROIDEA
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEA
 
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeń
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeńPLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeń
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeńPROIDEA
 
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...PROIDEA
 
PLNOG14: Zarządzalne sieci WiFi - Tomasz Sadowski
PLNOG14: Zarządzalne sieci WiFi - Tomasz SadowskiPLNOG14: Zarządzalne sieci WiFi - Tomasz Sadowski
PLNOG14: Zarządzalne sieci WiFi - Tomasz SadowskiPROIDEA
 
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejPROIDEA
 
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...Gawel Mikolajczyk
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Wojciech Szymański
 
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014PROIDEA
 

Similar to PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. (20)

PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania
PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania
PLNOG 6: Maciej Kaczmarek - Wydajne rozwiązania
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
 
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
 
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
 
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
 
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...
PLNOG 7: Bartosz Kiziukiewicz - Jak wykorzystać nowe rozwiązania firmy D-link...
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
 
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeń
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeńPLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeń
PLNOG 6: Mikołaj Chmura - System IPTV i sieć GPON - praktyka wdrożeń
 
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
 
PLNOG14: Zarządzalne sieci WiFi - Tomasz Sadowski
PLNOG14: Zarządzalne sieci WiFi - Tomasz SadowskiPLNOG14: Zarządzalne sieci WiFi - Tomasz Sadowski
PLNOG14: Zarządzalne sieci WiFi - Tomasz Sadowski
 
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
 
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...
Security B-Sides Warsaw 2013 - Masywna Telemetria NetFlow jest Masywna - Gawe...
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014
PLNOG 13: Gaweł Mikołajczyk: Data Center Security in 2014
 

PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.

  • 1. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. Autorzy: Lucjan Kisiel i Marcin Matyla Korbank S.A. Wrocław email: noc@k.pl
  • 2. Plan 1. Hardware 1.1. Hardware wycena 2. System operacyjny 2.1 Dobór kart sieciowych 2.2 Firewall 3. Tuning systemu 3.1. Zwiększenie buforów 3.2. Inne parametry 4. Statystyki 4.1. Statystyki ruchu 4.2. Top w szczycie 4.3. Przydatne polecenia 5. Podsumowanie Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 3. 1. Hardware ● Płyta główna Intel S5520HC 1200 zł – 5 slotów PCI-Express – Intelligent Platform Management Interface 2.0 z Serial over LAN ● Procesor Intel Xeon X5650 2.67GHz 12M Cache, 6.40 GT/s QPI, 6 Cores, 12 Threads 3100 zł ● # top -PSH ● CPU 0: 0.0% user, 0.0% nice, 24.8% system, 15.4% interrupt, 59.8% idle CPU 1: 0.4% user, 0.0% nice, 4.1% system, 17.7% interrupt, 77.8% idle CPU 2: 0.0% user, 0.0% nice, 1.1% system, 21.1% interrupt, 77.8% idle CPU 3: 0.0% user, 0.0% nice, 1.5% system, 13.5% interrupt, 85.0% idle CPU 4: 0.0% user, 0.0% nice, 10.5% system, 0.0% interrupt, 89.5% idle CPU 5: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle CPU 6: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle CPU 7: 0.0% user, 0.0% nice, 7.5% system, 0.0% interrupt, 92.5% idle CPU 8: 0.0% user, 0.0% nice, 21.4% system, 0.0% interrupt, 78.6% idle CPU 9: 0.0% user, 0.0% nice, 30.1% system, 0.0% interrupt, 69.9% idle CPU 10: 0.0% user, 0.0% nice, 5.3% system, 0.0% interrupt, 94.7% idle CPU 11: 0.0% user, 0.0% nice, 21.0% system, 0.0% interrupt, 79.0% idle Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 4. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 1.1 Hardware wycena: ● Płyta główna Intel S5520HC 1200 zł ● Procesor Intel Xeon X5650 2.67GHz 12M Cache, 6.40 GT/s QPI, 6 Cores,12 Threads 3100 zł ● DDR3 2x 2GB Kingstone 100 zł ● WD AV-GP 160GB VS 3.5" 16MB SATAII 300 zł ● Zasilacz + Obudowa 300 zł + 400 zł ● Karty 5x INTEL Gigabit CT Desktop 5x 100 zł CAŁOŚĆ 5900 zł. NETTO
  • 5. 2. System operacyjny FreeBSD 8.2 Problemy z soft updates Jan 19 09:13:41 fox syslogd: kernel boot file is /boot/kernel/kernel Jan 19 09:13:41 fox kernel: dev = ad0s1f, block = 1, fs = /usr Jan 19 09:13:41 fox kernel: panic: ffs_blkfree: freeing free block Jan 19 09:13:41 fox kernel: cpuid = 0 Jan 19 09:13:41 fox kernel: Uptime: 44m25s Jan 19 09:13:41 fox kernel: Cannot dump. No dump device defined. Jan 19 09:13:41 fox kernel: Automatic reboot in 15 seconds – press a key on the console to abort Jan 19 09:13:41 fox kernel: Rebooting… „Freeing free block podczas pracy systemu i dysku, to bug samego systemu, z którym już od kilku lat borykają się autorzy dystrybucji FreeBSD.” Rozwiązaniem jest wyłączenie softupdates dla danego systemu plików (przy instalacji lub potem poleceniem „tunefs”) ● Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 6. 2. System operacyjny 2.1. Dobór kart sieciowych: - Intel Gigabit CT Desktop igb0@pci0:1:0:0: vendor = 'Intel Corporation' device = '82575EB Gigabit Network Connection' cap 05[50] = MSI supports 1 message, 64 bit cap 11[60] = MSI-X supports 10 messages in map 0x1c enabled - Intel PRO/1000PT Giga Server em3@pci0:5:0:0: vendor = 'Intel Corporation' device = 'PRO/1000 PT' cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message cap 10[e0] = PCI-Express 1 endpoint max data 256(256) link x1(x1) ● - Broadcom BCM5761 - problemy PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 0 root -68 0 0K 320K - 9 61:57 28.66% {em1 taskq} 0 root -68 0 0K 320K CPU0 1 52:09 27.93% {em4 taskq} 0 root -68 0 0K 320K - 8 49:56 23.49% {em0 taskq} 0 root -68 0 0K 320K - 11 37:56 19.87% {em3 taskq} 0 root -68 0 0K 320K - 5 40:11 18.02% {igb0 que} 0 root -68 0 0K 320K - 7 16:49 12.40% {igb1 que} 12 root -68 - 0K 544K CPU2 2 24:59 11.96% {irq268: igb1:que} 12 root -68 - 0K 544K WAIT 1 26:24 10.89% {irq267: igb1:que} 12 root -68 - 0K 544K WAIT 3 23:19 10.06% {irq269: igb1:que} 12 root -68 - 0K 544K WAIT 0 25:56 9.72% {irq266: igb1:que} 12 root -68 - 0K 544K RUN 2 13:50 8.54% {irq263: igb0:que} 12 root -68 - 0K 544K WAIT 1 14:23 6.64% {irq262: igb0:que} 12 root -68 - 0K 544K WAIT 3 12:17 5.81% {irq264: igb0:que} 12 root -68 - 0K 544K WAIT 0 17:10 5.57% {irq261: igb0:que} 0 root -68 0 0K 320K RUN 6 3:57 2.64% {igb0 que} 0 root -68 0 0K 320K - 6 4:12 2.39% {igb1 que} 0 root -68 0 0K 320K - 6 3:51 2.20% {igb1 que} 0 root -68 0 0K 320K - 10 6:35 1.90% {em2 taskq} 0 root -68 0 0K 320K - 7 2:56 1.27% {dummynet} 0 root -68 0 0K 320K - 4 3:00 1.22% {igb0 que} 0 root -68 0 0K 320K - 4 2:52 1.22% {igb0 que} 0 root -68 0 0K 320K - 4 3:03 1.17% {igb1 que} Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 7. 2.2. Firewall Jako firewalla używamy mechanizmu IPFW - allow na kartach WAN na początku! - skipy klas IP w ipfw (gdy dużo reguł) Problem z zawieszaniem się IPFW podczas czyszczenia regół i jego obejście /sbin/sysctl net.inet.ip.fw.one_pass=1 fwcmd="/sbin/ipfw -q" ${fwcmd} -f flush ${fwcmd} -f pipe flush ${fwcmd} -f table 0 flush ${fwcmd} -f table 1 flush ${fwcmd} -f table 2 flush . /etc/firewall/rules.new echo "nowe regoly... done" /sbin/sysctl net.inet.ip.fw.one_pass=0 Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 00053 293453767 205438169422 allow ip from any to any via vlan48 00054 317542234 206678601842 allow ip from any to any via vlan1681 00055 24603860 20143882653 allow ip from any to any via vlan575 00056 119136520 97131970719 allow ip from any to any via vlan300 00500 195110 37433082 skipto 1300 ip from 10.7.1.0/24 to any 00500 500645 615970388 skipto 1300 ip from any to 10.7.1.0/24 00501 279798 22924187 skipto 1600 ip from 10.7.144.0/24 to any 00501 848766 875772492 skipto 1600 ip from any to 10.7.144.0/24 00502 181931 19445103 skipto 1900 ip from 10.7.177.0/24 to any 00502 445762 529416128 skipto 1900 ip from any to 10.7.177.0/24 23001 235598 277887231 pipe 1 ip from any to any 23001 188006 245656561 skipto 60000 ip from any to any 23002 535871 575831887 pipe 2 ip from any to any 23002 534188 574437776 skipto 60000 ip from any to an #ipfw pipe show 2 00002: 4.096 Mbit/s 0 ms burst 0 q131074 50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail sched 65538 type FIFO flags 0x1 2048 buckets 4 active mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytesPkt/Byte Drp 11 ip 0.0.0.0/0 10.7.144.4/0 529 511035 0 0 0 12 ip 0.0.0.0/0 10.7.144.3/0 1062 239965 0 0 0 14 ip 0.0.0.0/0 10.7.177.1/0 265 45764 0 0 0 254 ip 0.0.0.0/0 10.7.177.241/0 2 242 0 0 0
  • 8. 3. Tuning systemu Polega na zmianie parametrów jądra odpowiedzialnych (tu) za obsługę sieci. Chodzi tu o: - liczbę buforów i ich wielkość na obsługe połączeń - wielkość tablic haszujących do pamietania połączeń - włączeniu przyśpieszenia firewalla - zmniejszenie „keepalive'ów” dla dynamicznych reguł Jest on sensowny gdy obciążenie powoduje kończenie się zasobów. Zawsze można kupować mocniejszy sprzęt, ale po co gdy można jeszcze trochę z niego wycisnąć. W naszym przypadku nie da się kupić już mocniejszego bo ten jest najmocniejszy więc softwarowo należy wycisnąć ile się da. Skuteczność takiego tuningu to kilkanaście a nawet kilkadziesiąt procent w CPU. Realizuje się go we FreeBSD przez program sysctl. Za jego pomocą można odczytywać jaki zmieniać wiele parametrów w locie podczas pracy systemu. Część z nich można tylko ustawić podaczas startu systemu i wtedy ustawia się je w /boot/loader.conf. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 9. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 3.1. Zwiększenie buforów (przy 4GB RAM): kern.ipc.nmbclusters = 262144 - określa maksymalną liczbę klastrów mbuf, które mogą być używane przez stos sieciowy w dowolnym momencie net.inet.tcp.recvspace = 262144 - maksymalny rozmiar przychodzącego pakietu net.inet.tcp.sendspace = 262144 - maksymalny rozmiar wychodzącego pakietu kern.ipc.maxsockbuf = 16777216 - maksymalny rozmiar bufora socketa net.inet.ip.fw.dyn_ack_lifetime = 30 – czas życia dynamicznej reguły dla ACK net.inet.ip.fw.dyn_syn_lifetime = 10 – czas życia dynamicznej reguły dla SYN net.inet.ip.fw.dyn_max = 262144 – maksymalna liczba dynamicznych reguł dummynetu net.inet.ip.dummynet.hash_size = 2048 – określa wielkość tab. hasz. do dummynetu Poniższe ustawiane w /boot/loader.conf : net.inet.tcp.syncache.hashsize=2048 – określa wielkość tab. hasz. syncache net.inet.tcp.syncache.bucketlimit=100 – określa wielkość per-bucket net.inet.tcp.tcbhashsize=4096 - określa wielkość tab. haszującej TCP control-block
  • 10. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 3.2. Inne parametry: net.link.ether.ipfw = 0 – wyłączenie sprawdzanie reguł II warstwy w ipfw kern.polling.enable = 0 – wyłączenie poolingu net.inet.ip.fastforwarding = 1 – włączenie szybkiego forwardowania net.inet.ip.dummynet.io_fast = 1 - włączenie przyspieszenia dummynetu net.inet.tcp.delayed_ack = 0 - nakazuje systemowi, aby próbował załączać potwierdzenia TCP ACK do pakietu danych, zamiast wysyłać dodatkowe pakiety w celu zasygnalizowania końca połączenia. net.inet.ip.portrange.first = 10000 – rozszeszenie zakresu portów połączeń wyjściowych net.inet.ip.portrange.last = 65535 – rozszeszenie zakresu portów połączeń wyjściowych net.inet.ip.portrange.randomized = 0 – używaj naturalnych numerów portów zamiast losowych
  • 11. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 4. Statystyki: a) 7 kart sieciowych 1Gb b) 104 interfejsy vlan: root@Korbotron82|pts/2|23:30:53|/home/loocek # ifconfig | grep vlan | grep ' metric 0 mtu 1500' | nl | tail -5 100 vlan992: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 101 vlan150: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 102 vlan2597: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 103 vlan304: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 104 vlan1681: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 root@Korbotron82|pts/2|23:30:59|/home/loocek # c) 325 adresów IP: root@Korbotron82|pts/2|23:34:12|/home/loocek # ifconfig | grep -w inet | nl | tail -5 321 inet 10.21.1.1 netmask 0xfffffff8 broadcast 10.21.1.7 322 inet 193.239.58.109 netmask 0xfffffffc broadcast 193.239.58.111 323 inet 172.16.2.2 --> 172.16.2.1 netmask 0xffffff00 324 inet 212.127.90.117 --> 212.127.90.118 netmask 0xffffffff 325 inet 193.111.38.226 netmask 0xfffffffc broadcast 193.111.38.227 root@Korbotron82|pts/2|23:34:20|/home/loocek # d) 500 reguł taryfikujących w ipfw, z 50 reguł filtrującychw pf-ie e) ok. 450 000! połączeń typu UNICAST w szczycie! f) 14 sesji BGP (w tym 2 full-feedy, dwie Polski i in.) g) dodatkowo NAT na 100Mb (w pf-ie), z logowaniem połączeń na softflowd
  • 12. 4.1. Statystyki z ruchu (Cacti) Utylizacja (Mb/s) Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 13. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. Utylizacja (Mb/s)
  • 14. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. UNICAST/sek
  • 15. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. UNICAST/sek
  • 16. 4.2. Top w szczycie: root@Korbotron82|pts/4|20:43:35|/home/loocek # date Sun Feb 26 20:43:39 CET 2012 root@Korbotron82|pts/4|20:43:39|/home/loocek # top -PSH st pid: 31150; load averages: 2.80, 2.57, 2.43 162 processes: 21 running, 111 sleeping, 30 waiting CPU 0: 0.0% user, 0.0% nice, 32.6% system, 32.2% interrupt, 35.2% idle CPU 1: 0.0% user, 0.0% nice, 13.5% system, 45.5% interrupt, 41.0% idle CPU 2: 0.0% user, 0.0% nice, 7.9% system, 40.8% interrupt, 51.3% idle CPU 3: 0.0% user, 0.0% nice, 0.7% system, 38.2% interrupt, 61.0% idle CPU 4: 0.0% user, 0.0% nice, 29.6% system, 0.0% interrupt, 70.4% idle CPU 5: 0.0% user, 0.0% nice, 15.4% system, 0.0% interrupt, 84.6% idle CPU 6: 0.0% user, 0.0% nice, 15.0% system, 0.0% interrupt, 85.0% idle CPU 7: 0.0% user, 0.0% nice, 10.2% system, 0.0% interrupt, 89.8% idle CPU 8: 0.0% user, 0.0% nice, 53.0% system, 0.0% interrupt, 47.0% idle CPU 9: 0.0% user, 0.0% nice, 63.7% system, 0.0% interrupt, 36.3% idle CPU 10: 0.0% user, 0.0% nice, 8.6% system, 0.0% interrupt, 91.4% idle CPU 11: 0.0% user, 0.0% nice, 47.4% system, 0.0% interrupt, 52.6% idle Mem: 403M Active, 582M Inact, 767M Wired, 152K Cache, 412M Buf, 2096M Free Swap: 10G Total, 10G Free Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 17. PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 11 root 171 ki31 0K 192K CPU10 10 967:57 94.24% {idle: cpu10} 11 root 171 ki31 0K 192K RUN 5 909:51 92.97% {idle: cpu5} 11 root 171 ki31 0K 192K CPU6 6 936:18 92.72% {idle: cpu6} 11 root 171 ki31 0K 192K CPU7 7 930:39 90.04% {idle: cpu7} 11 root 171 ki31 0K 192K RUN 4 919:04 83.79% {idle: cpu4} 0 root -68 0 0K 320K CPU4 6 220:13 64.31% {em4 taskq} 11 root 171 ki31 0K 192K RUN 3 849:16 63.48% {idle: cpu3} 0 root -68 0 0K 320K CPU9 0 242:30 62.94% {em1 taskq} 0 root -68 0 0K 320K CPU8 8 199:12 61.13% {em0 taskq} 11 root 171 ki31 0K 192K RUN 11 841:28 60.45% {idle: cpu11} 11 root 171 ki31 0K 192K CPU2 2 831:44 58.89% {idle: cpu2} 0 root -68 0 0K 320K CPU11 11 160:51 47.31% {em3 taskq} 11 root 171 ki31 0K 192K RUN 8 802:20 44.82% {idle: cpu8} 11 root 171 ki31 0K 192K RUN 1 802:18 42.77% {idle: cpu1} 11 root 171 ki31 0K 192K RUN 9 760:05 40.72% {idle: cpu9} 11 root 171 ki31 0K 192K CPU0 0 680:09 31.05% {idle: cpu0} 12 root -68 - 0K 544K CPU1 1 103:14 30.71% {irq267: igb1:que} 12 root -68 - 0K 544K RUN 3 94:00 24.80% {irq269: igb1:que} 12 root -68 - 0K 544K WAIT 9 93:11 24.37% {irq266: igb1:que} 12 root -68 - 0K 544K WAIT 2 93:17 23.68% {irq268: igb1:que} 0 root -68 0 0K 320K - 7 147:45 20.70% {igb0 que} 12 root -68 - 0K 544K RUN 1 61:25 19.29% {irq262: igb0:que} 12 root -68 - 0K 544K CPU3 3 54:00 14.45% {irq264: igb0:que} 12 root -68 - 0K 544K WAIT 2 57:47 14.31% {irq263: igb0:que} 12 root -68 - 0K 544K WAIT 0 56:36 13.23% {irq261: igb0:que} 0 root -68 0 0K 320K - 6 81:48 11.82% {igb1 que} 0 root -68 0 0K 320K - 10 22:15 4.39% {em2 taskq} 0 root -68 0 0K 320K - 5 16:20 4.05% {igb0 que} 0 root -68 0 0K 320K - 6 16:16 4.05% {igb0 que} 0 root -68 0 0K 320K - 4 16:07 3.91% {igb1 que} 0 root -68 0 0K 320K - 10 17:49 3.56% {igb0 que} 0 root -68 0 0K 320K - 6 12:46 3.12% {igb1 que} 0 root -68 0 0K 320K - 5 15:24 2.73% {igb1 que} 0 root -68 0 0K 320K - 7 9:07 1.37% {dummynet} root@Korbotron82|pts/2|19:43:02|/home/loocek # Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 18. 4.3. Przydatne polecenia: - vmstat -z – ważne polecenie, liczniki alokacji pamięci przez: buckety, tablice haszujące, sockety i in. - netstat -m – liczniki zużycia tych newralgicznych mbufów - netstat -s – liczniki dla róznych protokołów: tcp, udp, icmp, ip, ip6, arp - top -PSH – wiadomo, obciążenie systemu online - bmon – niezawodzący progami do wielkości ruchu na interfejsach (w Bajtach) Router brzegowy z wydolnością 3 Gb ruchu za 5 tys.
  • 19. Router brzegowy z wydolnością 3 Gb ruchu za 5 tys. 5. Podsumowanie Przedstawiliśmy kompletne rozwiązanie wysoko wydajnego routera. Podaliśmy sprzęt oraz sposób tuningu do osiągnięcia wysokiej wydajności. Zwróciliśmy uwagę na kruczki (problemy), które istnieją i jak sobie z nimi poradzić. Wskazaliśmy narzędzia do diagnostyki obciążenia. Stosując się do wszystkich naszych wskazówek dostanie się wydajny router za nieduże pieniądze. Na koniec przy okazji zapraszamy wszystkich do współpracy. Gdyby ktoś chciał u siebie taki router zainstalować to pomożemy, doradzimy a może nawet zrealizujemy. Dziękujemy za uwagę! Autorzy: Lucjan Kisiel i Marcin Matyla Korbank S.A. Wrocław email: noc@k.pl