Bug 1288957 - Ping fails since arp request is getting sent over wired interface when expected to be sent over wireless interface
Summary: Ping fails since arp request is getting sent over wired interface when expect...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 3
Classification: Red Hat
Component: wireless-tools
Version: 3.9
Hardware: armv7l
OS: Linux
unspecified
urgent
Target Milestone: rc
Assignee: Christopher Aillon
QA Contact: Desktop QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-12-07 06:11 UTC by Amar Shankar
Modified: 2015-12-08 11:13 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-12-08 10:23:31 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Amar Shankar 2015-12-07 06:11:24 UTC
Description of problem:

I have a STB device (reference board) having Android-M with Linux kernel 3.14.28-1.9pre.

On this board, I have 2 network interfaces:

    gphy: Wired Interface (10.131.24.211)
    wlan0: Wireless Interface (192.168.1.3)

On STB, using wireless interface i associated to an AP on channel 6. Thereafter I try to ping to AP (192.168.1.1). But ping fails.

root@bcm_platform:/system/bin/amar/43242a1 # ping 192.168.1.1                  
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

On another terminal, tcpdump for wired interface (gphy) shows that arp request is sent from wired interface for address 10.131.24.1 and ARP reply also came for wired interface. But when I tried tcpdump on wireless interface, no arp request/response were seen.

130|root@bcm_platform:/system/bin/amar/43242a1 # tcpdump -nni gphy arp
[ 2938.268561] device gphy entered promiscuous mode
[ 2938.273205] device eth0 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gphy, link-type EN10MB (Ethernet), capture size 65535 bytes
13:51:20.047056 ARP, Request who-has 10.131.24.1 tell 10.131.24.211, length 28
13:51:20.048108 ARP, Reply 10.131.24.1 is-at 00:00:0c:07:ac:18, length 46
13:50:50.047057 ARP, Request who-has 10.131.24.1 tell 10.131.24.211, length 28
13:50:50.048132 ARP, Reply 10.131.24.1 is-at 00:00:0c:07:ac:18, length 46

On checking the arp entries, there were only 2 entries related to wired interface. First wired entry was for wired interface and second entry was for adb connection from host machine (10.131.24.203) through wired interface. There was no entry added for wireless interface.

root@bcm_platform:/system/bin/amar/43242a1 # /system/xbin/busybox arp          
? (10.131.24.1) at 00:00:0c:07:ac:18 [ether]  on gphy
? (10.131.24.203) at d4:be:d9:6a:f8:77 [ether]  on gphy

If i ping by specifying wireless interface name (wlan0) this worked fine.

root@bcm_platform:/system/bin/amar/43242a1 # ping -I wlan0 192.168.1.1    
64 bytes from 192.168.1.3 wlan0: 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=72.2 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=8.25 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=9.12 ms

On another terminal the tcpdump on wireless interface for arp packets clearly shows arp request for 192.168.1.1 and arp reply.

130|root@bcm_platform:/system/bin/amar/43242a1 # tcpdump -nni wlan0 arp        
[ 3191.490560] device wlan0 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:54:58.395951 ARP, Request who-has 192.168.1.3 tell 192.168.1.1, length 28
13:54:58.396032 ARP, Reply 192.168.1.3 is-at 00:90:4c:a5:12:38, length 28

Now again i checked the arp entries and found that an entry for wireless interface (wlan0) is created and added.

130|root@bcm_platform:/system/bin/amar/43242a1 # /system/xbin/busybox arp      
? (192.168.1.1) at 00:90:4c:0f:f1:47 [ether]  on wlan0
? (10.131.24.203) at d4:be:d9:6a:f8:77 [ether]  on gphy
? (10.131.24.1) at 00:00:0c:07:ac:18 [ether]  on gphy

From this analysis, it is observed that arp requests are being sent on wired interface and for wired ip address even though arp is requested for wireless interface on wireless interface.

If I disable the wired interface, ping work fine.

1|root@bcm_platform:/system/bin/amar/43242a1 # ifconfig gphy down

1|root@bcm_platform:/system/bin/amar/43242a1 # ping 192.168.1.1       
64 bytes from 192.168.1.3 wlan0: 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=72.2 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=8.25 ms

arp table shows entry for 192.168.1.1

Below are the route table details.
	
root@bcm_platform:/system/bin/amar/43242a1 # route 
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.131.24.1 0.0.0.0 UG 204 0 0 gphy 
10.131.24.0 * 255.255.254.0 U 204 0 0 gphy 
192.168.1.0 * 255.255.255.0 U 0 0 0 wlan0

Below is the result of ip route get 192.168.1.1.
	
root@bcm_platform:/system/bin/amar/43242a1 # ip route get 192.168.1.1 192.168.1.1 via 10.131.24.1 dev gphy src 10.131.24.211 uid 0 cache 

This clearly shows that the route for wireless ip address is via wired interface. Since the Access point is not connected via wired interface, it cannot be reached.

Could someone please provide solution for this problem?

Regards, Amar

Comment 1 Tomas Pelka 2015-12-07 07:36:46 UTC
Are you sure this is supposed to be filed rhel3? 

what is in your /etc/redhat-release please.

Comment 2 Amar Shankar 2015-12-07 08:55:22 UTC
Sorry, the file /etc/redhat-release was not present.

Comment 3 Tomas Pelka 2015-12-07 09:19:11 UTC
(In reply to Amar Shankar from comment #2)
> Sorry, the file /etc/redhat-release was not present.

hmm, if it is RHEL it should be there, anyway please provide outputs of

rpm -q kernel wireless-tools
uname -a

Thanks
-Tom

Comment 4 Amar Shankar 2015-12-07 10:56:46 UTC
127|root@bcm_platform:/system/bin/amar/43242a1 # /system/xbin/busybox rpm -q kernel wireless-tools>
rpm: applet not found
                              <
130|root@bcm_platform:/system/bin/amar/43242a1 # uname -a
Linux localhost 3.14.28-1.9pre-03232-g7d7a7f2 #1 SMP Sat Sep 5 17:50:40 PDT 2015 armv7l

Comment 5 Tomas Pelka 2015-12-07 15:03:17 UTC
I'm still think this is not filed against the right product as rhel3 is 10+ years old product with no ARM support. And it actually use 2.2 kernel I guess.

Why busybox?

Comment 6 Amar Shankar 2015-12-08 06:34:07 UTC
Shall i close the issue.

Comment 7 Tomas Pelka 2015-12-08 07:10:40 UTC
Well not yet just make sure it is relly RedHat Enterprise Linux. Is it sort of embedded system you are using? Guessing based on the fact you are using busy box.

Comment 8 Amar Shankar 2015-12-08 09:02:32 UTC
This is for Android M.

Comment 9 Tomas Pelka 2015-12-08 10:23:31 UTC
Oh than this bz is not the right place, sorry. You might need to file an issue at https://code.google.com/p/android/issues/list

Comment 10 Amar Shankar 2015-12-08 11:13:38 UTC
Thanks for your guidance.


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