O009、KVM 网络虚拟化基础

 
网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大。
 
但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把他啃下来。为了让大家对虚拟化网络的复杂程度有一个只管的认识,请看下图:
 
 
这是 OpenStack 官网上给出计算节点(可以理解为KVM的宿主机)虚拟网络的逻辑图,上面的网络设备很多,层次也很复杂。
 
但也不要怕, 万丈高楼从地起,虚拟网络再复杂,也是有一些基础的组件构成的。只要我们将这些基础组件的概念和他们之间的逻辑关系搞清楚了,就能深刻理解虚拟网络的架构,那么云环境下的虚拟化网络也就不再话下了。
 
下面我们来学习网络虚拟化中最重要的两个东西  Linux Bridge 和 VLAN
 
Linux Bridge 基本概念
 
架设宿主机上有一块与外网连接的物理网卡 eth0 ,上面跑了一个虚机 VM1 ,现在有一个问题是:如何让VM1 能够访问外网?
 
至少有两种方案:
 
    1、将物理网卡 eth0 直接分配给 VM1 ,但随之带来的问题狠多,宿主机没有了网卡就无法访问了;新的虚机比如VM2 也没有网卡可用
 
    2、给VM1 分配一个虚拟的网卡 vnet0 ,通过Linux Bridge br0 将 eth0 和 vnet0 连接起来,如下图:
 
 
 
Linux Bridge 是Linux上用来做 TCP/IP 二层协议交换的设备,其功能大家可以简单理解为一个二层交换机或者 Hub 。多个网络设备可以连接到同一个Linux Bridge,当某个设备收到数据包时,Linux Bridge 会将数据转发给其他设备。
 
在上面的例子中,当有数据到达 eth0 时,br0 会将数据转发给 vnet0 , 这样 VM1就能接受来自外网的数据;反过来,VM1发送数据给vnet0,br0 也会将数据转发到eth0 ,从而实现了 VM1 与外网的通信。
 
现在我们增加一个 VM2 如下图所示。
 
 
VM2 的虚拟网卡vnet1 也连接到了br0 上,现在 VM1 和 VM2 之间可以通信,同时 VM1 和 VM2 也都可以与外网通信。
 
 
posted @ 2019-05-20 23:15  三角形  阅读(514)  评论(0编辑  收藏  举报