+7 (916) 741 5495
support@netams.com

    ïðîäóêòû è óñëóãè     î êîìïàíèè     ïðîåêòû     áèëëèíã     êîíòàêòû english   

Âíèìàíèå! Ýòî äîêóìåíòàöèÿ ê âåðñèè 3.4. Äëÿ âåðñèè 4.0 ñìîòðèòå çäåñü

Äîêóìåíòàöèÿ

Releases

Áàçà çíàíèé

Ïðèìåðû êîíôèãóðàöèè

 

Ñáîð äàííûõ ÷åðåç NETGRAPH


Íà÷èíàÿ ñ âåðñèè NETAMS-CURRENT build 2340 (03 ìàðòà 2005 ã.) ðàáîòàåò ìåòîä ñáîðà ñòàòèñòèêè è ôèëüòðàöèÿ òðàôèêà ÷åðåç ìîäóëü NETGRAPH.

Òåõíîëîãèÿ NETGRAPH äîñòóïíà äëÿ îïåðàöèîííîé ñèñòåìû FreeBSD âåðñèé 4.õõ è 5.õõ. Âõîäÿùèé â ïîñòàâêó ìîäóëü ñîâìåñòèì ñ âåòêîé 5.õõ. NETGRAPH ïðåäñòàâëÿåò ñîáîé ìåõàíèçì îáúåäèíåíèÿ ðàçëè÷íûõ ñåòåâûõ ìîäóëåé ÿäðà FreeBSD â ïðîèçâîëüíûå ñòðóêòóðû (îáðàçóþùèå ãðàô), äëÿ ïîñëåäîâàòåëüíîé îáðàáîòêè ïàêåòîâ äàííûõ. Òàêèì îáðàçîì, ïðåäñòàâëÿåòñÿ âîçìîæíûì íàïèñàòü è èñïîëüçîâàòü äîñòàòî÷íî ïðîèçâîëüíóþ ñõåìó îáðàáîòêè äàííûõ â ÿäðå ÎÑ, ïîëüçóÿñü ñòàíäàðòíûì èíòåðôåéñîì ïðîãðàììèðîâàíèÿ. Áîëåå òîãî, ëåãêî îñóùåñòâèòü ñâÿçü ìîäóëÿ ÿäðà ñ user-level ïðîãðàììîé. ×åðåç NETGRAPH ðàáîòàþò, íàïðèìåð, ng_netflow, user-level ppp, ðàçëè÷íûå ìåõàíèçìû èíêàïñóëÿöèè ïàêåòîâ, è ìíîãîå äðóãîå. Äëÿ áîëåå ãëóáîêîãî îçíàêîìëåíèÿ ìîæíî ïîðåêîìåíäîâàòü ñëåäóþùèå èñòî÷íèêè:
http://www.daemonnews.org/200003/netgraph.html è man 4 netgraph

Ïîëüçîâàòåëåé äðóãèõ îïåðàöèîííûõ ñèñòåì âûíóæäåíû îãîð÷èòü: íè÷åãî ïîäîáíîãî ó âàñ íåò. Òåì æå, êîìó ïîâåçëî, ìîãóò ÷èòàòü äàëüøå:

  1. Ïðèíöèïû ðàáîòû
  2. Êàê íàñòðîèòü
  3. Êàê ïðîâåðèòü
  4. Ðåçóëüòàòû èñïûòàíèé
  5. Çàêëþ÷åíèå

Ïðèíöèïû ðàáîòû

Ðàáîòà netams â ñëó÷àå èñïîëüçîâàíèÿ ìîäóëÿ NETGRAPH (äàëåå-ìîäóëü) çàêëþ÷àåòñÿ â óñòàíîâêå ìîäóëÿ â ÿäðî (è ïîäêëþ÷åíèÿ åãî ê èíòåðôåéñó, ÷åðåç êîòîðûé èäåò òðàôèê), è íàñòðîéêå ïðîãðàììû netams (äàëåå-äåìîíà) äëÿ êîððåêòíîãî ñîåäèíåíèÿ ñ ìîäóëåì.

Ìîäóëü è äåìîí ìîãóò ðàáîòàòü â äâóõ ðåæèìàõ (îíè äîëæíû áûòü îäèíàêîâû â íàñòðîéêàõ!): tee è divert.



 ðåæèìå tee ìîäóëü ÿäðà ïîëó÷àåò ïàêåòû ñ èñïîëüçîâàíèåì "äóáëèêàòîðà" ng_tee, êîòîðûé îòñûëàåò íà îáðàáîòêó "êîïèþ" ïðîõîäÿùåãî ÷åðåç èíòåðôåéñ ïàêåòà. Ïîíÿòíîå äåëî, â òàêîì ñëó÷àå ôèëüòðàöèÿ òðàôèêà íåâîçìîæíà. Ïðîõîäÿùèå ÷åðåç ìîäóëü ïàêåòû ïîäâåðãàþòñÿ àíàëèçó çàãîëîâêîâ, ôîðìèðóþòñÿ çàïèñè â õýø-òàáëèöå, êîòîðûå ïåðèîäè÷åñêè "óñòàðåâàþò" è îòïðàâëÿþòñÿ íà îáðàáîòêó äåìîíó. Îí ïîëó÷àåò ïàêåòû ñ äàííûìè î òðàôèêå è îáðàáàòûâàåò èõ ïðèìåðíî òàê æå, êàê ïðîèñõîäèò ñ ïîòîêàìè netflow (ðàáîòàþò ó÷åò è ìîíèòîðèíã).

 ðåæèìå divert ìîäóëü ÿäðà ïîäêëþ÷àåòñÿ íåïîñðåäñòâåííî ê ethernet-èíòåðôåéñó. Âåñü òðàôèê ïðîõîäèò ÷åðåç îáðàáîòêó, îäíàêî ÍÅ IP òðàôèê ïðîïóñêàåòñÿ ïðîçðà÷íî áåç ó÷åòà. Êàæäûé ïàêåò òàêæå ïðîõîäèò ïðîâåðêó íà ñîîòâåòñòâèå ñ óæå èìåþùèìñÿ â ñèñòåìå ïîòîêîì äàííûõ, è:
  • åñëè ñîîòâåòñòâóþùåãî ïîòîêà íå íàéäåíî, ò.å. ðàññìàòðèâàåìûé ïàêåò-ïåðâûé â ïîòîêå äàííûõ (íà÷àëî ñîåäèíåíèÿ), òî äëÿ äàííîãî ïîòîêà ñîçäàåòñÿ î÷åðåäü. ïàêåò ïîìåùàåòñÿ â êîíåö î÷åðåäè. ñîçäàåòñÿ çàïðîñ âèäà FWREQUEST, ñîäåðæàùèé çàãîëîâêè ïàêåòà, è ïåðåäàåòñÿ ÷åðåç êîíòðîëüíûé ñîêåò äåìîíó netams. çàìåòèì, ÷òî â ýòîò ìîìåíò îðèãèíàëüíûé IP ïàêåò íèêóäà íå ïåðåäàåòñÿ, îí "çàñòðåâàåò" â ìîäóëå. ïîòîêó ïðèñâàèâàåòñÿ ñòàòóñ QUEUED.

  • åñëè ïîòîê íàéäåí, òî ïðîâåðÿåòñÿ åãî ñòàòóñ:
    • QUEUED - ðàññìàòðèâàåìûé ïàêåò äîáàâëÿåòñÿ â êîíåö öåïî÷êè ïàêåòîâ äàííîãî ïîòîêà. ïðè ýòîì äåëàþòñÿ ïðîâåðêè íà ðÿä îãðàíè÷åíèé ïî êîëè÷åñòâó ïîòîêîâ/ïàêåòîâ/áàéò/î÷åðåäåé, äëÿ ïðåäîòâðàùåíèÿ àòàêè DoS
    • PASS - ïàêåò ïåðåäàåòñÿ äàëüøå
    • DROP - ïàêåò óíè÷òîæàåòñÿ
Âîçíèêàåò âîïðîñ, ÷òî æå ïðîèñõîäèò ñ ïàêåòàìè â î÷åðåäè, è îòêóäà áåðóòñÿ ñòàòóñû PASS è DROP?

Ñòàòóñ DROP ÿâëÿåòñÿ åäèíñòâåííî âîçìîæíûì äëÿ ðåæèìà ðàáîòû TEE.

Êîãäà äåìîí ïîëó÷àåò çàïðîñ FWREQUEST èç ìîäóëÿ ÿäðà, ïðîèñõîäèò ðàçáîð çàãîëîâêîâ è ïîëíûé àíàëèç âîçìîæíîñòè áëîêèðîâêè ïàêåòà ñ èñïîëüçîâàíèåì òàáëèö þíèòîâ, ïîëèòèê, ñèñòåìíûõ ïîëèòèê, ñëîâîì âñåãî îáû÷íîãî íàáîðà äåéñòâèé. Ïî îêîí÷àíèè ïðîâåðêè, ôîðìèðóåòñÿ ðåøåíèå ïî äàííîìó ïîòîêó: PASS èëè DROP, è îíî ïåðåäàåòñÿ îáðàòíî â ÿäðî ÷åðåç ñîîáùåíèå FWREPLY. Çà âðåìÿ òàêîé îáðàáîòêè â ÿäðå óæå ìîæåò íàêîïèòüñÿ íåñêîëüêî ïàêåòîâ â î÷åðåäè äëÿ äàííîãî ïîòîêà. Ïî ïîëó÷åíèè îòâåòà îò äåìîíà, ìîäóëü ÿäðà âî-ïåðâûõ ñòàâèò ñîîòâåòñòâóþùèé ôëàã äëÿ äàííîãî ïîòîêà, à çàòåì ïûòàåòñÿ èëè îòïðàâèòü âñå ïàêåòû èç î÷åðåäè, èëè î÷èñòèòü î÷åðåäü.

Åñëè ïî êàêèì-òî ïðè÷èíàì äåìîí íåäîñòóïåí, òî ïî èñòå÷åíèè íåêîòîðîãî òàéìàóòà (ñåé÷àñ ýòî NG_NETAMS_DEFAULT_TIMEOUT ðàâíûé 2 ñåêóíäàì) ïðîèçâîäèòñÿ ïðèíóäèòåëüíàÿ î÷èñòêà î÷åðåäè äëÿ ïîòîêà è ïðèíÿòèå "ðåøåíèÿ ïî óìîë÷àíèþ" (ñåé÷àñ: ïðîïóñêàòü). Òàêèì îáðàçîì ïðåäîòâðàùàåòñÿ çàëèïàíèå ïîòîêà è âûåäàíèå ïàìÿòè ó ÿäðà (÷òî ìîæåò áûòü î÷åíü îïàñíûì!)

 ðåæèìå divert, êàê è â tee, ïðîâîäèòñÿ ïåðèîäè÷åñêîå óñòàðåâàíèå ïîòîêîâ è îòïðàâêà èõ íà ó÷åò "íàâåðõ", äåìîíó.

Ðàññìîòðåííûé ìåõàíèçì ðàáîòàåò, ïî ñóòè, àíàëîãè÷íî Multilayer Switching, ðåàëèçîâàííîìó â Cisco Catalyst 6000 è ïîäîáíûõ ÿùèêàõ. Òàì "áûñòðûé" Switch Engine íàïðàâëÿåò ïåðâûé ïàêåò ïîòîêà "ìåäëåííîìó" Route Processor, êîòîðûé îïðåäåëÿåò, êóäà ìàðøðóòèçèðîâàòü ïàêåò, è ïðîâîäèò ïðîâåðêó ïðàâèë äîñòóïà (access lists). Âñå ïîñëåäóþùèå ïîñëå îòâåòà ïàêåòû èäóò ÷åðåç SE íàïðÿìóþ, è òîëüêî ÷åðåç íåêîòîðîå âðåìÿ "íàâåðõ" ïåðåäàåòñÿ ñòàòèñòèêà î ïðîøåäøåì ïîòîêå.  íàøåì ñëó÷àå ðåøåíèÿ î ìàðøðóòèçàöèè ïðèíèìàòü íå íóæíî, â ðîëè "áûñòðîãî" äâèæêà âûñòóïàåò ÿäðî ñ åãî ìåõàíèçìîì ôîðâàðäèíãà ïàêåòîâ, â ðîëè "ìåäëåííîãî" ðåøàòåëÿ - äåìîí NeTAMS.


Êàê íàñòðîèòü

Äëÿ íà÷àëà, âàì íàäî ñêîìïèëèðîâàòü netams, êàê îáû÷íî. Ïîëó÷èâøèéñÿ ìîäóëü src/ng_netams.ko íåîáõîäèìî ïåðåïèñàòü â /boot/kernel/
 äèñòðèáóòèâå åñòü ñêðèïò addon/netams-netgraph.sh, êîòîðûé óñòàíàâëèâàåò â ÿäðî ñàì ìîäóëü ng_netams.ko, óñòàíàâëèâàåò åãî ðåæèì ðàáîòû (TEE èëè DIVERT), âûâîä îòëàäî÷íîé èíôîðìàöèè, ïðîèçâîäèò ïîäêëþ÷åíèÿ ê äðóãèì íîäàì NETGRAPH (èíòåðôåéñó è ng_tee, åñëè íàäî)

Çàïóñêàåòñÿ ýòîò ñêðèïò ÷åðåç
./netams-netgraph.sh start
îñòàíàâëèâàåòñÿ ÷åðåç
./netams-netgraph.sh stop
Äëÿ íàñòðîéêè ñàìîãî NeTAMS íåîáõîäèìî äîáàâèòü ñîîòâåòñòâóþùèé ñåðâèñ â /usr/local/etc/netams.cfg:
service data-source 1
type netgraph
source netams: divert
Ïðè ýòîì 'netams:' - ýòî èìÿ ìîäóëÿ NETGRAPH, ñîâïàäàþùåå ñ òåì, ÷òî íàïèñàíî â ñêðèïòå netams-netgraph.sh. Íå çàáûâàåì ïðî äâîåòî÷èå!
Ìîäóëü ÿäðà äîëæåí áûòü çàïóùåí ÄÎ äåìîíà.  ïðîòèâíîì ñëó÷àå äåìîí íå çàðàáîòàåò, êàê ñëåäóåò. Îäíàêî, â ïðîöåññå ðàáîòû äîïóñêàåòñÿ îñòàíàâëèâàòü è çàïóñêàòü äåìîí NeTAMS, ðàâíî êàê è âûãðóæàòü è çàãðóæàòü ñíîâà ìîäóëü ÿäðà (ïðè ýòîì áóäåò 20-ñåêóíäíàÿ çàäåðæêà â ïðèåìå ñòàòèñòèêè).

Êàê ïðîâåðèòü

Åñëè ÷òî-òî áóäåò èäòè ñîâñåì íå òàê, óïàäåò ÿäðî :) èëè áëîêèðóåòñÿ âåñü òðàôèê!
Ðàáîòó äåìîíà netams ìîæíî ïðîâåðèòü ÷åðåç ïðîñìîòð ñîñòîÿíèÿ ñåðâèñà data-source:

netamsctl show ds
 Data-source ID=1 type NETGRAPH source netams::9 loop 0 average 0 mcsec
    Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
    IP tree: 7 nodes [12] + 4 dlinks [1024] + 4 unodes [24] = 4276 bytes
    Flows: 0/0 act/inact entries (0 bytes), 3 flows sent
    HASH: size=65536, 0 flows hashed, 0 nodes used, max chain= 0
    FIFO: 0/2 used/ready messages, each 108, total 216 bytes
        ds_netgraph data messages: 3
        netams: mode=2, pkt_rx=201, pkt_tx=169
        flows: active(now)=3, queued(now)=0, blocked(total)=0, total=4
Ðàáîòà ìîäóëÿ ÿäðà âèäíà ÷åðåç ngctl:

ngctl msg netams: info
Rec'd response "info" (1) from "[3bb]:":
Args:   { packets/in=254 packets/out=202 mode=2 debug=1 
	active_flows=3 total_flows=9 default_policy=2 }
Ïðè âêëþ÷åííîé îòëàäêå ìîäóëÿ (÷åðåç ngctl msg netams: debug 1) íà êîíñîëè è â dmesg âèäíî ìíîãî ïîäîáíûõ ñòðîê:
info/1109893460: sent to daemon [961] with error=0
callout/1109893461+ active 1, checked 1, queued=0, flushed 0
callout/1109893462+ active 1, checked 1, queued=0, flushed 0
callout/1109893463+ active 1, checked 1, queued=0, flushed 0
callout/1109893464+ active 1, checked 1, queued=0, flushed 0
callout/1109893465+ active 1, checked 1, queued=0, flushed 0
callout/1109893466+ active 1, checked 1, queued=0, flushed 0
callout/1109893467+ active 1, checked 1, queued=0, flushed 0
callout/1109893468+ active 1, checked 1, queued=0, flushed 0
callout/1109893469+ active 1, checked 1, queued=0, flushed 0
netams: created flow record id=14, hash=00766, time=1109893469, proto=6
netams: created queue 0xc1a15250 for id=14, hash=00766
netams fwreply for entry id=14, flags=0, queue 1/102
netams: flush queue for entry id=14, hash=766, size=1, action=1
netams: created flow record id=15, hash=00254, time=1109893469, proto=6
netams: created queue 0xc1355240 for id=15, hash=00254
netams fwreply for entry id=15, flags=0, queue 1/102
netams: flush queue for entry id=15, hash=254, size=1, action=1

Ðåçóëüòàòû èñïûòàíèé

Çà÷åì âñå ýòî íóæíî? ×òîáû áûñòðåå ðàáîòàëî! Íèæå ïðèâåäåíû ðåçóëüòàòû íåáîëüøèõ ñòåíäîâûõ èñïûòàíèé.

Âñå ðàáîòû ïðîâîäèëèñü ñ ÎÑ FreeBSD 5.3-RELEASE, êîòîðàÿ ðàáîòàëà âíóòðè âèðòóàëüíîé ìàøèíû VmWare 4.5.2. Ñàìà âèðòóàëüíàÿ ìàøèíà ðàáîòàëà íà êîìïüþòåðå DUAL P4 Xeon 3.4GHz, 4Gb RAM ïîä óïðàâëåíèåì Windows Server 2003. Âèðòóàëüíàÿ ìàøèíà è õîñò-ìàøèíà ñâÿçàíû ÷åðåç âèðòóàëüíûé àäàïòåð vnmat (õîòÿ â òåñòàõ òðàíñëÿöèè àäðåñîâ íå áûëî).

Ñêîðîñòü ïåðåäà÷è äàííûõ èçìåðÿëàñü ïðè ïîìîùè iperf 1.7.0

Íà ñàìîé ìàøèíå ñ Windows Server 2003 çàïóùåí ñåðâåð iperf, òàì æå çàïóñêàåì êëèåíòà:
C:\>iperf.exe -c 192.168.56.1 -t 10 -i 1
------------------------------------------------------------
Client connecting to 192.168.56.1, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1948] local 192.168.56.1 port 3027 connected with 192.168.56.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[1948]  0.0- 1.0 sec  97.8 MBytes   821 Mbits/sec
[1948]  1.0- 2.0 sec  96.1 MBytes   807 Mbits/sec
[1948]  2.0- 3.0 sec  97.7 MBytes   820 Mbits/sec
[1948]  3.0- 4.0 sec  93.0 MBytes   780 Mbits/sec
[1948]  4.0- 5.0 sec  93.2 MBytes   782 Mbits/sec
[1948]  5.0- 6.0 sec  96.9 MBytes   813 Mbits/sec
[1948]  6.0- 7.0 sec  98.4 MBytes   825 Mbits/sec
[1948]  7.0- 8.0 sec  97.4 MBytes   817 Mbits/sec
[1948]  8.0- 9.0 sec  96.0 MBytes   806 Mbits/sec
[1948]  9.0-10.0 sec  98.2 MBytes   824 Mbits/sec
[1948]  0.0-10.0 sec   965 MBytes   808 Mbits/sec
Êàê âèäèì, ñêîðîñòü ïåðåäà÷è äàííûõ ÷åðåç ëîêàëüíûé âèðòóàëüíûé èíòåðôåéñ ïðîñòî ãèãàíòñêàÿ. Ïðîáóåì, êàê ïåðåäàþòñÿ äàííûå ìåæäó Windows è óñòàíîâëåííîé FreeBSD, ÷åðåç VmWare, áåçî âñÿêèõ ïîáî÷íûõ ýôôåêòîâ (NeTAMS è ìîäóëü ÿäðà âûêëþ÷åíû):
freebsd-vm:~/netams#iperf -c 192.168.56.1 -t 10 -i 1
------------------------------------------------------------
Client connecting to 192.168.56.1, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.56.17 port 51925 connected with 192.168.56.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  27.6 MBytes   232 Mbits/sec
[  3]  1.0- 2.0 sec  28.4 MBytes   238 Mbits/sec
[  3]  2.0- 3.0 sec  28.1 MBytes   236 Mbits/sec
[  3]  3.0- 4.0 sec  28.3 MBytes   237 Mbits/sec
[  3]  4.0- 5.0 sec  28.4 MBytes   238 Mbits/sec
[  3]  5.0- 6.0 sec  28.3 MBytes   237 Mbits/sec
[  3]  6.0- 7.0 sec  28.0 MBytes   235 Mbits/sec
[  3]  7.0- 8.0 sec  28.1 MBytes   236 Mbits/sec
[  3]  8.0- 9.0 sec  28.7 MBytes   240 Mbits/sec
[  3]  9.0-10.0 sec  28.3 MBytes   237 Mbits/sec
[  3]  0.0-10.0 sec   282 MBytes   237 Mbits/sec
Åñòåñòâåííî, ìåäëåííåå. Òåïåðü çàïóñòèì NeTAMS è ìîäóëü ÿäðà âìåñòå, â ðåæèìå divert è óáåäèìñÿ, ÷òî ýòî áûëà íå ïîäñòàâà:
freebsd-vm:~/netams#iperf -c 192.168.56.1 -t 10 -i 1
------------------------------------------------------------
Client connecting to 192.168.56.1, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.56.17 port 56639 connected with 192.168.56.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  20.9 MBytes   175 Mbits/sec
[  3]  1.0- 2.0 sec  23.4 MBytes   196 Mbits/sec
[  3]  2.0- 3.0 sec  23.5 MBytes   197 Mbits/sec
[  3]  3.0- 4.0 sec  23.5 MBytes   197 Mbits/sec
[  3]  4.0- 5.0 sec  23.6 MBytes   198 Mbits/sec
[  3]  5.0- 6.0 sec  23.6 MBytes   198 Mbits/sec
[  3]  6.0- 7.0 sec  23.4 MBytes   196 Mbits/sec
[  3]  7.0- 8.0 sec  23.8 MBytes   200 Mbits/sec
[  3]  8.0- 9.0 sec  23.6 MBytes   198 Mbits/sec
[  3]  9.0-10.0 sec  23.3 MBytes   196 Mbits/sec
[  3]  0.0-10.0 sec   233 MBytes   195 Mbits/sec

freebsd-vm:~/netams#ngctl msg netams: info
Rec'd response "info" (1) from "[3c5]:":
Args:   { packets/in=85515 packets/out=169244 mode=2 
	debug=1 active_flows=4 total_flows=4 default_policy=2 }
Íàëèöî ïàäåíèå ïðîèçâîäèòåëüíîñòè íà 100*(237-195)/237=17.7% èëè â 1.2 ðàçà. Òåïåðü çàìåíèì ôèëüòðîâàíèå ÷åðåç ìîäóëü ÿäðà íà ñòàíäàðòíîå, ÷åðåç ipfw divert è data-source ip-traffic:
freebsd-vm:~/netams#iperf -c 192.168.56.1 -t 10 -i 1
------------------------------------------------------------
Client connecting to 192.168.56.1, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local 192.168.56.17 port 55410 connected with 192.168.56.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  2.96 MBytes  24.8 Mbits/sec
[  3]  1.0- 2.0 sec  3.59 MBytes  30.1 Mbits/sec
[  3]  2.0- 3.0 sec  3.73 MBytes  31.3 Mbits/sec
[  3]  3.0- 4.0 sec  3.62 MBytes  30.3 Mbits/sec
[  3]  4.0- 5.0 sec  3.70 MBytes  31.0 Mbits/sec
[  3]  5.0- 6.0 sec  3.69 MBytes  30.9 Mbits/sec
[  3]  6.0- 7.0 sec  3.65 MBytes  30.6 Mbits/sec
[  3]  7.0- 8.0 sec  3.71 MBytes  31.1 Mbits/sec
[  3]  8.0- 9.0 sec  3.71 MBytes  31.1 Mbits/sec
[  3]  9.0-10.0 sec  3.73 MBytes  31.3 Mbits/sec
[  3]  0.0-10.0 sec  36.1 MBytes  30.2 Mbits/sec

freebsd-vm:~/netams#ipfw show 10 11
00010   26136   39197956 divert 199 tcp from any to any dst-port 5001
00011   13069     679600 divert 199 tcp from any 5001 to any
 äàííîì ñëó÷àå ìû âèäèì ïîòåðþ ïðîèçâîäèòåëüíîñòè íà 100*(237-30.2)/237=87.2% èëè â 8 ðàç. Âûãîäà íàëèöî!

Çàêëþ÷åíèå

Âåëîñèïåä ìû íå èçîáðåëè, ýòî ïîíÿòíî. Ðåçóëüòàòû îæèäàåìû. Èñïîëüçîâàíèå ìîäóëÿ ÿäðà áîëåå îïàñíî, ÷åì îáû÷íîãî data-source ip-traffic, à óæå òåì áîëåå ñáîðà ïî libpcap èëè netflow.  ñëó÷àå îøèáîê èëè ïåðåïîëíåíèÿ áóôåðîâ çàâèñàåò ÿäðî âìåñòå ñî âñåìè ïðîöåññàìè, èëè áëîêèðóþòñÿ âñå ñîêåòû. Áûëî ïðîâåäåíî òåñòèðîâàíèå íà ïðåäìåò ïîääåðæêè "íåõîðîøèõ ñèòóàöèé" âðîäå ping -f èëè nmap -sS -PS 80 -iR 100. Îäíàêî ñòàáèëüíîñòü ðàáîòû íå ãàðàíòèðóåòñÿ, òåñòèðóéòå ìîäóëü ñî âñåé îñòîðîæíîñòüþ!

Êòî-íèáóäü îñîáåííî óìíûé ìîæåò ñïðîñèòü: "À ñîáñòâåííî çà÷åì âû ýòî äåëàëè? Ôèëüòðîâàòü ìîæíî è â ÿäðå, ÷åðåç òîò æå ipfw deny, pfctl è ïðî÷åå. Âñå áóäåò áûñòðî è íàäåæíî."
Âîçìîæíî. Îäíàêî âàì ïðèäåòñÿ êàê-òî ñèíõðîíèçèðîâàòü òàáëèöó þíèòîâ è ïîëèòèê ó÷åòà ñ ïðàâèëàìè firewall, ôàêòè÷åñêè ãîðîäèòü çîîïàðê ñêðèïòîâ è äóáëèðîâàòü îäíî è òî æå äâàæäû. Çà÷åì? Èñïîëüçîâàíèå NeTAMS ïîçâîëÿåò õðàíèòü âñþ èíôîðìàöèþ î ïðàâèëàõ â îäíîì ìåñòå, áåç ïðîáëåì ïðèìåíÿÿ âñÿêèå õèòðîñòè âðîäå break flag, prefix table è ñðàáàòûâàíèå ïî âðåìåíè ñóòîê. Ñîâåðøåííî ïðîçðà÷íî ðàáîòàþò ñåðâèñû êâîò, ñèñòåìíûå ïîëèòèêè, áèëëèíã, è òàê äàëåå.

Âîçìîæíûå íàïðàâëåíèÿ óëó÷øåíèÿ è ðàçâèòèÿ:
  • Ñîçäàòü àíàëîãè÷íûé ïðîäóêò äëÿ Linux, âèäèìî íà áàçå ULOG
  • Ñäåëàòü ïîääåðæêó RAW IP ïàêåòîâ, PPP è òàê äàëåå
  • Ïðîâåðèòü ðàáîòîñïîñîáíîñòü â ñëó÷àå íåñêîëüêèõ ìîäóëåé ÿäðà, ðàáîòàþùèõ îäíîâðåìåííî

[an error occurred while processing this directive]