LinuxBridge介绍
1、概述
-
1.1 LinuxBridge的作用
-
网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备。它是Linux上用来做TCP/IP二层协议交换的设备,与现实世界中的交换机功能相似。Bridge设备实例可以和Linux上其他网络设备实例连接,既attach一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge会根据报文中的MAC信息进行广播、转发或丢弃处理。
LinuxBridge是实现Neutron Network、Port及它们的抽象化连接的Neutron L2插件。Neutron网络将映射到由该插件管理的独立VLAN。在实例化Instance时,将在主机上创建与该VLAN对应的子接口,并创建一个Linux Bridge来管理该子接口。而网络中VM的一个或多个虚接口将会与该网桥连接。综上所述,LinuxBridge实现了支持Linux Bridge的系统以创建基本VLAN的目的。
1.2 LinuxBridge的运行原理
-
实际的网络组件是由Neutron网络中的主机上所运行的neutron-linuxbridge-agent(守护进程)创建。这种基于代理的方法与OpenVSwitch插件使用的方法类似。
下图解释了在创建网络、端口以及将VIF插入Neutron端口的情况下,插件和代理的工作流程:
-
a. 租户请求创建Neutron网络和端口:Linux Bridge插件分配网络资源,并为该网络分配一个VLAN。然后,创建一个端口资源,并将其与该网络相关联。
b. 租户请求虚拟机的实例化:nova-compute将调用Linux Bridge VIF驱动程序(该驱动程序与Nova包装的Linux Bridge VIF驱动程序不同)创建一个tap设备。随后,nova-compute将实例化虚拟机,使得虚拟机的VIF与tap设备相关联。
c. 租户请求将上述VIF插入到先前创建的Neutron端口中。Linux Bridge插件将创建VIF和DB中的端口的关联。
d. 网络中每个主机上的代理守护程序将在步骤3中创建关联。
e. 如果与该VIF相对应的主机上存在tap设备,neutron-linuxbridge-agent将在该主机上创建一个VLAN和一个Linux Bridge(如果尚不存在)。
注意:tap设备的命名需遵循使用UUID前11个字符的约定。neutron-linuxbridge-agent使用此约定从VIF UUID解密tap设备的名称。
f. neutron-linuxbridge-agent随后将tap设备绑定到Linux Bridge。
2、启用LinuxBridge
-
2.1 设置mechanism driver
- 编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
[ml2]
……
mechanism_drivers = linuxbridge
-
2.2 设置interface driver
- 编辑/etc/neutron/dhcp_agent.ini文件:
[DEFAULT]
……
interface_driver = linuxbridge
-
2.3 启动服务
- 重启neutron-server,并启动linuxbridge服务:
systemctl restart neutron-server.service
systemctl start neutron-linuxbridge-agent.service
-
2.4 检测状态(注意控制节点和计算节点均需正常启动):
3、命令行
LinuxBridge常用命令如下:
brctl addbr br-test #创建网桥
brctl addif br-test enp4s0 #为网桥添加物理接口
brctl delbr br-test #删除网桥
brctl delif br-test enp4s0 #删除网桥接口
brctl show #显示网桥列表信息
brctl show br-test #显示网桥br-test的信息
brctl showmacs br-test #显示网桥的MAC地址信息
brctl showstp br-test #显示网桥的stp信息
brctl stp br-test on|off #开|关stp