[riot-notifications] [RIOT-OS/RIOT] All but first ping to downstream interface fail (#16547)

benpicco notifications at github.com
Sun Jun 13 16:05:49 CEST 2021


#### Description

Consider a device with two Ethernet-type interfaces: I used a `same54-xpro` with it's native Ethernet interface and an `ethos` interface on UART1.

The Ethernet uplink receives it's address via router advertisements whereas the ethos downlink is assigned a prefix via DHCPv6 (requires #16530).

#### Steps to reproduce the issue

This is with `examples/gnrc_networking`, the following modifications were made:

```make
USEMODULE += ethos
CFLAGS += -DETHOS_UART=UART_DEV\(1\)
CFLAGS += -DETHOS_BAUDRATE=115200

USEMODULE += gnrc_dhcpv6_client_6lbr
CFLAGS += -DCONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM=6
```

The automatic configuration of the interfaces is succesful:

```
2021-06-13 16:01:34,086 # Iface  6  HWaddr: A6:ED:29:EC:CB:F3 
2021-06-13 16:01:34,090 #           L2-PDU:1500  MTU:1492  HL:255  RTR  
2021-06-13 16:01:34,093 #           Source address length: 6
2021-06-13 16:01:34,095 #           Link type: wired
2021-06-13 16:01:34,101 #           inet6 addr: fe80::a4ed:29ff:feec:cbf3  scope: link  VAL
2021-06-13 16:01:34,108 #           inet6 addr: 2001:16b8:45e6:a700:a4ed:29ff:feec:cbf3  scope: global  VAL
2021-06-13 16:01:34,111 #           inet6 group: ff02::2
2021-06-13 16:01:34,114 #           inet6 group: ff02::1
2021-06-13 16:01:34,117 #           inet6 group: ff02::1:ffec:cbf3
2021-06-13 16:01:34,118 #           
2021-06-13 16:01:34,121 #           Statistics for Layer 2
2021-06-13 16:01:34,125 #             RX packets 2369  bytes 403300
2021-06-13 16:01:34,130 #             TX packets 32 (Multicast: 27)  bytes 8514
2021-06-13 16:01:34,133 #             TX succeeded 32 errors 0
2021-06-13 16:01:34,135 #           Statistics for IPv6
2021-06-13 16:01:34,139 #             RX packets 115  bytes 31178
2021-06-13 16:01:34,144 #             TX packets 32 (Multicast: 27)  bytes 8066
2021-06-13 16:01:34,147 #             TX succeeded 32 errors 0
2021-06-13 16:01:34,147 # 
2021-06-13 16:01:34,150 # Iface  5  HWaddr: A6:ED:29:EC:D4:F3 
2021-06-13 16:01:34,155 #           L2-PDU:1500  MTU:1500  HL:64  RTR  
2021-06-13 16:01:34,156 #           RTR_ADV  
2021-06-13 16:01:34,159 #           Source address length: 6
2021-06-13 16:01:34,162 #           Link type: wired
2021-06-13 16:01:34,167 #           inet6 addr: fe80::a4ed:29ff:feec:d4f3  scope: link  VAL
2021-06-13 16:01:34,175 #           inet6 addr: 2001:16b8:45e6:a7f4:a4ed:29ff:feec:d4f3  scope: global  VAL
2021-06-13 16:01:34,177 #           inet6 group: ff02::2
2021-06-13 16:01:34,180 #           inet6 group: ff02::1
2021-06-13 16:01:34,184 #           inet6 group: ff02::1:ffec:d4f3
2021-06-13 16:01:34,186 #           inet6 group: ff02::1a
2021-06-13 16:01:34,187 #           
2021-06-13 16:01:34,190 #           Statistics for Layer 2
2021-06-13 16:01:34,193 #             RX packets 1  bytes 227
2021-06-13 16:01:34,198 #             TX packets 38 (Multicast: 38)  bytes 9442
2021-06-13 16:01:34,201 #             TX succeeded 0 errors 0
2021-06-13 16:01:34,204 #           Statistics for IPv6
2021-06-13 16:01:34,207 #             RX packets 0  bytes 0
2021-06-13 16:01:34,212 #             TX packets 38 (Multicast: 38)  bytes 8910
2021-06-13 16:01:34,215 #             TX succeeded 38 errors 0
2021-06-13 16:01:34,215 # 

2021-06-13 16:01:40,027 # nib prefix
2021-06-13 16:01:40,033 # 2001:16b8:45e6:a7f4::/62 dev #5  expires 6644 sec deprecates 3044 sec
2021-06-13 16:01:40,039 # 2001:16b8:45e6:a700::/64 dev #6  expires 7175 sec deprecates 3575 sec

2021-06-13 16:01:41,426 # nib route
2021-06-13 16:01:41,429 # 2001:16b8:45e6:a7f4::/62 dev #5
2021-06-13 16:01:41,432 # 2001:16b8:45e6:a700::/64 dev #6
2021-06-13 16:01:41,436 # default via fe80::de39:6fff:fe6a:6980 dev #6
```

Now the *downlink* interface (`#5`) is pinged via

    ping -c1 2001:16b8:45e6:a7f4:a4ed:29ff:feec:d4f3

from 

```
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 14:da:e9:4c:6b:2e brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.42.105/24 brd 192.168.42.255 scope global dynamic noprefixroute eno1
       valid_lft 851527sec preferred_lft 851527sec
    inet6 2001:16b8:45e6:a700:8794:ff0b:1337:ec98/64 scope global temporary dynamic 
       valid_lft 7045sec preferred_lft 3445sec
    inet6 2001:16b8:45e6:a700:fffd:fa5f:79db:de5e/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 7045sec preferred_lft 3445sec
    inet6 fe80::fe08:c033:940c:7e79/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
```

#### Expected results

The ping always gets a reply.

#### Actual results

The first ping request gets a reply:

```
 nib: get next hop link-layer address of 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%5
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 5)
   No suitable entry found
 nib: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 is on-link or in NC, start address resolution
 nib: resolve address 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 by probing neighbors
 nib: Allocating on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   using 0
 nib: Adding to neighbor cache (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
 nib: queueing (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6) for potential removal
 nib: Probing nib: lookup ctx = 0x200019f0, type = 4fc1
 multicast to 2001:16b8:45e6:a700:8794:ff0b:1337:ec98's solicited nodes (retrans. timer = 1000ms)
 nib: host unreachable
 nib: Handle packet (icmpv6->type = 136)
 nib: Received valid neighbor advertisement:
      - Target address: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98
      - Source address: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98
      - Destination address: 2001:16b8:45e6:a700:a4ed:29ff:feec:cbf3
      - Flags: -SO
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   Found 0x200019f0
 nib: Set 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6 to REACHABLE for 41017ms
 nib: Sending queued packets
 nib: get next hop link-layer address of 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   Found 0x200019f0
 nib: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 is on-link or in NC, start address resolution
 nib: resolve address 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6 from neighbor cache
```

The second and any subsequent ping request gets **no** reply

```
 nib: get next hop link-layer address of 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%5
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 5)
   No suitable entry found
 nib: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 is on-link or in NC, start address resolution
 nib: resolve address 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 by probing neighbors
 nib: Allocating on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   0x200019f0 is an exact match
 nib: Adding to neighbor cache (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
 nib: Probing nib: unicast to 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 (retrans. timer = 1000ms)
 nib: host unreachable
 nib: get next hop link-layer address of 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   Found 0x200019f0
 nib: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98 is on-link or in NC, start address resolution
 nib: resolve address 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6 from neighbor cache
 nib: Handle packet (icmpv6->type = 136)
 nib: Received valid neighbor advertisement:
      - Target address: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98
      - Source address: 2001:16b8:45e6:a700:8794:ff0b:1337:ec98
      - Destination address: 2001:16b8:45e6:a700:a4ed:29ff:feec:cbf3
      - Flags: -S-
 nib: Getting on-link node entry (addr = 2001:16b8:45e6:a700:8794:ff0b:1337:ec98, iface = 6)
   Found 0x200019f0
 nib: Set 2001:16b8:45e6:a700:8794:ff0b:1337:ec98%6 to REACHABLE for 41017ms
 nib: Handle packet (icmpv6->type = 135)
 nib: Received valid neighbor solicitation:
      - Target address: 2001:16b8:45e6:a700:a4ed:29ff:feec:cbf3
      - Source address: fe80::fe08:c033:940c:7e79
      - Destination address: 2001:16b8:45e6:a700:a4ed:29ff:feec:cbf3
 nib: Getting on-link node entry (addr = fe80::fe08:c033:940c:7e79, iface = 6)
   No suitable entry found
 nib: Creating NCE for (ipv6 = fe80::fe08:c033:940c:7e79, iface = 6, nud_state = STALE)
 nib: Allocating on-link node entry (addr = fe80::fe08:c033:940c:7e79, iface = 6)
   using 0
 nib: Adding to neighbor cache (addr = fe80::fe08:c033:940c:7e79, iface = 6)
 nib: queueing (addr = fe80::fe08:c033:940c:7e79, iface = 6) for potential removal
 nib: get next hop link-layer address of fe80::fe08:c033:940c:7e79%6
 nib: Getting on-link node entry (addr = fe80::fe08:c033:940c:7e79, iface = 6)
   Found 0x20001a48
 nib: fe80::fe08:c033:940c:7e79 is on-link or in NC, start address resolution
 nib: resolve address fe80::fe08:c033:940c:7e79%6 from neighbor cache
```

#### Versions
<!--
Operating system: Mac OSX, Linux, Vagrant VM
Build environment: GCC, CLang versions (you can run the following command from
the RIOT base directory: make print-versions).
-->

<!-- Thanks for contributing! -->


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/RIOT-OS/RIOT/issues/16547
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/notifications/attachments/20210613/8b6a7e5b/attachment.htm>


More information about the notifications mailing list