netmap+libuinet on Linux
Closed this issue · 6 comments
Hi Kelsey,
I am trying to use netmap+libuinet on a Linux machine.
I have compiled the system successfully and now I am trying to test it.
I have started the echo server with ./echo -v -i eth6 -l 192.168.10.1 -p 1111
It seems echo server runs succefully except link_elf_symbol: missing symbol hash table:
uinet starting: cpus=1, nmbclusters=131072
callwheelsize=524288
callwheelsize=524288
link_elf_lookup_symbol: missing symbol hash table
link_elf_lookup_symbol: missing symbol hash table
UINET multiprocessor subsystem configured with 1 CPUs
Timecounters tick every 10.000 msec
Creating interface netmap0, Promiscuous INET disabled, cdom=0
configstr is eth6
netmap0: Ethernet address: 00:1b:21:d7:ff:95
Adding address 192.168.10.1 to interface netmap0
Creating echo server at 192.168.10.1:1111 on interface netmap0
Listening on 192.168.10.1:1111
Bringing up interface netmap0
Creating interface thread for interface netmap0
I cannot ping or connect to echo server!
It seems the echo server is running under some container and is not accessible!
Do I need to configure a bridge/tunnel to access echo server?
Thank you.
Best regards,
Alim
Thanks, Alim. The issue here is probably that the other system doesn't know how to contact 192.168.10.1 because there is no ARP entry for it; likewise, even if there were an ARP entry you would not be able to ping it because libuinet
does not do ICMP replies. It should be made very clear that libuinet
currently only provides the TCP/IP stack functionality, but not the things one normally uses to connect to a host. So you'll want to insert a static ARP entry on the client machine for a MAC address that will be switched to the test machine for the IP address you've configured. Then you should be able to connect, though you still can't use ping
to verify connectivity. See #27 for plans to make this more straightforward for people who really just want to host a single application with libuinet
, rather than (1) intercept traffic; or (2) provide multiple applications through libuinet
with some other process/code handling things like ARP and ICMP.
Thanks a lot Caladri.
I have also tried to connect using telnet.
Still, it does not work!
Alim, telnet
requires not just Layer 4 connectivity (which libuinet
provides), but also Layer 3 and, in this case, Layer 2. To make Layer 2 and Layer 3 work, you need to insert a static ARP entry on the client machine for 192.168.10.1 to a MAC address that will be able to reach the interface on which you have bin/echo
running. You might try bringing up eth6
with the same IP address and pinging it to verify physical connectivity, then then take the ARP entry you have on your test client and insert it as a static entry, and then switch to running bin/echo
, and test again. This will also eliminate any potential issues with Layer 2 switching of the MAC address in the static ARP entry that you might encounter.
Thanks guys. I can now connect to the echo server.