Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: strange observations on network configuration (ifconfig&routing)
Hi,
Thank you for the report.
On Mon, Dec 5, 2016 at 11:47 PM, Frank Kardel <kardel%netbsd.org@localhost> wrote:
> Hi !
>
> when trying out a -current from 20161127 (7.99.42) I see issues with routed.
>
> On configuration of an interface address A.B.C.D/m the local network address
> A.B.C.D is correctly entered with a loopback host route for the local
> address
> in the routing table.
> Also the network route via the interface is correctly entered in the table.
>
> As soon as routed detects the new interface it seems to miss the loopback
> host route for the local address and consequently decides to remove the
> loopback host route from the kernel routing table,
>
> route monitor output:
> got message of size 160 on Mon Dec 5 15:10:49 2016
> RTM_CHANGE: Change Metrics, Flags or Gateway: len 160, pid 25290, seq 1,
> errno 0, flags: <GATEWAY,DONE>
> locks: none inits: <hopcount>
> sockaddrs: <DST,GATEWAY,NETMASK>
> default 10.200.1.1 0.0.0.0
> got message of size 96 on Mon Dec 5 15:10:52 2016
> RTM_ONEWADDR: address being added to iface: len 96, pid 2, seq 0, errno 528,
> flags: <CONNECTED>
> locks: <sendpipe,mtu> inits: none
> got message of size 104 on Mon Dec 5 15:10:52 2016
> RTM_NEWADDR: address being added to iface: len 104, metric 0, flags:
> <CONNECTED>
> sockaddrs: <NETMASK,IFP,IFA,BRD>
> 255.255.255.248 00:1b:21:aa:9b:7c A.B.C.38 default
> ### new address (tentative)
> got message of size 160 on Mon Dec 5 15:10:52 2016
> RTM_ADD: Add Route: len 160, pid 4878, seq 0, errno 0, flags:
> <UP,HOST,LLINFO,LOCAL>
> locks: none inits: none
> sockaddrs: <DST,GATEWAY>
> A.B.C.38 link#2
> ### local address loopback link
> got message of size 208 on Mon Dec 5 15:10:52 2016
> RTM_ADD: Add Route: len 208, pid 4878, seq 0, errno 0, flags:
> <UP,DONE,CONNECTED>
> locks: none inits: none
> sockaddrs: <DST,GATEWAY,NETMASK,IFP,IFA>
> A.B.C.32 link#2 255.255.255.248 00:1b:21:aa:9b:7c A.B.C.38
> ### net route via interface
> got message of size 160 on Mon Dec 5 15:10:52 2016
> RTM_DELETE: Delete Route: len 160, pid 25290, seq 2, errno 0, flags:
> <HOST,DONE,LLINFO,LOCAL>
> locks: none inits: none
> sockaddrs: <DST,GATEWAY>
> A.B.C.38 link#2
> ### routed deletes local address loopback link
> got message of size 88 on Mon Dec 5 15:10:57 2016
> RTM_ONEWADDR: address being added to iface: len 88, pid 2, seq 0, errno 520,
> flags: <UP,CONNECTED>
> locks: <pksent,rtt,ssthresh,sendpipe,expire,hopcount,mtu> inits:
> <sendpipe,mtu>
> got message of size 96 on Mon Dec 5 15:10:57 2016
> RTM_NEWADDR: address being added to iface: len 96, metric 0, flags:
> <UP,CONNECTED>
> sockaddrs: <NETMASK,IFP,IFA,BRD>
> 255.255.255.248 00:1b:21:aa:9b:7c A.B.C.38 A.B.C.39
> ### address finally valid
>
> [BTW: routed/table.c contains an out of date RTM_* number to string table -
> fixed in output below]
>
> Trace from routed:
> Tracing actions started
> Tracing packets started
> Tracing packet contents started
> Tracing kernel changes started
> Add interface lo0 127.0.0.1 -->127.0.0.1/32 <LOOPBACK> <PASSIVE>
> RCVBUF=61440
> Add interface wm1 10.200.1.2 -->10.200.1.0/24 <RIPV2>
> turn on RIP
> Add 10.200.1.0/24 -->10.200.1.2 metric=0 wm1 <IF>
> Add 127.0.0.1/32 -->127.0.0.1 metric=0 lo0 <IF>
> ### initial interface state
> Send mcast RIPv2 REQUEST to 224.0.0.9.520 via wm1
> QUERY
> -- 15:10:46 --
> Recv RIPv2 REQUEST from 10.200.1.2.520 via wm1
> QUERY
> discard our own RIP request
> -- 15:10:46 --
> Recv RIPv2 RESPONSE from 10.200.1.1.520 via wm1
> 0.0.0.0 metric=9
> 10.0.0.0 metric=1
> 10.0.0.128/32 metric=2
> ...
> Add 0.0.0.0 -->10.200.1.1 metric=9 wm1 15:10:46
> Add 10.0.0.0 -->10.200.1.1 metric=1 wm1 15:10:46
> Add 10.0.0.128/32 -->10.200.1.1 metric=2 wm1 15:10:46
> ...
> ### received routing information
>
> -- 15:10:47 --
> Send multicast Router Solic. from 10.200.1.2 to 224.0.0.2 via wm1 value=0
> -- 15:10:48 --
> write kernel RTM_CHANGE 0.0.0.0 -->10.200.1.1 metric=9
> flags=0x2
> -- 15:10:50 --
> Send multicast Router Solic. from 10.200.1.2 to 224.0.0.2 via wm1 value=0
> -- 15:10:50 --
> ignore RTM_ONEWADDR without dst
> ### old routing messages are not properly skipped?
>
> Add interface wm0 A.B.C.38 -->A.B.C.32/29 <PASSIVE>
> Add A.B.C.32/29 -->A.B.C.38 metric=0 wm0 <IF>
> ### new interface due to ifconfig wm0 A.B.C.D/29
>
> note RTM_NEWADDR with flags 0x100 for unknown interface index #180
> ### RTM_NEWADDR not properly handled/skipped
>
> RTM_ADD from pid 4878: A.B.C.38/32 --> A.B.C.38
> RTM_ADD from pid 4878: A.B.C.32/29 --> A.B.C.38
> -- 15:10:51 --
> write kernel RTM_DELETE A.B.C.38/32 -->A.B.C.38 metric=0 flags=0
> ### routed does not seem to consider the A.B.C.38/32 -->A.B.C.38 (if=lo0,
> gw=link#2) as being valid
>
> -- 15:10:53 --
> Send multicast Router Solic. from 10.200.1.2 to 224.0.0.2 via wm1 value=0
> -- 15:10:53 --
> ignore RTM_ONEWADDR without dst
> note RTM_NEWADDR with flags 0x101 for unknown interface index #180
>
> netstat -nrf inet shows directly after setting the local address:
> Routing tables
>
> Internet:
> Destination Gateway Flags Refs Use Mtu
> Interface
> default 10.200.1.1 UG - - - wm1
> 10.200.1/24 link#3 UC - - - wm1
> A.B.C.32/29 link#2 UC - - - wm0
> A.B.C.38 link#2 UHl - - - lo0
> 127/8 127.0.0.1 UGRS - - 33624 lo0
> 127.0.0.1 lo0 UHl - - 33624 lo0
>
> #####
>
> Seems that routed currently misinterprets the kernel routing state and needs
> some care.
> Any ideas?
One solution is to teach routed to ignore local routes as well as static
routes. That should be ok, but I'm exploring if there is a solution by
fixing the kernel, which should be better in terms of backward compatibility.
ozaki-r
Home |
Main Index |
Thread Index |
Old Index