1. Agent-based类型:包括 linux bridge, open vswitch 等
2. Controller-based类型:包括 OpenDaylight, VMWare NSX 等
3. 基于物理交换机:包括 Cisco Nexus, Arista, Mellanox 等。
3. Service Plugin / Agent 详解
1. Core Plugin/Agent 负责管理核心实体:net, subnet 和 port。而对于更高级的网络服务,则由 Service Plugin/Agent 管理。
2. Service Plugin 及其 Agent 提供更丰富的扩展功能,包括路由,load balance,firewall等。
3. DHCP:dhcp agent 通过 dnsmasq 为 instance 提供 dhcp 服务。
4. Routing:l3 agent 可以为 project(租户)创建 router,提供 Neutron subnet 之间的路由服务。路由功能默认通过 IPtables 实现。
5. Firewall:l3 agent 可以在 router 上配置防火墙策略,提供网络安全防护。另一个与安全相关的功能是 Security Group,也是通过 IPtables 实现。 Firewall 与 Security Group 的区别在于:
1. Firewall 安全策略位于 router,保护的是某个 project 的所有 network。
2. Security Group 安全策略位于 instance,保护的是单个 instance。
4. Load Balance:Neutron 默认通过 HAProxy 为 project 中的多个 instance 提供 load balance 服务。
三、部署方式
1. 计算节点和控制节点
2. 多个节点,适合大规模的OpenStack平台
三:Open vSwitch
一、简介
1. 概念:Open vSwitch,简称OVS,是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。
2. 作用:让大规模网络自动化可以通过编程扩展,支持跨越多个物理服务器的分布式环境,同时仍然支持标准的管理接口和协议(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。
3. 工作原理
1. 在虚拟化的环境中,一个虚拟交换机主要有两个作用:传递虚拟机之间的流量,以及实现虚拟机和外界网络的通信。
2. 内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联一下流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后碰到相同类型的数据包可以在内核中执行操作)。
二、组成