User Tools

Site Tools


tssltd:захват_сетевого_трафика_в_формате_pcap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tssltd:захват_сетевого_трафика_в_формате_pcap [2025/01/14 13:01] – created i.sharapovtssltd:захват_сетевого_трафика_в_формате_pcap [2025/01/14 14:02] (current) i.sharapov
Line 1: Line 1:
 [[tssltd:мксз_diamond_next|Вернуться к оглавлению]] [[tssltd:мксз_diamond_next|Вернуться к оглавлению]]
  
-asdfasd+==== Общая информация ==== 
 + 
 +<WRAP indent> 
 +Устройство <wrap em>МКСЗ «Diamond Next»</wrap> поддерживает возможность захватывать сетевой трафик для дальнейшего анализа. Данный механизм позволяет проанализировать сетевые пакеты и их заголовки. Захват и анализ сетевого трафика можно осуществить в двух режимах: **raw-режим**, **pcap-режим**.  
 + 
 +  *** Raw-режим:** Данный режим позволяет захватить сетевой пакет и предоставить информацию не только о всех полях и заголовках, но также и о движении сетевого пакета между сетевыми механизмами устройства. Данный режим осуществляет захват сетевого трафика со всех интерфейсов одновременно. Результаты работы можно сохранить в текстовом формате. 
 + 
 +  *** Pcap-режим:** Данный режим позволяет захватить сетевой пакет и предоставить информацию аналогично утилите tcpdump. Сетевой трафик можно захватывать на различных сетевых интерфейсах и записывать результаты работы в формате pcap файла. В pcap-режиме не поддерживается возможность онлайн вывода результатов работы механизма и недоступна фильтрации сетевого трафика по различным параметрам. 
 +</WRAP> 
 + 
 + 
 +==== Режим захвате RAW ==== 
 +<WRAP indent> 
 +Для захвата сетевого трафик на физическом интерфейсе необходимо подключиться подключиться к устройству по протоколу ssh. Далее необходимо перейти в режим конфигурации на уровне “**data plane**” с помощью команды “**vppctl**”. 
 + 
 +Необходимо выбрать один из сетевых интерфейсов, на котором требуется осуществить захват сетевого трафика. Перечень доступных сетевых интерфейсов на устройстве можно посмотреть либо через web интерфейс в разделе "Статус - Сетевые интерфейсы", либо в режиме конфигурации на уровне “**data plane**” с помощью команды "**sh interface**"
 + 
 +Для захвата сетевого трафика необходимо использовать команду "trace add dpdk-input <count_of_packets>"
 + 
 +<code> 
 +# vppctl 
 +vpp# trace add dpdk-input 1000       <----- 1000 Количество сетевых пакетов 
 +</code> 
 + 
 +Для просмотра результата необходимо выполнить команду "show trace". В представленном ниже примере показаны сетевые пакет 16 и 17. Для каждого из сетевых пакетов зафиксированы узлы, в которых происходила их обработка, все поля и заголовки, а также результат обработки сетевого пакета. 
 + 
 +<code> 
 +Packet 16 
 + 
 +01:16:54:208566: dpdk-input 
 +  GigabitEtherneta/0/0 rx queue 0 
 +  buffer 0x2cff11: current data 0, length 70, buffer-pool 0, ref-count 1, trace handle 0x100000f 
 +                   ext-hdr-valid 
 +  PKT MBUF: port 6, nb_segs 1, pkt_len 70 
 +    buf_len 9328, data_len 70, ol_flags 0x182, data_off 128, phys_addr 0xd33fc4c0 
 +    packet_type 0x111 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
 +    rss 0x94cebe20 fdir.hi 0x0 fdir.lo 0x94cebe20 
 +    Packet Offload Flags 
 +      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid 
 +      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid 
 +      PKT_RX_RSS_HASH (0x0002) RX packet with RSS hash result 
 +    Packet Types 
 +      RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet 
 +      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers 
 +      RTE_PTYPE_L4_TCP (0x0100) TCP packet 
 +  IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 
 +  TCP: 81.177.120.83 -> 194.135.68.242 
 +    tos 0x20, ttl 52, length 52, checksum 0xa325 dscp CS1 ecn NON_ECN 
 +    fragment id 0xd200, flags DONT_FRAGMENT 
 +  TCP: 50706 -> 443 
 +    seq. 0xad1c6b3b ack 0x19461f07 
 +    flags 0x10 ACK, tcp header: 32 bytes 
 +    window 360, checksum 0x6aff 
 + 
 +01:16:54:208567: ethernet-input 
 +  frame: flags 0x3, hw-if-index 7, sw-if-index 7 
 +  IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 
 +01:16:54:208568: l2-input 
 +  l2-input: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 [l2-input-feat-arc l2-learn l2-fwd l2-flood l2-flood ] 
 +01:16:54:208568: l2-input-feat-arc 
 +  IN-FEAT-ARC: head 1 feature_bitmap 82a5 ethertype 800 sw_if_index 7, next_index 15 
 +01:16:54:208568: acl-plugin-in-ip4-l2 
 +  acl-plugin: lc_index: 0, sw_if_index 7, next index 1, action: 1, match: acl 0 rule 0 trace_bits 00000000 
 +  ct session_index -1 thread_index 65535 error NONE  pkt info 0000000000000000 0000000000000000 0000000000000000 f24487c25378b151 0007010601bbc612 0310ffff00000000 
 +   lc_index 0 l3 ip4 81.177.120.83 -> 194.135.68.242 l4 lsb_of_sw_if_index 7 proto 6 l4_is_input 1 l4_slow_path 0 l4_flags 0x01 port 50706 -> 443 tcp flags (valid) 10 rsvd 0 
 +01:16:54:208579: l2-input-feat-arc-end 
 +  IN-FEAT-ARC: head 0 feature_bitmap 2a5 ethertype 0 sw_if_index -1, next_index 7 
 +01:16:54:208579: l2-learn 
 +  l2-learn: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 
 +01:16:54:208579: l2-fwd 
 +  l2-fwd:   sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 result [0xb180000000007, 7] none 
 +01:16:54:208580: error-drop 
 +  rx:GigabitEtherneta/0/
 +01:16:54:208580: drop 
 +  l2-fwd: Reflection Drop 
 + 
 +Packet 17 
 + 
 +01:16:54:209266: dpdk-input 
 +  GigabitEtherneta/0/0 rx queue 0 
 +  buffer 0x2b73df: current data 0, length 138, buffer-pool 0, ref-count 1, trace handle 0x1000010 
 +                   ext-hdr-valid 
 +  PKT MBUF: port 6, nb_segs 1, pkt_len 138 
 +    buf_len 9328, data_len 138, ol_flags 0x182, data_off 128, phys_addr 0xd39cf840 
 +    packet_type 0x111 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
 +    rss 0x49de519a fdir.hi 0x0 fdir.lo 0x49de519a 
 +    Packet Offload Flags 
 +      PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid 
 +      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid 
 +      PKT_RX_RSS_HASH (0x0002) RX packet with RSS hash result 
 +    Packet Types 
 +      RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet 
 +      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers 
 +      RTE_PTYPE_L4_TCP (0x0100) TCP packet 
 +  IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 
 +  TCP: 46.138.254.34 -> 194.135.68.242 
 +    tos 0x00, ttl 122, length 120, checksum 0x61c7 dscp CS0 ecn NON_ECN 
 +    fragment id 0x6a92, flags DONT_FRAGMENT 
 +  TCP: 58270 -> 873 
 +    seq. 0x358e7882 ack 0x1e2c6d5b 
 +    flags 0x18 PSH ACK, tcp header: 20 bytes 
 +    window 2052, checksum 0x0bae 
 + 
 +01:16:54:209267: ethernet-input 
 +  frame: flags 0x3, hw-if-index 7, sw-if-index 7 
 +  IP4: 6c:9c:ed:7f:d3:48 -> 00:90:0b:63:26:f3 802.1q vlan 480 
 +01:16:54:209268: l2-input 
 +  l2-input: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 [l2-input-feat-arc l2-learn l2-fwd l2-flood l2-flood ] 
 +01:16:54:209268: l2-input-feat-arc 
 +  IN-FEAT-ARC: head 1 feature_bitmap 82a5 ethertype 800 sw_if_index 7, next_index 15 
 +01:16:54:209268: acl-plugin-in-ip4-l2 
 +  acl-plugin: lc_index: 0, sw_if_index 7, next index 1, action: 1, match: acl 0 rule 0 trace_bits 00000000 
 +  ct session_index -1 thread_index 65535 error NONE  pkt info 0000000000000000 0000000000000000 0000000000000000 f24487c222fe8a2e 000701060369e39e 0318ffff00000000 
 +   lc_index 0 l3 ip4 46.138.254.34 -> 194.135.68.242 l4 lsb_of_sw_if_index 7 proto 6 l4_is_input 1 l4_slow_path 0 l4_flags 0x01 port 58270 -> 873 tcp flags (valid) 18 rsvd 0 
 +01:16:54:209279: l2-input-feat-arc-end 
 +  IN-FEAT-ARC: head 0 feature_bitmap 2a5 ethertype 0 sw_if_index -1, next_index 7 
 +01:16:54:209280: l2-learn 
 +  l2-learn: sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 
 +01:16:54:209280: l2-fwd 
 +  l2-fwd:   sw_if_index 7 dst 00:90:0b:63:26:f3 src 6c:9c:ed:7f:d3:48 bd_index 1 result [0xb180000000007, 7] none 
 +01:16:54:209280: error-drop 
 +  rx:GigabitEtherneta/0/
 +01:16:54:209280: drop 
 +  l2-fwd: Reflection Drop 
 +</code> 
 + 
 +Данный механизм использует буфер для сохранения результатов работы. Чтобы очистить буфер от старых данных и начать новый захват необходимо выполнить команду "**clear trace**"
 + 
 +Для сохранения данных в текстовом формате, необходимо вернуть на уровень управления "**control-plane**" с помощью сочетания клавиш "**ctrl+c**" и выполнить команду "**vppctl show trace max 1000 > /media/storage/trace.log**". Результаты выполнения команды будут сохранены в файл "trace.log" в папке назначения "/media/storage/". Название файла и директорию назначения можно задать самостоятельно. 
 + 
 +</WRAP> 
 + 
 +==== Режим захвате Pcap==== 
 + 
 +<WRAP indent> 
 + 
 +Для захвата сетевого трафик на сетевом интерфейсе необходимо подключиться подключиться к устройству по протоколу ssh. Далее необходимо перейти в режим конфигурации на уровне “**data plane**” с помощью команды “**vppctl**”. 
 + 
 +Необходимо выбрать один из сетевых интерфейсов, на котором требуется осуществить захват сетевого трафика. Перечень доступных сетевых интерфейсов на устройстве можно посмотреть либо через web интерфейс в разделе "Статус - Сетевые интерфейсы", либо в режиме конфигурации на уровне “**data plane**” с помощью команды "**sh interface**"
 + 
 +Для захвата сетевого трафика необходимо использовать команду "**pcap trace [rx/tx] [on/off] [max_packet_count <nn>] [intfc <interface>|any] [file <name>]**"
 + 
 +  *** rx/tx** - направление сетевого трафика, который необходимо захватить; 
 +  *** on/off** - включить или выключить механизм захвата сетевого трафика; 
 +  *** max_packet_count** - количество сетевых пакетов, которые необходимо захватить; 
 +  *** intfc** - сетевой интерфейс, на котором необходимо осуществить захват сетевого трафика; 
 +  *** file** - имя файла, в который будут сохранены результаты в формате pcap. 
 + 
 +В примере ниже осуществим захват 1000 пакетов на интерфейсе GigabitEtherneta/0/0 для направления rx. В процессе выполнения захвата сетевого трафика, есть возможность уточнить текущий статус с помощью команды "**pcap trace status**". Результаты выполнения сохраняются в директории "/tmp/"
 + 
 +<code> 
 +# vppctl 
 +vpp# pcap trace rx max 1000 intfc GigabitEtherneta/0/0 file trace.pcap 
 + 
 +vpp# pcap trace status 
 +pcap rx dispatch capture enabled: 1000 of 1000 pkts... 
 +capture to file /tmp/trace.pcap 
 +</code> 
 + 
 +Для изменения параметров захвата необходимо остановить процесс с помощью команды "**pcap trace off**", после чего внести изменения и запустить механизм заново. 
 + 
 +<code> 
 +vpp# pcap trace rx max 1000 intfc GigabitEthernet4/0/0 file trace_2.pcap 
 +vpp# 
 +vpp# pcap trace status 
 +pcap rx dispatch capture enabled: 138 of 1000 pkts... 
 +capture to file /tmp/trace_2.pcap 
 +vpp# 
 +vpp# pcap trace rx off 
 +pcap trace: 138 of 1000 pkts captured... 
 +</code> 
 + 
 + 
 +</WRAP> 
 + 
 + 
 + 
  
  
 [[tssltd:мксз_diamond_next|Вернуться к оглавлению]] [[tssltd:мксз_diamond_next|Вернуться к оглавлению]]
 +
 +
tssltd/захват_сетевого_трафика_в_формате_pcap.1736848913.txt.gz · Last modified: 2025/01/14 13:01 by i.sharapov

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki