Re: [ovs-discuss] OVN Logical Router Port ARP response

2017-11-14 Thread Hui Xiang
Hi Tiago,

  Thanks much, finally figure out that need to add dl_dst=01:00:00:00:00:00
as well, then it match eth.mcast, otherwise it will be seen unknown MAC.

Hui.

On Tue, Nov 14, 2017 at 6:53 PM, Tiago Lam  wrote:

> Hi Hui,
>
> I don't think the query you are providing to ovn-trace is correct, hence
> why you see differences between your "real case" and the "tracing case".
>
> If you look at the first (commented) line that ovn-trace prints, you can
> see both eth.dst and eth.src being set to "00:00:00:00:00:00". Since
> these fields are used for setting the correct eth.dst in the ARP reply
> (eth.src and eth.dst are swapped from the actual ARP request), it won't
> know where the deliver the packet, as "00:00:00:00:00:00" is not valid,
> and hence the output="_MC_unknown".
>
> Regards,
>
> Tiago
>
> On 11/14/2017 03:26 AM, Hui Xiang wrote:
> > Hi folks,
> >
> > I am a bit confused of the OVN logical router port arp flow process if
> > arping it from external side.
> >
> > When I am tracing the logical router port arp, it always seems there
> > would be no response from the flow procedure, however, I do can get the
> > arp response and reach it.
> > My trace inport is the localnet port on the provider bridge, and it
> > always go to next and then hit ls_in_l2_lkup table and match MC_unknown
> > then dropped.
> >
> > I wonder who send this arp response? or my inport is wrong in the trace
> > if arp from outside? Thanks very much for any helpful info!
> >
> >
> > [root@node-1 ~]# ovn-trace --detail
> > 9ac587cd-becc-4584-99c9-24282f8707e2  'inport ==
> > "provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f" && arp.sha ==
> > 96:95:d8:7d:b9:4c && arp.tpa == 172.16.0.130  && arp.op == 1'
> > #
> > arp,reg14=0x1,vlan_tci=0x,dl_src=00:00:00:00:00:00,dl_
> dst=00:00:00:00:00:00,arp_spa=0.0.0.0,arp_tpa=172.16.0.130,
> arp_op=1,arp_sha=96:95:d8:7d:b9:4c,arp_tha=00:00:00:00:00:00
> >
> > ingress(dp="public", inport="provnet-668bf1")
> > -
> >  0. ls_in_port_sec_l2 (ovn-northd.c:3556): inport == "provnet-668bf1",
> > priority 50, uuid 25b99b9a
> > next;
> > 10. ls_in_arp_rsp (ovn-northd.c:3588): inport == "provnet-668bf1",
> > priority 100, uuid b3607f68
> > next;
> > 15. ls_in_l2_lkup (ovn-northd.c:3975): 1, priority 0, uuid 83de4750
> > outport = "_MC_unknown";
> > output;
> >
> > multicast(dp="public", mcgroup="_MC_unknown")
> > -
> >
> > egress(dp="public", inport="provnet-668bf1", outport="provnet-668bf1")
> > --
> > /* omitting output because inport == outport && !flags.loopback */
> >
> >
> >
> >
> > Logical Router Port:
> > _uuid   : 6d67d962-38a5-4a29-86b5-067dc26f78d4
> > enabled : []
> > external_ids: {}
> > gateway_chassis : []
> > mac : "fa:16:3e:2e:ea:e9"
> > name: "lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24"
> > networks: ["172.16.0.130/16 "]
> > options :
> > {redirect-chassis="88596f9f-e326-4e15-ae91-8cc014e7be86"}
> > peer: []
> >
> >
> > The logical flow:
> >   table=10(ls_in_arp_rsp  ), priority=100  , match=(arp.tpa ==
> > 172.16.0.130 && arp.op == 1 && inport ==
> > "640d0475-ff83-47b7-8a4d-9ea0e770fb24"), action=(next;)
> >   table=10(ls_in_arp_rsp  ), priority=100  , match=(inport ==
> > "provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f"), action=(next;)
> >   table=10(ls_in_arp_rsp  ), priority=50   , match=(arp.tpa ==
> > 172.16.0.130 && arp.op == 1), action=(eth.dst = eth.src; eth.src =
> > fa:16:3e:2e:ea:e9; arp.op = 2; /* ARP reply */ arp.tha = arp.sha;
> > arp.sha = fa:16:3e:2e:ea:e9; arp.tpa = arp.spa; arp.spa = 172.16.0.130;
> > outport = inport; flags.loopback = 1; output;)
> >   
> >   table=15(ls_in_l2_lkup  ), priority=100  , match=(eth.mcast),
> > action=(outport = "_MC_flood"; output;)
> >   table=15(ls_in_l2_lkup  ), priority=50   , match=(eth.dst ==
> > fa:16:3e:2e:ea:e9 &&
> > is_chassis_resident("cr-lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24")),
> > action=(outport = "640d0475-ff83-4
> > 7b7-8a4d-9ea0e770fb24"; output;)
> >   table=15(ls_in_l2_lkup  ), priority=0, match=(1),
> > action=(outport = "_MC_unknown"; output;)
> >
> >
> >
> >
> >
> > ___
> > discuss mailing list
> > disc...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
> >
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN Logical Router Port ARP response

2017-11-14 Thread Tiago Lam
Hi Hui,

I don't think the query you are providing to ovn-trace is correct, hence
why you see differences between your "real case" and the "tracing case".

If you look at the first (commented) line that ovn-trace prints, you can
see both eth.dst and eth.src being set to "00:00:00:00:00:00". Since
these fields are used for setting the correct eth.dst in the ARP reply
(eth.src and eth.dst are swapped from the actual ARP request), it won't
know where the deliver the packet, as "00:00:00:00:00:00" is not valid,
and hence the output="_MC_unknown".

Regards,

Tiago

On 11/14/2017 03:26 AM, Hui Xiang wrote:
> Hi folks,
> 
> I am a bit confused of the OVN logical router port arp flow process if
> arping it from external side.
> 
> When I am tracing the logical router port arp, it always seems there
> would be no response from the flow procedure, however, I do can get the
> arp response and reach it.
> My trace inport is the localnet port on the provider bridge, and it
> always go to next and then hit ls_in_l2_lkup table and match MC_unknown
> then dropped.
> 
> I wonder who send this arp response? or my inport is wrong in the trace
> if arp from outside? Thanks very much for any helpful info!
> 
> 
> [root@node-1 ~]# ovn-trace --detail
> 9ac587cd-becc-4584-99c9-24282f8707e2  'inport ==
> "provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f" && arp.sha ==
> 96:95:d8:7d:b9:4c && arp.tpa == 172.16.0.130  && arp.op == 1' 
> #
> arp,reg14=0x1,vlan_tci=0x,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,arp_spa=0.0.0.0,arp_tpa=172.16.0.130,arp_op=1,arp_sha=96:95:d8:7d:b9:4c,arp_tha=00:00:00:00:00:00
> 
> ingress(dp="public", inport="provnet-668bf1")
> -
>  0. ls_in_port_sec_l2 (ovn-northd.c:3556): inport == "provnet-668bf1",
> priority 50, uuid 25b99b9a
>     next;
> 10. ls_in_arp_rsp (ovn-northd.c:3588): inport == "provnet-668bf1",
> priority 100, uuid b3607f68
>     next;
> 15. ls_in_l2_lkup (ovn-northd.c:3975): 1, priority 0, uuid 83de4750
>     outport = "_MC_unknown";
>     output;
> 
> multicast(dp="public", mcgroup="_MC_unknown")
> -
> 
> egress(dp="public", inport="provnet-668bf1", outport="provnet-668bf1")
> --
>     /* omitting output because inport == outport && !flags.loopback */
> 
> 
> 
> 
> Logical Router Port:
> _uuid               : 6d67d962-38a5-4a29-86b5-067dc26f78d4
> enabled             : []
> external_ids        : {}
> gateway_chassis     : []
> mac                 : "fa:16:3e:2e:ea:e9"
> name                : "lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24"
> networks            : ["172.16.0.130/16 "]
> options             :
> {redirect-chassis="88596f9f-e326-4e15-ae91-8cc014e7be86"}
> peer                : []
> 
> 
> The logical flow:
>   table=10(ls_in_arp_rsp      ), priority=100  , match=(arp.tpa ==
> 172.16.0.130 && arp.op == 1 && inport ==
> "640d0475-ff83-47b7-8a4d-9ea0e770fb24"), action=(next;)
>   table=10(ls_in_arp_rsp      ), priority=100  , match=(inport ==
> "provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f"), action=(next;)
>   table=10(ls_in_arp_rsp      ), priority=50   , match=(arp.tpa ==
> 172.16.0.130 && arp.op == 1), action=(eth.dst = eth.src; eth.src =
> fa:16:3e:2e:ea:e9; arp.op = 2; /* ARP reply */ arp.tha = arp.sha;
> arp.sha = fa:16:3e:2e:ea:e9; arp.tpa = arp.spa; arp.spa = 172.16.0.130;
> outport = inport; flags.loopback = 1; output;)
>   
>   table=15(ls_in_l2_lkup      ), priority=100  , match=(eth.mcast),
> action=(outport = "_MC_flood"; output;)
>   table=15(ls_in_l2_lkup      ), priority=50   , match=(eth.dst ==
> fa:16:3e:2e:ea:e9 &&
> is_chassis_resident("cr-lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24")),
> action=(outport = "640d0475-ff83-4
> 7b7-8a4d-9ea0e770fb24"; output;)
>   table=15(ls_in_l2_lkup      ), priority=0    , match=(1),
> action=(outport = "_MC_unknown"; output;)
> 
> 
> 
> 
> 
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
> 
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


[ovs-discuss] OVN Logical Router Port ARP response

2017-11-13 Thread Hui Xiang
Hi folks,

I am a bit confused of the OVN logical router port arp flow process if
arping it from external side.

When I am tracing the logical router port arp, it always seems there would
be no response from the flow procedure, however, I do can get the arp
response and reach it.
My trace inport is the localnet port on the provider bridge, and it always
go to next and then hit ls_in_l2_lkup table and match MC_unknown then
dropped.

I wonder who send this arp response? or my inport is wrong in the trace if
arp from outside? Thanks very much for any helpful info!


[root@node-1 ~]# ovn-trace --detail 9ac587cd-becc-4584-99c9-24282f8707e2
'inport == "provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f" && arp.sha ==
96:95:d8:7d:b9:4c && arp.tpa == 172.16.0.130  && arp.op == 1'
#
arp,reg14=0x1,vlan_tci=0x,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,arp_spa=0.0.0.0,arp_tpa=172.16.0.130,arp_op=1,arp_sha=96:95:d8:7d:b9:4c,arp_tha=00:00:00:00:00:00

ingress(dp="public", inport="provnet-668bf1")
-
 0. ls_in_port_sec_l2 (ovn-northd.c:3556): inport == "provnet-668bf1",
priority 50, uuid 25b99b9a
next;
10. ls_in_arp_rsp (ovn-northd.c:3588): inport == "provnet-668bf1", priority
100, uuid b3607f68
next;
15. ls_in_l2_lkup (ovn-northd.c:3975): 1, priority 0, uuid 83de4750
outport = "_MC_unknown";
output;

multicast(dp="public", mcgroup="_MC_unknown")
-

egress(dp="public", inport="provnet-668bf1", outport="provnet-668bf1")
--
/* omitting output because inport == outport && !flags.loopback */




Logical Router Port:
_uuid   : 6d67d962-38a5-4a29-86b5-067dc26f78d4
enabled : []
external_ids: {}
gateway_chassis : []
mac : "fa:16:3e:2e:ea:e9"
name: "lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24"
networks: ["172.16.0.130/16"]
options :
{redirect-chassis="88596f9f-e326-4e15-ae91-8cc014e7be86"}
peer: []


The logical flow:
  table=10(ls_in_arp_rsp  ), priority=100  , match=(arp.tpa ==
172.16.0.130 && arp.op == 1 && inport ==
"640d0475-ff83-47b7-8a4d-9ea0e770fb24"), action=(next;)
  table=10(ls_in_arp_rsp  ), priority=100  , match=(inport ==
"provnet-668bf1b8-cfec-44d1-b659-30a42c83e29f"), action=(next;)
  table=10(ls_in_arp_rsp  ), priority=50   , match=(arp.tpa ==
172.16.0.130 && arp.op == 1), action=(eth.dst = eth.src; eth.src =
fa:16:3e:2e:ea:e9; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha =
fa:16:3e:2e:ea:e9; arp.tpa = arp.spa; arp.spa = 172.16.0.130; outport =
inport; flags.loopback = 1; output;)
  
  table=15(ls_in_l2_lkup  ), priority=100  , match=(eth.mcast),
action=(outport = "_MC_flood"; output;)
  table=15(ls_in_l2_lkup  ), priority=50   , match=(eth.dst ==
fa:16:3e:2e:ea:e9 &&
is_chassis_resident("cr-lrp-640d0475-ff83-47b7-8a4d-9ea0e770fb24")),
action=(outport = "640d0475-ff83-4
7b7-8a4d-9ea0e770fb24"; output;)
  table=15(ls_in_l2_lkup  ), priority=0, match=(1), action=(outport
= "_MC_unknown"; output;)
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss