Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

strange observations on network configuration (ifconfig&routing)



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?

Frank



Home | Main Index | Thread Index | Old Index