Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jul 2024 00:09:51 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        Santiago Martinez <sm@codenetworks.net>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: Multiple Fibs and INET6
Message-ID:  <F7B1F9E1-30E0-4BC2-84F8-697A655A2C44@FreeBSD.org>
In-Reply-To: <da781b66-4ab3-426f-bf56-f453030c6e61@codenetworks.net>
References:  <da781b66-4ab3-426f-bf56-f453030c6e61@codenetworks.net>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]


> On Jul 13, 2024, at 1:06 AM, Santiago Martinez <sm@codenetworks.net> wrote:
> 
> Hi Everyone.
> 
> While adding -F ( fib as used in netstat ) to ping and ping6 I have found something that from my understanding is not correct.
> Please can you advise?
> I have the following setup :
> 
> -- two fibs (0 and 1) 
> -- two  loop-backs (lo0 and lo1).
> -- Lo1 has been assigned to fib1
> -- net.add_addr_allfibs = 0
> My interface output looks like this:
> 
> 
> ifconfig lo0 | grep inet6 
>        inet6 ::1 prefixlen 128 
>        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
> 
> ifconfig lo1 | grep inet6 
>        inet6 fe80::1%lo1 prefixlen 64 scopeid 0x3
> 
> 
> If I do a netstat -rn -6  -F0 I get the following which is was i expected.
> 
> Internet6: 
> Destination                       Gateway                       Flags     Netif Expire 
> ::/96                             link#2                        URS         lo0 
> ::1                               link#2                        UHS         lo0 
> ::ffff:0.0.0.0/96                 link#2                        URS         lo0 
> fe80::%lo0/10                     link#2                        URS         lo0 
> fe80::%lo0/64                     link#2                        U           lo0 
> fe80::1%lo0                       link#2                        UHS         lo0 
> ff02::/16                         link#2                        URS         lo0
> 
> 
> Now,  netstat -rn -6  -F1 shows  "fe80::1%lo0" which should not be there and "fe80::1%lo1" is missing which should be there.
> 
> Internet6: 
> Destination                       Gateway                       Flags     Netif Expire 
> fe80::%lo1/64                     link#3                        U           lo1 
> fe80::1%lo0                       link#2                        UHS         lo0
> 
That seems wrong from my first glance. IIRC, there's HACK ( I'd prefer this ) for loopback route. For example
```
# sysctl net.fibs=3
net.fibs: 2 -> 3
# ifconfig epair create
# epair0a
# ifconfig epair0a fib 2
# ifconfig epair0a inet6 -ifdisabled up
# netstat -6rnF 2
Routing tables (fib: 2)

Internet6:
Destination                       Gateway                       Flags     Netif Expire
fe80::%epair0a/64                 link#5                        U       epair0a
fe80::3b:b3ff:fe8f:9a0a%lo0       link#1                        UHS         lo0
```

The loopback route always refer the first loop interface, aka lo0.  
> 
> 
> What output I was expecting was:
> Internet6: 
> Destination                       Gateway                       Flags     Netif Expire 
> fe80::%lo1/64                     link#3                        U           lo1 
> fe80::1%lo1                       link#3                        UHS         lo1
> 
> 
> 
> This makes the ping -6 -F0 fe80::1%lo0  to work but ping -6 -F1 fe80::1%l01 to fail which I wanted to use as test case.
> 
That is interesting. I can ping without failure.

```
# setfib 1 ping6 -c3 fe80::1%lo1
PING(56=40+8+8 bytes) fe80::1%lo1 --> fe80::1%lo1
16 bytes from fe80::1%lo1, icmp_seq=0 hlim=64 time=0.050 ms
16 bytes from fe80::1%lo1, icmp_seq=1 hlim=64 time=0.067 ms
16 bytes from fe80::1%lo1, icmp_seq=2 hlim=64 time=0.096 ms

--- fe80::1%lo1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.050/0.071/0.096/0.019 ms
```

Best regards,
Zhenlei

> Thanks in advance.
> 
> Santiago
> 
> 




[-- Attachment #2 --]
<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jul 13, 2024, at 1:06 AM, Santiago Martinez &lt;<a href="mailto:sm@codenetworks.net" class="">sm@codenetworks.net</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">

  

    <meta http-equiv="content-type" content="text/html; charset=UTF-8" class="">
  
  <div class=""><p class="">Hi Everyone.</p>
    While adding -F ( fib as used in netstat ) to ping and ping6 I have
    found something that from my understanding is not correct.<br class="">
    Please can you advise?<br class=""><p class="">I have the following setup :</p>
    -- two fibs (0 and 1)&nbsp;<br class="">
    -- two&nbsp; loop-backs (lo0 and lo1).<br class="">
    -- Lo1 has been assigned to fib1<br class="">
    --<span style="background-color: rgb(255, 255, 255);" class="">
      net.add_addr_allfibs = 0</span><p class=""><span style="background-color: rgb(255, 255, 255);" class="">My
        interface output looks like this:<br class="">
      </span><span style="font-family:monospace" class=""></span></p><div class=""><span style="font-family:monospace" class=""></span><br class="webkit-block-placeholder"></div><p class=""><span style="font-family:monospace" class=""><span style="background-color: rgb(255, 255, 255);" class="">ifconfig lo0 |
          grep inet6
        </span><br class="">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 ::1 prefixlen 128
        <br class="">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        <br class="">
      </span></p><p class=""><span style="font-family:monospace" class="">ifconfig lo1 | grep inet6
        <br class="">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 fe80::1%lo1 prefixlen 64 scopeid 0x3<br class="">
        <br class="">
      </span></p><p class="">If I do a netstat -rn -6&nbsp; -F0 I get the following which is was i
      expected.<br class="">
    </p><p class=""><span style="font-family:monospace" class=""><span style="background-color: rgb(255, 255, 255);" class="">Internet6:
        </span><br class="">
        Destination &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gateway
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags &nbsp;&nbsp;&nbsp;&nbsp;Netif Expire
        <br class="">
        ::/96 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        ::1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UHS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        ::ffff:0.0.0.0/96 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        fe80::%lo0/10 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        fe80::%lo0/64 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        fe80::1%lo0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UHS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0
        <br class="">
        ff02::/16 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0<br class="">
        <br class="">
      </span></p>
    Now,&nbsp; netstat -rn -6&nbsp; -F1 shows&nbsp; "fe80::1%lo0" which should not be
    there and "fe80::1%lo1" is missing which should be there.
    <div class=""><br class="webkit-block-placeholder"></div><p class=""><span style="font-family:monospace" class=""><span style="background-color: rgb(255, 255, 255);" class="">Internet6:
        </span><br class="">
        Destination &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gateway
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags &nbsp;&nbsp;&nbsp;&nbsp;Netif Expire
        <br class="">
        fe80::%lo1/64 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#3
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo1
        <br class="">
        <b class="">fe80::1%lo0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#2
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UHS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo0</b><br class=""></span></p></div></div></blockquote>That seems wrong from my first glance. IIRC, there's HACK ( I'd prefer this ) for loopback route. For example</div><div>```</div><div># sysctl net.fibs=3</div><div>net.fibs: 2 -&gt; 3</div><div># ifconfig epair create</div><div>#&nbsp;<span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">epair0a</span></div><div><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""># ifconfig&nbsp;</span><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">epair0a fib 2</span></div><div><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""># ifconfig&nbsp;</span><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">epair0a inet6 -ifdisabled up</span></div><div><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class=""># netstat -6rnF 2</span></div><div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Routing tables (fib: 2)</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><br class=""></span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Internet6:</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Destination &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Gateway &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Flags &nbsp; &nbsp; Netif Expire</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">fe80::%epair0a/64 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link#5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;U &nbsp; &nbsp; &nbsp; epair0a</span></font></div><div><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">fe80::3b:b3ff:fe8f:9a0a%lo0 &nbsp; &nbsp; &nbsp; link#1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UHS &nbsp; &nbsp; &nbsp; &nbsp; lo0</span></font></div></div><div>```</div><div><br class=""></div><div>The loopback route always refer the first loop interface, aka lo0. &nbsp;</div><div><blockquote type="cite" class=""><div class=""><div class=""><p class=""><span style="font-family:monospace" class="">
        <br class="">
      </span></p>
    What output I was expecting was:
    <p class=""><span style="font-family:monospace" class=""><span style="background-color: rgb(255, 255, 255);" class="">Internet6:
        </span><br class="">
        Destination &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gateway
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags &nbsp;&nbsp;&nbsp;&nbsp;Netif Expire
        <br class="">
        fe80::%lo1/64 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link#3
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo1
        <br class="">
        <b class="">fe80::1%lo1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link#3
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UHS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lo1</b></span></p><p class=""><br class="">
    </p><p class="">This makes the ping -6 -F0 fe80::1%lo0&nbsp; to work but ping -6 -F1
      fe80::1%l01 to fail which I wanted to use as test case.<span style="font-family:monospace" class=""><br class=""></span></p></div></div></blockquote><div>That is interesting. I can ping without failure.</div><div><br class=""></div><div>```</div><div><div># setfib 1 ping6 -c3 fe80::1%lo1</div><div>PING(56=40+8+8 bytes) fe80::1%lo1 --&gt; fe80::1%lo1</div><div>16 bytes from fe80::1%lo1, icmp_seq=0 hlim=64 time=0.050 ms</div><div>16 bytes from fe80::1%lo1, icmp_seq=1 hlim=64 time=0.067 ms</div><div>16 bytes from fe80::1%lo1, icmp_seq=2 hlim=64 time=0.096 ms</div><div><br class=""></div><div>--- fe80::1%lo1 ping statistics ---</div><div>3 packets transmitted, 3 packets received, 0.0% packet loss</div><div>round-trip min/avg/max/stddev = 0.050/0.071/0.096/0.019 ms</div></div><div>```</div><div><br class=""></div><div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Best regards,</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Zhenlei</div></div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><p class=""><span style="font-family:monospace" class="">
      </span></p><p class="">Thanks in advance.</p>
    Santiago
    <p class=""><span style="font-family:monospace" class=""><br class="">
      </span></p>
  </div>

</div></blockquote></div><br class=""><div class="">
<div><br class=""></div>

</div>
<br class=""></body></html>

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F7B1F9E1-30E0-4BC2-84F8-697A655A2C44>