Data Plane Broker Integration, Configuration & Implementation.

2y ago
10 Views
2 Downloads
1.12 MB
20 Pages
Last View : 11d ago
Last Download : 3m ago
Upload by : Joanna Keil
Transcription

Data Plane Broker Integration,Configuration &Implementation.Paul McCherry

Data Plane Broker IntegrationOSMCreation: Connection Points, BandwidthDeletion: Service IdDPB WIM ConnectorModify: “In development”,Service IdBandwidth, Service idRest & Ssh ApiData Plane BrokerFabric AdapterRest ApiOpenflowControllerRest ApiHardware LayerConfigureAthensVIM1OpenflowSwitch B32Trunk1OpenflowSwitch C32Trunk2OpenflowSwitch A31LondonVIM

Data Plane Broker IntegrationOSMCreation: Connection Points, BandwidthDeletion: Service IdDPB WIM ConnectorModify: “In development”,Service IdBandwidth, Service idRest & Ssh ApiData Plane BrokerFabric AdapterRest ApiOpenflowControllerRest ApiHardware LayerConfigureAthensVIM1OpenflowSwitch B32Trunk1OpenflowSwitch C32Trunk2OpenflowSwitch A31LondonVIM

Data Plane Broker IntegrationOSMCreation: Connection Points, BandwidthDeletion: Service IdDPB WIM ConnectorModify: “In development”,Service IdBandwidth, Service idRest & Ssh ApiData Plane BrokerFabric AdapterRest ApiRyu OpenflowControllerRest ApiCorsa Hardware LayerConfigureAthensVIM1OpenflowSwitch B32Trunk1OpenflowSwitch C32Trunk2OpenflowSwitch A31LondonVIM

Data Plane Broker Integration Identify Modules which needed editing to add Dpb Wim connectorRO ContainerNBI ContainerValidation.PYSchemas.PY# WIM ----------------------wim types ["tapi", "onos", "odl", "dynpac", "dpb","fake"] Wim Thread.PYThread-based interaction with WIMs. Tasks are stored in thedatabase (vim wim actions table) and processed sequentiallywim schema properties {"name": name schema,"description": description schema,"type": {"type": "string","enum": ["tapi", "onos", "odl", "dynpac", "dpb", "fake"]},"wim url": description schema,"config": {"type": "object","properties": {"wim port mapping": wim port mapping desc}}} aPlease check the Action class for information about the content of each action."""import loggingimport threadingfrom contextlib import contextmanagerfrom functools import partialfrom itertools import islice, chain, takewhilefrom operator import itemgetter, attrgetterfrom sys import exc infofrom time import time, sleepfrom six import reraisefrom six.moves import queuefrom . import wan link actionsfrom .utils import ensure, partition, pipefrom .actions import IGNORE, PENDING, REFRESHfrom .errors import (DbBaseException,QueueFull,InvalidParameters as Invalid,UndefinedAction,)from .failing connector import FailingConnectorfrom .wimconn import WimConnectorErrorfrom .wimconn dynpac import DynpacConnectorfrom .wimconn dpb import DpbConnectorfrom .wimconn fake import FakeConnectorfrom .wimconn ietfl2vpn import WimconnectorIETFL2VPNaACTIONS {'instance wim nets': wan link actions.ACTIONS}CONNECTORS {# "odl": wimconn odl.OdlConnector,"dynpac": DynpacConnector,"dpb": DpbConnector,"fake": FakeConnector, Wan Link Actions.PY @staticmethoddef derive connection point(wan info):point {'service endpoint id': wan info['wan service endpoint id']}# TODO: Cover other scenarios, e.g. VXLAN.details wan info.get('wan service mapping info', {})if details.get('encapsulation type') 'vlan':point['service endpoint encapsulation type'] 'dot1q'point['service endpoint encapsulation info'] {'vlan': details['encapsulation id']}else:point['service endpoint encapsulation type'] 'none'return point@staticmethoddef derive service type(connection points):# TODO: add multipoint and L3 connectivity.if len(connection points) 2:return 'ELINE'else:#raise NotImplementedError('Multipoint connectivity is not '#'supported yet.')return 'ELAN'a wim account new schema {"title": "wim account creation input schema"," schema": "http://json-schema.org/draft-04/schema#","type": "object","properties": {"schema version": schema version,"schema type": schema type,"name": name schema,"description": description schema,"wim": name schema,"wim type": {"enum": ["tapi", "onos", "odl", "dynpac", "dpb","fake"]},"wim url": description schema,"user": shortname schema,"password": passwd schema,"config": {"type": "object","patternProperties": {".": {"not": {"type": "null"}}}}},"required": ["name", "wim url", "wim type"],a

Data Plane Broker IntegrationWimconn dpb.pyRO Container# TODO: List# - Add correct HTTP error codes# - Add some comments.# - PEP8 itclass DpbSshInterface():""" Communicate with the DPB via SSH """LOGGER NAME EXT ".ssh"FUNCTION MAP POS 1def 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 0def init (self, wim account, wim url, wim port, network, logger name): .class DpbConnector(WimConnector):""" 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"]adef 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 .

Usage Case for a Network Service across a WIMBeta.sys AthensAPACHE-MGMT10.30.67.164Apache vnf192.168.28.x/24Apache VDUScale 1-15VDU Leaf Bandwidth 10Root Bandwidth 10 x 15 150Tiny.sys LondonOSM WANSERVICE WANIn DevelopmentBandwidth passed to WIM1 Apache VDU 10 .15 Apache VDU 150HAPROXY-MGMT10.30.66.30192.168.28.2Ha-proxy vnf192.168.200.11PUBLIC

OSM Vim-Create1Configuration of the WIM#create 2 datacentres, example file vimcreate2.sh# create Athens on beta.sys Vimosm vim-create --name athens-datacentre --auth url http://beta.sys:5000/v3 --tenant admin -user demo --password demo --account type openstack --description “ATHENS Project demo onBeta.sys" --config '{"external connections": [ {"condition": {"provider:physical network":"provider", "provider:network type": "vlan"},"vim external port":{"switch":"openflow:1","port":"1"}}]}'# create London on tiny.sys Vimosm vim-create --name London-datacentre --auth url http://tiny.sys:5000/v3 --tenant admin -user demo --password demo --account type openstack --description “London Project admin ontiny.sys" --config '{"external connections": [ {"condition": {"provider:physical network":"provider", "provider:network type": "vlan"},"vim external port":{"switch":"openflow:1","port":“2"}}]}'OSM Wim-Create2CREATION OF A WiM USING REST Interface## example file wimcreate2.sh# uncomment either rest config or ssh config#create a 2 vim wimosm wim-create \--name London-Athens \--url beta.sys \--user initiate \--password admin \--wim type dpb \--description "Demo 2 endpoint dpb WIM" \--wim port mapping ./wim ports2.yaml \--config '{"port":4753,"network":"aggr","connection type":"REST"}'#--config '{"port":22,"network":"aggr","connection type":"SSH","ssh auth": \# {"auth type":"KEY","key file":"/home/paul/.ssh/id ecdsa","key type":"ECDSA"}}'# wim ports2.yaml--- datacenter name: “athens-datacentre"pop wan mappings:- pop switch dpid: "openflow:1"pop switch port: 1wan service endpoint id: “athens"wan service mapping info:mapping type: direct-connect- datacenter name: “London-datacentre"pop wan mappings:- pop switch dpid: "openflow:1"pop switch port: 2wan service endpoint id: “London"wan service mapping info:mapping type: direct-connect

RO ContainerConfiguration of the WIMWimconn dpb.py# TODO: List# - Add correct HTTP error codes# - Add some comments.# - PEP8 itclass DpbSshInterface():""" Communicate with the DPB via SSH """LOGGER NAME EXT ".ssh"FUNCTION MAP POS 1def 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 0def init (self, wim account, wim url, wim port, network, logger name): .CREATION OF A WiM USING REST or SSH Interface## example file wimcreate2.sh# uncomment either rest config or ssh config#create a 2 vim wimosm wim-create \--name London-Athens \--url beta.sys \--user demo \--password demo \--wim type dpb \# NOTE USE OF NEW DPB WIM TYPE--description "Demo 2 endpoint dpb WIM" \--wim port mapping ./wim ports2.yaml \#--config '{"port":22,"network":"aggr","connection type":"SSH","ssh auth": \# {"auth type":"KEY","key file":"/home/paul/.ssh/id ecdsa","key type":"ECDSA"}}‘--config '{"port":4753,"network":"aggr","connection type":"REST"}'class DpbConnector(WimConnector):""" 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"]adef 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 .

Implementation of the Network Service across the WIMBeta.sys AthensTiny.sys 30WIM WANApache vnf192.168.28.x/24Apache VDUScale 1-15VDU Leaf Bandwidth 10Root Bandwidth 10 x 15 150VNF-Index 2In DevelopmentBandwidth passed to WIM1 Apache VDU 10 mb .15 Apache VDU 150 mb192.168.28.2Ha-proxy vnf192.168.200.11PUBLICVNF-Index 1

Implementation of the Network Service across the WIM# example file nscreate2.shNetwork Service Descriptornsd:nsd-catalog:nsd:- constituent-vnfd:- member-vnf-index: '1'vnfd-id-ref: ha-proxy vnf- member-vnf-index: '2'vnfd-id-ref: apache wimmetric autoscale vnfdescription: Scaling web server with load balancer NS across WIMid: webserver wimmetric autoscale nsip-profiles:- description: Services Subnet on WANip-profile-params:dhcp-params:enabled: truegateway-address: 0.0.0.0ip-version: ipv4subnet-address: 192.168.28.0/24name: wanname: webserver wimmetric autoscale nsshort-name: webserver wimmetric autoscale nsvendor: p.mccherry@lancaster.ac.ukversion: '1.0'# create 1 ns, 2 vnfs and 1 network across 2 vims (WIM)osm ns-create \--ns name WIM \--nsd name webserver wimmetric autoscale ns \--vim account athens-datacentre \--config '{vnf:[{member-vnf-index: "1", vim account: London-datacentre}, \{member-vnf-index: "2", vim account: athens-datacentre}]}'

Implementation of the Network Service across the WIMOSM VLD (osm inet)Management Networkcp2APACHE-MGMTcp2192.168.28.x/24Apache serviceleaf-bandwidth: 10root-bandwidth: 150Athens VIMInfrastructure mgmtOOB link (eg vpn)OSM VLD (osm inet)Management NetworkVLAN 470VLAN 500VLAN 473VLAN 502WAN VLD (WAN)nsd:nsd-catalog:nsd:- constituent-vnfd:- member-vnf-index: '1'vnfd-id-ref: ha-proxy vnf- member-vnf-index: '2'vnfd-id-ref: apache wimmetric autoscale vnfdescription: Scaling web server with load balancer NS across WIMid: webserver wimmetric autoscale nsip-profiles:- description: Services Subnet on WANip-profile-params:dhcp-params:enabled: truegateway-address: 0.0.0.0ip-version: ipv4subnet-address: 192.168.28.0/24name: wanname: webserver wimmetric autoscale nsshort-name: webserver wimmetric autoscale nsvendor: p.mccherry@lancaster.ac.ukversion: '1.0'cp1HAPROXY-MGMTcp1192.168.28.2Haproxy serviceNetwork Service DescriptorWAN VLD (WAN)HAPROXY-PUBLIC192.168.200.x /24cp1PUBLIC vld (PUBLIC)London VIMvld:- id: osm vldmgmt-network: 'true'name: osm vldtype: ELANvim-network-name: osm-inetvnfd-connection-point-ref:- member-vnf-index-ref: 2vnfd-connection-point-ref: apache mgmtvnfd-id-ref: apache wimmetric autoscale vnf- member-vnf-index-ref: 1vnfd-connection-point-ref: haproxy mgmtvnfd-id-ref: ha-proxy vnf- id: public vldmgmt-network: 'false'name: public vldtype: ELANvim-network-name: PUBLICvnfd-connection-point-ref:- member-vnf-index-ref: 1vnfd-connection-point-ref: haproxy publicvnfd-id-ref: ha-proxy vnf- id: wan vldip-profile-ref: wanleaf-bandwidth: 10mgmt-network: 'false'name: WANroot-bandwidth: 150type: ELANvnfd-connection-point-ref:- ip-address: 192.168.28.2member-vnf-index-ref: 1vnfd-connection-point-ref: haproxy servicevnfd-id-ref: ha-proxy vnf- member-vnf-index-ref: 2vnfd-connection-point-ref: apache servicevnfd-id-ref: apache wimmetric autoscale vnf

Implementation of the Network Service across the WIMOSM VLD (osm inet)Management NetworkVLAN 470cp2APACHE-MGMTETH1Athens VIMcp2192.168.28.x/24Apache serviceleaf-bandwidth: 10root-bandwidth: 150ETH0VLAN 473WAN VLD (WAN)vnfd:vnfd-catalog:vnfd:- connection-point:- name: apache mgmttype: VPORT- name: apache servicetype: VPORTdescription: Scaling web server id:apache wimmetric autoscale vnfmgmt-interface:cp: apache mgmtmonitoring-param:- aggregation-type: AVERAGEid: apache vnf cpu utilname: apache vnf cpu utilvdu-monitoring-param:vdu-monitoring-param-ref: apache cpu utilvdu-ref: apache vduname: apache wimmetric autoscale vnfInfrastructure mgmtOOB link (eg vpn)OSM VLD (osm inet)Management NetworkVLAN 500VLAN 502cp1HAPROXY-MGMTcp1192.168.28.2Haproxy serviceETH2VNF DescriptorsETH0WAN VLD (WAN)ETH1HAPROXY-PUBLIC192.168.200.x /24cp1PUBLIC vld (PUBLIC)London VIMvnfd:vnfd-catalog:vnfd:- connection-point:- name: haproxy mgmttype: VPORT- name: haproxy publictype: VPORT- name: haproxy servicetype: VPORTdescription: Scaling web server with load balancerid: pr vnfmgmt-interface:cp: haproxy mgmtname: ha-proxy vnfshort-name: ha-proxy vnfvdu:- cloud-init-file: cloud init haproxycount: '1'description: haproxy vduid: haproxy vduimage: haproxy ubuntuinterface:- external-connection-point-ref: haproxy publicname: haproxy vdu eth1position: '1'type: EXTERNALvirtual-interface:type: VIRTIO- external-connection-point-ref: haproxy mgmtmgmt-interface: truename: haproxy vdu eth0position: '2'type: EXTERNALvirtual-interface:type: VIRTIO- external-connection-point-ref: haproxy servicename: haproxy vdu eth2position: '3'type: EXTERNALvirtual-interface:type: VIRTIOname: haproxy vduvm-flavor:memory-mb: '4096'storage-gb: '10' vcpu-count: '4'

Implementation of the Network Service across the WIMOSM VLD (osm inet)Management NetworkVLAN 470cp2APACHE-MGMTETH1Athens VIMWimconn dpb.pycp2192.168.28.x/24Apache serviceleaf-bandwidth: 10root-bandwidth: 150ETH0VLAN 473Infrastructure mgmtOOB link (eg vpn)OSM WANSERVICE WANWAN VLD (WAN)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"))if "service-id" in response:service id int(response.get("service-id"))else:raise WimConnectorError("Invalid create service response", 500)data {"segment": []}for point in connection points:data["segment"].append({"terminal-name": point.get("service endpoint id"),"label": int((point.get("service endpoint encapsulation info")).get("vlan")),"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")} return (str(service id), None)OSM VLD (osm inet)Management NetworkVLAN 500VLAN 502cp1HAPROXY-MGMTcp1192.168.28.2Haproxy serviceETH2Wim CreationETH0WAN VLD (WAN)ETH1HAPROXY-PUBLIC192.168.200.x /24cp1PUBLIC vld (PUBLIC)London VIMWAN Links

Implementation of the Network Service across the WIMService id 1VLAN 470AthensVIMVLAN 300VLAN 200Swich-dService id 2Switch-cSwitch-dVLAN 500Switch-bLondonVIMSERVICE WANVLAN 201VLAN 473AthensVIMOSM-INETVLAN 301Switch-cVLAN 502Switch-bLondonVIMinitiate@beta: dpb -n aggr dumpCreating agents.Obtaining networks.Getting new multiplexer.aggregate aggr:1 ACTIVEswitch-c:d:200 switch-d:c:200switch-b:c:300 switch-c:b:300inferior ACTIVE:switch-d:athens:470 10.0000 10.0000switch-d:c:200 10.0000 10.0000inferior ACTIVE:switch-b:c:300 10.0000 10.0000switch-b:London:500 10.0000 10.0000inferior ACTIVE:switch-c:d:200 10.0000 10.0000switch-c:b:300 10.0000 10.00002 ACTIVEswitch-c:d:201 switch-d:ca:201switch-b:c:301 switch-c:b:301inferior ACTIVE:switch-d:athens:473 10.0000 10.0000switch-d:c:201 10.0000 10.0000inferior ACTIVE:switch-b:c:301 10.0000 10.0000switch-b:London:502 10.0000 10.0000inferior ACTIVE:switch-c:d:201 10.0000 10.0000switch-c:b:301 10.0000 10.0000

Implementation of the Network Service across the WIMBeta.sys AthensTiny.sys LondonAPACHE-MGMT10.30.67.164Apache vnfHAPROXY-MGMT10.30.66.30OSM WAN192.168.28.x/24Apache VDUScale 1-15VDU Leaf Bandwidth 10Root Bandwidth 10 x 15 150SERVICE WAN192.168.28.2Bandwidth passed to WIM1 Apache VDU 10 .15 Apache VDU 150Ha-proxy vnf192.168.200.11PUBLICSERVICE WANVLAN 473AthensVIMVLAN 301VLAN 201Switch-dSwitch-cVLAN 502Switch-aLondonVIM

Implementation of the Multipoint intParisVIM

Challenges Instance dictionary passed from LCM into RO (nfvo.py) when undergoingvdu scaling does not include any banwidth information However, A separate link scaling action with its own instance dictionarywould be a better option offering more flexibility. No Edit Function in Wim actions.py,'action', # MD - CREATE, DELETE, FIND). The comment in the create connectivity service function, KeywordArguments: bandwidth (int): value in kilobytes , does suggest thatbandwidth can be passed into the create and edit methods, however, forthe current setup, it only comes as a None type. Action needs to pass Service id, Authentications of Vims, bandwidth info

Questions ?Paul McCherry

Thankyou for your attentionPaul McCherry

Data Plane Broker OSM DPB WIM Connector Fabric Adapter Openflow Switch B Openflow Switch C Openflow Switch A Configure Service_Id Creation: Connection Points, Bandwidth Deletion: S

Related Documents:

A broker-dealer that acts as a prime broker must maintain net capital of not less than 1,500,000. A broker-dealer acting as an executing broker in a prime broker relationship who self clears or a broker-dealer clearing prime broker transactions on behalf of an introducing executing broker must have minimum net capital of at least 1,000,000.

Broker must promptly give written notice to MetLife if the Broker's license is canceled, suspended, or revoked, or if Broker or a MetLife‐contracted Broker is otherwise placed under a legal . suitability forms and any legally‐required shoppers' or buyers' guide. Section 2.6. Replacement. Broker shall not engage in the systematic .

maintenance of the trust account to another broker. ARM 24.210.426( 1) states, "A broker is responsible at all times for the proper handling of earnest money, security deposits, or other funds received by a broker, a broker's salesperson, or funds received by a broker as a designated broker pursuant to (3)(c) on behalf of customers or clients.

Company Profile Company analysis including a tearsheet, financials, multiples, ratios, key devs, news, events, segments, comps, . Monitor quarterly and yearly broker by broker estimates for a single company. Detailed Broker Estimates Template displays summary estimate information with broker by broker detail and allows for the creation of

Mar 24, 2017 · actual boat not shown 375 volvo 5.7 gsi broker 19,500 2001 28' formula 280 ss 429 twin volvos broker sold 2001 26' formula 260 br 277 6.2 merc efi broker sold 2001 26' four winns 248 vista n/a volvo 5.7gsi dp broker 14,900 1999 26' sonic 26 prowler & trailer 350 merc 540 broker 23,900 1999 28' maxum 2800 scr 262 merc 7.4l pbm 17,900

The salesperson/associate broker will see options for two forms in their sidebar. If the salesperson/associate broker knows who their new supervising broker will be, they should choose the "Terminate and Transfer Supervision" form. This form allows a salesperson/associate broker to terminate their current supervision, indicate who

1. As discussed below, the Exchange Act defines a "broker" and a "dealer" differently. However, most rules do not distinguish between a "broker"or a "dealer"in their application. In the rest of this chapter, the term "broker-dealer"will be used unless there is a need to distinguish between a "broker" and a "dealer."

6. Complete online broker application 7. Current QC Plan, Resume, W-9, etc. THIS PACKAGE CONTAINS THE FOLLOWING REQUIRED DOCUMENTS FOR BECOMING AN APPROVED BROKER WITH UM: Broker Agreement - All pages must be completed Compensation - Exhibit A Broker Compensation Plan FHA Sponsorship - if applicable. VA Sponsorship - if .