I've got a couple of (probably related) problems with PF_RING 4.7.2
1) With PF_RING-enabled libpcap, Suricata would crash and ARGUS
complains of out-of-order timestamps every couple of hours. E.g.
Suricata core backtrace:
> Core was generated by `/opt/RDGsuricata/bin/suricata -i eth1 -c
> /etc/suricata/suricata.yaml -D'.
> Program terminated with signal 11, Segmentation fault.
> #0 0x00000000004d6af7 in snprintf (ts=0x27e7d00,
> str=0x7f53277fdd70 "08/03/2011-11:41:26.410990",
> size=<value optimized out>) at /usr/include/bits/stdio2.h:65
> 65 return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
> #0 0x00000000004d6af7 in snprintf (ts=0x27e7d00,
> str=0x7f53277fdd70 "08/03/2011-11:41:26.410990",
> size=<value optimized out>) at /usr/include/bits/stdio2.h:65
> No locals.
> #1 CreateTimeString (ts=0x27e7d00,
> str=0x7f53277fdd70 "08/03/2011-11:41:26.410990",
> size=<value optimized out>) at log-httplog.c:103
> time = -6564470811307293241
> local_tm = {tm_sec = 44, tm_min = 4, tm_hour = 6, tm_mday = 3,
> tm_mon = 775172913, tm_year = -1861368698, tm_wday = 4,
> tm_yday = 3420209, tm_isdst = 0, tm_gmtoff = -75,
> tm_zone = 0x1988790 "LMT"}
> t = <value optimized out>
> #2 0x00000000004d6c70 in LogHttpLogIPv4 (tv=<value optimized out>,
> p=0x27e7cc0, data=0x32a095d0, pq=<value optimized out>,
> postpq=<value optimized out>) at log-httplog.c:149
> timebuf = "08/03/2011-11:41:26.410990\000
> S\177\000\000\000\000\000\000\000\000\000\000\016", '\000' <repeats 15
> times>, " \000\000\034S\177\000"
> idx = <value optimized out>
> proto = <value optimized out>
> r = 0
> logged = <value optimized out>
> loggable = <value optimized out>
> htp_state = 0x0
> tx = <value optimized out>
> srcip = "192.171.\000q1z58\361D"
> dstip = "134.157.176.104"
> sp = <value optimized out>
> dp = 80
> #3 0x00000000004c9069 in TmThreadsSlotVarRun (td=0x182b4db0)
> at tm-threads.c:425
> r = <value optimized out>
> s = 0x182b7790
> #4 TmThreadsSlotVar (td=0x182b4db0) at tm-threads.c:517
> s = 0x182b4e90
> p = 0x27e7cc0
> r = <value optimized out>
> slot = 0x0
> #5 0x00007f532f95c9ca in start_thread () from /lib/libpthread.so.0
> No symbol table info available.
> #6 0x00007f532f26b70d in clone () from /lib/libc.so.6
> No symbol table info available.
> #7 0x0000000000000000 in ?? ()
> No symbol table info available.
However, Suricata with native PF_RING is fine.
ARGUS (in daemon.log) is showing (I've got a check script restarting it
automatically if it dies):-
> Aug 25 20:50:02 vinms1 argus[9140]: 25 Aug 11 20:50:02.416348
> ArgusGetInterfaceStatus: interface eth1 is up
> Aug 25 20:52:37 vinms1 argus[9140]: 25 Aug 11 20:52:37.850281 ArgusInterface
> timestamps wayyy out of order: now 1314301957 then -1476065857
> Aug 25 20:52:37 vinms1 argus[9140]: 25 Aug 11 20:52:37.850517 ArgusInterface
> timestamps wayyy out of order: now 67108864 then 1314301957
> Aug 25 20:52:42 vinms1 argus[9140]: 25 Aug 11 20:52:42.850627
> ArgusGenerateRecord: packet size type not defined
> Aug 25 21:04:03 vinms1 argus[9587]: 25 Aug 11 21:04:03.714063 started
> Aug 25 21:04:03 vinms1 argus[9587]: 25 Aug 11 21:04:03.715963 started
> Aug 25 21:04:03 vinms1 argus[9587]: 25 Aug 11 21:04:03.864859
> ArgusGetInterfaceStatus: interface eth1 is up
> Aug 25 21:18:59 vinms1 argus[9587]: 25 Aug 11 21:18:59.352774 ArgusInterface
> timestamps wayyy out of order: now -2133983232 then 224
> Aug 25 21:19:04 vinms1 argus[9587]: 25 Aug 11 21:19:04.353456
> ArgusGenerateRecord: packet size type not defined
> Aug 25 21:20:02 vinms1 argus[10164]: 25 Aug 11 21:20:02.035960 started
> Aug 25 21:20:02 vinms1 argus[10164]: 25 Aug 11 21:20:02.037841 started
> Aug 25 21:20:02 vinms1 argus[10164]: 25 Aug 11 21:20:02.126142
> ArgusGetInterfaceStatus: interface eth1 is up
> Aug 26 02:26:57 vinms1 argus[10164]: 26 Aug 11 02:26:57.924060 ArgusInterface
> timestamps wayyy out of order: now 1314321751 then -1962934272
> Aug 26 03:04:04 vinms1 argus[20982]: 26 Aug 11 03:04:04.097349 started
> Aug 26 03:04:04 vinms1 argus[20982]: 26 Aug 11 03:04:04.099271 started
> Aug 26 03:04:04 vinms1 argus[20982]: 26 Aug 11 03:04:04.156049
> ArgusGetInterfaceStatus: interface eth1 is up
> Aug 26 09:51:31 vinms1 argus[20982]: 26 Aug 11 09:51:31.340779 ArgusInterface
> timestamps wayyy out of order: now 287696 then 1314348691
> Aug 26 09:51:31 vinms1 argus[20982]: 26 Aug 11 09:51:31.341377 ArgusInterface
> timestamps wayyy out of order: now 66 then 1314348691
> Aug 26 09:51:36 vinms1 argus[20982]: 26 Aug 11 09:51:36.341697
> ArgusGenerateRecord: packet size type not defined
2) The kernel is panicking every few days with pf_ring errors. Alas
nothing in the logs, but I've got screen dumps of some of the console
output (using Dell DRAC cards).
E.g. (copying by hand!) call trace:
? skb_ring_handler+0x92d/0xf10 [pf_ring]
? read_tsc+0x9/0x20
? ktime_get+0x63/0xe0
? lapic_next_event+0x1d/0x30
? clockevents_program_event+0x54/0xa0
? tick_dev_program_event+0x68/0xd0
? __slab_alloc+0x92/0x2d0
? swiotlb_dma_mapping_error+0x18/0x30
? e1000_receive_skb+0xb8/0xf0 [e1000e]
And
? __tcp_ack_snd_check+0x5e/0xa0
...
? swiotlb_dma_mapping_error+0x18/0x30
? e1000_receive_skb+0xb8/0xf0 [e1000e]
I'm wondering whether some of the usec code is causing problems with the
e1000e driver? PF_RING 4.6.5 was OK, but 4.7.1 wasn't, I think.
Best Wishes,
Chris
--
--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-
Christopher Wakelin, [email protected]
IT Services Centre, The University of Reading, Tel: +44 (0)118 378 2908
Whiteknights, Reading, RG6 6AF, UK Fax: +44 (0)118 975 3094
_______________________________________________
Ntop-misc mailing list
[email protected]
http://listgateway.unipi.it/mailman/listinfo/ntop-misc