-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
10-icmpv6-error: Add ICMPv6 error message release specs
- Loading branch information
Showing
1 changed file
with
181 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
## Goal: Check single-hop ICMP connectivity over IPv6 | ||
|
||
*Note: This task requires to send some very specificly formated IPv6 packets. We | ||
recommend to use [scapy] for the construction of those packets in those tests.* | ||
|
||
Task #01 - Destination unreachable - no route to destination | ||
============================================================ | ||
### Description | ||
|
||
Solicit **Destination unreachable - no route to destination** by sending a UDP | ||
to a global address via a native node from a Linux host with global address. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* Sender Address: beef::1/64 (assigned to interface of Linux host, | ||
route to `beef::/64` configured on native node) | ||
* Destination Address: affe::1/64 (route configured on Linux host, but not | ||
on native node) | ||
|
||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 0 - no route to destination) message | ||
should be sent by the native node. | ||
|
||
Task #02 - Destination unreachable - Beyond scope of source address | ||
=================================================================== | ||
### Description | ||
|
||
Solicit **Destination unreachable - beyond scope of source address** by sending | ||
a UDP to a global address via a native node from a Linux host with link-local | ||
address. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* Sender Address: Link-local unicast (fe80::.../64) | ||
* Destination Address: affe::1 (not assigned to an interface of the native | ||
node) | ||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 2 - beyond scope of source address) | ||
message should be sent by the native node. | ||
|
||
Task #03 - Destination unreachable - address unreachable (target node address) | ||
============================================================================== | ||
### Description | ||
|
||
Solicit **Destination unreachable - address unreachable** by sending a UDP to an | ||
address not assigned to an interface of the native node from a Linux host. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* Sender Address: Link local unicast (fe80::.../64) | ||
* Destination Address: fe80::1 (not assigned to an interface of the native | ||
node) | ||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 3 - address unreachable) message should | ||
be sent by the native node. | ||
|
||
Task #04 - Destination unreachable - address unreachable (neighbor cache miss) | ||
============================================================================== | ||
### Description | ||
|
||
Solicit **Destination unreachable - address unreachable** by sending a UDP to a | ||
misconfigured route on the native node from a Linux host. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* Sender Address: beef::1/64 (assigned to interface of Linux host, | ||
route to `beef::/64` configured on native node) | ||
* Destination Address: affe::1/64 (route configured on Linux host and on native | ||
node, the latter to a non-existing neighbor) | ||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 3 - address unreachable) message should | ||
be sent by the native node. | ||
|
||
Task #05 - Destination unreachable - port unreachable | ||
===================================================== | ||
### Description | ||
|
||
Solicit **Destination unreachable - port unreachable** by sending a UDP to a | ||
native node from a Linux host. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* Sender Address: Link local unicast (fe80::.../64) | ||
* Destination Address: Link local unicast (fe80::.../64) | ||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 4 - port unreachable) message should be | ||
sent by the native node. | ||
|
||
Task #06 - Destination unreachable - port unreachable (large payload) | ||
===================================================================== | ||
### Description | ||
|
||
Solicit **Destination unreachable - port unreachable** by sending a UDP just | ||
fitting the MTU of the link to a native node from a Linux host. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 1452B | ||
* Sender Address: Link local unicast (fe80::.../64) | ||
* Destination Address: Link local unicast (fe80::.../64) | ||
|
||
|
||
### Result | ||
|
||
An ICMPv6 destination unreachable (code: 4 - port unreachable) message should be | ||
sent by the native node. The payload of the original packet carried in the | ||
ICMPv6 message should be truncated to fit the TAP interface's MTU. | ||
|
||
Task #07 - Packet too big | ||
========================= | ||
### Description | ||
|
||
Solicit **Packet too big** by sending a UDP just fitting the MTU of the first | ||
hop link but not the second hop link via a native node from a Linux host. | ||
* Stack configuration: 6LoWPAN border route(incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 1452B | ||
* Sender Address: beef::1/64 (assigned to interface of Linux host, | ||
route to `beef::/64` configured on native node) | ||
* Destination Address: affe::1/64 (route configured on Linux host and on native | ||
node) | ||
|
||
|
||
### Result | ||
|
||
An ICMPv6 packet to big (code: 0) message should be sent by the native node. | ||
The payload of the original packet carried in the ICMPv6 message should be | ||
truncated to fit the TAP interface's MTU. | ||
|
||
Task #08 - Time exceeded -- hop limit exceeded in transit | ||
========================================================= | ||
### Description | ||
|
||
Solicit **Time exceeded - hop limit exceeded in transit** by sending a UDP just | ||
fitting the MTU of the link to a native node from a Linux host. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* IPv6 hop limit: 1 | ||
* Sender Address: beef::1/64 (assigned to interface of Linux host, | ||
route to `beef::/64` configured on native node) | ||
* Destination Address: affe::1/64 (route configured on Linux host and on native | ||
node) | ||
|
||
|
||
### Result | ||
|
||
An ICMPv6 time exceeded (code: 0 - hop limit exceeded in transit) message should | ||
be sent by the native node. | ||
|
||
Task #09 - Parameter problem - erroneous header field encountered | ||
================================================================ | ||
### Description | ||
|
||
Solicit **Destination unreachable - erroneous header field encountered** by | ||
sending a UDP native node from a Linux host with the IPv6 payload length set to | ||
to large a value. | ||
* Stack configuration: IPv6 (incl. ICMPv6 error) | ||
* UDP Port: 48879 (no server on native node) | ||
* UDP Payload: 0B | ||
* IPv6 payload length: 20B | ||
* Sender Address: Link local unicast (fe80::.../64) | ||
* Destination Address: Link local unicast (fe80::.../64) | ||
|
||
|
||
### Result | ||
|
||
An ICMPv6 parameter problem (code: 0 - erroneous header field encountered) | ||
message should be sent by the native node. The pointer field of the error | ||
message should point to the IPv6 payload length field. | ||
|
||
[scapy]: https://scapy.readthedocs.io/en/latest/ |