Message ID | 20200513133853.116959-1-ihrachys@redhat.com |
---|---|
Headers | show |
Series | Support logical switches with multiple localnet ports | expand |
On 5/13/20 3:38 PM, Ihar Hrachyshka wrote: > Hi all, > > This series is to allow for multiple localnet ports to be present in a > logical switch. Even before the series, it was allowed to create > multiple ports of this kind but they were handled inconsistently. > > This series uses logical switches with multiple localnet ports > (LSMLP) to implement what is called "routed provider networks" in > OpenStack. To elaborate, this allows to natively model a network that > has multiple segments with implied L3 routing between the segments > realized by the fabric. A user can operate such a network as a single > entity instead of deciding on which segment to choose for their > port bindings. > > The assumption in this implementation is that while a logical switch can > have multiple localnet ports, each chassis has only one of corresponding > physical networks mapped. Meaning, if the same LS has localnet ports for > networks A, B, and C, then each chassis can either be mapped to A, B, or > C, but not several of the networks. (Note this doesn't mean that a > chassis can't be mapped to network D, as long as it doesn't have a > corresponding localnet port in this same logical switch.) > > Ihar Hrachyshka (6): > Spin out flow generation into build_dhcpv4_options_flows > Spin out flow generation into build_dhcpv6_options_flows > Spin out flow generation into build_pre_acl_flows > Spin out flow generation into > build_drop_arp_nd_flows_for_unbound_router_ports > Support logical switches with multiple localnet ports > Log missing bridge per localnet port just once For the series: Acked-by: Dumitru Ceara <dceara@redhat.com> Thanks, Dumitru > > --- > v2: - rebase on top of series that refactors code dealing with > localnet ports. > - tests: send packets both ways, more test scenarios covered. > - use x2nrealloc to allocate ->localnet_ports. > - use n_localnet_ports counter instead of localnet_ports pointer > to detect switches with localnet ports. > v3: - adjusted documentation to be more explicit about how multiple > localnet ports scenario should be used in practice. > - more tests (broadcast, multiple co-hosted switches with multiple > localnet ports) > v4: - sent as a series, fixed test description to reflect we test > broadcast only. > v5: - fixed a test case failure on slower machines due to service > broadcast traffic captured. > - rearranged parameters in new functions to keep output parameters > at the end. > v6: - fixed several memory leaks due to struct ds not destroyed / > char* not freed. > - explained why we don't rate limit messages about unbound > localnet ports. > - docs: fixed a missing space between sentences. > - nit: rearranged code inside controller/patch.c to avoid an `if`. > v7: - simplified new build_* functions by removing stage_hint > calculation. > - simplified signature of build_pre_acl_flows_for_nbsp. > - renamed build_pre_acl_flows_for_nbsp -> build_pre_acl_flows. > - nit: removed redundant newlines between new build_* functions. > --- > > controller/binding.c | 16 ++ > controller/patch.c | 31 ++- > northd/ovn-northd.c | 474 ++++++++++++++++++++------------------ > ovn-architecture.7.xml | 50 ++-- > ovn-nb.xml | 23 +- > ovn-sb.xml | 21 +- > tests/ovn.at | 504 +++++++++++++++++++++++++++++++++++++++++ > 7 files changed, 862 insertions(+), 257 deletions(-) >
On Thu, May 14, 2020 at 4:00 PM Dumitru Ceara <dceara@redhat.com> wrote: > On 5/13/20 3:38 PM, Ihar Hrachyshka wrote: > > Hi all, > > > > This series is to allow for multiple localnet ports to be present in a > > logical switch. Even before the series, it was allowed to create > > multiple ports of this kind but they were handled inconsistently. > > > > This series uses logical switches with multiple localnet ports > > (LSMLP) to implement what is called "routed provider networks" in > > OpenStack. To elaborate, this allows to natively model a network that > > has multiple segments with implied L3 routing between the segments > > realized by the fabric. A user can operate such a network as a single > > entity instead of deciding on which segment to choose for their > > port bindings. > > > > The assumption in this implementation is that while a logical switch can > > have multiple localnet ports, each chassis has only one of corresponding > > physical networks mapped. Meaning, if the same LS has localnet ports for > > networks A, B, and C, then each chassis can either be mapped to A, B, or > > C, but not several of the networks. (Note this doesn't mean that a > > chassis can't be mapped to network D, as long as it doesn't have a > > corresponding localnet port in this same logical switch.) > > > > Ihar Hrachyshka (6): > > Spin out flow generation into build_dhcpv4_options_flows > > Spin out flow generation into build_dhcpv6_options_flows > > Spin out flow generation into build_pre_acl_flows > > Spin out flow generation into > > build_drop_arp_nd_flows_for_unbound_router_ports > > Support logical switches with multiple localnet ports > > Log missing bridge per localnet port just once > > For the series: > > Acked-by: Dumitru Ceara <dceara@redhat.com> > Hi Ihar, Thanks for the patches and thanks Dumitru for the reviews. I applied the first 4 patches of this series to master. I didn't get the chance to look into the other two. Also I'm waiting to see if Han has any further comments. Thanks Numan > > Thanks, > Dumitru > > > > > --- > > v2: - rebase on top of series that refactors code dealing with > > localnet ports. > > - tests: send packets both ways, more test scenarios covered. > > - use x2nrealloc to allocate ->localnet_ports. > > - use n_localnet_ports counter instead of localnet_ports pointer > > to detect switches with localnet ports. > > v3: - adjusted documentation to be more explicit about how multiple > > localnet ports scenario should be used in practice. > > - more tests (broadcast, multiple co-hosted switches with multiple > > localnet ports) > > v4: - sent as a series, fixed test description to reflect we test > > broadcast only. > > v5: - fixed a test case failure on slower machines due to service > > broadcast traffic captured. > > - rearranged parameters in new functions to keep output parameters > > at the end. > > v6: - fixed several memory leaks due to struct ds not destroyed / > > char* not freed. > > - explained why we don't rate limit messages about unbound > > localnet ports. > > - docs: fixed a missing space between sentences. > > - nit: rearranged code inside controller/patch.c to avoid an `if`. > > v7: - simplified new build_* functions by removing stage_hint > > calculation. > > - simplified signature of build_pre_acl_flows_for_nbsp. > > - renamed build_pre_acl_flows_for_nbsp -> build_pre_acl_flows. > > - nit: removed redundant newlines between new build_* functions. > > --- > > > > controller/binding.c | 16 ++ > > controller/patch.c | 31 ++- > > northd/ovn-northd.c | 474 ++++++++++++++++++++------------------ > > ovn-architecture.7.xml | 50 ++-- > > ovn-nb.xml | 23 +- > > ovn-sb.xml | 21 +- > > tests/ovn.at | 504 +++++++++++++++++++++++++++++++++++++++++ > > 7 files changed, 862 insertions(+), 257 deletions(-) > > > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > >