Hi Genodians,
I would like to test some networking-stuff under linux_x86 and have got a question concerning the use of the nic_bridge with the linux nic_drv.
My setup is the following: For testing, I have created two tap devices which are used by two Genode 15.02 instances running on the same linux host. One instance is hosting a server application, the other the respective client, both using the lwip socket API. As long, as I only use the server and the client, everything is fine.
In the next step I added additional components to the configuration which are also supposed to access the network. Thus I added the nic_bridge with a configured mac-address as a resource multiplexer and set the routes accordingly. The components in question successfully get an ip via dhcp. However, I do not receive any packets at the other end of the (virtual) line. - Infact it seems as if they do not even reach the nic_drv.
When the bridge & nic_drv are initializing, I see the following lines on the server side (client'ts the same, except, of course, for the ip- and mac-address):
[init -> nic_drv] --- Linux/tap NIC driver started --- [init -> nic_drv] Success [init -> nic_drv] Using tap device "tap1" [init -> nic_bridge] Invalid session request, no matching policy [init -> nic_bridge] --- NIC bridge started (mac=02:00:00:00:00:01) --- [init ->server] got IP address 192.168.56.106
As far as I read it from the mailing list / git commits, the "Invalid session request" message is not critical, correct?
In a further simplified setup, I am using a single tap device with the nic driver, which is working flawlessly. As soon as I add the bridge I notice the same behavior as described above.
In wireshark I saw a series of 3 ARP requests finished with a gratuitous ARP,if the bridge is not used. - The last one is missing if the bridge is used. If I read the code correctly those packets are purposely dropped in the nic_bridge.
Am I missing / misconfiguring something here? I would be very glad about a pointer in any direction ;-)
Cheers Marcus
P.S:
The route for the server looks like this:
<route> <service name="Nic"> <child name="nic_bridge"/> </service> <any-service> <parent/> <any-child/> </any-service> </route>
The config file entry for the bridge looks like this:
<start name="nic_bridge"> <resource name="RAM" quantum="4M"/> <provides><service name="Nic"/></provides> <route> <service name="Nic"> <child name="nic_drv"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> <config mac="02:00:00:00:00:01"> </config> </start>