Skip to content

Commit

Permalink
10-icmpv6-error: Add ICMPv6 error message release specs
Browse files Browse the repository at this point in the history
  • Loading branch information
miri64 committed Nov 23, 2018
1 parent 0aeda8b commit 9a19ab6
Showing 1 changed file with 181 additions and 0 deletions.
181 changes: 181 additions & 0 deletions 10-icmpv6-error/10-icmpv6-error.md
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/

0 comments on commit 9a19ab6

Please sign in to comment.