搭建OpenStack平台或者维护OpenStack平台会用到一些交叉性的网络知识,一部分和Linux操作系统的配置有关、一部分和交换机、路由器、网桥等网络设备有关。当然,和网络有关的部分并不会涉及的特别深入,仍以基本操作为主,毕竟OpenStack平台本质上仍旧是一个以软件为中心的OS级底层平台。
在使用OpenStack平台时,我们会在日常维护过程中频繁使用到这几个概念:网卡接口、网桥、VLAN、VXLAN、命名空间与名字空间、GRE。
网卡,指的是Linux系统中的 Ethnet,是一个物理接口,也可以通过虚拟软件模拟生成。
网卡管理工具 ethtool
安装:
Ubuntu:apt-get install -y ethtool
CentOS:yum install -y ethtool
操作:
ethtool -s DEVICENAME autoneg off speed NUMBER duplex full /设置网卡以某个速度开启全双工/
Ubuntu:网卡配置文件是 /etc/network/interfaces
ethtool eth0 /查看网考eth0的信息/
/etc/init.d/networking restart /重启网络服务/
配置网卡eth2 的子接口 eth2:0 ,编辑eth2的配置文件如下{
auto eth2
iface eth2 inet static
address 12.7.2.2
netmask 255.0.0.0
auto eth2:0
iface eth2:0 inet static
address 12.7.2.21
netmask 255.0.0.0
}
ifconfig /查看本机网卡信息/
CentOS:网卡配置文件是 /etc/sysconfig/network-scripts/ifcfg-网卡名称
ethtool em1 /查看网卡em1的信息/
service network restart /重启网络服务/
配置网卡 em2 的子接口 em2:0 ,编辑配置文件 /etc/sysconfig/network-scripts/ifcfg-em2:2 如下{
DEVICE=em2:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATWAY=192.168.1.1
ONPARENT=yes
}
网桥是什么?网桥作为一个物理设备出现时,是指一种只有输入和输出连个端口的、工作在数据链路层对帧进行转发的硬件产品,他用于链接两个同质网络,即采用同一网络协议的LAN,并依赖缓存的MAC地址根据设定条件转发或丢弃数据。在OpenStack环境中,网桥指的是Linux内核模块虚拟的以太网接口桥接技术,同时具备了交换机的功能,可以有多个端口,所有加入到网桥的网卡共享网桥的IP,效果相当于在物理交换机的端口上接了一根网线,用于解决虚拟机网卡连接问题。桥接,就是把一台机器上的多个端口连接起来,其中一个端口收到的报文会被赋值给其他端口。
在OpenStack虚拟环境下,Linux宿主系统中的虚拟网桥会与宿主机的物理网卡连接,寄宿系统中的网卡则加入到虚拟网桥上。
网桥是出现在宿主系统中的,我们选择CentOS作为宿主系统:
1 安装网桥的管理工具 bridge-utils
Yum install -y brodge-utils
2 创建网桥 br1 并将物理网卡 em1 加入 br1,并配置 br1 的 IP 为 172.21.1.3
brctl addbr br1
brctl addif em1
ifconfig em1 0.0.0.0
ifconfig br1 172.21.1.3 netmask 255.255.0.0
3 查看网桥信息
brctl show br1
4 物理网卡em1的配置文件 ifcf-em1:
DEVICE=”em1”
HWADDR=”d4:ae:52:64:04:06”
#NM_CONTROLLED=”yes”
ONBOOT=”yes”
BRIDG=”br1”
5 虚拟网桥br1的配置文件 ifcfg-br1:
DEVICE=”br1”
TYPE=Bridge
BOOTPROTO=static
IPADDR=172.21.1.3
NETMASK=255.255.0.0
NETWORK=172.21.0.0
GATEWAY=172.21.1.1
DNS1=61.139.2.69
ONBOOT=”yes”
配置了网桥的IP后,即可使用此IP远程访问宿主系统。
与网桥相连接的寄宿系统IP,可以与本网桥IP处于同一网段,也可以处于不同网段。
在实验环境中我们统一配置寄宿系统的IP段为 192.168.1.0/24,外部交换机设网关地址 192.168.1.1 ,宿主系统中网桥br1的IP为 172.21.1.3 。
我们的寄宿系统是Ubuntu,Ubuntu的网卡eth0需要加入到宿主系统的网卡br0上。Ubuntu的网卡、网桥等配置都在文件 /etc/network/interfaces 中完成:
auto eth0 iface
eth0 inet manual
auto br0
iface br0 inet static
address 192.068.1.3
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0
关于寄宿系统的网卡与宿主系统的网桥链接:
创建寄宿系统时,在宿主系统CentOS 中可以通过GUI工具 virt-manager将寄宿系统的网卡挂载到指定网桥上。
VLAN即 802.1Q 协议,用于限制因广播风暴引起的网桥通信能力下降,可以隔离不同的网络。习惯上,我们将虚拟网桥与VLAN对应起来。一个局域网中可以有4096个VLAN 。
VLAN的工作机制是给每个寄宿机发出包都加上一个tag,每个寄宿机只能接收同一VLAN tag的包。
给包标记tag的端口叫做接入端口,只转发数据包的端口叫中继端口。各寄宿机在虚拟网桥上的接口就是接入端口,宿主机上的物理网卡接口及交换机上的端口则是中继端口。
Linux下VLAN的管理工具是 vconfig。
在寄宿系统Ubuntu下,安装vconfig并载入8021q模块:
apt-get install vlan
modprobe 8021q 【将该模块加入到配置文件 /etc/modules 中】
多个VLAN的数据可以通过一个物理网卡对外转发,每个VLAN以独立的接口出现。可以为每个VALN接口分配不同的IP,让这个IP成为某个VALN对外访问的网关。
在寄宿系统Ubuntu的eth2上创建VALN 2、3、4并赋予各VALN IP,而后将之添加到寄宿系统路由表中:
vconfig add eth2 2
vconfig add eth2 3
vconfig add eth2 4
ifconfig eth2.2 192.168.2.1 netmask 255.255.255.0 up
ifconfig eth2.3 192.168.3.1 netmask 255.255.255.0 up
ifconfig eth2.4 192.168.4.1 netmask 255.255.255.0 up
ip route add 192.168.1.0/24 dev eth2.2
ip route add 192.168.2.0/24 dev eth2.3
ip route add 192.168.3.0/24 dev eth2.4
【vconfig rem VALN接口 表示删除某个VLAN接口】
在宿主机CentOS 中,我们只创建虚拟网桥和VLAN,VALN的网关设置在交换机中,不同VLAN间的互访通过交换机中的路由表完成。若要限制不同VALN间的互访,则应在交换机中配置访问控制列表。
用多块网卡连接不同网段,需要用路由表来处理网络路径。
Open vSwitch 是创建在宿主系统CentOS中的虚拟交换机。
虚拟交换机的使用:
ovs-vsctl add-br br0 /添加虚拟网桥br0/
ovs-vsctl add-port br0 eth0 /将网卡eth0加入到虚拟网桥br0/
ovs-vsctl add-port br0 vlan1 tag=1 /**在虚拟网桥br0上创建属于VLAN1的端口vlan1/
ovs-vsctl add-port br0 vlan2 tag=2 /**在虚拟网桥br0上创建属于VLAN2的端口vlan2/
ovs-vsctl set Interface vlan1 type=internal /设置端口vlan1/
ifconfig vlan1 192.168.1.1 netmask 255.255.255.0 /设置vlan1端口的IP为192.168.1.1/
ovs-vsctl set Interface vlan2 type=internal /设置端口vlan2/
ifconfig vlan2 192.168.2.1 netmask 255.255.255.0 /设置vlan2 端口的IP为192.168.2.1/
【我们将eth0的IP配置为0,则应给其所属虚拟网桥br0配置IP及网关,通过虚拟网桥的IP访问服务器】
关于保存OVS的配置:一是将配置指令写入 /etc/rc.local ;二是将配置写入网络配置文件。
一个VXLAN管理域可有1600万个VIN,每个VIN可以有4096个VLAN。运行在同一个VIN上的寄宿机间可以通信。
可以在宿主系统CentOS上创建一个VXLAN接口,将之加入虚拟交换机的一个桥中,这样OVS便具备了组播功能。
在Linux中 命名空间 提供了一种资源虚拟隔离机制,从而实现多个进程间的互不干扰。在OpenStack华景中,我们更关注网络命名空间,相同命名空间内的网络设备可以互访、不同命名空间内的网络设备不可互访。命名空间和系统的通信是通过VETH实现的,命名空间内的veth-in接口的数据会被转发到系统空间的veth-out端口,veth-out和宿主机的网卡eth0加入到同一个虚拟网桥后,veth-in接口的数据就可以通过宿主机的网卡eth0与外部通信了。
GRE,全称为Generic Routing Encapsulation,通用路由封装,针对某些网络协议的报文进行封装、并使封装后的报文能在另一网络协议中传输。GRE本质上是一种支持点对点连接的tunnel技术,在OpenStack中由OVS进行封包和解包,这是现今主要使用的 Overlay 网络技术之一,由Cisco 等公司提出。
VXLAN,是一种新的网域管理设计理念,是一种交换机上的功能,每个管理域可容纳1600个VIN、每个VIN又可容纳4096VLAN,使得整个OpenStack的租户容量大大得到扩展,同事也使得一个租户的VM实例可以跨数据中心部署。
孟伯,20200307
交流联系:微信 1807479153 ,QQ 1807479153
来源:51CTO
作者:孟伯
链接:https://blog.51cto.com/6286393/2476126