Vidím dvakrát!
Názory k článku
Monitorování přenesených dat v síti s 1000 IP adresami
Re: pomoc
celé vláknoŠkoda, že nejde komentovat ten druhej z dvojice článků. Zajímalo by mě, jestli by ten druhej komentář zmizel nebo ne.
Re: pomoc
celé vláknoŽádný druhý článek neexistuje. Jen se generují nesmyslné odkazy a část obsahu se ukazuje dvakrát. Problém je zjevně jen v generování titulní strany.
Re: pomoc
celé vláknoVíme o tom, šéf vývoje u toho sedí a zkoumá, co se stalo. K žádné změně v kódu nedošlo, je to záhada.
Re: pomoc
celé vláknoChudak sef ... to on jeste musi programovat/debugovat :D
Re: pomoc
celé vláknoClanek je bohuzel naprosto mimo
celé vláknoAz z toho mam skoro dojem ze se jedna o pokus zruinovat konkurenci tim ze jim doporucuje nepouzitelny setup.
Je sice hezke ze se autor pokousi o reseni na vlastni pest, sice to funguje, ale zbytecne slozite a hlavne s narocnosti O(pocet_zakazniku^3). Ta mocnina je aproximace vlivu CPU data cache.
Perlickou uz je pak jen to ze resi blbosti jako mongodb, coz je ovsem naprosto irelevantni bottleneck :)
Takze, jak doopravdy na to:
To kdo muze a nemuze do internetu se dela tak ze ipset a -t nat SNAT/DNAT pravidla. Figl je pak v tom ze se toto zpracuje pouze jednou pro kazde nove vytvorene spojeni, data co pak tecou uz ale nevidime a ani nas nemusi zajimat - drzi si je conntrack. To mame 1, max 2 pravidla (ipset!). Pro 1:1 NAT verejnych ip pouzivame target NETMAP, v nejhorsim muzeme mit nekolik set pravidel pokud vnitrni a verejne ip na sebe "nepasuji".
Do filter a mangle chainu *NIKDY* nic necpat, protoze se prochazi per packet, namisto per-spojeni jak je tomu u -t nat tabulky. Samozrejme takto resime i redirekt pro nezname IP atd.
Provisioning (tj pokud mame tarify) se dela pres http://lartc.org/howto/lartc.adv-filter.hashing.html
Accounting (k cemu vlastne? ze by 3G operator? :) se dela pres http://dev.medozas.de/files/xtables/xtables-addons.8.html
(xtables-addons je bezne pouzivany balik v modernich distribucich, stejne tak ipset kernel modul).
Vysledek? Kazdy paket je (ne uplne presne, kvuli faktorum jako chainy hash tabulek) O(1), narozdil O(pocet_ip_za_natem^neco)
HA-VEL na linuxech routuji i 10GBps (pravda, bez conntracku), holt low-cost, nicmene ukazka toho ze to jde, jen staci trocha toho RTFM.
PS: Na boxu s Quad L5420 @ 2.5GHz v 9 vecer tece 1.5gbps @ 250kpps pro cca 3500 useru za natem. 70% per core je stale idle, ale pocitam ze nekde pri 750kpps to pujde do kolen, coz je bohuzel limit levnych PC sestav.
Re: Clanek je bohuzel naprosto mimo
celé vláknoSkvely prispevok. Vyssia pridana hodnota ako povodny clanok.
Re: Clanek je bohuzel naprosto mimo
celé vláknoTreba autor jen potreboval poradit ;)
Re: Clanek je bohuzel naprosto mimo
celé vláknoAle ted vazne ...
Fascinuje me ze jeste porad/furt sem chodi i takovi co jsou schopni/ochotni upustit nejakou informaci.
Panove, klobouk dolu ... diky takovym to muze jedine nekam dojit.
PS. Nebyl ten clanek pokus o diskusi ... puvodne ;)
Re: Clanek je bohuzel naprosto mimo
celé vláknoJop, me taky dostalo "reseni" pomoci hromady pravidel. Vubec nemluve o tom, ze by me zajimalo, jak bude autor resit privacy extension IPv6 ... ;D.
Re: Clanek je bohuzel naprosto mimo
celé vláknoOpravdu zajímavý příspěvek. Nechceš to rozepsat do pořádného článku/seriálu? Informací z téhle oblasti je málo a podle mě nad tím tápe hodně lidí.
Re: Clanek je bohuzel naprosto mimo
celé vláknoPokud jde o matchování velkého množství adres, není už pohodlnější místo hromady pravidel použít userspace queuing a kontrolovat nová spojení proti nějaké rychlé databázi? Můj bastl (https://github.com/jmakovicka/nfblock) který používám na blacklistování 200k+ roszahů, mi tady na NB s Pentiem na 1.6GHz zvládá matchovat něco přes 2 milióny IP za sekundu, přičemž jede na jednom jádře.
Re: Clanek je bohuzel naprosto mimo
celé vláknoipset jsem neznal. Ve firewallu mám asi 200 počítačů a pravidla se generují skriptem, takže chyba nehrozí. Ale říkal jsem si proč to nejde udělat nějak méně náchylné na chyby a vůbec přehlednější a teď vím, že jde. Díky!
"nevime o co jde.."
Skynet prevzal vladu
"nevime o co jde.."
Skynet prevzal vladu
netflow
celé vláknoProč se nepoužilo NetFlow? Přesně k tomuto účelu se hodí.
Re: netflow
celé vlákno+1. Sice už je to 9 let, co jsem z branže pryč, nerad bych se zesměšnil - ale řekl bych, že se to pořád používá. Třeba ipt-netflow zní zajímavě - podle reakcí uživalelů: http://sourceforge.net/projects/ipt-netflow/
pmacct
celé vláknoDomnívám se, že pro větší množství trafiku je vhodnější coby počitadla použít například pmacct (http://www.pmacct.net/).
Re: pmacct
celé vláknopokud se dobre pamatuju, nebyl ani pri 100mbitu vykonove zrovna nenarocny :-(
na rozdil od netflow
NoSQL databáze
celé vláknoČlánek mě "zaujal" především použitím noSQL databáze. Přiznám se, že jsem vždy pracoval pouze s klasickými SQL databázemi. Je k čemu je dobrá noSQL databáze na naprosto klasické tabulce kde jsou všechny řádky stejné?
Nebo je to autorovým viděním: "pakliže mám v ruce kladivo, všechno vypadá jako hřebík" :-)
Kdyby to autor přepsal do PostgreSQL nebo MySQL a pak to porovnal, to byl teprve panečku článeček ;-)
Re: NoSQL databáze
celé vláknoPoužití Monga mě také zaujalo, už jen z důvodu, že autor potom naď těmi daty dělá agregované dotazy, což se v SQL zvládne jedním dotazem. Pokud to bude mít v Postgresu, tak může použít i Window fce a získat tak snadno zajímavá statistická data per časovou jednotku nebo per IP.
Ještě k tomu Postgresu. Ukládát jen IP a Čas je poměrně velké plýtvání místem (pokud nevadí, netřeba řešit). PostgreSQL má další režijní pole v každém záznamu (pro viditelnost transakcí apod.) Je ale možné použít datový typ pole a tyto časové řady ukládát do pole (dejme tomu po nějakém primárním zpracování a pro účely trvalejšího uložení). To je úspornější. AFAIK mongo na tom bude dost podobně, ukládat jeden JSON dokument per packet je možné, ale je to trochu overkill.
Autor až moc ryhle zavrhnul Redis. Redis je sice primárně key-value DB běžící v paměti, ale umí jednak ukládat svůj stav na disk, ale hlavně se umí replikovat na jiné uzly. Takže pokud někdo chce, může analýzu dat z de facto bezdiskového routeru dělat někde úplně jinde, kde se mohou agregovat data z vícero routerů.
Re: NoSQL databáze
celé vláknoViděl jsem ještě jiné řešení - úprava (nebo nový modul) v ulogd aby dokázal logovat konec spojení. A zápis normálně do MySQL, ovšem min verze 5.1 aby uměla partitioning a nebyla zahlcená mazáním starých záznamů. A pokud to ten router odhazoval do mysql extra síťovou kartou, zátěž byla v podstatě neznatelná.
ntop
bandwidthd
celé vláknoa ešte existuje taký z jednoduchších (oproti ntop) http://bandwidthd.sourceforge.net/
Re: bandwidthd
celé vláknoExistovat, teď už je z toho taková mrtvolka.
vlastní řešení
Moje požadavky jsou trochu jiné, já potřebuji max. do vteřiny vygenerovat statistiky celkového datového přenosu pro zhruba 2000 IP adres za nějakou poslední dobu (tato doba je parametrem programu), rychlost se potom počítá jen jako data/čas.
Používám na to ipac-ng, což je nástroj, který podle pravidal přidává do iptables záznamy pro monitorování (ovšem mám je rozděleny do více chainů - monitoruji více rozhraní, což podstatně snižuje zátěž cpu). ipac-ng každých 5 minut odesílá do PgSQL databáze, která kvůli rychlosti běží v RAM disku. Data se jednou za x hodin kopírují z RAM na HDD.
Nad PgSQL je pak spouštěn program v C vlastní výroby, který generuje statistiky. Data se v noci sumují, protože u starších dat už nepotřebuji takovou podrobnost - úplně aktuální data po 5 minutách, týden staré po 15min, měsíc staré po hodině atp.
Za +- 2 roky monitorování zhruba 2000 IP adres má databáze něco okolo 3,5GB, což se pohodlně vejde do RAM disku.
Ani jsem to nedocetl do konce
celé vláknoAle pripada mi, ze v tom nekdo utopil straslive kvantum prace, aby znovu vynalezl kolo....
nebylo by jednodussi koupit entrylevel krabici od Cisca a na te zapnout NetFlow?
A na vyhodnocovani prsknout nejakou opensource netflow VMWARE applianci?
Vzdyt to kvantum prace a laborovani by muselo tu Cisco krabici zaplatit 5x ....
Re: Ani jsem to nedocetl do konce
celé vlákno...a nebo si koupit/pronajmout jeden skvělý český produkt vytvořený lidmi z MUNI, resp. z AdvaICT :-)
FYI, http://en.wikipedia.org/wiki/FlowMon
BTW, oni taky přemýšleli nad databází, a vybrali si MUMPS (konkrétně Caché+DeepSee) a rozhodně se to nedá považovat za špatnou volbu :)
Re: Ani jsem to nedocetl do konce
celé vláknoOna je otázka, jestli by vás to nestálo víc než byste za takovou blbost chtěli dát.
diskuse zajímavější než článek
Nic proti, ale článek jsem raději ani nečetl, můj názor je, že routovat nebo switchovat má jedna krabice a dělat statistiky má jiná krabice, propojit to jde přes netflow nebo i sflow, pokud mi nejde o 100% přesnost, ale jen statistiku, tak to bohatě stačí a vzhledem k tomu, že data se samplují a částečně je agreguje už kolektor, tak jich je relativně málo a dobře to škáluje.
Na druhou stranu diskuse přinesla mnoho zajímavého ovoce, pár nástrojů jsem neznal a určitě se na ně podívám.
Re: Monitorování přenesených dat v síti s 1000 IP adresami
jop, neco takoveho se delalo na czfree.netu. komercne by to takhle asi neslo :) by the way, ty citace prenesenych dat se nuluji po resetu routeru resp. ifup/ifdown, ne?
Re: Monitorování přenesených dat v síti s 1000 IP adresami
Nieco podobne robime na 3300+ IPeckach a traffikoch v maximach okolo 600 Mbps na dvoch masinach. Jedna sluzi iba ako firewall (ktory posktuje aj dane statistiky) s FreeBSD + pf a druha s 20 GB RAM diskom (FreeBSD), kde sa vsetko uklada do RRD (a este tretia, kde je mysql nasho NMS... ale to uz s tymto nesuvisi). Statistiky robime pre traffik z/do dvoch podsieti (internet, univerzita) + nase kvoty, ktore ovladaju firewall. Pravidiel v pf, ktore toto umoznuju je asi 5 s prislusnymi tabulkami IP adries (whitelist)... Rozhodne je to lepsie, ako iptables s 15000 pravidlami...

