Artem,

That seems to be a bug in the source address selection routine used by ND.
An NS should not be sent out an interface with an address from another 
interface.
In this case it should have sent the ND with the link-local address as source.

In IPv6, there is really no such thing as unnumbered. The unnumbered statement 
should just be a hint to the SAS algorithm to pick an address from that 
interface.

Best regards,
Ole


> On 17 Sep 2021, at 12:21, Artem Glazychev <artem.glazyc...@xored.com> wrote:
> 
> Hi Neale,
> 
> Thanks a lot, it really helped!
> 
> But I used:
> 
>     enable ip6 interface memif0/0
> 
> in addition to:
> 
>     set int unnumbered memif0/0 use loop0
> 
> Otherwise, ping from vpp2 to vpp1 doesn't work.
> 
> So, I moved on.
> 
> Next problem
> 
> If I use unnumbered IPv6 interface with a custom vrf table - ping doesn't 
> work.
> 
> Configuration:
> 
> vpp1:
> 
> create interface memif id 0 master
> set int ip address memif0/0 fc00::1/120
> set int state memif0/0 up
> 
> vpp2:
> create loopback interface
> create interface memif id 0 slave
> ip6 table add 1
> set int ip6 table loop0 1
> set int ip6 table memif0/0 1
> set int unnumbered memif0/0 use loop0
> enable ip6 interface memif0/0
> ip route add fc00::1/128 via memif0/0
> set int state memif0/0 up
> set int ip address loop0 fc00::2/120
> set int state loop0 up
> 
> trace add memif-input 10
> vpp1:  ping fc00::2
> 
> Traces:
> 
> Packet 1
> 
> 00:00:28:149948: memif-input
>   memif: hw_if_index 2 next-index 4
>     slot: ring 0
> 00:00:28:149959: ethernet-input
>   IP6: 02:fe:92:6a:0b:42 -> 33:33:00:00:00:01
> 00:00:28:149965: ip6-input
>   ICMP6: fe80::fe:92ff:fe6a:b42 -> ff02::1
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP router_advertisement checksum 0xd248
> 00:00:28:149969: ip6-mfib-forward-lookup
>   fib 0 entry 11
> 00:00:28:149973: ip6-mfib-forward-rpf
>   entry 11 itf 2 flags Accept,
> 00:00:28:149975: ip6-replicate
>   replicate: 8 via [@1]: dpo-receive
> 00:00:28:149979: ip6-local
>     fib:1 adj:8 flow:0
>   ICMP6: fe80::fe:92ff:fe6a:b42 -> ff02::1
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP router_advertisement checksum 0xd248
> 00:00:28:149985: ip6-icmp-input
>   ICMP6: fe80::fe:92ff:fe6a:b42 -> ff02::1
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP router_advertisement checksum 0xd248
> 00:00:28:149987: icmp6-router-advertisement
>   ICMP6: fe80::fe:92ff:fe6a:b42 -> ff02::1
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP router_advertisement checksum 0xd248
> 00:00:28:149993: ip6-drop
>     fib:1 adj:8 flow:0
>   ICMP6: fe80::fe:92ff:fe6a:b42 -> ff02::1
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP router_advertisement checksum 0xd248
> 00:00:28:149995: error-drop
>   rx:memif0/0
> 00:00:28:149999: drop
>   ip6-icmp-input: valid packets
> 
> Packet 2
> 
> 00:00:28:875034: memif-input
>   memif: hw_if_index 2 next-index 4
>     slot: ring 0
> 00:00:28:875040: ethernet-input
>   IP6: 02:fe:92:6a:0b:42 -> 33:33:ff:00:00:02
> 00:00:28:875047: ip6-input
>   ICMP6: fc00::1 -> ff02::1:ff00:2
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP neighbor_solicitation checksum 0xe0ed
>     target address fc00::2
> 00:00:28:875049: ip6-mfib-forward-lookup
>   fib 0 entry 9
> 00:00:28:875053: ip6-mfib-forward-rpf
>   entry 9 itf 2 flags Accept,
> 00:00:28:875059: ip6-replicate
>   replicate: 6 via [@1]: dpo-receive
> 00:00:28:875063: ip6-local
>     fib:1 adj:6 flow:0
>   ICMP6: fc00::1 -> ff02::1:ff00:2
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP neighbor_solicitation checksum 0xe0ed
>     target address fc00::2
> 00:00:28:875068: ip6-icmp-input
>   ICMP6: fc00::1 -> ff02::1:ff00:2
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP neighbor_solicitation checksum 0xe0ed
>     target address fc00::2
> 00:00:28:875071: icmp6-neighbor-solicitation
>   ICMP6: fc00::1 -> ff02::1:ff00:2
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP neighbor_solicitation checksum 0xe0ed
>     target address fc00::2
> 00:00:28:875076: ip6-drop
>     fib:1 adj:6 flow:0
>   ICMP6: fc00::1 -> ff02::1:ff00:2
>     tos 0x00, flow label 0x0, hop limit 255, payload length 32
>   ICMP neighbor_solicitation checksum 0xe0ed
>     target address fc00::2
> 00:00:28:875078: error-drop
>   rx:memif0/0
> 00:00:28:875079: drop
>   ip6-icmp-input: neighbor solicitations from source not on link
> We can see an error: neighbor solicitations from source not on link
> 
> Additionally, if it helps:
> 
> DBGvpp# show mfib entry
> FIB Entries:
> 0@(*, 0.0.0.0/0):  flags:Drop,
>   Interfaces:
>   multicast-ip4-chain
>   [@0]: dpo-drop ip4
> 1@(*, 224.0.0.1/32):
>   Interfaces:
>   multicast-ip4-chain
>   [@1]: dpo-replicate: [index:0 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 2@(*, 224.0.0.2/32):
>   Interfaces:
>   multicast-ip4-chain
>   [@1]: dpo-replicate: [index:1 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 3@(*, ::/0):  flags:Drop,
>   Interfaces:
>   multicast-ip6-chain
>   [@0]: dpo-drop ip6
> 4@(*, ff02::1:ff00:0/104):
>   Interfaces:
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:2 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 5@(*, ff02::2/128):
>   Interfaces:
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:3 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 6@(*, ff02::1/128):
>   Interfaces:
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:4 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 7@(*, ff02::16/128):
>   Interfaces:
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:5 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 8@(*, ::/0):  flags:Drop,
>   Interfaces:
>   multicast-ip6-chain
>   [@0]: dpo-drop ip6
> 9@(*, ff02::1:ff00:0/104):
>   Interfaces:
>    memif0/0: Accept,
>    loop0: Accept,
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:6 buckets:1 flags:[has-local ] to:[5:360]]
>     [0] [@1]: dpo-receive
> 10@(*, ff02::2/128):
>   Interfaces:
>    memif0/0: Accept,
>    loop0: Accept,
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:7 buckets:1 flags:[has-local ] to:[0:0]]
>     [0] [@1]: dpo-receive
> 11@(*, ff02::1/128):
>   Interfaces:
>    memif0/0: Accept,
>    loop0: Accept,
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:8 buckets:1 flags:[has-local ] to:[8:576]]
>     [0] [@1]: dpo-receive
> 12@(*, ff02::16/128):
>   Interfaces:
>    memif0/0: Accept,
>    loop0: Accept,
>   multicast-ip6-chain
>   [@1]: dpo-replicate: [index:9 buckets:1 flags:[has-local ] to:[1:136]]
>     [0] [@1]: dpo-receive
> Do you have any thoughts on this? Thank you
> 
> 
> 
> 
> 

Attachment: signature.asc
Description: Message signed with OpenPGP

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#20169): https://lists.fd.io/g/vpp-dev/message/20169
Mute This Topic: https://lists.fd.io/mt/85649127/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to