In userspace, if the tables lookup of the first bridge results in an
action of output to a patch port, then it should lookup the bridge of
the peer port consequently.
The flow installed to datapath will be the final actions combining all
the results.

E.g.

port_A --- br1 --- port_B (patch) ........ port_C (patch) --- br2 --- port_D

flow in br1: in_port=port_A actions=output(port_B)
flow in br2: in_port=port_C actions=output(port_D)

Then a packet from port_A will be output to port_D, and the datapath
flow is simply:
in_port(port_A),action:port_D

I.e. patch ports are short-cutted in datapath. Ben, please correct me
if this not accurate.

Han

On Tue, Sep 15, 2015 at 6:06 PM, openvswitcher <openvswitc...@163.com> wrote:
> Thank you very much.
> Could you tell me more details about this?
>
> I know the packet will be transfer to userspace if flow-miss happens and
> flow will be installed to kernel
> if the packet matches the openflow-table in openflow switch.
> So if one patch port exists between two bridges, how the flow will be
> installed in kernel if the patch port is used to connect two bridge?
> Will the packet be searched in the userspace within the openflow-tables in
> the two bridges and then one final flow be installed in
> kernel, or will be searched independently in the openflow-tables of the
> different bridges?
>
> Looking forward for your reply. Thanks.
>
>
>
>
>
> At 2015-09-16 01:26:32, "Han Zhou" <zhou...@gmail.com> wrote:
>>Patch port is like a wormhole, which transfers packets between bridges
>>transparently. There is no datapath port for it.
>>In your case, the packet should be forwarded to br-tun, but it seems
>>you have no tunnel port (vxlan, geneve, stt, etc.) in br-tun, so you
>>didn't see any output on that bridge. You might wonder why packet is
>>not flooded to the internal port br-tun. I assume you use devstack,
>>br-tun works in secure mode and there is no "NORMAL" flow (check
>>ovs-ofctl dump-flows br-tun), so packet is not flooded there.
>>
>>Best regards,
>>Han
>>
>>On Tue, Sep 15, 2015 at 12:33 AM, openvswitcher <openvswitc...@163.com>
>> wrote:
>>> I want to ask one question about  patch port and flooding.
>>>
>>>
>>> The topology used is below:
>>>
>>>
>>> namespace 1(tap516ed44b-29) --br-int--br-tun
>>>
>>>
>>> I ping an unreachable address 192.168.10.20 from 192.168.10.2(namespace
>>> port tap516ed44b-29),so the arp flow is installed in kernel.
>>> But the action is "push_vlan(vid=2,pcp=0),1,pop_vlan,11,13".
>>>
>>>
>>> I wonder why the patch port  is not flooded to?
>>>
>>>
>>> The details is bellow:
>>>
>>>
>>> # ovs-dpctl dump-flows
>>>
>>> skb_priority(0),in_port(9),eth(src=fa:16:3e:49:a8:9b,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=192.168.10.2/255.255.255.255,tip=192.168.10.20/255.255.255.255,op=1/0xff,sha=fa:16:3e:49:a8:9b/00:00:00:00:00:00,tha=00:00:00:00:00:00/00:00:00:00:00:00),
>>> packets:1970, bytes:82740, used:0.676s,
>>> actions:push_vlan(vid=2,pcp=0),1,pop_vlan,11,13
>>> # ovs-appctl dpif/show
>>> system@ovs-system:
>>>        (...skip...)
>>>         br-ext: hit:103 missed:57
>>>                 br-ext 65534/2: (internal)
>>>                 fg-d77a2710-06 9/15: (internal)
>>>                 qg-f74784b2-af 1/8: (internal)
>>>         br-int: hit:299017 missed:223582
>>>                 br-int 65534/1: (internal)
>>>                 patch-tun 1/none: (patch: peer=patch-int)
>>>                 qr-1be06b4b-0f 3/6: (internal)
>>>                 qr-1f535556-59 4/7: (internal)
>>>                 qr-20f37e1a-13 9/13: (internal)
>>>                 qr-b9961ff6-d8 11/14: (internal)
>>>                 qvo2f01594b-3d 7/11: (system)
>>>                 qvo86dc14d8-61 8/12: (system)
>>>                 tap516ed44b-29 5/9: (internal)
>>>                 tap765e9497-63 6/10: (internal)
>>>                 tap9d8f5064-21 2/5: (internal)
>>>         br-mgmt0: hit:0 missed:0
>>>                 br-mgmt0 65534/3: (internal)
>>>                 phy-br-mgmt0 1/none: (patch: peer=int-br-mgmt0)
>>>         br-tun: hit:4 missed:3
>>>                 br-tun 65534/4: (internal)
>>>                 patch-int 1/none: (patch: peer=patch-tun)
>>>
>>>
>>> Is the patch port special?
>>>
>>> _______________________________________________
>>> dev mailing list
>>> dev@openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
>
>
>
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to