Resource plugins for Networking Service Function Chaining

https://blueprints.launchpad.net/heat/+spec/sfc-heat

Adds resources plugin for Networking Service Function Chaining.

Problem description

OpenStack neutron suppports Service Function Chaining (sfc) as an official sub-project and more details are available at http://docs.openstack.org/developer/networking-sfc/ . Heat does not provide resource plugins for Networking Service Function Chaining and this blueprint is created to provide required plug-ins.

The proposed change is to introduce a Service Function Chaining by grouping order of service function VM’s neutron ports to form service chain and steer classified user traffic into chain based on service treatment required.

Proposed change

Add following resource plugins under resources/openstack/neutron/ and also add port_pair, port_pair_group, flow_classifier neutron constraints for resource validation.

  • OS::Neutron::PortPair:
    • name
      • type: string
      • update_allowed: true
    • description
      • type: string
      • required: false
      • update_allowed: true
    • ingress
      • type: string
      • required: true
      • constraints: Custom Constrain ‘neutron.port’
    • egress
      • type: string
      • required: true
      • constraints: Custom Constrain ‘neutron.port’
    • service_function_parameters
      • type: map
      • required: false
      • default: {‘correlation’: None}
  • OS::Neutron::PortPairGroup:
    • name
      • type: string
      • update_allowed: true
    • description
      • type: string
      • required: false
      • update_allowed: true
    • port_pairs
      • type: list
      • default: []
      • required: true
      • update_allowed: true
      • constraints: Custom Constrain ‘neutron.port_pair’
  • OS::Neutron::PortChain:
    • name
      • type: string
      • update_allowed: true
    • description
      • type: string
      • required: false
      • update_allowed: true
    • port_pair_groups
      • type: list
      • default: []
      • required: true
      • constraints: Custom Constrain ‘neutron.port_pair_group’
    • flow_classifiers
      • type: list
      • default: []
      • required: false
      • update_allowed: true
      • constraints: Custom Constrain ‘neutron.flow_classifier’
    • chain_parameters
      • type: map
      • required: false
      • default: {correlation: mpls}
  • OS::Neutron::FlowClassifier:
    • name
      • type: string
      • update_allowed: true
    • description
      • type: string
      • required: false
      • update_allowed: true
    • protocol
      • type: string
      • required: false
      • allowed_values: [tcp, udp, icmp, any]
    • ethertype
      • type: string
      • required: false
      • allowed_values: [IPv4, IPv6]
      • default : Ipv4
    • source_ip_prefix
      • type: string
      • required: false
      • default: [correlation=mpls]
      • constraints: Custom Constrain ‘net_cidr’
    • destination_ip_prefix
      • type: string
      • required: false
      • default: [correlation=mpls]
      • constraints: Custom Constrain ‘net_cidr’
    • source_port_range_min
      • type: string
      • required: false
      • constraints.Range: (1, 65535)
    • source_port_range_max
      • type: string
      • required: false
      • constraints.Range: (1, 65535)
    • destination_port_range_min
      • type: string
      • required: false
      • constraints.Range: (1, 65535)
    • destination_port_range_max
      • type: string
      • required: false
      • constraints.Range: (1, 65535)
    • logical_source_port
      • type: string
      • required: true
      • constraints: Custom Constrain ‘neutron.port’
    • logical_destination_port
      • type: string
      • required: false
      • constraints: Custom Constrain ‘neutron.port’
    • l7_parameters
      • type: map
      • required: false

Alternatives

None

Implementation

Assignee(s)

Primary assignee:
Mohankumar (nmohankumar1011@gmail.com)

Milestones

newton-1

Work Items

  • Add resources related
  • Add required custom constraints
  • Add related tests
  • Add sample template in heat-templates

Dependencies

None