netcomposer

28
NETCOMPOSER SOFTWARE DEFINED DATA CENTER PLATFORM

Upload: carlos-gonzalez-florido

Post on 28-Jul-2015

491 views

Category:

Software


5 download

TRANSCRIPT

NETCOMPOSERSOFTWARE DEFINED DATA CENTER PLATFORM

What is NetComposer?“A flexible, easy to use software platform designed to be

the core of next generation, scalable and highly available data centers.”

“A tool to build and operate distributed, massively scalable, network-centric applications, with a focus on uptime and

low latency, ruled as reactive systems and based on micro services.”

Core FeaturesScalable from one node to thousands of nodes.

Fault tolerant. No master, shared-nothing architecture.

Multi data center. Hybrid clouds. From a Raspberry Pi to big multicore machines.

Batteries included: distributed database, discovery, sophisticated network features, scalable storage and container orchestration.

Lightweight. Flexible. Incredibly easy to install and operate. Single image for all of the nodes.

Under load, on-the-fly updates of any part of the system. No service interruption.

What can I do with NC?SDN/NFV Platform.

Video/audio/chat UC system foundation.

Storage-as-a-service.

Docker orchestrator.

Microservices container.

Any other critical/distributed application.

Router / Gateway / Internet

Core Layer

Automatically scalable from asingle node…

Router / Gateway / Internet

Core Layer

… to a fault-tolerant setup…

Router / Gateway / Internet

Access layer

Core Layer

Worker Layer

… to any scale!

Core LayerIt is the logical core of the system, in charge of managing the core services and starting and controlling the rest of nodes and services.

Included core services:

a distributed, low-latency powerful database, with eventually consistent, self-convergent and strong consistency modes, memory and disk backends, search engine, auto expiration…

DNS discovery.

Cloud and Bare Metal server provisioning.

Signaling protocols: SIP, XMPP, Matrix.

Bundled services like OpenFlow controller and Docker orchestrator.

Metadata servers for the software defined storage system (based on Ceph).

All core services are distributed and fault-tolerant. Hot code loading. Automatic load distribution.

User-defined services are also possible

Ceph Storage Controllers

NetComponser Core Services:CORE fault-tolerant coordinator

Distributed DatabaseDNS, DHCP, Server provisioning

SIP, XMPP, MatrixOpenFlow controllerDocker orchestrator

Router / Gateway / Internet

Core Layer

Access layer

Worker Layer

User-Defined Services

Access LayerThe access layer interfaces with the rest of the world, and provides network facilities, specific for each started service. It can send the requests to the core layer if its target is a core service (like SIP or OpenFlow) or directly to the worker that must manage that request.

Virtual IP groups. Each service can setup a group of IPs to be mapped to it. IPs remain active even after server failures from the access, core or worker layers.

Distributed ACLs and firewall. Each time a new service is started requiring firewall services, it is updated automatically.

Proxy and intelligent, service-aware load balancing services. The core layer keeps the list of mappings up to date, so that when a worker dies, the balancers are automatically updated.

Service-specific QoS management

Network metrics

It can be implemented with NetComposer nodes or using any Openflow compatible hardware or software switch.

Router / Gateway / Internet

FirewallProxy / LB

QoSFlow / Metrics

Core Layer

Access layer

Worker Layer

FirewallProxy / LB

QoSFlow / Metrics

FirewallProxy / LB

QoSFlow / Metrics

FirewallProxy / LB

QoSFlow / Metrics

SIP

RTP MediaHTTP

VIp1

VIp1 VIp2

VIp3

VIp3 VIp2

Worker LayerThe worker layer is made of any number of servers, managed from the core layer, and running inside docker containers.

The core layer is aware at any moment of the exact number of nodes, current load, running containers, etc., and it is able to schedule new containers to the best server.

Each server runs a small agent installed from the core layer, and can be updated on the fly. It also works as local DNS server for service discovery.

A special container is used to serve storage to the rest of containers, in a highly available, high performance scheme, using Ceph.

NetComposer is able to set up VxLANs automatically to connect containers running in different hosts, networks and data centers.

VXLAN

Core Layer

Worker Layer

Router / Gateway / Internet

Access layer

Containers Group

Ceph Disk

Ceph Disk

Container

Container

Container

Container

Container

Container Container

Container

Domains and

Core Services

DomainsDomains are the basic NetComposer management units. You can start any number of domains, that can be used for different applications, sets of applications or customers.

You work with the whole cluster as if it were a single computer. It does not matter if it has a single server or a thousand.

You start with a single configuration file describing your domains. You can start, stop or update most domain parameters and services in real time, under load, or while adding or removing nodes. You can use NetComposer’s CLI or the REST interface to manage your domains after the initial configuration.

You can associate with each domain the core services you want. You can add, modify or remove services in real time.

Core ServicesNetComposer offers a serie of core services for your domains. Each domain can use any set of different services.

All core services are cluster aware, distributed and highly available.

All core services have a REST interface that you can publish to the outside or inside networks, and have also a high-speed, low latency interface to other core services running inside NetComposer.

Core services are hierarchical. Some core services depend, modify or upgrade the functionality of lower level, more basic core services.

Core services’s code can be upgraded on the fly (as the rest of NetComposer).

You can develop your own core services that run inside NetComposer core layer nodes, or manage any other service using the Container Service or externally to NetComposer.

Core ServicesThe initial planned core services list include:

Distributed Database.

Distributed Storage.

Cloud and Bare Metal server provisioning.

Virtual IP/Port groups.

Firewall, load balancer, QoS, VLANs, VPNs and tunnels.

SIP/WebRTC Engine (registrar, proxy, B2BUA and media processing).

Openflow controller .

Docker container orchestrator.

Planned Core Services

Distributed DatabaseNetComposer includes and distributed, flexible database available as a service, for internal core services or your own services or external applications:

Highly available, allowing read and write operation even in case of node failures.

Disk and memory backends.

Three simultaneous operation modes:

Eventually consistent mode using Dotted Version Vectors.

Strong consistent mode based on using multi-paxos.

Easy to use, self-convergent DMaps.

Multiple, auto-generated secondary indices, usable in the three modes.

Simple, easy to use, utf8 and latin-1 aware query language for secondary indices.

Full support for auto-expiration of objects, with configurable resolution.

The distribute database service is based on the already released NkBASE project: https://github.com/Nekso/nkbase

Storage ServiceNetComposer uses Ceph to provide persistency services to other core services, user services (at the core layer or inside docker containers) and external applications.

It offers a redundant, scalable storage-as-a-service facility than can be consumed as virtual disks, with a S3-compatible interface or as a POSIX file system.

The core layer starts and manages a number of Ceph Monitors and Metadata Servers.

Any node of the cluster can export disks to the cluster. The NetComposer remote agent starts and manages the corresponding Ceph Object Storage Sevices.

NetComposer configures the Ceph cluster automatically, and manages the possible failures of monitors or metadata servers.

DNS server/discoveryNetComposer includes a high-performance DNS server, available to core services, user services or external applications.

NetComposer registers automatically started domain services and assigned IPs and ports. When a shutdown or failure is detected the entries are automatically removed from DNS.

As all other core services, it offers a full-blown REST interface to manage registrations and configurations parameters.

It can use NetComposer database as backend or any other user-supplied backend.

Cloud/Iron provisioningNetComposer includes all the tools for an automatic provisioning of nodes (for access, core or worker layers) on raw hardware, virtual machines or public clouds.

NetComposer has a minimal OS based on GNU/Linux which is deployable (hands off) into bare metal servers.

It offers auto updates with atomic rollbacks, distributed HA configuration, and auto join for the cluster.

It assures the QoS of the cluster resources for the different layers that works in it.

Network ServiceAccess layer nodes offer a full catalogue of software-defined network services to core services, user services or external applications. As the rest of core services, all management can be done through the CLI or REST interface.

NetComposer access layer nodes can provision dynamically sets of combination of IP/Ports, assigned to specific services. These IPs are activated on access nodes. When an access layer node failure is detected, another node “takes” the IPs belonging to the failed node temporarily. If the node is marked as permanent down, all the IPs are reorganized.

From the network or the service point of view, there is a single network element. All services are designed to be scalable and distributed, with automatic failover in case of node failures.

Available services include NAT, firewall, (intelligent) load balancer, QoS management, VxLANS, tunnels and VPNs.

Media ServiceNetComposer includes full SIP support which greatly facilitates the development of robust and scalable server-side SIP applications like proxy, registrar, redirect or outbound servers, B2BUAs, SBCs or load generators.

It also offers the tools to build distributed WebRTC applications, (using SIP over websockets or any other signaling protocol).

A Matrix (matrix.org) compatible server is also planned.

For the media processing, it is able to start and manage a number of Freeswitch instances. The offered REST interface shows a single, virtual media server. NetComposer takes care of sending the requests and RTP traffic to the right server, and failover in case of failures.

NetComposer SIP capabilities are based on the NkSIP project (https://github.com/kalta/nksip).

OpenFlow ControllerNetComposer includes a distributed OpenFlow controller, than can be managed through the REST interface or trough the high-speed internal services connector.

It can manage the internal OpenVSwitch virtual switches (that are otherwise automatically managed) or any external, OpenFlow compatible virtual or physical switch.

It is, as the rest of NetComposer Services, highly scalable and fault tolerant. It can manage thousands of switches.

Container ServiceNetComposer offers a distributed container service, initially focused on Docker. Containers run on the worker layer.

It is able to select the best node or group of nodes to run the selected container or group of containers. Network and storage services are automatically provisioned. Containers can be moved from one node to another transparently.

Integrating Kubernetes is being studied as an alternative.

Applications running inside containers can use all of NetComposer services through the REST interface of any of them, like the database, SIP, OpenFlow, etc.

NetComposer can connect containers running in different nodes to the same network using VxLANs.

Roadmap

Roadmap2015 Q2: First public prototype of the system

Core layer

Database

DNS

Basic network services

Basic container services.

2015 Q3: Storage service and Network service

2015 Q4: Media Service, Provisioning, OpenFlow, Matrix