User Tools

Site Tools


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

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tssltd:захват_сетевого_трафика_в_формате_pcap [2025/01/14 13:24] i.sharapovtssltd:захват_сетевого_трафика_в_формате_pcap [2025/01/14 14:02] (current) i.sharapov
Line 22: Line 22:
 <code> <code>
 # vppctl # vppctl
-vpp# trace add dpdk-input 1000+vpp# trace add dpdk-input 1000       <----- 1000 Количество сетевых пакетов
 </code> </code>
  
-</WRAP>+Для просмотра результата необходимо выполнить команду "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/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/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==== ==== Режим захвате Pcap====
 +
 <WRAP indent> <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> </WRAP>
  
tssltd/захват_сетевого_трафика_в_формате_pcap.1736850272.txt.gz · Last modified: 2025/01/14 13:24 by i.sharapov

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki