
OpenStack网络管理-neutron物理网络与虚拟网络区别Switch物理交换机vSwitch虚拟交换机NIC网络接口卡、网络适配器、网卡vNIC虚拟网卡Linux网络虚拟化技术网卡虚拟化TAPTUNVETH PAIR交换机虚拟化linux bridgeopen vswitch网络隔离network namespaceLinux网卡虚拟化TAP/TUN/VETHTAP设备模拟一个二层的网络设备可以接收和发送二层网包TUN设备模拟一个三层的网络设备可以接收和发送三层网包VETH虚拟ethernet接口通常以pair的方式出现一端发出的网包会被另一端接收可以形成两个网桥之间的通道Linux bridgeLinux bridge工作于二层的网络设备功能类似于物理交换机Bridge可以绑定Linux上的其他网络设备并将这些设备虚拟化为端口当一个设备被绑定到bridge时就相当于物理交换机端口插入了一条连接着终端的网线OVSOpen vSwitch是产品级的虚拟交换机Linux bridge更适用于小规模主机内部间通信场景Open vSwitch更适合于大规模、多主机间通信场景Neutron功能概述Neutron 为整个 OpenStack 环境提供网络支持包括二层交换三层路由负载均衡防火墙和 VPN等。Neutron 提供了一个灵活的框架通过配置无论是开源还是商业软件都可以被用来实现这些功能。Neutron网络基本概念networknetwork 是一个隔离的二层广播域。Neutron 支持多种类型的 network包括 local, flat, VLAN, VxLAN和 GRE。locallocal 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance通信local 网络主要用于单机测试。flatflat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信并且可以跨多个节点。vlanvlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域同一 vlan 中的 instance 可以通信不同 vlan 只能通过 router 通信。vlan 网络可跨节点是应用最广泛的网络类型。vxlanvxlan 是基于隧道技术的 overlay 网络。vxlan 网络通过唯一的 segmentation ID也叫 VNI与其他vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UDP 包进行传输。因为二层的包通过封装在三层传输能够克服 vlan 和物理网络基础设施的限制。gregre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。subnetsubnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。portport 可以看做虚拟交换机上的一个端口。port 上定义了 MAC 地址和 IP 地址当 instance 的虚拟网卡VIFVirtual Interface 绑定到 port 时port 会将 MAC 和 IP 分配给 VIF。Neutron架构Neutron 由如下组件构成Neutron Server对外提供 OpenStack 网络 API接收请求并调用 Plugin 处理请求。Plugin处理 Neutron Server 发来的请求维护 OpenStack 逻辑网络状态 并调用 Agent 处理请求。Agent处理 Plugin 的请求负责在 network provider 上真正实现各种网络功能。network provider提供网络服务的虚拟或物理网络设备例如 Linux BridgeOpen vSwitch 或者其他支持 Neutron 的物理交换机。QueueNeutron ServerPlugin 和 Agent 之间通过 Messaging Queue 通信和调用。Database存放 OpenStack 的网络状态信息包括 Network, Subnet, Port, Router 等。