VLCP SDN 控制器

程序名称:VLCP

授权协议: Apache

操作系统: 跨平台

开发语言: Python

VLCP 介绍

VLCP 是一款为生产集群应用而严格设计开发的 SDN 控制器。它从根本性的设计上改变了以往 SDN 控制器不稳定的印象,使用 ZooKeeper +
专业的事务性技术为控制器集群提供同步性支持,使用先进的异步编程框架实现内部逻辑。

项目已经开发约18个月,目前已经在借贷宝公司小规模投产。在10台物理机组成的集群中进行压测,控制器可以在:每服务器1000+容器;16+Gbps
流量;每分钟、每服务器创建/删除两百个容器的高压力环境下长期稳定运行。VLCP 的最终设计目标是面向数千台物理服务器、数万乃至数十万个虚拟网络端点的巨型
IDC 环境中稳定运行,提供高效、可靠、可控的 SDN 网络。

VLCP 可以通过 vlcp-docker-plugin
与 docker 进行对接,为 docker 提供更多功能、更高稳定性的 SDN 网络,直接为容器提供外部网络连通性,或者子网之间的连通性等。

架构特点

VLCP 使用协程化的架构实现了无锁、高性能的并发逻辑。基于 Pub/Sub
机制的协程同步机制为扩展提供了极大的便利。独特的调度器实现简化了许多异步逻辑,通过统一的中心队列在进程内实现了众多的生产者-
消费者模型,使得程序结构稳定、易读、统一排错:

VLCP 使用高可扩展性的模块化设计。每个模块都可以单独加载、单独卸载,加载不同模块即可为控制器添加新的功能。模块功能不仅限于
SDN,也包括外围功能如管理、监控、排障等。官方自带的模块就已经有了很丰富的内容:

VLCP利用ZooKeeper实现了统一的事务层——ObjectDB,保证了从任意节点的读写都满足事务性,并与其他节点的数据保持同步。事务层的使用简便而有特色,通过WALK与TRANSACT两个原语实现了任意的读事务和写事务;组合两者则可以实现任意的事务操作。同时,写入的内容会通过更新消息推送的机制推送到其他节点上,从而实时更新其他节点上的信息和流表。

VLCP使用一种通用的方式来解析OpenFlow中的二进制结构,利用了namedstruct库。这种库通过类似于C程序中结构体定义的语法定义出结构体并进行动态的解析或构造。这种写法很容易跟着OpenFlow的版本升级,甚至可以比较容易地保持以往程序的兼容性。同样的技术还用来解析以太网数据包和ZooKeeper协议。

VLCP使用OpenFlow1.3的多流表功能实现了从L2到L3的完整功能,这些功能可以通过独特的流表分配机制由模块系统进行扩展。现有的流表结构大致如下图所示:

VLCP支持预推送、OpenvSwitch学习、控制器学习与首包上传等多种不同运行策略。

VLCP甚至包含了内置的HTTP服务器,用于提供WebAPI接口;也可以用来开发简单的管理界面。

VLCP有统一的配置系统,很容易将配置文件映射到具体的类中的属性。

VLCP 官网

http://git.oschina.net/hubo1016/vlcp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Cyclone是一个打造容器工作流的云原生持续集成持续发布平台。 Cyclone主要致力于将代码从本地开发环境用任意容器引擎封装搬运到测试或者生产环境运行。Cyclone包括一下特性:
Kui Shell 为构建云原生应用程序提供了新的开发经验。通过将熟悉的 CLI 的功能与高影响力区域中的可视化相结合,Kui 使用户能够操作复杂的
Eclipse MicroProfile 是一个 Java 微服务开发的基础编程模型,它致力于定义企业 Java 微服务规范,MicroProfile
Kabanero 构建在 Knative、Istio 与 Tekton 之上,提供构建、流量管理与 CI/CD 等能力,同时支持与 Eclipse
Antrea 是一个 Kubernetes 网络解决方案,旨在实现 Kubernetes 原生。它使用 Open vSwitch 作为网络数据平面,在 Layer3/4 上运行,以为
Linkerd 是一个提供弹性云端原生应用服务网格(service mesh)的开源项目,也是面向微服务的开源 RPC 代理。它的核心是一个透明代理。
YugaByte 是用于构建关键型应用的云原生数据库。 YugaByte 使用 C++ 开发,支持 Cassandra 查询语言(CQL)以及 Redis 协议,对 PostgreSQL
Gloo 是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,它支持传统应用程序、微服务与 Serverless。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议
YugaByte DB 是一个高性能、云原生的分布式 SQL 数据库。 值得关注的特性包括:
ChubaoFS(储宝文件系统)是为大规模容器平台设计的分布式文件系统。它由元数据子系统、数据子系统和资源管理器组成。ChubaoFS
YugaByte 是用于构建关键任务应用程序的云原生数据库。此 repo 是 YugaByte Community Edition。
Draft 是由微软出品的一个帮助开发者在 Kubernetes 上快速创建云原生应用的工具。使用该工具,你可以不需要知道 Docker 或者
Camel K 是一个轻量级集成框架,它使得可以直接在 Kubernetes 与 Knative 上运行Camel。
APISIX 是一个基于云原生、高速可扩展的开源微服务网关节点实现,其自身主要优势是高性能和强大的扩展性。
Open Application Model 是什么? Open Application Model 是一个用来构建云原生应用的规范。它描述了一个模型,开发人员可以在其中定义应用程序组件。应用程序操作员负责创建这些组件的实例并为它们分配应用程序配
ContainerOps 是云原生(Cloud Native)的 DevOps Orchestration。定义 DevOps 组件的基本容器,如Docker 或 rkt。 在浏览器中使用 WYSIWYG 编辑器绘制 DevOps 工作流程,混合 DevOps 组件和现有的
Gravity 是一个开源工具包,为云原生应用程序提供真正的可移植性。它允许开发人员将 Kubernetes
iSula 是一种云原生轻量级容器解决方案,可通过统一、灵活的架构满足 ICT 领域端、边、云场景的多种需求。
Rook将文件、数据块和对象存储系统引入到Kubernetes集群,与其他正在使用存储的应用程序和服务一起无缝运行。通过这种方式,云原生集群可以在公有云和本地部署中自给自足并且具备可移植性。该项目的开发目的是使企
Camel Quarkus 致力于将 280+ Camel 组件移植和打包为 Quarkus 扩展。 Camel 是一个基于规则的路由以及媒介引擎,它提供了一个基于 POJO 的企业集成模式的实现,开发者可以采用其强大且十分易用的 API(Java