openstack learning - Network Management

openstack network service components for the neutron, its design goal is to achieve "network as a service."
Design: Based on a flexible and automated follow the principle of "software-defined network (SDN)" of
the realization: full use of linux in a variety of network-related technology

Physical network and virtual networks

openstack learning - Network Management

Neutron is the core of the work of abstract and management of the physical network of the second floor, after the physical server virtualization, virtual machine's network functions provided by the virtual machine network card (vnic), physical switches are also virtualized as a virtual switch (vswitch), each vnic vswitch then connected to port, and the last of these vswitch access the external network through physical NIC physical physical server.

linux network virtualization technology to achieve

Network virtualization mainly divided into three parts:
NIC virtualization: TAP, TUN, VETH
switch virtualization: linux bridge, open vswitch
network isolation: network-namespace

linux virtualization NIC

openstack learning - Network Management
TAP: analog Layer of a network device can receive and transmit network packets Layer
TUN device: a three-layer network device simulation, a three-layer network can receive and send packets
VETH: virtual ethernet interfaces, typically a pair appears embodiment, one end of the network packet sent will be receiving the other end, the channel can be formed between two bridges

TAP / TUN provides data transfer mechanisms within a host user space, a set of virtual machines that network interface, this interface and physical interface without any distinction, the IP may be configured, may route traffic, except that it only traffic circulation in the host

veth-pari, network device pairs, connected to one end of the protocol stack, one end connected to each other, from one end of the data, into one end. It is often used to connect the different features of the virtual network components, to build a large scale virtual network topologies, such as connection linux bridge, ovs the like, for Neutron, networks can be constructed very complex morphology.

linux bridge

openstack learning - Network Management
linux brigde:工作于二层的网络设备,功能类似物理交换机
brigde可以绑定linux上其他网络设备,并将这些设备虚拟化为端口
当一个网络设备被绑定到bridge上,就相当于物理交换机端口插入了一条连接终端的网线。
使用brctl命令配置linux brige

open vswitch

相比linux bridge的小规模的主机内部通信场景,open vswitch更适合大规模的多主机通信场景
openstack learning - Network Management

network namespace

openstack learning - Network Management
network namespace能创建多个隔离的网络空间,他们有独立的网络配置信息,例如网络设备,路由表,iptables等。
不同的网络空间中的虚拟机运行的时候仿佛就在自己的独立网络中。

network namespace通常于vrf(virtual routing fowarding虚拟路由转发)一起工作,vrf是一种ip技术,允许路由表的多个实例同时在同一个路由器上共存。
使用veth可以连接两个不同的网络命名空间,使用bridge可以连接多个不同的网络命名空间。

neutron

作为一种虚拟网络服务,为openstack计算提供网络连通和寻址服务。
neutron对网络进行了抽象,如下所示:
openstack learning - Network Management

neutron支持多种类型的Network,包括local,flat,vlan,vxlan和gre

  • local:与其他网络和节点隔离,该网络中的虚拟机只能与位于同一个节点上网络的虚拟机通信,local网络主要进行单机测试
  • flat:无vlan标签的网络,该网络中虚拟机能与位于同一网络的虚拟机通信,并可以跨多个节点
  • vlan:802.1q标签网络,就是跟真实vlan使用一致
  • vxlan:基于隧道技术的overlay网络,主要构建大二层的数据中心网络
  • gre:使用ip数据包的封装的隧道技术

subnet

就是子网,每个子网在neutron中需要定义ip地址和范围
subnet必须与network关联,可以附加dns,网关ip,静态路由

port

端口
逻辑网络交换机上的虚拟交换端口
虚拟机通过port附着到network上
port可以分配ip地址和mac地址

router

连接租户内同一个network或者不同network之间的子网,以及连接内外网
openstack learning - Network Management

fixed ip

固定ip,分配到每个端口上的ip,类似于物理环境中配置到网卡上的ip

floating ip

floating ip(浮动ip)是external network创建的一种特殊的port,可以将floating ip绑定到任意network中的port上,底层会进行nat转发,将发送的浮动ip流量转发到该port上的对应固定ip上,外界可以通过浮动ip访问虚拟机,虚拟机也可以通过浮动ip访问外界
openstack learning - Network Management

physical network

pytsical network,物理网络。
在物理网络环境中连接到openstack不同节点的网络,每个物理网络可以支持neutron中的一个或者多个虚拟网络。
openstack learning - Network Management
openstack必须通过physical network才能和真实物理网络通信

provider network

由openstack管理员创建,直接对应数据中心现有物理网络的一个网段
providr network通常使用vlan或者flat模式,可以在多个租户之间共享
openstack learning - Network Management

self-service network

自助服务网络,也叫租户网络或项目网络,它是由openstack租户创建的,完全虚拟的,只在本网络内部连通,不能在租户之间共享
self-servcie network通常使用vxlan或者gre模式,可以通过virtual router的snat与provider network通信
openstack learning - Network Management
不同的self-service network中的网段可以相同,类似于物理环境中不同公司的内部网络
self-service network如果需要和外部网络通信,需要通过router,类似于物理环境中公司上网需要通过路由器或者防火墙。

External network

外部网络,也叫公共网络
它是一种特殊的provider network,连接的物理网络与数据中心或者internet相通,网络中的port可以访问外网
一般将租户的virtual router连接到该网络,并创建floating ip绑定虚拟机,实现虚拟机与外网通信
openstack learning - Network Management
Exernal netwok类似于物理环境中直接使用公网ip网段,不同的是,openstack中external network对应的物理网络不一定能直连internet,有可能只是数据中心的一个内部私有网络。

securiy group

openstack learning - Network Management
安全组,他的作用是在neutron port上的一组策略,规定了虚拟机入口和出口流量的规则
安全组基于linux iptables实现,默认拒绝所有流量,只有添加了放行规则的流量才允许通过
每个openstack项目中都有一个default默认安全组,默认包含如下规则-拒绝所有入口流量,允许所有出口流量

neutron架构与组件

架构图
openstack learning - Network Management
neutron架构原则

  • 统一api
  • 核心部分最小化
  • 可插入式的开放架构
  • 可扩展

message queue:neutron-sever通过消息列队与其他的neutron agents进行交换消息,但是这个消息列队不会用于neutron-server与其他openstack组件(如nova)进行交换消息
l2 agent:负责连接端口(ports)和设备,使他们处于共享的广播域,通常运行在hypervisor上
l3 agent:负责连接tenant网络到数据中心,或者连接到internet.在真实的部署环境中,一般都需要多个l3 agent同时运行。
dhcp agent:用于自动配置虚拟机网络
advance service:提供lb(负载均衡),防火墙等服务

架构说明

neutron的架构是基于插件的,不同的插件提供不同的网络服务,主要包含如下组件
openstack learning - Network Management

组件-neutron server

openstack learning - Network Management
neutron server=apis+plugins,通过这种方式,可以自由对接不同网络后端能力

组件-core plugin

core plugin,主要是指ml2(modular layer 2) plugin,是一个开放架构,在plugin下,可以集成各个厂家,各种后端技术支持的layer 2网络服务。
openstack learning - Network Management
ml2 plugin的drivers主要分为以下两种:
typer driver:定义了网络类型,每种网络类型对应一个type driver
mechanism driver:对接各种二层网络技术和物理交换机设备,如ovs,linux bridge等,从typer driver获取相关的底层网络信息,确保对应的底层技术能够根据这些信息正确配置二层网络。

组件-service plugin

serivce plugin用于实现高阶网络服务,如路由,负载均衡,防火墙和***服务等
openstack learning - Network Management
l3 service plugin主要提供路由,浮动ip服务等。

组件-agent

neutron agent向虚拟机提供二层和三层的网络连接,完成虚拟网络和物理网络之间的转换,提供扩展服务等
openstack learning - Network Management

neutron网络流量分析

neutron支持多种网络技术和类型,可以自由组合各种网络模型。
生产中,openstack主要使用如下两种网络模型

  • linux bridge+flat/vlan网络
    提供简单网络互通,虚拟网络、路由、负载均衡等由物理设备提供,网络简单,高效,适合中小企业私有云网络环境
  • open vswitch+vxlan网络
    提供多租户,大规模网络隔离能力,适合大规模私有云和公有云网络场景

linux bridge+flat网络

openstack learning - Network Management
flat网络类似于使用网线直接连接物理网络,openstack不负责网络隔离
interface 2不带vlan tag

linux bridge+vlan网络

openstack learning - Network Management
interface 2需要多个vlan,连接的物理交换机一般配置trunk模式,并允许这些vlan通过
使用linux bridge+vlan实现 provider network,网络流量可以分为如下几种:
南北向流量:虚拟机和外部网络通信的流量
东西向流量:虚拟机之间的流量
provider network和外部网络之间的流量,由物理网络设备负责交换和路由

使用固定ip的虚拟机南北流量分析

openstack learning - Network Management
以下涉及计算节点1:

  • 虚拟机(instance)数据包由虚拟网卡(1)通过veth pair转发到Provider Bridge上的端口(2)
  • 安全组规则(3)检查防火墙和记录连接跟踪
  • vlan子接口(4)将数据包转发到物理网卡(5)
  • 物理网卡(5)将数据包打上vlan tag101,并将其转发到物理交换机端口(6)

以下涉及物理网络设备

  • 交换机从数据包删除vlan tag 101,并将其转发到路由器(7)
  • 路由器将数据包从provider network网关(8)路由到external网络网关(9),并将数据包转发到external网络的交换机端口(10)
  • 交换机将数据包转发到外部网络(11)
  • 外部网络(12)接收数据包

同一个网络中虚拟机东西流量分析

openstack learning - Network Management
计算节点1:

  • 虚拟机1数据包由虚拟网卡(1)通过veth pair转发到provider Bridge上端口(2)
  • 安全组(3)检查防火墙和记录连接跟踪
  • vlan子接口(4)将数据包转发到物理网卡(5)
  • 物理网卡(5)将数据包打上vlan tag 101,并将其转发到物理交换机端口(6)

物理设备

  • 交换机将数据包转发给计算节点2连接的交换机端口(7)

计算节点2

  • 计算节点2的物理网卡(8)从数据包删除vlan tag 101,然后转发给vlan子接口(9)
  • 安全组(10)检查防火墙和记录连接跟踪
  • 虚拟网卡(11)通过veth pair将数据包转发给虚拟机2的网卡

不同的网络中的虚拟机东西流量

openstack learning - Network Management
计算节点1

  • 虚拟机1由虚拟机网卡(1)通过veth pair转发到provider bridg上的端口(2)
  • 安全组(3)检查防火墙和记录连接跟踪
  • vlan子接口(4)将数据包转发到物理网卡(5)
  • 物理网卡(5)将数据包打上vlan tag 101,转发到物理交换机端口(6)

物理设备

  • 交换机删除数据包vlan tag 101,并转发到路由器(7)
  • 路由器将数据包从provider network1网关(8)转发到provider network2网关(9)
  • 路由器将数据包发送到交换机端口(10)
  • 交换机将数据包打上vlan tag 102,然后转发给计算节点1连接的端口(11)

以下涉及计算节点1

  • 物理网卡(12)删除数据包vlan tag 102,然后转发vlan子接口(13)
  • 安全组(14)检查防火墙和记录连接跟踪
  • 虚拟网卡(15)通过veth pair将数据包转发给虚拟机2的网卡(16)

open vswitch +vxlan

openstack learning - Network Management

vxlan是虚拟可扩展的局域网,是一种oeverlay技术,通过三层网络来搭建虚拟的二层网络。

使用固定ip的虚拟机南北流量

openstack learning - Network Management
虚拟机运行在计算节点1上,使用self-service network 1,将数据包发送给internet上的主机
计算节点1

  • 实例接口(1)通过veth将数据包转发到安全组网桥实例端口(2)
  • 安全组网桥上的安全组(3)处理数据包防火墙和连接跟踪
  • 安全组网桥OVS端口(4)通过veth将对数据包转发到OVS集成网桥(br-int)安全组端口(5)
  • OVS集成网桥为(br-int)数据包添加内部vlan标记
  • OVS集成网桥对内部隧道(br-tun)ID交换内部VLAN标记
  • OVS集成网桥补丁接口(6)将数据包转发给OVS隧道补丁接口(7)
  • OVS隧道网桥(8)使用vni 101包裹分组
  • 用于覆盖网络的底层物理接口(9)经由覆盖网络(10)将分组转发到网络节点

网络节点

  • 底层网络物理接口(11)将分组转发到OVS隧道桥(12)
  • OVS隧道网桥解包并为其添加内部隧道ID
  • OVS隧道网桥为内部VLAN标记交换内部隧道ID
  • OVS隧道桥补丁端口(13)将分组转发到OVS集成桥接口补丁端口(14)
  • 用于自助服务网络(15)的OVS集成桥接端口移除内部VLAN标记并将分组转发到路由器命名空间的自助服务网络接口(16)
  • 路由器将数据包转发到提供商网络的OVS集成桥接端口(18)
  • OVS集成桥将内部VLAN标记添加到数据包
  • OVS集成桥接int-br-provider补丁端口(19)将数据包转发到OVS提供程序桥接phy-br-provider补丁端口(20)
  • OVS提供程序将内部VLAN标记与实际VLAN标记101交换
  • OVS桥接提供商网络端口(21)将分组转发到物理网络接口(22)
  • 物理网络接口通过物理网络设备将数据包转发到Internet(23)

从外部访问带Floating IP的虚拟机

openstack learning - Network Management

(直接放图吧。。。。。)
openstack learning - Network Management

openstack learning - Network Management

同一个网络中虚拟机东西流量

openstack learning - Network Management

openstack learning - Network Management

openstack learning - Network Management

Something different networks virtual machine traffic

openstack learning - Network Management

big head. . big head. .
Network seems really want to learn a lifetime

Guess you like

Origin blog.51cto.com/11555417/2438097