OpenStack 网络管理

第七章 网络管理

1. Linux 网络虚拟化基础

1.1 物理网络与虚拟化网络

物理网络与虚拟化网络

Server 服务 VM 虚拟机

​ NIC 网卡 vNIC 虚拟网卡

​ Switch 交换机 vSwitch 虚拟交换机

1.2 Linux网络虚拟化实现技术

1.2.1 网卡虚拟化

Linux网卡虚拟化-TAP/TUN/VETH

**TAP设备:**模拟一个二层的网络设备,可以接收和发送二层网包

**TUN设备:**模拟一个三层的网络设备,可以接收和发送三层网包

**VETH:**虚拟ethernet接口,通常以pair的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道

Linux网卡虚拟化-TAP/TUN/VETH

1.2.2 交换机虚拟化

Linux交换机虚拟化-Linux bridge

7_3

  • Linux bridge:工作于二层的网络设备,功能类似于物理交换机

  • Bridge可以绑定Linux上的其他网络设备,并将这些设备虚拟化为端口

  • 当一个设备被绑定到bridge时,就相当于物理交换机端口插入了一条连接着终端的网线

  • 使用brctl命令配置Linux bridge:

    • brctl addbr BRIDGE

    • brctl addif BRIDGE DEVICE

Linux交换机虚拟化-Open vSwitch

7_4

Open vSwitch是产品级的虚拟交换机

  • Linux bridge更适用于小规模,主机内部间通信场景

  • Open vSwitch更适合于大规模、多主机间通信场景

Open vSwitch常用的命令:

  • ovs-vsctl add-br BRIDGE

  • ovs-vsctl add-port PORT

  • ovs-vsctl show BRIDGE

  • ovs-vsctl dump-ports-desc BRIDGE

  • ovs-vsctl dump-flows BRIDGE

1.2.3 网络隔离

Linux网络隔离-Network Namespace

7_5

​ Network namespace能创建多个隔离的网络空间,它们有独自的网络配置信息,例如网络设备、路由表、iptables等

​ 不同网络空间中的虚拟机运行的时候仿佛自己就在独立的网络中

$ ip netns help 
Usage:  ip netns list
		ip netns add NAME 
		ip netns delete NAME 
		ip netns identify PID
		ip netns pids NAME 
		ip netns exec NAME cmd … 
		ip netns monitor

问题: OpenStack 节点上有哪些Linux虚拟网卡?

7_6

enp0s3:主机物理网卡;

tapxxxx: tap设备;

brqxxxx:bridge设备;

vxlan:vxlan子接口。

2. Neutron 简介

网络服务 Neutron

Neutron 本身是不依赖任何组件的

在OpenStack中的定位

  • OpenStack Neutron是一个SDN网络项目,专注于在虚拟计算环境中提供网络即服务(NaaS)

  • Neutron允许用户创建由其他OpenStack服务管理的接口设备并将其连接到网络

Neutron作用

​ Neutron管理OpenStack环境中虚拟网络基础设施(VNI)和物理网络基础设施(PNI)的访问层面的所有网络方面

​ Neutron提供Network、Subnet、Router作为抽象对象,每个抽象对象都具有模仿其物理对应物的功能:Network包含Subnet,Router在不同Subnet和Network之间路由流量

​ 其中:Internet通过外部网络 --> Router(路由) --> Network(网络)==> Subnet(子网)

Network 包括 Subnet

Neutron与其他服务的交互关系

7_10

Neutron 本身是不依赖任何组件的,但是Neutron 调用Nova模块的时候 需要 Keystone 认证服务

3. Neutron 概念

  • Neutron是一种虚拟网络服务,为OpenStack计算提供网络连通和寻址服务

  • 为了便于操作管理,Neutron对网络进行了抽象,有如下基本管理对象:

    • Network
    • Subnet
    • Port
    • Router
    • Floating IP

7_11

Neutron概念-Network

Network:网络

​ 一个隔离的、虚拟二层广播域,也可看成一个Virtual Switch,或者Logical Switch

​ Neutron支持多种类型的Network,包括 Local、Flat、 VLAN、 VXLAN 和 GRE

7_12

  • Local:与其他网络和节点隔离。Local网络中的虚拟机只能与位于同一节点上同一网络的虚拟机通信,Local网络主要用于单机测试。

  • Flat:无VLAN tagging的网络。Flat网络中虚拟机能与位于同一网络的虚拟机通信,并可以跨多个节点。

  • VLAN:802.1q tagging网络。VLAN是一个二层的广播域,同一VLAN中的虚拟机可以通信,不同VLAN只能通过Router通信。VLAN网络可跨节点,是应用最广泛的网络类型。

  • VXLAN:基于隧道技术的overlay网络。VXLAN网络通过唯一的segmentation ID(也叫 VNI)与其他VXLAN网络区分。VXLAN中数据包会通过VNI封装成UDP包进行传输。因为二层的包通过封装在三层传输,能够克服VLAN和物理网络基础设施的限制。

  • GRE:与VXLAN类似的一种overlay网络,主要区别在于使用IP包而非UDP进行封装。

  • 生产环境中,一般使用的是VLAN、VXLAN或GRE网络。

Neutron概念-Subnet

Subnet:子网

​ 一个IPv4或者IPv6地址段。虚拟机的IP从Subnet中分配。每个Subnet需要定义IP地址的范围和掩码

​ Subnet必须与Network关联

​ Subnet可选属性:DNS,网关IP,静态路由

Neutron概念-Port

Port:端口

​ 逻辑网络交换机上的虚拟交换端口

​ 虚拟机通过Port附着到Network上

​ Port可以分配IP地址和Mac地址

Neutron概念-Router

Router:路由器

​ 连接租户内同一Network或不同Network之间的子网,以及连接内外网

7_13

Neutron概念-Fixed IP

类似于网关-固定的网关

Fixed IP:固定IP

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

Neutron概念-Floating IP

Floating IP:浮动IP

​ Floating IP是从External Network创建的一种特殊Port,可以将Floating IP绑定到任意Network中的Port上,底层会做NAT转发,将发送给Floating IP的流量转发到该Port对应的Fixed IP上

​ 外界可以通过Floating IP访问虚拟机,虚拟机也可以通过Floating IP访问外界

Neutron概念-Physical Network

Physical Network:物理网络

​ 在物理网络环境中连接OpenStack不同节点的网络,每个物理网络可以支持Neutron中的一个或多个虚拟网络

7_15

Neutron概念-Provider Network

Provider Network:

​ 由OpenStack管理员创建的,直接对应于数据中心现有物理网络的一个网段

​ Provider Network通常使用VLAN或者Flat模式,可以在多个租户之间共享

Neutron概念-Self-service Network

Self-service Network:自助服务网络,也叫租户网络或项目网络

​ 由OpenStack租户创建的,完全虚拟的,只在本网络内部连通,不能在租户间共享

​ Self-service Network通常使用VXLAN或者GRE模式,可以通过Virtual Router的SNAT与Provider Network 通信

Neutron概念-External Network

External Network:外部网络,也叫公共网络

​ 一种特殊的Provider Network,连接的物理网络与数据中心或Internet相通,网络中的Port可以访问外网

​ 一般将租户的Virtual Router连接到该网络,并创建Floating IP绑定虚拟机,实现虚拟机与外网通信

7_18

Neutron概念-Security Group

Security Group:安全组

​ 安全组是作用在neutron port上的一组策略,规定了虚拟机入口和出口流量的规则

​ 安全组基于Linux iptables实现

​ 安全组默认拒绝所有流量,只有添加了放行规则的流量才允许通过

​ 每个OpenStack项目中都有一个default默认安全组,默认包含如下规则:

​ 拒绝所有入口流量、允许所有出口流量

4. Neutron 架构

Neutron 架构图

  • Neutron 架构原则

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

    • Neutron-server使用Message Queue与其他Neutron agents进行交换消息,但是这个Message Queue不会用于Neutron-server与其他OpenStack组件(如nova )进行交换消息。
  • L2 Agent

    • 负责连接端口(ports)和设备,使他们处于共享的广播域(broadcast domain)。通常运行在Hypervisor上。
  • L3 Agent

    • 负责连接tenant网络到数据中心,或连接到Internet。在真实的部署环境中,一般都需要多个L3 Agent同时运行。
  • DHCP agent

    • 用于自动配置虚拟机网络。
  • Advanced Service

    • 提供LB、Firewall和VPN等服务。

Neutron 架构说明

​ Neutron的架构是基于插件的,不同的插件提供不同的网络服务,主要包含如下组件:

7_21

Neutron Server

Core Plugin

Service Plugin

  • L3 Service Plugin

  • LB Service Plugin

  • Firewall Service Plugin

  • VPN Service Plugin

各种Agent

  • L2 (ovs-agent)

  • L3 Agent

  • DHCP Agent

  • MetaData Agent

Neutron组件-Neutron Server

7_22

Neutron Server = APIs + Plugins

  • API定义各类网络服务

  • Plugin实现各类网络服务

Neutron组件-Core Plugin

7_23

Core Plugin,主要是指ML2 Plugin(Modular Layer 2。),是一个开放性框架,提供基础的网络功能,使用不同的drivers调用不同的底层网络实现技术。

  • ML2 Plugin的Drivers主要分为以下两种:

    • Type Driver:定义了网络类型,每种网络类型对应一个Type Driver;
    • Mechanism Driver:对接各种二层网络技术和物理交换设备,如OVS,Linux Bridge等。Mechanism Driver从Type Driver获取相关的底层网络信息,确保对应的底层技术能够根据这些信息正确配置二层网络。
  • 通过Type Driver和Mechanism Driver调用不同的底层网络技术,实现二层互通

Neutron组件-Service Plugin

​ Service Plugin用于实现高阶网络服务,例如路由、负载均衡、防火墙和VPN服务等

​ L3 Service Plugin主要提供路由,浮动IP服务等。

Neutron组件-Agent

​ Neutron Agent向虚拟机提供二层和三层的网络连接、完成虚拟网络和物理网络之间的转换、提供扩展服务等

7_25

5. Neutron 典型操作及流程

Neutron操作——常用命令,

例如:

  • neutron net-create,创建网络;
  • neutron net-list,查看网络列表信息;
  • neutron subnet-list,查看子网列表信息
  • neutron agent-list ,查看代理列表信息
  • neutron port-create,创建端口;
  • neutron router-interface-add,添加路由器接口等。

6. Neutron 网络流量分析

6.1 Linux Bridge + Flat/VLAN 网络

Neutron网络典型场景介绍

  • Neutron支持多种多样的网络技术和类型,可以自由组合各种网络模型

  • 如下两种网络模型是OpenStack生产环境中常用的:

    • Linux Bridge + Flat/VLAN网络
      • 仅提供简单的网络互通,虚拟网络、路由、负载均衡等由物理设备提供
      • 网络简单、高效,适合中小企业私有云网络场景
    • Open vSwitch + VXLAN网络
      • 提供多租户、大规模网络隔离能力,适合大规模私有云和公有云网络场景

Linux Bridge + Flat网络

7_26

Linux Bridge + VLAN网络

7_27

6.2 Open vSwitch + VXLAN 网络

7_28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值