tap interfaces always disabled in linux bridge

6,341

Carrier (IFF_RUNNING) is only set on a tap when a user has the device handle open.

For a persistent tap created with tunctl, you need an application which attaches to the tap, eg:

Share:
6,341

Related videos on Youtube

Dani Camps
Author by

Dani Camps

Updated on September 18, 2022

Comments

  • Dani Camps
    Dani Camps over 1 year

    I have a physical interface eth0, and I want to create two virtual interfaces and bridge them with eth0. For this purpose I do:

    #Create the virtual interfaces
    tunctl -t tap0
    tunctl -t tap1
    ifconfig tap0 up
    ifconfig tap1 up
    
    #Create the bridge
    brctl addbr br0
    brctl stp br0 off
    brctl addif br0 eth0
    brctl addif br0 tap0
    brctl addif br0 tap1
    
    #Turning up the bridge
    ifconfig br0 up
    

    However my problem if that the tap interfaces always appear disabled in the bridge, and no traffic flows to them.

    $brctl show br0
    bridge name bridge id       STP enabled interfaces
    br0     8000.080027cabeba   no          eth2
                                            tap0
                                            tap1
    
    $brctl showstp br0
    br0
     bridge id      8000.080027cabeba
     designated root    8000.080027cabeba
     root port         0            path cost          0
     max age          20.00         bridge max age        20.00
     hello time        2.00         bridge hello time      2.00
     forward delay        15.00         bridge forward delay      15.00
     ageing time         300.01
     hello timer           0.00         tcn timer          0.00
     topology change timer     0.00         gc timer         298.42
     flags          
    
    
    eth2 (1)
     port id        8001            state            forwarding
     designated root    8000.080027cabeba   path cost          4
     designated bridge  8000.080027cabeba   message age timer      0.00
     designated port    8001            forward delay timer   12.97
     designated cost       0            hold timer         1.24
     flags          
    
    tap0 (2)
     port id        8002            state              disabled
     designated root    8000.080027cabeba   path cost        100
     designated bridge  8000.080027cabeba   message age timer      0.00
     designated port    8002            forward delay timer    0.00
     designated cost       0            hold timer         0.00
     flags          
    
    tap1 (3)
     port id        8003            state              disabled
     designated root    8000.080027cabeba   path cost        100
     designated bridge  8000.080027cabeba   message age timer      0.00
     designated port    8003            forward delay timer    0.00
     designated cost       0            hold timer         0.00
     flags          
    

    Is there any way to set the tap interfaces in forwarding state? I do not understand why they are not because STP is disabled.

    Cheers

    Daniel

    • Dani Camps
      Dani Camps over 10 years
      Just to add some more information, the problem seems to be that the tap interfaces never really come up. Looking at dmesg I see: [ 2217.892140] ADDRCONF(NETDEV_UP): tap0: link is not ready [ 2221.284161] ADDRCONF(NETDEV_UP): tap1: link is not ready . However with ifconfigyou see the interfaces as UP.