Neutron概述

  • 传统网络:手工配置管理各种网络设备。
  • 云环境:网络变得十分复杂(多租户场景)。
  • “software-defined networking, SDN”的灵活性和自动化成为云环境的主流。
  • Neutron的设计目标:“Networking as a Service”;基于SDN实现网络虚拟化的原则,充分利用Linux系统上的各种网络相关技术。

    Neutron功能

  • Neutron
    为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 VPN 等。

    二层交换 Switching

    • Instance通过虚拟交换机连接到虚拟二层网络。
    • 支持多种虚拟交换:Linux Bridge和Open vSwitch。

    三层路由 Routing

    • Instance可以配置不同网络的IP,VR实现Instance跨网段通信。
    • VR通过IP forwarding 和 iptables技术实现路由转发和NAT功能。

负载均衡 Load Balancing

  • LBaaS支持多种负载均衡产品和方案
  • 目前默认的Plugin是HAProxy

防火墙Firewalling

  • Security Group:通过iptables限制进出instance的网络包
  • Firewall-as-a-Service:通过iptables限制进出VR的网络包

Neutron网络基本概念

Neutron
管理的网络资源包括
Network,subnet 和 port

Network

  • network
    是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。
  • network
    必须属于某个
    Project( Tenant 租户)
  • Project
    中可以创建多个
    network。


  • 如果IP地址可以重叠,那么就可能存在不同的Instance具有相同的IP地址。
  • Neutron的router是通过namespace实现的,这样就隔离网络,每个router的路由都相互独立。

    • 如果两个subnet通过同一个router路由,只能选择指定一个
    • 如果两个subnet通过不同router路由,router的路由表独立,两个subnet都可以被路由。

    local

    单机网络。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信

    flat

    无标签网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨节点。

    vlan

    标签网络。同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可以跨节点。

    vxlan

    vxlan
    是基于隧道技术的
    overlay
    网络。vxlan 网络通过唯一的 segmentation ID(也叫 VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UPD 包进行传输。

    gre

    gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。

    Subnet

  • subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。
  • 一个subnet只能属于某个network,一个network可以有多个subnet,可以不同IP段,但不能重叠。
  • 如果subnet在不同的network中,CIDR和IP是可以重叠的。

Port

  • 可以看做虚拟交换机上的一个端口。Port定义了MAC地址和IP地址,当Instance的虚拟网络VIF绑定port时,port会将MAC地址和IP地址分配给VIF
  • Port与subnet是多对一关系。
  • Project,Network,Subnet,Port 和 VIF 之间关系。
  • Project
  • : m Network
  • : m Subnet 1 : m Port 1 : 1 VIF m : 1 Instance


问题1:



请问:图中VM1和VM2如何进行通信。
答:因为vm-1和vm-2在同一个虚拟交换机下,所以只需要arp直接通信就可以了。

问题2:

还是上图,请问:在prod生产网络下,再创建1个subnet2 10.1.1.0/24 可以吗?
答:可以个大头鬼,在同一个租户下,如果再创建10.1.1.0/24的网段就和subnet1冲突了,如果是租户不同的情况下是可以分别创建10.1.1.0/24的subnet。(如下图,只有租户不相同的情况下,分别在各自的私有网络下才可以创建相同的subnet)


所以我们在同一个租户下创建的subnet不能冲突。

问题3:

如问题一图,请问:VM1和VM3如何通信?
答:通过虚拟路由器(Vrouter),将subnet1和subnet2进行连接,如下图中的(vrouter1)


问题4:

请问:如下图


图中的不同租户下的vrouter1和vrouter2的路由如何进行通信?
答:
需要通过公有网络,provider:ens34如下图所示:


这样vrouter1和vrouter2就相当于两台真正的交换机之间的通信了。

问题5:

请问:vrouter中的流量是怎么从provider网络去到外部网络中的?回来时又是怎么区分是vrouter1还是vrouter2的流量的?
答:出去snat(源地址转化成公网ip地址,也就是provider网络分配的地址)
如下图:

          
假设provider给vrouter1分配了220.1.1.1  现在vrouter1要访问114.114.114.114,
那么这时s:220.1.1.1 d:114.114.114.114
而流量回来时便是dnat,此时s:114.114.114.114 d:220.1.1.1

补充:

如下图
     
图中的ens34只是作为一个上行链路的出口而已,外部是不会访问ens34的,不需要IP地址。

拿我们电脑上搭建的环境来说,如下图中


vrouter1,vrouter2的ip 都是我们VMware  nat分配的,而provider网络只是我们的一个出口。

如果我想要从外部去访问Instance,需要去绑定floatingIP,原理是dnat

最后修改:2024 年 03 月 14 日
如果觉得我的文章对你有用,请随意赞赏