Comment 0 for bug 1205741

Revision history for this message
Tim Hartrick (ww3ib-tim-8aw3u) wrote :

There is a bug in the the management of inet peers which prevents route metrics like initcwnd from being inherited by route
cache entries. An example:

$ ip route show
default via 172.16.231.2 dev eth0 metric 100
172.16.231.0/24 dev eth0 proto kernel scope link src 172.16.231.26

$ ip route show cache
local 172.16.231.26 from 172.16.231.1 dev lo src 172.16.231.26
    cache <local,src-direct> iif eth0
172.16.231.1 from 172.16.231.26 dev eth0
    cache ipid 0xa13f

$ ip route change 172.16.231.0/24 dev eth0 proto kernel scope link src 172.16.231.26 initcwnd lock 100

$ ip route show
default via 172.16.231.2 dev eth0 metric 100
172.16.231.0/24 dev eth0 proto kernel scope link src 172.16.231.26 initcwnd
lock 100

$ ip route show cache
172.16.231.1 from 172.16.231.26 dev eth0
    cache ipid 0xa13f rtt 4ms rttvar 4ms cwnd 40
local 172.16.231.26 from 172.16.231.1 dev lo src 172.16.231.26
    cache <local,src-direct> iif eth0

Note that the initcwnd metric is not being inherited by the cache entry for 172.16.231.1. The problem is that the
inetpeer cache is not flushed when the "ip route change" occurs. Without this the metrics in the inetpeer are used
to build the metrics of the route cache entry even though they are stale.

A fix for this bug is in the 3.5.0 kernel from quantal. It is a simple fix and could be easily applied to the 3.2.0 line of kernels.