blob: cf43e611ae24a760d70740b28370f590091ba797 [file] [log] [blame] [view]
Alexander Afanasyev357c2052015-08-10 21:26:52 -07001Testing Instructions
2====================
3
4This folder contains several crafted tcpdump traces that can be used to manually check
5correctness of NDN Packet Dissector for Wireshark in several scenarios.
6
7To use the dissector, follow the instructions in
8[dissector's README.md](../../tools/dissect-wireshark/README.md).
9
10`-r <trace-file>` command-line flag can be used to directly open a specific trace file in
11WireShark. For example:
12
13 wireshark -X lua_script:../../tools/dissect-wireshark/ndn.lua -r ipv4-udp-fragmented.pcap
14
15## Test Cases / Trace File Description
16
17### 1. IPv4 UDP
18
19Trace file: `ipv4-udp-fragmented.pcap`
20
21Trace summary: several IPv4 UDP packets, carrying NDN interests and data packets. One
22datagram is fragmented into several IPv4 packets.
23
24Expected result of the dissection:
25
26- NDN interests are dissected from packets 1, 2, 3, and 8.
27- NDN data packet is dissected from defragmented packets 4, 5, 6, and 7.
28
29### 2. IPv6 UDP
30
31Trace file: `ipv6-udp-fragmented.pcap`
32
33Trace summary: several IPv6 UDP packets, carrying NDN interests and data packets. One
34datagram is fragmented into several IPv6 packets.
35
36Expected result of the dissection:
37
38- NDN interests are dissected from packets 1, and 2.
39- NDN data packet is dissected from defragmented packets 3, 4, 5, and 6.
40
41### 3. IPv4 TCP
42
43#### 3.1. De-segmentation and dissection
44
45 Trace file: `ipv4-tcp-segmented.pcap`
46
47 Trace summary: several IPv4 TCP packets, carrying NDN interest and a data packets. The data
48 packet spans several TCP segments.
49
50 Expected result of the dissection:
51 - interest packet is properly dissected from packet 2.
52 - data packet is properly dissected after de-segmentation of payloads in packets 4, 5, 6, and 7.
53
54#### 3.2. Dissection of TCP segments containing multiple NDN packets
55
56 Trace file: `ipv4-tcp-multi-ndn-packets-in-segment.pcap`
57
58 Trace summary: Several IPv4 TCP packets, payload of one containing several NDN interests.
59
60 Expected result of the dissection:
61 - a single interest packet is dissected from packet 1.
62 - four interest packets are dissected from packet 3.
63
64### 4. IPv6 TCP
65
66Trace file: `ipv6-tcp-segmented.pcap`
67
68Trace summary: several IPv6 TCP packets, carrying an NDN data packet that spans several
69TCP segments.
70
71Expected result of the dissection:
72- data packet is properly dissected after de-segmentation of payloads in packets 2, 3, 4, and 5.
73
74### 5. IPv4 TCP/WebSocket
75
76Trace file: `ipv4-websocket-segmented.pcap`
77
78Trace summary: Partial capture of a live IPv4 WebSocket session with a single NDN interest
79retrieving large (~5k) NDN data packet.
80
81Expected result of the dissection:
82- interest packet is dissected after a partial reconstruction of WebSocket session at
83 packet 16.
84- data packet is properly dissected after a partial reconstruction of WebSocket
85 conversation at packet 22.
86
87### 6. IPv6 TCP/WebSocket
88
89Trace file: `ipv6-websocket-segmented.pcap`
90
91Trace summary: Partial capture of a live IPv6 WebSocket session with a single NDN interest
92retrieving large (~5k) NDN data packet.
93
94Expected result of the dissection:
95- interest packet is dissected after a partial reconstruction of WebSocket session at
96 packet 6.
97- data packet is properly dissected after a partial reconstruction of WebSocket
98 conversation at packet 12.
Alexander Afanasyev7f43c532015-08-12 15:28:51 -070099
100### 7. Ethernet
101
102Trace file: `ethernet.pcap`
103
104Trace summary: Short capture, containing an NDN interest multicasted directly in Ethernet frame.
105
106Expected result of the dissection:
107- interest packet is dissected from packet 6.
Junxiao Shie65c6d72016-07-24 21:53:19 +0000108
109### 8. tvb Overflow
110
111Trace file: `bug3603.pcap`
112
113Trace summary: A Data whose payload could be read as incomplete TLV and may cause tvb overflow
114if parser does not check packet length.
115
116Expected result of the dissection:
117- data packet is dissected at packet 12 without Lua error.
Zipeng Wang574eeb02016-10-05 21:46:02 -0700118
Junxiao Shi89db73c2018-05-27 15:22:49 +0000119### 9. NDNLPv2
Zipeng Wang574eeb02016-10-05 21:46:02 -0700120
121Trace file: `ndnlpv2.pcap`
122
Junxiao Shi89db73c2018-05-27 15:22:49 +0000123Trace summary: Handcrafted NDNLPv2 packets.
124(`xxd -p -r < ndnlpv2.hex > ndnlpv2.pcap`).
Zipeng Wang574eeb02016-10-05 21:46:02 -0700125
Junxiao Shi89db73c2018-05-27 15:22:49 +0000126Expected result of the dissection: 12 "Ethernet (NDN)" frames.
1271. LpPacket contains 12 unrecognized fields. The 10th and 12th fields are labelled "ignored".
1282. No special requirements.
1293. "Sequence: 12732154106453800448". "FragIndex: 0". "FragCount: 2". Fragment exists.
1304. "Sequence: 12732154106453800449". "FragIndex: 1". "FragCount: 2". Fragment exists.
1315. "NackReason: Congestion".
1326. "NackReason: Duplicate".
1337. "NackReason: NoRoute".
1348. "NackReason: 1".
1359. Nack exists, but NackReason does not exist.
13610. "PitToken: 15047039637272254167".
13711. "CongestionMark: 1". "TxSequence: 16204482402681480935".
13812. There are eight Ack fields. First is "Ack: 16204482402681480704". Eighth is "Ack: 16204482402681480711".
Zipeng Wang574eeb02016-10-05 21:46:02 -0700139
Junxiao Shi89db73c2018-05-27 15:22:49 +0000140### 10. NDNLPv2 (random)
Zipeng Wang574eeb02016-10-05 21:46:02 -0700141
142Trace file: `ndnlpv2-more.pcap`
143
144Trace summary: Short capture of randomly generated NDNLPv2 packets (see
145https://gist.github.com/cawka/fcdde58cc4dc94d789025ab8300076dc) with multiple fields set to various
146values. Given the random generation, some fields are semantically meaningless.
147
148Expected results of the dissection:
149- 10 NDN (NDNLPv2) packets extracted from the reassembled TCP stream
150- the dissection results include Fragment (Interest/Data), Sequence (number), FragIndex (number),
151 FragCount (number), Nack (various reasons), NextHopFaceId, IncomingFaceId, CachingPolicy, and
152 unknown fields
Junxiao Shiac4b5462018-04-17 02:26:17 +0000153
154### 11. NDN Packet Format v0.3
155
156Trace file: `packet03.pcap`
157
Junxiao Shi89db73c2018-05-27 15:22:49 +0000158Trace summary: Handcrafted packets in NDN Packet Format v0.3
Junxiao Shiac4b5462018-04-17 02:26:17 +0000159(`xxd -p -r < packet03.hex > packet03.pcap`).
160All packets are valid and do not contain unrecognized TLV elements.
161
162Expected results of the dissection:
Junxiao Shic687af62018-05-06 21:58:09 +0000163- Packet 1 is recognized as "Interest" type, and has `CanBePrefix: Yes`, `MustBeFresh: Yes`,
164 `HopLimit: 214`, as well as a "Parameters" field.
165- Packet 2 is recognized as "Interest" type, and has `Name: /2=A/7=B/C/252=D/256=E/65535=E/sha256digest=ee357c5791dcaa4494d9b301047b875d8833caa76dada3e95837bbc3eaf7b300`.
166- Packet 3 is recognized as "Data" type, and has `Name: /`.
167
168### 12. URI Scheme
169
170Trace file: `nameuri.pcap`
171
Junxiao Shi89db73c2018-05-27 15:22:49 +0000172Trace summary: Handcrafted packet for testing URI encoding in Name and FinalBlockId
Junxiao Shic687af62018-05-06 21:58:09 +0000173(`xxd -p -r < nameuri.hex > nameuri.pcap`).
174
175Expected results of the dissection:
176- Packet 1 is recognized as "Data" type.
177- Its name has eight components.
178- First name component is `NameComponent: ...`.
179- Second name component is `NameComponent: ....`.
180- Third name component is `NameComponent: .....`.
181- Fourth name component is `NameComponent: .A`.
182- Fifth name component is `NameComponent: %00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F`.
183 Notice that digits, HYPHEN (`-`), and PERIOD (`.`) are not percent-encoded.
184- Sixth name component is `NameComponent: %40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F`.
185 Notice that upper case letters, lower case letters, UNDERSCORE (`_`), and TILDE (`~`) are not percent-encoded.
186- Seventh name component is `NameComponent: %80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF`.
187- Eighth name component is `NameComponent: %C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF`.
188- FinalBlockId and its nested NameComponent are both `%02`.