OpenStack实操会用到的哪些网络知识?
更新:HHH   时间:2023-1-7


搭建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 /重启网络服务/

 

  配置网卡eth3 的子接口 eth3:0 ,编辑eth3的配置文件如下{

  auto eth3

  iface eth3 inet static

  address 12.7.2.2

  netmask 255.0.0.0

 

  auto eth3:0

  iface eth3: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的eth3上创建VALN 2、3、4并赋予各VALN IP,而后将之添加到寄宿系统路由表中:

vconfig add eth3 2

vconfig add eth3 3

vconfig add eth3 4

ifconfig eth3.2 192.168.2.1 netmask 255.255.255.0 up

ifconfig eth3.3 192.168.3.1 netmask 255.255.255.0 up

ifconfig eth3.4 192.168.4.1 netmask 255.255.255.0 up

ip route add 192.168.1.0/24 dev eth3.2

ip route add 192.168.2.0/24 dev eth3.3

ip route add 192.168.3.0/24 dev eth3.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实例可以跨数据中心部署。


返回云计算教程...