Bug 1430

Summary: possible bug with tap and 64-bit machines
Product: ns-3 Reporter: Tom Henderson <tomh>
Component: tap-bridgeAssignee: Tom Goff <tgoff>
Status: NEEDINFO ---    
Severity: normal CC: ns-bugs
Priority: P5    
Version: pre-release   
Hardware: All   
OS: All   
Attachments: test case to reproduce

Description Tom Henderson 2012-05-20 00:05:00 EDT
saved from mailing list on 2/7/12 from Luca Costantino:

hi all

two nodes are given, connected by a csma link. first node has ip
10.0.0.1/24, second node has ip 10.0.0.2/24.
on second node a tapbridge in installed. real machine has ip 10.0.0.3/24
i install a simple udp client application that sends data from
10.0.0.1 (inside ns3) to 10.0.0.3 (outside ns3) through 10.0.0.2 tap
(inside ns3).

everything works fine on a 32 bit machine, same code doesn't work on a
64 bit machine

problem is in arp resolution (i think)

here an excerpt from pcap generated on 32 bit machine
reading from file udp-echo-0-0.pcap, link-type EN10MB (Ethernet)
1.000000 ARP, Request who-has 10.0.0.3 (ff:ff:ff:ff:ff:ff) tell
10.0.0.1, length 50
1.003508 ARP, Reply 10.0.0.3 is-at 00:00:00:00:00:02, length 50
6.003032 ARP, Request who-has 10.0.0.1 tell 10.0.0.2, length 50
6.003032 ARP, Reply 10.0.0.1 is-at 00:00:00:00:00:01, length 5

and here an excerpt from the pcap generated on the 64 bit machine
reading from file udp-echo-0-0.pcap, link-type EN10MB (Ethernet) 24
1.000000 ARP, Request who-has 10.0.0.3 (ff:ff:ff:ff:ff:ff) tell
10.0.0.1, length 50
2.000000 ARP, Request who-has 10.0.0.3 (ff:ff:ff:ff:ff:ff) tell
10.0.0.1, length 50
3.000000 ARP, Request who-has 10.0.0.3 (ff:ff:ff:ff:ff:ff) tell
10.0.0.1, length 50
4.000000 ARP, Request who-has 10.0.0.3 (ff:ff:ff:ff:ff:ff) tell
10.0.0.1, length 50

two questions...
1) is this "bug" reproducible on someone else's machine too?
2) is it normal that arping 10.0.0.3, which has a REAL mac address,
results in having the tap's mac address?

regards
luca
Comment 1 Tom Henderson 2012-05-20 00:06:11 EDT
Created attachment 1398 [details]
test case to reproduce

Luca's provided test case
Comment 2 Tom Goff 2012-05-21 12:31:44 EDT
(In reply to comment #1)
> Created attachment 1398 [details]
> test case to reproduce
> 
> Luca's provided test case

Is the rp_filter setting the same on both systems?  For example, see
the output of:

	sysctl -a 2> /dev/null | grep '\(all\|default\)\.rp_filter'

The described behavior seems consistent with rp_filter being enabled
on the 64-bit system and disabled on the 32-bit system.

It would also help to clarify what interface is assigned 10.0.0.3/24.
It seems that the tapOutput interface created by the test case has the
address 10.0.0.2/24.