View
212
Download
0
Category
Preview:
Citation preview
NETWORK CONNECTIVITY USE CASES AT CARRIER / SERVICE PROVIDERSAvi.vachnis@alcatel-lucent.com
CloudBandJune 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
node_types:
tosca.nodes.Network:
derived_from: tosca.nodes.Root
properties:
ip_version:
type: integer
required: false
cidr:
type: string
required: false
start_ip:
type: string
required: false
# continue at the right
# continue…
end_ip:
type: string
required: false
gateway: # generalize this idea and address also static routes
type: string
required: false
segmentation_id:
type: string
description: VLAN ID to be set in runtime
capabilities:
connection:
type: tosca.capabilities.Connectivity
TOSCA SIMPLE PROFILE YAML - PORT NODE TYPEnode_types:
tosca.nodes.Port:
derived_from: tosca.nodes.Root
properties:
ip_address:
type: string
is_default:
type: boolean
default: false
start_range:
type: string
end_range:
type: string
order:
type: integer
required: true
description: The order of the network interface
default: 0
constraints:
- greater_or_equal: 0
relationship_types:
tosca.relationships.LinkedTo:
short_name: link
derived_from: tosca.relationships.DependsOn
valid_targets: [ tosca.capabilities.Linkable ]
# The name relationships.Network should 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.Connectivity:
short_name: connection
derived_from: tosca.capabilities.Feature
SERVICE TEMPLATE WITH NETWORKS STITCHING – OPTION 1node_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
# continue from left side template node_templates: # appears here again just for indentation orientation
fe_oam_net_port: type: tosca.nodes.Port properties: is_default: true 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: 0 requirements: - link: backend - network: admin_network
be_data_net_port: type: tosca.nodes.Port properties: order: 1 requirements: - link: backend - network: data_network db_data_net_port: type: tosca.nodes.Port requirements: - link: database - network: data_network
6COPYRIGHT © 2013 ALCATEL-LUCENT. ALL RIGHTS RESERVED. ALCATEL-LUCENT — CONFIDENTIAL — SOLELY FOR AUTHORIZED PERSONS HAVING A NEED TO KNOW — PROPRIETARY — USE PURSUANT TO COMPANY
INSTRUCTION
DR1 Presentation Template 8AY-03030-0004-TQZZA Revision 07
SERVICE TEMPLATE WITH NETWORKS STITCHING – OPTION 1
Service Template
Network Template
A
Network Template
B
SERVICE TEMPLATE WITH NETWORKS STITCHING – OPTION 2
node_templates:
frontend:
type: tosca.nodes.Compute
properties: # omitted for brevity
requirements:
- network: oam_network
- network: admin_network
backend:
type: tosca.nodes.Compute
properties: # omitted for brevity
requirements:
- network: admin_network
- network: data_network
database:
type: tosca.nodes.Compute
properties: # omitted for brevity
requirements:
- network: data_network
# continue from left side template node_templates: # appears here again just for indentation orientation
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
8COPYRIGHT © 2013 ALCATEL-LUCENT. ALL RIGHTS RESERVED. ALCATEL-LUCENT — CONFIDENTIAL — SOLELY FOR AUTHORIZED PERSONS HAVING A NEED TO KNOW — PROPRIETARY — USE PURSUANT TO COMPANY
INSTRUCTION
DR1 Presentation Template 8AY-03030-0004-TQZZA Revision 07
SERVICE TEMPLATE WITH NETWORKS STITCHING – OPTION 2
Service Template
Network Template
A
Network Template
B
DISTINGUISH BETWEEN CREATING NEW TO USE EXISTING NETWORK
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 }
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:
1. 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)
2. As appear in Block Storage node type which has a property and attribute named volume_id to reference an exiting volume id.
3. How to reference an existing service that is not modeled in service template (e.g. DNS, AAA services)
10COPYRIGHT © 2013 ALCATEL-LUCENT. ALL RIGHTS RESERVED. ALCATEL-LUCENT — CONFIDENTIAL — SOLELY FOR AUTHORIZED PERSONS HAVING A NEED TO KNOW — PROPRIETARY — USE PURSUANT TO COMPANY
INSTRUCTION
DR1 Presentation Template 8AY-03030-0004-TQZZA Revision 07
** DRAFT ** – ROUTING USE CASE
11COPYRIGHT © 2013 ALCATEL-LUCENT. ALL RIGHTS RESERVED. ALCATEL-LUCENT — CONFIDENTIAL — SOLELY FOR AUTHORIZED PERSONS HAVING A NEED TO KNOW — PROPRIETARY — USE PURSUANT TO COMPANY
INSTRUCTION
DR1 Presentation Template 8AY-03030-0004-TQZZA Revision 07
** DRAFT ** – ROUTER USE CASEnode_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:
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 }
be_admin_network:
type: tosca.nodes.Network
properties:
network_id: { get_input: admin_net_id }
admin_connectivity: 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_connectivity}
fe_admin_net_port: type: tosca.nodes.Port properties: requirements: - link: frontend - connectivity: { get_input: admin_network / admin_connectivity}
Recommended