OpenStack的网络管理指南(5)——网络底层(未完结)

OpenStack的网络管理指南第五部分


本章介绍了两种网络场景和open vSwitch插件以及Linux桥接插件如何实现这些场景。

Open vSwitch

本节介绍如何用open vSwitch插件实现OpenStack的网络抽象。
配置

This example uses VLAN isolation on the switches to isolate tenant networks. This configuration labels the physical network associated with the public network as physnet1, and the physical network associated with the data network as physnet2, which leads to the following configuration options in ovs_neutron_plugin.ini:

Select Text
1
2
3
4
5
[ovs]
tenant_network_type = vlan
network_vlan_ranges = physnet2:100:110
integration_bridge = br -int
bridge_mappings = physnet2:br-eth1
情景1:一个租户,两个网络,一个路由
第一种方案有两个专用网络( net01 , net02 ) ,每一个网络有一个子网( net01_subnet01 : 192.168.101.0/24 , net02_subnet01:192.168.102.0/24 ) 。两个专用网络都连接到一个路由器将它们与公共网络相连( 10.64.201.0/24 )。


根据服务租户,创建共享路由器,定义公共网络,将其设置为路由器的默认网关
$ tenant=$(keystone tenant-list | awk '/service/ {print $2}')
$ neutron router-create router01
$ neutron net-create --tenant-id $tenant public01 \
          --provider:network_type flat \
          --provider:physical_network physnet1 \
          --router:external=True
$ neutron subnet-create --tenant-id $tenant --name public01_subnet01 \
          --gateway 10.64.201.254 public01 10.64.201.0/24 --enable_dhcp False
$ neutron router-gateway-set router01 public01

根据演示用户租户,建立专用网络net01和相应的子网,把它连接到router01路由器上。配置它来使用物理交换机上ID101的 VLAN 。

$ tenant=$(keystone tenant-list|awk '/demo/ {print $2}'
$ neutron net-create --tenant-id $tenant net01 \
          --provider:network_type vlan \
          --provider:physical_network physnet2 \
          --provider:segmentation_id 101
$ neutron subnet-create --tenant-id $tenant --name net01_subnet01 net01 192.168.101.0/24
$ neutron router-interface-add router01 net01_subnet01

同样,对于net02 ,采用物理交换机上 ID为102 的VLAN

$ neutron net-create --tenant-id $tenant net02 \
          --provider:network_type vlan \
          --provider:physical_network physnet2 \
          --provider:segmentation_id 102
$ neutron subnet-create --tenant-id $tenant --name net02_subnet01 net02 192.168.102.0/24
$ neutron router-interface-add router01 net02_subnet01
下图显示了如何配置计算主机上的 各种Linux的网络设备 :
各种类型的网络设备
[Note] Note

有四种不同类型的虚拟网络设备: TAP设备, VETH pair,Linux网桥,和Open vSwitch网桥。举个例子,对于一个以太网帧从虚拟机VM01的网卡eth0到物理网络,它必须通过主机内的9台设备:TAP vnet0,Linux bridge qbrnnn, veth pair(qvbnnn, qvonnn), Open vSwitch bridge br-int, veth pair (int-br-eth1, phy-br-eth1), and, finally, the physical network interface card eth1.


一个TAP设备,比如vnet0,虚拟机像 KVM和Xen是如何实现虚拟网卡的(通常称为一个VIF的vNIC ),发送到一个TAP设备上的以太网帧是被客户操作系统所接受。

一个VETH pair是一对直接连接在一起虚拟网络接口,一个以太网帧从一个VETH发送到另一个VETH pair。Openstack的网络使用VETH pair作为虚拟网桥之间的虚拟电缆。

一个Linux网桥的行为像一个枢纽:您可以将多个(物理或虚拟)网络接口设备连接到Linux网桥上,从网桥上任何一个端口发送过来的以太网帧都会被发送到所有其他设备上。

一个open vSwitch网桥的行为就像一个虚拟的交换机:网络接口设备连接到vSwitch网桥的端口上,这个端口可以想物理交换机一样配置,包括VLAN的配置。


整合网桥

br-int OpenvSwitch网桥是整合网桥,计算主机上的所有客户都连接这座网桥,Openstack网络实现网络隔离通过配置br-int的端口。

物理连接网桥

br-eth1提供桥连到物理网卡eth1上,它通过VETH pair连接到整合网桥br-int上( INT- BR- eth1的,PHY - BR- eth1 )。

VLAN 转换

在这个例子中, net01和net02 VLAN的ID分别为1和2。然而,在我们的例子中的物理网络仅支持VLAN ID的取值范围为101至110 。The Open vSwitch 代理负责为br-int和br-eth1做VLAN转换。当br-eth1的接收帧标记VLAN ID为1,PHY- BR- eth1的相关联的端口,它会修改帧的VLAN ID 为 101。同样,当BR- INT接收帧标记VLAN ID为101,INT- BR- eth1的相关联的端口,它会修改帧的VLAN ID 1 。

安全组: iptables和Linux网桥

在理想的情况下,TAP设备vnet0将会直接连接到br-int上边。不幸的是,这是不可能的,因为Openstack安全组的存在,Openstack在TAP设备比如vnet0上使用iptables规则来实现安全组,Open vSwitch 不直接和iptables规则兼容而提供了TAP设备连接的Open vSwitch端口

OpenStack的网络使用一个额外的Linux网桥和VETH pair作为这个问题的解决方法。vnet0连接到linux网桥而不是直接连接到Open vSwitch桥上,qbrXXX。此网桥通过(qvbXXX, qvoXXX) veth pair连接到br-int


网络主机配置

网络主机运行neutron-openvswitch-plugin-agent,the neutron-dhcp-agent, neutron-l3-agent, 和 neutron-metadata-agent 等服务。

在网络主机上,假设eth0连接到外部网络,eth1连接到数据网络,ovs_neutron_plugin.ini文件应该如下配置

1
2
3
4
5
[ovs]
tenant_network_type = vlan
network_vlan_ranges = physnet2:101:110
integration_bridge = br -int
bridge_mappings = physnet1:br-ex,physnet2:br-eth1

下图显示了网络主机的网络设备:

类似于计算主机,存在一个Open vSwitch integration bridge (br-int)和一个Open vSwitch bridge (br-eth1)连接到数据网络,这两者通过veth pair连接,neutron-openvswitch-plugin-agent 充当两个交换接口的VLAN转换。

另外一个Open vSwitch bridge,,br-ex,被连接到外部网络的物理接口上。在这个例子中,物理接口是eth0。



[Note] Note

内部网桥和外部网桥通过veth pair(int-br-ex,phy-br-ex)连接,这个例子中使用第三层来路由从内部网络到外部网络的数据包。这个例子中没有数据包穿过veth pair。

 
Open vSwitch 内部端口
网络主机使用Open vSwitch 内部端口,内部端口使您能够将一个或多个IP地址分配给Open vSwitch,在前面的例子中, BR- INT桥有四个内部端口: tapXXX , qr- YYY , qr- ZZZ , tapWWW。每个内部端口都有一个独立的IP地址与它相关的。内部端口qg- VVV 在br-ex 上。
DHCP agent
默认情况下, OpenStack网络的 DHCP代理使用了一项名为dnsmasq的程序为客户提供DHCP服务。OpenStack网络必须为每一个要求DHCP服务的网络创建一个内部端口并且连接到该端口上,在前面的例子中,接口tapXXX是子网net01_subnet01上,接口tapWWW是net02_subnet01上的。
 L3 agent (routing)
OpenStack网络L3代理通过使用Open vSwitch内部端口实现路由并且依赖网络主机路由数据包。在这个例子: 子网net01_subnet01的接口 qr -YYY ,ip地址为192.168.101.1/24。子网net02_subnet01上的接口qr-ZZZ,ip地址为192.168.102.1/24。接口qg-VVV拥有ip地址为10.64.201.254/24。由于这些接口对网络主机的操作系统可见,因此可以将数据包跨接口路由,只有管理员开启ip转发。
L3代理使用iptables来实现浮动IP做网络地址转换(NAT ) 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值