[ovs-dev] [PATCH v1 4/4] openvswitch: Userspace tunneling.
Pravin Shelar
pshelar at nicira.com
Fri Oct 24 19:23:55 UTC 2014
On Fri, Oct 24, 2014 at 7:05 AM, Thomas Graf <tgraf at noironetworks.com> wrote:
> First of all, great to see this work. This is awesome! I read through
> the code a first time. Planning to do more reviewing but looks very
> sane already.
>
> On 10/16/14 at 11:38am, Pravin B Shelar wrote:
>> + 192.168.1.1/24
>> + +--------------+
>> + | int-br | 192.168.1.2/24
>> + +--------------+ +--------------+
>> + | vxlan0 | | vxlan0 |
>> + +--------------+ +--------------+
>> + | |
>> + | |
>> + | |
>> + 172.168.1.1/24 |
>> + +--------------+ |
>> + | br-eth1 | 172.168.1.2/24
>> + +--------------+ +---------------+
>> + | eth1 |----------------------------------| eth1 |
>> + +--------------+ +----------------
>
> Might be worth finding other names than int-br and br-eth1 due to
> Neutron's usage of br-int and br-ethX to avoid confusion. I realize
> that everybody is free to name their bridges but examples tend to get
> used 1:1 ;-)
>
Does Neutron uses br-ethX for something else to cause confusion?
>> +bugs at openvswitch.org
>> diff --git a/datapath/linux/compat/include/linux/openvswitch.h b/datapath/linux/compat/include/linux/openvswitch.h
>> index b2257e6..ff7c9d9 100644
>> --- a/datapath/linux/compat/include/linux/openvswitch.h
>> +++ b/datapath/linux/compat/include/linux/openvswitch.h
>> @@ -580,6 +580,15 @@ struct ovs_action_hash {
>> uint32_t hash_basis;
>> };
>>
>> +#define TNL_PUSH_HEADER_SIZE 128
>> +struct ovs_action_push_tnl {
>> + uint32_t tnl_port;
>> + uint32_t out_port;
>> + uint32_t header_len;
>> + uint32_t tnl_type; /* For logging. */
>> + uint8_t header[TNL_PUSH_HEADER_SIZE];
>> +};
>
> Any reason for this to live in the kernel header?
>
This is data for tnl-push action, such structures are defined in openvswitch.h.
>> /**
>> * enum ovs_action_attr - Action types.
>> *
>> @@ -633,6 +642,10 @@ enum ovs_action_attr {
>> * data immediately followed by a mask.
>> * The data must be zero for the unmasked
>> * bits. */
>> +#ifndef __KERNEL__
>> + OVS_ACTION_ATTR_TUNNEL_PUSH,
>> + OVS_ACTION_ATTR_TUNNEL_POP,
>> +#endif
>> __OVS_ACTION_ATTR_MAX
>> };
>
> Should we remove the #ifndef so the action values are reserved in the
> kernel datapath as well? We don't want conflicting actions types later on.
>
There is no plan for implementing this action for kernel datapath, so
for now I do not want to reserve number for the action.
>> +void
>> +tnl_port_map_insert(odp_port_t port, ovs_be32 ip_dst, ovs_be16 udp_port,
>> + const char dev_name[])
>> +{
>> + const struct cls_rule *cr;
>> + struct tunnel_port *p;
>> + struct match match;
>> +
>> + memset(&match, 0, sizeof match);
>> +
>> + match.flow.dl_type = htons(ETH_TYPE_IP);
>> + if (udp_port) {
>> + match.flow.nw_proto = IPPROTO_UDP;
>> + } else {
>> + match.flow.nw_proto = IPPROTO_GRE;
>> + }
>> +
>> + match.flow.tp_dst = udp_port;
>
> Move this flow init code into a function for use by tnl_port_map_delete()?
>
ok.
Thanks for all review.
--Pravin.
>
>> +
>> + /* When matching on incoming flow from remove tnl end point,
> ^^^^
More information about the dev
mailing list