nic_bridge with tap devices under linux_x86

Marcus Nolte nolte at ...254...
Wed Sep 9 18:02:45 CEST 2015


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>


-- 
Marcus Nolte, M. Sc.

Technische Universität Braunschweig
Institut für Regelungstechnik (IfR)
Hans-Sommer-Straße 66
38106 Braunschweig

Tel.: +49 531 391 8066
Fax:  +49 531 391 7878
Email: nolte at ...254...
Internet: http://www.ifr.ing.tu-bs.de





More information about the users mailing list