1 of 21

ODL neutron northbound boron planning

feature gaps in ODL and openstack

Isaku Yamahata

OpenDaylight Developer Design Forum Feb 29, 2016

https://wiki.opendaylight.org/view/NeutronNorthbound:Main

etherpad:https://pad.opendaylight.org/p/neutron-northbound-boron-planning�trello board: https://trello.com/b/LhIIQ8Z0/odl-neutronnorthbound

2 of 21

Goal of ODL Neutron Northbound

  • To serve dependent projects(openstack service provider)

Expected outcome of this session

  • reach consensus for Boron tasks/directions(with assignee)
  • updated trello boards

3 of 21

version support: openstack vs opendaylight

  • openstack
    • development(Mitaka)
    • stable release(Liberty)
    • security release(Kilo)
    • -> EOL
  • OpenDayLight
    • release, SR1-SR4

Kilo(security supported)

Liberty(stable)

Mitaka(development)

Newton(future)

Ocata

Helium(SR4)

Lithium(SR3)

Beryllium(stable)

Boron(development): LTS

Carbon(future)

4 of 21

openstack security support

openstack stable release

openstack development

opendaylight SR

-

-

should maintain?�engineering resource?

opendaylight stable release

-

No major activity

test by openstack CI

opendaylight development

should maintain?

engineering resource?

TODO:

test by ODL CI

test by opensatck CI

test by ODL CI(TODO)

Developer major focus

5 of 21

2 or 3 openstack version?

Kilo

Liberty

Mitaka

Newton

Ocata

Hellium

?

Lithium

?

?

Beryllium

?

?

?

Boron

?

?

Carbon

?

?

future

6 of 21

should apply for Mature project review?

7 of 21

incompatible update(mainly yang model)

  • Delete IAware* interface
    • https://git.opendaylight.org/gerrit/#/c/35505/
  • delete backpointers: won’t maintain integrity
    • eliminate backpointers instead of maintaining integrity
    • e.g. security-group::security-rules
    • action: add/remove_router_interface
      • interface-attribute
  • Bug fixes: the model was broken from the beginning
    • there isn’t any good way to maintain compatibilities
  • catching up openstack neutron change
    • probably compatibility can be maintain by augmentation

project

Ready to eliminate I*Aware?

ovsdb/netvirt

Yes

GroupBasedPolicy

No

VTN

Yes

LispFlowMapping

No

NIC

Yes

8 of 21

Security Group:

protocol conversion: string into integer

  • neutron accepts both string(tcp, udp, icmp, ...) and integer
  • string name constantly is being added.
  • ODL doesn’t want to follow it.
  • networking-odl converts protocol string into integer

9 of 21

neutron extension

features/extension

supported by neutron northbound?

supported by ovsdb/netvirt

GBP, lispflowmapper, vtn, nic

comment

providernet

yes

It requires a way for cloud admin to tell how compute/network node is connected physically

No

common model to describe providernet on each compute/network node is necessary

extraroute

Yes

Yes

metering

Yes

No

netmtu

No

No

network_availability_zone

No

No

portsecurity

No

No

qos

No

No

5 qos policies in neutron with ovs

vlantransparent

No

No

vlan trunking(vlan aware vms)

No

No

this feature is still under development in openstack neutron

router_availability_zone

No

No

10 of 21

L3 feature

feature

supported by neutron northbound?

supported by netvirt, GBP, lispflowmapper, vtn, nic

reference implementation(ovs-agent, l3-agent)

comment

DVR east-west

-

Yes

Yes

DVR north-south: foating ip(DNAT)

-

Yes

Yes

DVR north-south: shared SNAT

distributed SNAT

needs network node scheduling

No

Yes:

HA with VRRP

centralized shared SNAT scneduler

keepalived

ipv6 router advertisement

-

No

Yes

radvd

RFC2461

IPv6 SLAAC

-

No

yes

rfc4862

rfc7527

metadata (amazon API http://169.254.169.254/latest/meta-data/)

-

No

meta data agent

meta data proxy on networking node

This isn’t necessary as dhcp agetn with metadata server

11 of 21

services

features/extension

supported by neutron northbound?

support by netvirt, GBP, lispflowmapper, vtn, nic

comment

LBaaSv1

yes

yes

LBaaSv2

no

no

FWaaS

no

no

VPNaaS

no

no

bgpvpn

yes

yes by vpnservice

networking-l2gw

yes

yes

there is ODL project

networking-taas(tap as a service)

no

no

networking-sfc

no

no

12 of 21

New coming features in Mitaka

add-port-timestamp.rst�add-tags-to-core-resources.rst�address-scopes.rst�adopt-oslo-guru-reports.rst�availability-zone.rst�bgp-dynamic-routing.rst�external-dns-resolution.rst�fwaas-api-2.0.rst�get-me-a-network.rst��

improve-dvr-l3-agent-binding.rst�lbaas-driver-vip-delegation.rst�lbaas-l7-rules.rst�network-ip-availability-api.rst�neutron-flavor-framework-templates.rst�neutron-lib.rst�rbac-qos-policies.rst�restructure-l2-agent.rst�unaddressed-port.rst�vlan-aware-vms.rst

13 of 21

agent_db

host-id

agent-type

config

key:host-id

host-type

config

Neutron

ODL

Neutron Northbound

ODL

openstack service provider

networking-odl

OVSDB

host-id:host-type:config

port binding

router scheduling

startup

On port binding: refer to agent_db for config on host-id

on startup of networking-odl

and periodically networking-odl polls ODL MD-SAL via http.

Later phase, introduce callback from ODL to networking-odl

nova

Subclass of mech_agent.py

  • binding:vnic_type,
  • binding:profile
  • binding:host_id

14 of 21

node related configurations

  • introduce new model to describe config/capability of each compute/network node
    • corresponding to openstack neutron agent API
    • neutron agent-list
  • Values
    • string host-id (not uuid)
      • by default, $(hostname)
    • string host-type
    • string config
  • Key: host-id + host-type
  • ODL patch: https://git.opendaylight.org/gerrit/#/c/36767/

15 of 21

node related configurations

  • String config
  • Json as string

{� 'supported_vnic_types': [VNIC_NORMAL, VNIC_DIRECT, ...],� 'allowed_network_types': [TYPE_LOCAL, TYPE_FLAT, TYPE_VLAN, TYPE_VXLAN...],� 'bridge_mappings': [<physical_network>:<bridge>, ...],� 'supported_vnic_types': {VNIC_NORMAL: vif_details_normal, ...},� 'vif_type': VIF_TYPE_VHOST_USER,� 'vif_details': {CAP_PORT_FILTER: False, VHOST_USER_SOCKET: sock_path, ...},� 'vlan_transparency': false,

….� }

Local config: bad

16 of 21

port binding and agent

  • agent_db
  • (ab)use agent_db and its scheduler
    • the current code closely ties host/functionality to agent/agent_type
  • agent: functionality,
    • neutron normal case: hostid -> agent -> config
    • what we want: hostid -> config
  • someone needs to populate agent_db table
    • on ODL side, yang model:
    • default values:
    • hostid -> config
    • networking-odl populates it: ovsdb in node -> ODL -> networking-odl -> db in neutron
  • networking-odl should do it?
  • Currently no callback from ODL to networking-odl
    • at first phase: networking-odl polls new node
    • later: odl up-calls networking-odl to populate it: MD-SAL DCN(Data Chage Notification) via http(websocket?)

17 of 21

networking-node without l3-agent

  • for shared SNAT
    • distributed shared SNAT is impractical. Even neutron with ovs-agent hasn’t solved this.
    • At least as first phase, centralized SNAT will be adopted.
  • (ab)use agent_db

18 of 21

dhcp, radvd and vrrp

  • agent to spawn dnsmasq(dhcpd), radvd(RFC 2461), keepalived(vrrp)
    • http://www.thekelleys.org.uk/dnsmasq/doc.html
    • http://www.litech.org/radvd/
    • http://keepalived.org/
  • Do we want to re-implement those functionalities in ODL?
  • If no, agent (l3-agent - l3 functionarity) is needed

dhcp agent

dhcp

l3 agent

router advertisement(radvd)

vrrp(keepalived)

19 of 21

capability reporting

  • openstack service provider reports its capability
  • networking-odl reads it on startup
  • something similar to extension of neutron api(neutron ext-list)

20 of 21

rolling upgrade

How to upgrade ODL without downtime

What’s the procedure to upgrade

  1. upgrade neutron/networking-odl
  2. upgrade opendaylight
    1. networking-odl will notice the ODL upgrade

  • Put transition logic on neutron/networking-odl side.
  • networking-odl automatically detect upgrade.
    • ODL returns version mismatch error to networking-odl?
    • re-negotiate on http bad request?

  1. upgrade opendaylight
  2. upgrade neutron/networking-odl

  • ODL neutron northbound need to maintain compatibility from networking-odl <ver N - 1> -> networking-odl <ver N>

21 of 21

backup