Tag: NetFlow

  • 2 gbit/sec SPAN Cisco export Netflow :)

    Встала задача писать весь транзитный трафик с Cisco 6504, меня интересуют 2 гигабитных канала на интерфейсах Gi2/1 , Gi2/2. Можно было бы писать NetFlow напрямую с Cisco 6504, но на ней осуществляется нарезка полос (User Based Rate Limit microflow policy) совместно с которым экспорт в NetFlow не работает, поэтому будем извращаться :).

    Для начала выгоним SPAN (копию интересующего меня трафика с Gi2/1 , Gi2/2 ) в два гигабитных порта Gi2/4 и Gi2/5.


    !
    vlan 100
    !
    !
    interface Port-channel100
    switchport
    switchport access vlan 100
    switchport mode access
    !
    interface GigabitEthernet2/4
    switchport
    switchport access vlan 100
    switchport mode access
    channel-group 100 mode on
    !
    interface GigabitEthernet2/5
    switchport
    switchport access vlan 100
    switchport mode access
    channel-group 100 mode on
    !
    monitor session 1 source interface Gi2/1 , Gi2/2
    monitor session 1 destination interface Po100
    !

    Теперь необходимо определиться с инструментарием которым мы собираемся «ловить» поток и отдавать его в формате NetFlow.

    На самом деле выбор не велик fprobe, ipcad, softflowd т. е. те вещи которые работают через pcap «умерли» сразу, попутно убив CPU сервера :)

    Через ULOG iptables писать нельзя т. к. трафик не попадает ни в одну цепочку (ибо он не транзитный).

    Нашелся один инструмент (ipt_netflow), но для его работоспособности в схеме со Span портом пришлось пропатчить ядро (здесь патченное ядро) и пропатчить сам модуль ipt_netflowустанавливать надо ipt_netflow (модуль iptables) и kmod-netflow-promisc (модуль ядра).

    SPAN потоки приходят в сетевые адаптеры eth2 и eth3 сервера соответственно.

    После установки этого чуда пишем в iptables


    *raw
    -A PREROUTING -i eth2 -j NETFLOW
    -A PREROUTING -i eth3 -j NETFLOW
    COMMIT

    в /etc/modprobe.conf добавляем


    options ipt_NETFLOW hashsize=160000 destination=\"127.0.0.1:2055\"

    результаты таковы, что при 1-1,5 gbit/sec трафика мы получаем следующую нагрузку на CPU
    top

    Tasks: 117 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
    Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 71.3%id, 0.3%wa, 0.0%hi, 28.3%si, 0.0%st
    Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 69.5%id, 0.0%wa, 0.7%hi, 29.8%si, 0.0%st
    Cpu6 : 0.0%us, 0.0%sy, 0.0%ni, 71.2%id, 0.0%wa, 0.3%hi, 28.4%si, 0.0%st
    Cpu7 : 0.0%us, 1.0%sy, 0.0%ni, 68.2%id, 0.0%wa, 0.3%hi, 30.4%si, 0.0%st
    Mem: 4044184k total, 2566136k used, 1478048k free, 485276k buffers
    Swap: 2031608k total, 132k used, 2031476k free, 1622060k cached

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    33 root 10 -5 0 0 0 S 2.7 0.0 32:41.04 events/7
    1 root 15 0 10348 632 540 S 0.0 0.0 0:02.31 init
    2 root RT -5 0 0 0 S 0.0 0.0 0:00.02 migration/0
    3 root 34 19 0 0 0 S 0.0 0.0 0:03.06 ksoftirqd/0
    4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
    5 root RT -5 0 0 0 S 0.0 0.0 0:00.07 migration/1
    6 root 34 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/1
    7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
    8 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/2
    9 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/2

    cat /proc/net/stat/ipt_netflow

    Flows: active 354747 (peak 540458 reached 0d16h37m ago), mem 30486K
    Hash: size 160000 (mem 1250K), metric 2.7, 2.2, 1.0, 1.0. MemTraf: 121088697 pkt, 75450911 K (pdu 5, 276).
    Timeout: active 1800, inactive 15. Maxflows 2000000
    Rate: 1382824352 bits/sec, 298823 packets/sec; Avg 1 min: 1367908158 bps, 296724 pps; 5 min: 1361329134 bps, 296061 pps
    cpu# stat: , sock: , traffic: , drop: Total stat: 38000468809 22085636328 1231067128, 0 0 0 0, sock: 41023746 0 0, 58651136 K, traffic: 23316703456, 13030478 MB, drop: 0, 0 K
    cpu0 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
    cpu1 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
    cpu2 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
    cpu3 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
    cpu4 stat: 9502008868 5521585976 307793882, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5829379858, 3259408 MB, drop: 0, 0 K
    cpu5 stat: 9495159604 5519723902 307727275, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5827451177, 3255443 MB, drop: 0, 0 K
    cpu6 stat: 9500201467 5522411578 307754983, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5830166561, 3258689 MB, drop: 0, 0 K
    cpu7 stat: 9503098870 5521914872 307790988, 0 0 0 0, sock: 41023746 0 0, 58651136 K, traffic: 5829705860, 3256938 MB, drop: 0, 0 K
    sock0: 127.0.0.1:2055, sndbuf 33554432, filled 0, peak 140936; err: sndbuf reached 0, other 0

    как видим трафик порядка 1.3 гбит/сек, 300 kpps :)

    Вроде ничего не забыл.

    http://centos.alt.ru/?p=367