Bug 93121 - fib_lookup failed to find blackhole or prohibit or unreachable routes
Summary: fib_lookup failed to find blackhole or prohibit or unreachable routes
Status: NEW
Alias: None
Product: Networking
Classification: Unclassified
Component: IPV4 (show other bugs)
Hardware: All Linux
: P1 high
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-02-12 08:36 UTC by Aleksandr Gusarov
Modified: 2016-02-15 20:46 UTC (History)
2 users (show)

See Also:
Kernel Version: 3.6+
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments

Description Aleksandr Gusarov 2015-02-12 08:36:12 UTC
Trying functional of blackhole | prohibit | unreachable routes i have found that kernel always generate ICMP Network Unreachable (type 3 code 0) packets as reply to packets going to blackhole route.
It seems to after removing routing cache in kernel 3.6 fib_lookup() failed to find something in FIB.
Trying functional on different versions of kernel show me that functional is broken after kernel 3.5.
I tried: 
Ubuntu 10.04 whith 2.6.32 kernel - OK
Ubuntu 10.04 whith 3.0.0  kernel - OK
Ubuntu 12.04 whith 3.2.0  kernel - OK
Ubuntu 12.04 whith 3.5.0  kernel - OK
Ubuntu 12.04 whith 3.8.0  kernel - ERROR
Ubuntu 14.04 whith 3.13.0 kernel - ERROR
Ubuntu 15.04 whith 3.18.0 kernel - ERROR (daily build)

Steps to reproduce:
1) Two linux machines whith static IP adresses 
   Alpha - 192.168.1.1/24
   Beta  - 192.168.1.2/24
2) on Beta add route to 192.168.128.0/17 and blackhole routes to subbets
   $ ip route add 192.168.128.0/17 via 192.168.1.1 
   $ ip route add blackhole 192.168.128.0/19 
   $ ip route add prohibit 192.168.160.0/19 
   $ ip route add unreachable 192.168.192.0/19 
3) on Alpha add route to 192.168.128.0/17
   $ ip route add 192.168.128.0/17 via 192.168.1.2
4) on Alpha ping 192.168.128.1 (expected no reply)
   $ ping 192.168.128.1
   PING 192.168.128.1 (192.168.128.1) 56(84) bytes of data.
   From 192.168.1.1 icmp_seq=1 Destination Net Unreachable
   From 192.168.1.1 icmp_seq=2 Destination Net Unreachable
   ...
5) on Alpha ping 192.168.160.1 (expected reply "Packet Filtred")
   $ ping 192.168.160.1
   PING 192.168.160.1 (192.168.160.1) 56(84) bytes of data.
   From 192.168.1.1 icmp_seq=1 Destination Net Unreachable
   From 192.168.1.1 icmp_seq=2 Destination Net Unreachable
   ...
6) on Alpha ping 192.168.192.1 (expected reply "Host Unreachable")
   $ ping 192.168.192.1
   PING 192.168.192.1 (192.168.192.1) 56(84) bytes of data.
   From 192.168.1.1 icmp_seq=1 Destination Net Unreachable
   From 192.168.1.1 icmp_seq=2 Destination Net Unreachable
   ...

I apologize for my bad English

Note You need to log in before you can comment on or make changes to this bug.