7 OpenStack 网络
Posted 一袋宗师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7 OpenStack 网络相关的知识,希望对你有一定的参考价值。
OpenStack 网络
提示:OpenStack 中的网络服务最初由Nova中的一个单独模块nova-network来提供,为了提高更为丰富的拓扑结构,支持更多的网络类型,具有更好的扩展性,一个专门的项目Neutron被创建。
Neutron体系结构
提示:OpenStack 所在的整个物理网络在Neutron 中被泛化为网络资源池,通过对网络网络资源的灵活划分与管理,Neutron 能够为同一物理网络上的每个项目提供独立的虚拟网络环境。
1、 Linux 虚拟网络
2、 Neutron 网络抽象
3、 Neutron 架构
4、 Neutron 源码结构
Linux 虚拟网络
Neutron 最为核心的工作是对二层网络网络network 的抽象与管理。
传统的物理网络中,可能有一组物理的Server,运行各种各样的应用,如Web服务、数据库服务等。为了彼此之间能够相互通信,每个物理Server 都拥有一个或多个物理网卡(NIC),这些NIC连接到物理交换设备上。
虚拟化计算被引入后,上述的多个操作系统和应用可以以虚拟机的形式分享同一个物理Server,虚拟机的生成与管理由Hypervisor(或VMM)来完成。
虚拟机的网络功能由虚拟网卡(vNIC)提供,Hypervisor可以为每个虚拟机创建一个或多个vNIC,站在虚拟机的角度,这些vNIC等同于物理的网卡。与NIC一样Switch也被虚拟化为虚拟交换机vSwitch,各个vNIC连接在vSwitch的端口上,最后这些vSwitch通过物理Server的物理网卡访问外部的物理网络。Neutron也是基于linux环境下网络设备的虚拟化技术来完成项目私有虚拟网络network的构建。
(1)TAP/TUN/VETH
TAP/TUN是linux 内核实现的一对虚拟网络设备。TAP工作在二层,TUN工作在三层。Linux内核通过TAP/TUN设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作硬件网络设备那样,通过TAP/TUN设备发送数据。
基于TAP驱动,即可实现虚拟网卡的功能,虚拟机的每个vNIC都与Hypervisor 中的一个TAP设备相连。
VETH设备总是成对出现,送到一端请求发送的数据总是从另一端以请求接受的形式出现。
(2)Linux Bridge
Linux Bridge(网桥)是工作于二层的虚拟网络设备,功能类似于物理的交换机。
Bridge 可以绑定其他Linux 网络设备作为从设备,并将这些从设备虚拟化为端口,当一个从设备被绑定到Bridge 上时,就相当于真实网络中的交换机端口插入了一个连接有终端的网线。
因为Bridge 工作在第二层,绑定在br0上的从设备eth0、tap0与tap1均不需要再设置IP,对上层路由器来说,它们都位于同一子网,因此只需为br0设置IP,比如:10.0.0.0/24,此时,eth0、tap0,tap1均通过br0处于10.0.0.0/24网段。
(3)OpenvSwitch
Open vSwitch 是一个具有产品级质量的虚拟交换机。
Open vSwitch 的引入使云环境中虚拟网络的管理以及对网络状态和流量的监控变得容易。如,我们可以像配置物理交换机一样,将接入到Open vSwitch上的各个VM分配到不同的VLAN中实现网络的隔离。也可以在OpenvSwitch端口上为VM配置Qos,同时支持NetFlow、sFlow 很多标准的管理接口和协议,我们可以通过这些接口完成流量监控等工作。
Open vSwitch 在云环境中的各种虚拟化平台上(Xen/KVM)实现了分布式的虚拟交换机(Distributed Virtual Switch),一个物理Server上的vSwitch可以透明地与另一Server上的vSwitch 连接在一起。
Neutron 网络抽象
我们已经指定Neutron通过L3的抽象router提供路由器功能,通过L2的抽象network/subnet完成对真实二层物理网络的映射,并且network有Linux Bridge、Open vSwitch等不同的实现方式。
在L2中,Neutron还提供了一个重要的抽象port,代表了虚拟交换机上的一个虚拟交换端口,记录其属于哪个网络以及对应的ip等信息。当一个port 被创建时,默认情况下,会为它分配其指定subnet中可用的IP。当我们创建虚拟机时,可为其指定一个port。
以上是关于7 OpenStack 网络的主要内容,如果未能解决你的问题,请参考以下文章
OpenStack Train版-7.neutron网络服务概述
OpenStack使用flat网络创建虚拟机失败——PortBindingFailed: Binding failed for port