data plane broker integration
play

Data Plane Broker Integration, Configuration & Implementation. - PowerPoint PPT Presentation

Data Plane Broker Integration, Configuration & Implementation. Paul McCherry Data Plane Broker Integration OSM Creation: Connection Points, Bandwidth Deletion: Service_Id DPB WIM Connector Modify: In development, Service_Id


  1. Data Plane Broker Integration, Configuration & Implementation. Paul McCherry

  2. Data Plane Broker Integration OSM Creation: Connection Points, Bandwidth Deletion: Service_Id DPB WIM Connector Modify: “In development”, Service_Id Bandwidth, Service_id Rest & Ssh Api Data Plane Broker Fabric Adapter Rest Api Openflow Controller Rest Api Hardware Layer Configure Athens Openflow Openflow Openflow London 1 2 1 2 2 1 VIM Switch B Switch C Switch A Trunk Trunk VIM 3 3 3

  3. Data Plane Broker Integration OSM Creation: Connection Points, Bandwidth Deletion: Service_Id DPB WIM Connector Modify: “In development”, Service_Id Bandwidth, Service_id Rest & Ssh Api Data Plane Broker Fabric Adapter Rest Api Openflow Controller Rest Api Hardware Layer Configure Athens Openflow Openflow Openflow London 1 2 1 2 2 1 VIM Switch B Switch C Switch A Trunk Trunk VIM 3 3 3

  4. Data Plane Broker Integration OSM Creation: Connection Points, Bandwidth Deletion: Service_Id DPB WIM Connector Modify: “In development”, Service_Id Bandwidth, Service_id Rest & Ssh Api Data Plane Broker Fabric Adapter Rest Api Ryu Openflow Controller Rest Api Corsa Hardware Layer Configure Athens Openflow Openflow Openflow London 1 2 1 2 2 1 VIM Switch B Switch C Switch A Trunk Trunk VIM 3 3 3

  5. Data Plane Broker Integration • Identify Modules which needed editing to add Dpb Wim connector RO Container NBI Container Validation.PY Schemas.PY # WIM ------------------------------------------------------------------------- wim_types = ["tapi", "onos", "odl", "dynpac", "dpb","fake"] ……………………………………………… ……………………………………………… ……………………………………………… Wim_Thread.PY ……………………………………………… ……………………………………………… wim_account_new_schema = { "title": "wim_account creation input schema", ……………………………………………… "$schema": "http://json-schema.org/draft-04/schema#", ……………………………………………… Thread-based interaction with WIMs. Tasks are stored in the "type": "object", ………… database (vim_wim_actions table) and processed sequentially "properties": { wim_schema_properties = { "schema_version": schema_version, Please check the Action class for information about the content of each action. Wan_Link_Actions.PY "schema_type": schema_type, "name": name_schema, """ "name": name_schema, "description": description_schema, "description": description_schema, "type": { import logging "wim": name_schema, "type": "string", import threading "enum": ["tapi", "onos", "odl", "dynpac", "dpb", "fake"] "wim_type": {"enum": ["tapi", "onos", "odl", "dynpac", "dpb","fake"]}, from contextlib import contextmanager "wim_url": description_schema, }, from functools import partial "user": shortname_schema, "wim_url": description_schema, ……………………………………………… from itertools import islice, chain, takewhile "password": passwd_schema, "config": { ……………………………………………… from operator import itemgetter, attrgetter "config": { "type": "object", "properties": { from sys import exc_info "type": "object", @staticmethod from time import time, sleep "patternProperties": { a "wim_port_mapping": wim_port_mapping_desc def _derive_connection_point(wan_info): ".": {"not": {"type": "null"}} } point = {'service_endpoint_id': wan_info['wan_service_endpoint_id']} a from six import reraise } } # TODO: Cover other scenarios, e.g. VXLAN. from six.moves import queue } } details = wan_info.get('wan_service_mapping_info', {}) ……………………………………………… }, if details.get('encapsulation_type') == 'vlan': from . import wan_link_actions "required": ["name", "wim_url", "wim_type"], ……………………………………………… point['service_endpoint_encapsulation_type'] = 'dot1q' from ..utils import ensure, partition, pipe point['service_endpoint_encapsulation_info'] = { from .actions import IGNORE, PENDING, REFRESH ……………………………………………… 'vlan': details['encapsulation_id'] from .errors import ( ……………………………………………… a } DbBaseException, else: QueueFull, point['service_endpoint_encapsulation_type'] = 'none' InvalidParameters as Invalid, return point UndefinedAction, ) @staticmethod from .failing_connector import FailingConnector def _derive_service_type(connection_points): from .wimconn import WimConnectorError # TODO: add multipoint and L3 connectivity. a from .wimconn_dynpac import DynpacConnector if len(connection_points) == 2: from .wimconn_dpb import DpbConnector return 'ELINE' from .wimconn_fake import FakeConnector else: from .wimconn_ietfl2vpn import WimconnectorIETFL2VPN #raise NotImplementedError('Multipoint connectivity is not ' # 'supported yet.') ACTIONS = { return 'ELAN' 'instance_wim_nets': wan_link_actions.ACTIONS } ……………………………………………… ……………………………………………… CONNECTORS = { # "odl": wimconn_odl.OdlConnector, "dynpac": DynpacConnector, "dpb": DpbConnector, "fake": FakeConnector, ……………………………………………… ………………………………………………

  6. Data Plane Broker Integration RO Container Wimconn_dpb.py # TODO: List # - Add correct HTTP error codes # - Add some comments.... # - PEP8 it class DpbSshInterface(): """ Communicate with the DPB via SSH """ __LOGGER_NAME_EXT = ".ssh" __FUNCTION_MAP_POS = 1 def __init__(self, wim_account, wim_url, wim_port, network, auth_data, logger_name): self.logger.info("SSH connection to DPB made OK") class DpbRestInterface(): """ Communicate with the DPB via the REST API """ __LOGGER_NAME_EXT = ".rest" __FUNCTION_MAP_POS = 0 def __init__(self, wim_account, wim_url, wim_port, network, logger_name): …………………………………….. class DpbConnector(WimConnector): a """ Use the DPB to establish multipoint connections """ __SUPPORTED_SERV_TYPES = ["ELAN (L2)", "ELINE (L2)"] __SUPPORTED_CONNECTION_TYPES = ["REST", "SSH"] __SUPPORTED_SSH_AUTH_TYPES = ["KEY", "PASS"] __SUPPORTED_SSH_KEY_TYPES = ["ECDSA", "RSA"] def create_connectivity_service(self, service_type, connection_points, **kwargs): self.logger.info("CREATING CONNECTIVITY SERVICE") #self.__check_service(service_type, connection_points, kwargs) response = self.__post(self.__ACTIONS_MAP.get("CREATE")) ……………………………………… "ingress-bw": 10.0, "egress-bw": 10.0}) #"ingress-bw": (bandwidth.get(point.get("service_endpoint_id"))).get("ingress"), #"egress-bw": (bandwidth.get(point.get("service_endpoint_id"))).get("egress")} …………………………………………… def delete_connectivity_service(self, service_uuid, conn_info=None): # self.__post(self.__ACTIONS_MAP.get("DEACTIVATE"), "/service/"+service_id) self.logger.debug("deletion infO - suuId= "+str(service_uuid)+" conn_info= "+str(conn_info)) …………………………………………… def edit_connectivity_service(self, service_uuid, conn_info=None, connection_points=None, **kwargs): """Change an existing connectivity service. This method's arguments and return value follow the same convention as :meth:`~.create_connectivity_service`.

  7. Usage Case for a Network Service across a WIM Beta.sys Athens Tiny.sys London APACHE-MGMT HAPROXY-MGMT OSM_WAN 10.30.67.164 10.30.66.30 SERVICE_WAN 192.168.28.2 192.168.28.x/24 Ha-proxy_vnf Apache_vnf In Development Apache VDU Bandwidth passed to WIM Scale 1-15 1 Apache VDU = 10 VDU Leaf Bandwidth = 10 …….. Root Bandwidth = 10 x 15 192.168.200.11 15 Apache VDU = 150 = 150 PUBLIC

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend