Alexander Afanasyev | 357c205 | 2015-08-10 21:26:52 -0700 | [diff] [blame] | 1 | Testing Instructions |
| 2 | ==================== |
| 3 | |
| 4 | This folder contains several crafted tcpdump traces that can be used to manually check |
| 5 | correctness of NDN Packet Dissector for Wireshark in several scenarios. |
| 6 | |
| 7 | To 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 |
| 11 | WireShark. 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 | |
| 19 | Trace file: `ipv4-udp-fragmented.pcap` |
| 20 | |
| 21 | Trace summary: several IPv4 UDP packets, carrying NDN interests and data packets. One |
| 22 | datagram is fragmented into several IPv4 packets. |
| 23 | |
| 24 | Expected 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. |
Alexander Afanasyev | 4fb67ea | 2018-08-02 08:18:28 -0600 | [diff] [blame] | 28 | - In packet 1, the "Info" column of Wireshark shows: `Interest /ndn/broadcast/ndnrtc-chatrooms/2366d310b15ba97a62c8734d4a760174f78d14446be3d70a54ee80d3ed19c83b` |
| 29 | - In packet 7, the "Info" column of Wireshark shows: `Data /example/testApp/1/testApp/%FD%00%00%01O%23E%07%ED` |
Alexander Afanasyev | 357c205 | 2015-08-10 21:26:52 -0700 | [diff] [blame] | 30 | |
| 31 | ### 2. IPv6 UDP |
| 32 | |
| 33 | Trace file: `ipv6-udp-fragmented.pcap` |
| 34 | |
| 35 | Trace summary: several IPv6 UDP packets, carrying NDN interests and data packets. One |
| 36 | datagram is fragmented into several IPv6 packets. |
| 37 | |
| 38 | Expected result of the dissection: |
| 39 | |
| 40 | - NDN interests are dissected from packets 1, and 2. |
| 41 | - NDN data packet is dissected from defragmented packets 3, 4, 5, and 6. |
| 42 | |
| 43 | ### 3. IPv4 TCP |
| 44 | |
| 45 | #### 3.1. De-segmentation and dissection |
| 46 | |
| 47 | Trace file: `ipv4-tcp-segmented.pcap` |
| 48 | |
| 49 | Trace summary: several IPv4 TCP packets, carrying NDN interest and a data packets. The data |
| 50 | packet spans several TCP segments. |
| 51 | |
| 52 | Expected result of the dissection: |
| 53 | - interest packet is properly dissected from packet 2. |
| 54 | - data packet is properly dissected after de-segmentation of payloads in packets 4, 5, 6, and 7. |
| 55 | |
| 56 | #### 3.2. Dissection of TCP segments containing multiple NDN packets |
| 57 | |
| 58 | Trace file: `ipv4-tcp-multi-ndn-packets-in-segment.pcap` |
| 59 | |
| 60 | Trace summary: Several IPv4 TCP packets, payload of one containing several NDN interests. |
| 61 | |
| 62 | Expected result of the dissection: |
| 63 | - a single interest packet is dissected from packet 1. |
| 64 | - four interest packets are dissected from packet 3. |
| 65 | |
| 66 | ### 4. IPv6 TCP |
| 67 | |
| 68 | Trace file: `ipv6-tcp-segmented.pcap` |
| 69 | |
| 70 | Trace summary: several IPv6 TCP packets, carrying an NDN data packet that spans several |
| 71 | TCP segments. |
| 72 | |
| 73 | Expected result of the dissection: |
| 74 | - data packet is properly dissected after de-segmentation of payloads in packets 2, 3, 4, and 5. |
| 75 | |
| 76 | ### 5. IPv4 TCP/WebSocket |
| 77 | |
| 78 | Trace file: `ipv4-websocket-segmented.pcap` |
| 79 | |
| 80 | Trace summary: Partial capture of a live IPv4 WebSocket session with a single NDN interest |
| 81 | retrieving large (~5k) NDN data packet. |
| 82 | |
| 83 | Expected result of the dissection: |
| 84 | - interest packet is dissected after a partial reconstruction of WebSocket session at |
| 85 | packet 16. |
| 86 | - data packet is properly dissected after a partial reconstruction of WebSocket |
| 87 | conversation at packet 22. |
| 88 | |
| 89 | ### 6. IPv6 TCP/WebSocket |
| 90 | |
| 91 | Trace file: `ipv6-websocket-segmented.pcap` |
| 92 | |
| 93 | Trace summary: Partial capture of a live IPv6 WebSocket session with a single NDN interest |
| 94 | retrieving large (~5k) NDN data packet. |
| 95 | |
| 96 | Expected result of the dissection: |
| 97 | - interest packet is dissected after a partial reconstruction of WebSocket session at |
| 98 | packet 6. |
| 99 | - data packet is properly dissected after a partial reconstruction of WebSocket |
| 100 | conversation at packet 12. |
Alexander Afanasyev | 7f43c53 | 2015-08-12 15:28:51 -0700 | [diff] [blame] | 101 | |
| 102 | ### 7. Ethernet |
| 103 | |
| 104 | Trace file: `ethernet.pcap` |
| 105 | |
| 106 | Trace summary: Short capture, containing an NDN interest multicasted directly in Ethernet frame. |
| 107 | |
| 108 | Expected result of the dissection: |
| 109 | - interest packet is dissected from packet 6. |
Junxiao Shi | e65c6d7 | 2016-07-24 21:53:19 +0000 | [diff] [blame] | 110 | |
| 111 | ### 8. tvb Overflow |
| 112 | |
| 113 | Trace file: `bug3603.pcap` |
| 114 | |
| 115 | Trace summary: A Data whose payload could be read as incomplete TLV and may cause tvb overflow |
| 116 | if parser does not check packet length. |
| 117 | |
| 118 | Expected result of the dissection: |
| 119 | - data packet is dissected at packet 12 without Lua error. |
Zipeng Wang | 574eeb0 | 2016-10-05 21:46:02 -0700 | [diff] [blame] | 120 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 121 | ### 9. NDNLPv2 |
Zipeng Wang | 574eeb0 | 2016-10-05 21:46:02 -0700 | [diff] [blame] | 122 | |
| 123 | Trace file: `ndnlpv2.pcap` |
| 124 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 125 | Trace summary: Handcrafted NDNLPv2 packets. |
| 126 | (`xxd -p -r < ndnlpv2.hex > ndnlpv2.pcap`). |
Zipeng Wang | 574eeb0 | 2016-10-05 21:46:02 -0700 | [diff] [blame] | 127 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 128 | Expected result of the dissection: 12 "Ethernet (NDN)" frames. |
| 129 | 1. LpPacket contains 12 unrecognized fields. The 10th and 12th fields are labelled "ignored". |
| 130 | 2. No special requirements. |
| 131 | 3. "Sequence: 12732154106453800448". "FragIndex: 0". "FragCount: 2". Fragment exists. |
| 132 | 4. "Sequence: 12732154106453800449". "FragIndex: 1". "FragCount: 2". Fragment exists. |
Alexander Afanasyev | 4fb67ea | 2018-08-02 08:18:28 -0600 | [diff] [blame] | 133 | 5. "NackReason: Congestion". The "Info" column shows "Nack /A". |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 134 | 6. "NackReason: Duplicate". |
| 135 | 7. "NackReason: NoRoute". |
| 136 | 8. "NackReason: 1". |
| 137 | 9. Nack exists, but NackReason does not exist. |
| 138 | 10. "PitToken: 15047039637272254167". |
| 139 | 11. "CongestionMark: 1". "TxSequence: 16204482402681480935". |
| 140 | 12. There are eight Ack fields. First is "Ack: 16204482402681480704". Eighth is "Ack: 16204482402681480711". |
Zipeng Wang | 574eeb0 | 2016-10-05 21:46:02 -0700 | [diff] [blame] | 141 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 142 | ### 10. NDNLPv2 (random) |
Zipeng Wang | 574eeb0 | 2016-10-05 21:46:02 -0700 | [diff] [blame] | 143 | |
| 144 | Trace file: `ndnlpv2-more.pcap` |
| 145 | |
| 146 | Trace summary: Short capture of randomly generated NDNLPv2 packets (see |
| 147 | https://gist.github.com/cawka/fcdde58cc4dc94d789025ab8300076dc) with multiple fields set to various |
| 148 | values. Given the random generation, some fields are semantically meaningless. |
| 149 | |
| 150 | Expected results of the dissection: |
| 151 | - 10 NDN (NDNLPv2) packets extracted from the reassembled TCP stream |
| 152 | - the dissection results include Fragment (Interest/Data), Sequence (number), FragIndex (number), |
| 153 | FragCount (number), Nack (various reasons), NextHopFaceId, IncomingFaceId, CachingPolicy, and |
| 154 | unknown fields |
Junxiao Shi | ac4b546 | 2018-04-17 02:26:17 +0000 | [diff] [blame] | 155 | |
| 156 | ### 11. NDN Packet Format v0.3 |
| 157 | |
| 158 | Trace file: `packet03.pcap` |
| 159 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 160 | Trace summary: Handcrafted packets in NDN Packet Format v0.3 |
Junxiao Shi | ac4b546 | 2018-04-17 02:26:17 +0000 | [diff] [blame] | 161 | (`xxd -p -r < packet03.hex > packet03.pcap`). |
| 162 | All packets are valid and do not contain unrecognized TLV elements. |
| 163 | |
| 164 | Expected results of the dissection: |
Davide Pesavento | 84eb487 | 2021-11-27 23:01:04 -0500 | [diff] [blame] | 165 | - Packet 1 is recognized as "Interest" and contains `CanBePrefix: Yes`, `MustBeFresh: Yes`, |
| 166 | `HopLimit: 214`, as well as a "ForwardingHint" and an "ApplicationParameters" field. |
| 167 | - Packet 2 is recognized as "Interest" and has `Name: /params-sha256=41/7=B/C/252=D/256=E/65535=E/sha256digest=ee357c5791dcaa4494d9b301047b875d8833caa76dada3e95837bbc3eaf7b300`. |
| 168 | - Packet 3 is recognized as "Data" and has `Name: /`. |
Junxiao Shi | c687af6 | 2018-05-06 21:58:09 +0000 | [diff] [blame] | 169 | |
| 170 | ### 12. URI Scheme |
| 171 | |
| 172 | Trace file: `nameuri.pcap` |
| 173 | |
Junxiao Shi | 89db73c | 2018-05-27 15:22:49 +0000 | [diff] [blame] | 174 | Trace summary: Handcrafted packet for testing URI encoding in Name and FinalBlockId |
Junxiao Shi | c687af6 | 2018-05-06 21:58:09 +0000 | [diff] [blame] | 175 | (`xxd -p -r < nameuri.hex > nameuri.pcap`). |
| 176 | |
| 177 | Expected results of the dissection: |
Davide Pesavento | 84eb487 | 2021-11-27 23:01:04 -0500 | [diff] [blame] | 178 | - Packet 1 is recognized as "Data". |
Junxiao Shi | c687af6 | 2018-05-06 21:58:09 +0000 | [diff] [blame] | 179 | - Its name has eight components. |
| 180 | - First name component is `NameComponent: ...`. |
| 181 | - Second name component is `NameComponent: ....`. |
| 182 | - Third name component is `NameComponent: .....`. |
| 183 | - Fourth name component is `NameComponent: .A`. |
| 184 | - 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`. |
| 185 | Notice that digits, HYPHEN (`-`), and PERIOD (`.`) are not percent-encoded. |
| 186 | - Sixth name component is `NameComponent: %40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F`. |
| 187 | Notice that upper case letters, lower case letters, UNDERSCORE (`_`), and TILDE (`~`) are not percent-encoded. |
| 188 | - 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`. |
| 189 | - 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`. |
| 190 | - FinalBlockId and its nested NameComponent are both `%02`. |
Alexander Afanasyev | 4fb67ea | 2018-08-02 08:18:28 -0600 | [diff] [blame] | 191 | |
| 192 | ### 13. PPP |
| 193 | |
| 194 | Trace file: `ppp.pcap` |
| 195 | |
| 196 | Trace summary: 8 packets created in a simple ndnSIM scenario |
| 197 | |
| 198 | Expected results of the dissection: |
| 199 | - 4 interests (packets 1, 2, 5, 6), each carried in an LpPacket fragment |
| 200 | - 4 data packets (packets 3, 4, 7, 8), also each carried in an LpPacket fragment |