90 likes | 263 Views
Network Connectivity Use cases at Carrier / service providers. Avi.vachnis@alcatel-lucent.com CloudBand June 2014. Use cases. As an application architect I’d like to model my application and network topology as follows:. TOSCA Simple profile YAML - Network node type. # continue…
E N D
Network Connectivity Use cases at Carrier / service providers Avi.vachnis@alcatel-lucent.com CloudBand June 2014
Use cases As an application architect I’d like to model my application and network topology as follows:
TOSCA Simple profile YAML - Network node type # continue… end_ip: type: string required: false gateway: # generalize this idea and address also static routes type: string required: false attributes: segmentation_id: type: string description: VLAN ID to be set in runtime node_types: tosca.nodes.Network: derived_from: tosca.nodes.Root properties: ip_version: type: integer required: true cidr: type: string required: false start_ip: type: string required: false # continue at the right
TOSCA Simple profile YAML - port node type relationship_types: tosca.relationships.LinkedTo: short_name: compute derived_from: tosca.relationships.DependsOn valid_targets: [ tosca.capabilities.Linkable ] # The name relationships.Networkshould be revised tosca.relationships.Network: short_name: network derived_from: tosca.relationships.DependsOn valid_targets: [ tosca.capabilities.Connection] # Compute node should be added with this capability capability types: tosca.capabilities.Linkable: derived_from: tosca.capabilities.Feature # Network/Router node type should have this capability capability types: tosca.capabilities.Connection: derived_from: tosca.capabilities.Feature node_types: tosca.nodes.Port: derived_from: tosca.nodes.Root properties: order: type: integer required: true description: The order of the network interface default: 0 constraints: - greater_or_equal: 0 attributes: ip_address: type: string
TOSCA Simple profile YAML - service template example fe_oam_net_port: type: tosca.nodes.Port requirements: - link: frontend - network: oam_network fe_admin_net_port: type: tosca.nodes.Port requirements: - link: frontend - network: admin_network be_admin_net_port: type: tosca.nodes.Port properties: order: 1 requirements: - link: backend - network: admin_network be_data_net_port: type: tosca.nodes.Port properties: order: 2 requirements: - link: backend - network: data_network db_data_net_port: type: tosca.nodes.Port requirements: - link: database - network: data_network node_templates: frontend: type: tosca.nodes.Compute properties: # omitted for brevity backend: type: tosca.nodes.Compute properties: # omitted for brevity database: type: tosca.nodes.Compute properties: # omitted for brevity oam_network: type: tosca.nodes.Network properties: ip_version: { get_input: oam_network_ip_version } # 4 cidr: { get_input: oam_network_cidr } start_ip: { get_input: oam_network_start_ip } end_ip: { get_input: oam_network_end_ip } admin_network: type: tosca.nodes.Network properties: ip_version: { get_input: admin_network_ip_version } # 4 dhcp_enabled: { get_input: admin_network_dhcp_enabled } # false data_network: type: tosca.nodes.Network properties: ip_version: { get_input: data_network_ip_version } # 6 cidr: { get_input: data_network_cidr } # 2001:db8:92a4:0:0:6b3a:180:abcd/64
Link between port and network node_templates: frontend: type: tosca.nodes.Compute properties: # omitted for brevity oam_network: type: tosca.nodes.Network properties: ip_version: { get_input: oam_network_ip_version } # 4 cidr: { get_input: oam_network_cidr } start_ip: { get_input: oam_network_start_ip } end_ip: { get_input: oam_network_end_ip } fe_oam_net_port: type: tosca.nodes.Port properties: # instead of referencing the node template name (which is not supported) use a requirement (see below) # network_name: oam_network requirements: - link: frontend - network: oam_network
DISTINGUISH between creating new to use existing network App modeler should be able to specify whether a certain node should be newly created or an existing one should be used by the tosca container. • Concrete use cases: • Create new network that is modeled in service template or use an existing one by referencing it as shown in the left side of this slide (and in use case #1 in slide 2) • As appear in Block Storage node type which has a property and attribute named volume_id to reference an exiting volume id. • How to reference an existing service that is not modeled in service template (e.g. DNS, AAA services) node_templates: … oam_network: type: tosca.nodes.Network properties: ip_version: { get_input: oam_network_ip_version } # 4 cidr: { get_input: oam_network_cidr } start_ip: { get_input: oam_network_start_ip } end_ip: { get_input: oam_network_end_ip } # the property below is mutually exclusive with the ones above network_id : { get_input: my_oam_network_id } network_name: { get_input: my_oam_network_name } admin_network: type: tosca.nodes.Network properties: ip_version: { get_input: admin_network_ip_version } # 4 dhcp_enabled: { get_input: admin_network_dhcp_enabled } # false network_id : { get_input: my_admin_network_id } network_name: { get_input: my_admin_network_name }
** DRAFT ** – Router use case admin_router: type: tosca.nodes.L3_Connectivity properties: id: { get_input: admin_router_id } # name: { get_input: admin_router_name } mutually exclusive with id property requirements: - network: fe_admin_network - network: be_admin_network other_router: type: tosca.nodes.Router properties: id: { get_input: admin_router_id } be_admin_net_port: type: tosca.nodes.Port properties: requirements: - link: backend # requires support of referencing a node template in deploy time (currently missing) - connectivity: { get_input: admin_network / admin_router } fe_admin_net_port: type: tosca.nodes.Port properties: requirements: - link: frontend - connectivity: { get_input: admin_network / admin_router } node_templates: frontend: type: tosca.nodes.Compute properties: # omitted for brevity backend: type: tosca.nodes.Compute properties: # omitted for brevity fe_admin_network: type: tosca.nodes.Network properties: network_id: { get_input: admin_net_id } be_admin_network: type: tosca.nodes.Network properties: network_id: { get_input: admin_net_id }