OpenStack —— 网络进阶Linux Bridge(七)

简介:

一、配置Linux Bridge

    Neutron默认使用ML2作为core plugin,其配置位于/etc/neutron/neutron.conf,控制节点和计算节点都需要在各自的neutron.conf 中配置core_plugin选项。

wKiom1mw8Mvyhng9AABANhxLv98157.jpg

    然后需要让ML2使用linux-bridge mechanism driver,ML2的配置文件位于/etc/neutron/plugins/ml2/ml2_conf.ini。

1
2
3
[ml2]
# ...
mechanism_drivers = linuxbridge,l2population

    mechanism_drivers选项指明当前节点可以使用的mechanism driver,这里可以指定多种driver,ML2会负责加载,上面的配置指明我们只使用linux-bridge driver,控制节点和计算节点都需要在各自的ml2_conf.ini中配置mechanism_drivers选项。

    Neutron服务正常启动后,所有节点上都会运行neutron-linuxbridge-agent。

二、初始网络状态

    在我们的实验环境中,当前节点上只存在物理网卡设备ethX,还没有bridge和tap,状态如下:

Controller:

wKioL1mw8tPxL_5RAADxx92IzWo416.jpg

Compute:

wKiom1mw82bQ-GhTAADjjGV8Qq4298.jpg

三、Network Type

    linux-bridge支持local, flat, vlan和vxlan 四种network type,目前不支持gre。

1、Local

    local network的特点是不会与宿主机的任何物理网卡相连,也不关联任何的VLAN ID。

    对于每个local netwrok,ML2 linux-bridge会创建一个bridge,instance的tap设备会连接到bridge。位于同一个local network的instance会连接到相同的bridge,这样instance之间就可以通信了。

    因为bridge没有与物理网卡连接,所以instance无法与宿主机之外的网络通信,同时因为每个local network有自己的bridge,bridge之间是没有连通的,所以两个local network之间也不能通信,即使它们位于同一宿主机上。

    下图是local network的示例:

wKiom1mw9LDCUO2iAAFlCsACRvM140.png

  1. 创建了两个local network,分别对应两个网桥brqXXXX和brqYYYY。

  2. VM0和VM1 通过tap0和tap1连接到brqXXXX。

  3. VM2通过tap0和tap2 连接到brqYYYY。

  4. VM0与VM1在同一个local network中,它们之间可以通信。

  5. VM2位于另一个local network,由于brqXXXX和brqYYYY没有联通,所以VM2无法与VM0和VM1通信。

    要想开启local功能,只需在ML2配置文件type_drivers包含local即可,如:

1
type_drivers =  local ,flat,vlan,gre,vxlan

    普通用户和admin都可以通过CLI或者Web GUI创建网络,但只有amdin才能指定网络的type,所以需要用tenant_network_types告诉ML2当普通用户在自己的Tenant(Project)中创建网络时,默认创建哪种type的网络,这里type是local。

1
tenant_network_types =  local

    tenant_network_types可以指定多种type,比如:

1
tenant_network_types = vlan,  local

    其作用是先创建vlan网络,当没有vlan可创建时(比如vlan id用完),便创建local网络。

2、Flat Network

    flat network是不带tag的网络,要求宿主机的物理网卡直接与linux bridge连接,这意味着: 
每个flat network都会独占一个物理网卡。

wKioL1mw_hSyBcu5AAHj4Dyu0SE953.jpg

    上图中eth1桥接到brqXXX,为instance提供flat网络。 
    如果需要创建多个flat network,就得准备多个物理网卡,如下图所示。

wKiom1mw_oOCJ1FmAAL6zyjeN4Y729.jpg

    因为flat网络与物理网卡一一对应,一般情况下租户网络不会采用flat,接着需要指明flat网络与物理网卡的对应关系。

  • 在[ml2_type_flat]中通过flat_networks定义了一个flat网络,label为“default”。 

  • 在[linux_bridge]中通过physical_interface_mappings指明default对应的物理网卡为eth1。

3、VLAN Network

    vlan network是带tag的网络,是实际应用最广泛的网络类型。 

wKiom1mxB6SThBhUAAH-OZZ5_hQ419.jpg

  1. 三个 instance 通过 TAP 设备连接到名为 “brqXXXX” linux bridge。

  2. 在物理网卡 eth1 上创建了 eth1.100 的 vlan interface,eth1.100 连接到 brqXXXX。

  3. instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。

    如果再创建一个 network vlan101,eth1 上会相应的创建 vlan interface eth1.101,并且连接的新的 lingux bridge “brqYYYY”。 
    每个 vlan network 有自己的 bridge,从而也就实现了基于 vlan 的隔离。

wKiom1mxB__ySYPmAAJbrlM98N4139.jpg

    因为物理网卡eth1上面可以走多个vlan的数据,那么物理交换机上与eth1相连的的port要设置成trunk模式,而不是access模式。

    不同VLAN的设备怎么才可以通信呢,那就需要Router来提供数据转发服务,如下图。

wKiom1mxDeLTiXNvAAKc6u6efuk758.jpg

四、Network Type(VXLAN)

    VXLAN全称Virtual eXtensible Local Area Network,正如名字所描述的,VXLAN提供与VLAN相同的以太网二层服务,但是拥有更强的扩展性和灵活性。

1、与VLAN相比的优点

  • 持更多的二层网段。 

    VLAN使用12-bit标记VLAN ID,最多支持4094个VLAN,这对于大型云部署会成为瓶颈。VXLAN的 ID (VNI或者VNID)则用24-bit标记,支持16777216个二层网段。

  • 能更好地利用已有的网络路径。 
    VLAN使用Spanning Tree Protocol(STP)避免环路,这会导致有一半的网络路径被block掉。VXLAN的数据包是封装到UDP通过三层传输和转发的,可以使用所有的路径。

  • 避免物理交换机MAC表耗尽。 
    由于采用隧道机制,TOR (Top on Rack) 交换机无需在MAC表中记录虚拟机的信息。

2、VXLAN封装和包格式

    VXLAN是将二层建立在三层上的网络。通过将二层数据封装到UDP的方式来扩展数据中心的二层网段数量。 

    VXLAN是一种在现有物理网络设施中支持大规模多租户网络环境的解决方案。它的传输协议是IP + UDP。VXLAN 定义了一个MAC-in-UDP的封装格式,在原始的Layer 2网络包前加上VXLAN header,然后放到UDP和IP包中,通过MAC-in-UDP封装,VXLAN能够在Layer 3网络上建立起了一条Layer 2的隧道。

    VXLAN包的格式如下:

wKioL1mx-6eiOfQcAABx2t0N7AE847.jpg

    如上图所示,VXLAN引入了8-byte VXLAN header,其中VNI占24-bit。 
    VXLAN和原始的L2 frame被封装到UDP包中,这24-bit的VNI用于标识不同的二层网段,能够支持16777216个LAN。





参考:主要来源于《每天五分钟玩转OpenStack》,书籍很不错,欢迎大家去购买!





     本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/1963447,如需转载请自行联系原作者


相关文章
|
9天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
10天前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
|
10天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
17天前
|
Linux
Linux中centos桌面消失网络图标
Linux中centos桌面消失网络图标
13 0
|
28天前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 向指定用户或终端发送消息 write命令 使用指南
【Shell 命令集合 网络通讯 】Linux 向指定用户或终端发送消息 write命令 使用指南
32 0
|
28天前
|
安全 Unix Shell
【Shell 命令集合 网络通讯 】Linux 向所有当前登录的用户发送消息或通知 wall命令 使用指南
【Shell 命令集合 网络通讯 】Linux 向所有当前登录的用户发送消息或通知 wall命令 使用指南
28 0
|
28天前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
8天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
24 6
|
10天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
13天前
|
域名解析 监控 网络协议
Linux网卡与IP地址:通往网络世界的通行证 🌐
探索Linux网卡与IP地址关系,理解网卡作为网络通信的关键。Linux网卡需配置IP地址以实现唯一标识、通信、路由、安全管理和网络服务。无IP地址时,网卡在特定情况如局域网服务、网络监控、无线认证和网络启动可有限工作,但通用功能受限。配置IP地址通常通过`ifconfig`(传统)或`ip`(现代)命令,永久配置需编辑网络配置文件。配置错误如IP冲突、子网掩码错误、默认网关和DNS配置不当可能导致服务中断、网络拥堵、安全漏洞和数据丢失。重视网络配置的正确与安全至关重要。
Linux网卡与IP地址:通往网络世界的通行证 🌐

热门文章

最新文章