Linux 上虚拟网络与真实网络的映射

合集下载

网络虚拟化中的虚拟网络映射技术研究

网络虚拟化中的虚拟网络映射技术研究

网络虚拟化中的虚拟网络映射技术研究
一、绪论
虚拟网络映射技术是网络虚拟化的一种重要技术,是指将物理网络中的网络资源映射到虚拟化节点上,实现对物理设备的抽象,从而实现虚拟网络服务的管理和运行的技术。

虚拟网络映射技术把虚拟网络和物理网络在技术上结合到一起,把物理网络中的网络资源、系统架构、协议以及对应的软件等映射到虚拟化的节点上,使得网络虚拟化的所有功能能够在一个完整的网络环境中进行结合。

虚拟网络映射技术的出现,为网络虚拟化的发展带来了新的可能,大大拓展了网络虚拟化的应用范围,也为网络技术的发展提供了新的思路。

二、虚拟网络映射技术
虚拟网络映射技术是将物理网络的网络资源和对应的软件映射到虚拟网络中,从而形成一个虚拟的网络环境,使得虚拟机能够在这个完整的环境中运行和管理,实现网络的完整性和可靠性。

虚拟网络映射技术实现了网络中的虚拟化管理,即将物理网络中的网络动态映射到虚拟网络节点中,使得物理网络中的网络资源能够在虚拟环境中实现资源的共享和高效的实现。

Linux下的网络虚拟化与SDN技术

Linux下的网络虚拟化与SDN技术

Linux下的网络虚拟化与SDN技术随着网络技术的不断发展,在各种应用场景下,网络虚拟化和软件定义网络(Software Defined Networking,SDN)正逐渐成为关键的解决方案。

本文将介绍Linux下的网络虚拟化技术以及SDN技术,并探讨它们在现代网络中的应用。

一、网络虚拟化网络虚拟化是一种将单个物理网络划分为多个虚拟网络的技术。

它能够将网络资源进行划分和隔离,为多个应用或用户提供独立的虚拟网络环境。

在Linux下,网络虚拟化主要通过虚拟局域网(Virtual LAN,VLAN)和虚拟专用网络(Virtual Private Network,VPN)来实现。

1. VLAN虚拟化VLAN虚拟化通过在物理网络设备上创建虚拟局域网,将不同的用户或应用隔离在不同的虚拟网络中。

每个虚拟局域网都有一个唯一的标识符,通过标识符可以进行数据包的识别和转发。

2. VPN虚拟化VPN虚拟化通过在公共网络上建立加密隧道,为用户或应用程序提供安全的网络连接。

使用VPN技术,用户可以通过公共网络安全地访问私有网络,并且可以在不同的物理位置之间建立虚拟专用网络。

二、SDN技术SDN技术是一种将网络控制平面与数据转发平面相分离的新型网络架构。

在SDN中,网络控制器负责管理和配置网络设备,而数据转发则由可编程的交换机或路由器实现。

SDN的核心思想是集中化的网络控制和灵活的数据转发。

1. SDN架构SDN架构由三个主要组件组成:控制器、数据平面和应用。

控制器是SDN的核心,负责管理和控制整个网络。

数据平面负责实际的数据转发和处理。

应用则通过控制器与网络交互,实现各种高级网络功能和服务。

2. SDN的优势SDN技术带来了许多优势。

首先,SDN提供了更好的灵活性和可编程性,使网络可以根据应用需求进行快速调整和定制。

其次,SDN 简化了网络管理和运维工作,提高了网络的可管理性和可维护性。

最后,SDN还提供了更好的安全性,通过集中化的网络控制可以对整个网络进行安全策略的管理和实施。

linux端口映射 (3)

linux端口映射 (3)

Linux端口映射1. 概述在Linux系统中,端口映射是一种网络转发技术,用于在不同网络之间传输数据。

它允许将一个公共的IP地址和端口映射到内部网络中的主机和端口上,使外部网络可以通过对外公布的地址和端口访问内部网络中的服务。

本文将介绍如何在Linux系统中进行端口映射的配置和使用。

2. 端口映射方法2.1. 使用iptables进行端口映射iptables是Linux系统中一个功能强大、灵活的防火墙工具。

可以利用iptables来实现端口映射功能。

下面介绍两种常用的iptables端口映射配置方法。

2.1.1. DNAT方式端口映射DNAT(Destination Network Address Translation)方式是一种基于目标地址转换的端口映射方法。

它将指定的外部端口映射到内部网络主机的指定端口上。

使用以下命令进行DNAT方式的端口映射配置:sudo iptables -t nat -A PREROUTING -p tcp --dp ort <外部端口> -j DNAT --to-destination <内部主机I P>:<内部端口>例如,将外部服务器的80端口映射到内部网络的192.168.1.10主机的8080端口上,可以使用以下命令:sudo iptables -t nat -A PREROUTING -p tcp --dp ort 80 -j DNAT --to-destination 192.168.1.10:80802.1.2. REDIRECT方式端口映射REDIRECT方式是一种基于目标地址重定向的端口映射方法。

它将指定的外部端口重定向到本地主机上的另一个端口。

使用以下命令进行REDIRECT方式的端口映射配置:sudo iptables -t nat -A PREROUTING -p tcp --dp ort <外部端口> -j REDIRECT --to-port <本地端口>例如,将外部服务器的8888端口重定向到本地主机的80端口上,可以使用以下命令:sudo iptables -t nat -A PREROUTING -p tcp --dp ort 8888 -j REDIRECT --to-port 802.2. 使用socat进行端口映射socat是一个功能强大的网络工具,通过它可以实现很多网络操作,包括端口映射。

Linux终端命令实现网络代理和转发

Linux终端命令实现网络代理和转发

Linux终端命令实现网络代理和转发在Linux系统中,终端命令是一种非常强大的工具,可以用来实现各种各样的功能。

其中,网络代理和转发是一种常见的需求,可以通过终端命令来轻松实现。

本文将介绍一些常用的Linux终端命令,用于实现网络代理和转发。

1. 设置Proxy代理Proxy代理是一种通过中间服务器来转发网络请求的方式,常用于加速访问或绕过网络限制。

在Linux终端中,可以使用环境变量来设置Proxy代理。

首先,需要先设置代理服务器的IP地址和端口号,例如:```export http_proxy="http://proxy-server-ip:port"export https_proxy="http://proxy-server-ip:port"```将上述命令中的"proxy-server-ip"替换为实际的代理服务器IP地址,"port"替换为实际的端口号。

这样就成功设置了Proxy代理。

2. 实现HTTP代理转发除了使用环境变量设置Proxy代理外,还可以使用终端命令来实现HTTP代理转发。

在Linux系统中,可以使用Squid软件实现HTTP代理功能。

首先,需要安装Squid软件,可以使用以下命令进行安装:```sudo apt-get install squid```安装完成后,可以编辑Squid的配置文件,使用以下命令:```sudo nano /etc/squid/squid.conf```在配置文件中,可以设置Squid监听的端口号,以及允许访问的IP地址和网络段。

配置完成后,保存并退出文件。

接下来,可以使用以下命令启动Squid服务:```sudo systemctl start squid```启动成功后,就可以将HTTP请求通过Squid进行转发了。

3. 实现TCP和UDP数据包转发除了HTTP代理转发外,有时候还需要实现TCP和UDP数据包的转发。

linux域名映射配置方法

linux域名映射配置方法

linux域名映射配置方法Linux系统是一种常用的服务器操作系统,它提供了许多工具和配置文件来帮助用户管理和配置网络环境。

在Linux系统中,域名映射是一种常见的配置方式,它可以将本地计算机的IP地址与域名进行关联,从而方便用户访问外部网络资源。

本文将介绍如何使用Linux 系统进行域名映射配置。

一、准备工作在进行域名映射配置之前,需要确保以下准备工作已经完成:1. 拥有正确的域名和IP地址需要有一个可用的域名和与之对应的IP地址,这是进行域名映射配置的基础。

2. 安装和配置DNS服务器如果域名已经注册并由DNS服务器管理,则需要安装和配置DNS 服务器,以便将域名映射到相应的IP地址。

3. 安装Linux系统需要一台安装了Linux系统的计算机或服务器。

二、配置步骤以下是进行域名映射配置的基本步骤:1. 打开终端使用终端登录到Linux系统。

2. 编辑 hosts 文件在大多数Linux系统中,hosts文件通常位于/etc/hosts 目录下。

可以使用文本编辑器(如vi、nano等)打开该文件。

在文件中添加以下内容:IP地址域名计算机名(可选)例如:192.168.1.100 example_server注意:如果计算机名已经存在 hosts 文件中,请确保计算机名与IP 地址之间用空格隔开。

否则可能会导致冲突。

3. 检查配置是否生效在编辑完 hosts 文件后,可以尝试通过域名访问外部资源。

如果配置正确,应该会得到与通过 IP 地址访问相同的结果。

三、高级配置技巧除了基本的 hosts 文件配置外,还有一些高级技巧可以帮助您更好地管理和维护域名映射。

以下是一些建议:1. 使用别名(Alias)配置 DNS 记录可以使用 DNS 别名记录(如 CNAME 或 ALIAS)将多个域名映射到同一台计算机的 IP 地址上。

这样可以简化域名映射的管理工作。

2. 使用 DNS 工具管理 DNS 记录可以使用 Linux 系统中的 DNS 工具(如BIND)来管理 DNS 记录。

VMware虚拟机与实机上网共享

VMware虚拟机与实机上网共享

解决虚拟机上网问题要保证虚拟机系统可以上网,得先解决虚拟机和真实主机的连接关系。

VMware给出3种模式,我们常用的有“bridge(桥接)”和“Net(网络地址转换)”方式。

设置方法:单击“虚拟机”→“设置”→“以太网,然后选择连接方式。

1.bridge(桥接):将虚拟机网卡(本地连接)的IP地址和真实主机要设在同一IP段,其余与主机相同:例如主机ip是10.70.54.31,设置虚拟机ip为10.70.54.22。

netmask,broadcast,gateway,dns 都与主机相同即可实现虚拟机<--->主机;虚拟机<---->互联网通信。

这种情况适合局域网,而且网内没有特别限制的情形下使用,也适合与真实主机或局域网内主机进行网络共享。

如果ADSL单机拨号用户使用这个模式的话,要登录互联网,先得断开真实主机的ADSL连接,再在虚拟机系统建立ADSL拨号连接,并使用ADSL线路的帐号和密码登录才可以上网。

即虚拟机与真实主机不能同时上网。

即:主机和虚拟机桥接共享式上网VMware虚拟机桥接方式与真实主机共享上网1、安装虚拟机,网络连接方式选择“桥接”2、在VMware菜单里,选择“编辑”---“虚拟网络设置”---“主机虚拟网络映射”---“VMnet0”,选择一个真实的网络适配器进行桥接(不要自动选择)3、在真实主机上,“网上邻居”右键属性,找到上一步选择的网络适配器相应的网络连接,更改其IP地址为“192.168.0.1”,子网掩码“255.255.255.0”,其他为空即可4、在虚拟机上更改本地连接的IP地址为“192.168.0.2”,子网掩码“255.255.255.0”,,网关“192.168.0.1”,DNS服务器“202.102.224.68”5、在主机上将用来上互联网的连接共享即可实现虚拟机通如果想让虚拟主机拨号主机共享,就把3、4两步在虚拟机对调设置2.nat :这种模式下虚拟机系统经过虚拟机网络的特别转换,共享真实主机的IP上网。

主机和虚拟机的网络互通设置

主机和虚拟机的⽹络互通设置entos7⽹络与主机和外⽹不互通,亲测有效(关键步骤:若设置完成后,主机ping不通虚拟机,那么先禁⽤主机vmnet8后再启动,就能实现主机与虚拟机的联通)内容:[name or service not known]编辑--》》虚拟⽹络编辑器命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33说明:ONBOOT等于⾃启动(centos默认不启动,此处改成默认启动)IPADDR等于当前Linux的地址(不知道可以ifconfig查看)IPADDR填写起始IP地址到结束IP地址之间的数据NETMASK等于⼦⽹掩码GATEWAY等于⽹关IP命令:vi /etc/resolv.conf重启服务:service network restartping success到此处--->>ping外⽹成功------------------------------------2018-07-23-17:29:09 遇到⼀个龊逼问题-----------------下载sendmail时出错,怀疑是⽹络问题,于是ping下载地址提⽰暂时⽆法解析域名,vi /etc/resolv.conf 和/etc/sysconfig/network-scripts/ifcfg-ens33配置没看到有错误【解决⽅法】命令ip addr得到【mac地址】补充到配置⽂件内,重启⽹络服务,service network restart 成功service network restart 重启⽹络,ping外⽹成功------------------------------------2018-07-24-x:x:x ⼜遇到这个问题------------------------检查ifcfg-ens33⽂件,防⽕墙端⼝,mac地址,注释device,检查dns配置,禁⽤NetworkManager,重新添加⽹络适配器,重启服务器,全试了⼀遍【⽆效】,于是找了个最原始的⽅法解决了问题,【因为没找到恢复出⼚设置的命令】重装Linux系统,然后成功了在使⽤过程中,有可能会⽤到cmd或者xshell等⼯具连接该虚拟机1,在此过程中常见问题是ssh服务未开启,或是虚拟机防⽕墙未关闭,导致外部⼯具链接失败开启ssh服务(如果没有,则需要下载ssh服务【yum install -y openssl openssh-server】)查看ssh服务是否开启,active(running) 表⽰已经开启服务查看防⽕墙是否关闭(关闭命令【systemctl stop firewalld.service 】)cmd ping IPADDR 成功xshell ping IPADDR 成功xshell连接centos7成功虚拟⽹络编辑器找到桥接⽹卡(或者为vmnet... 然后打开虚拟机,单击菜单中“虚拟机...在上⼀篇的⼊门⽂章中,我们安装了CentOS。

Linux操作系统中的网络通信原理

Linux操作系统中的网络通信原理一、引言Linux操作系统是一种广泛应用于各种领域的开源操作系统,而网络通信则是其最重要的功能之一。

本文将深入探讨Linux操作系统中的网络通信原理,包括网络协议、套接字编程以及网络通信的实现机制等方面。

二、网络协议1. TCP/IP协议栈TCP/IP协议栈是Linux操作系统中实现网络通信的基础。

它由四个层次组成:网络接口层、网络层、传输层和应用层。

网络接口层负责将数据从应用层传输到网络层,网络层负责将数据从源主机传输到目标主机,传输层负责提供可靠的数据传输服务,而应用层则负责处理具体的网络应用。

2. IP地址和端口号IP地址是在Internet上对主机和路由器进行唯一标识的地址,而端口号则用于标识网络中的不同进程或服务。

Linux操作系统中使用IP 地址和端口号来实现网络通信的目的。

3. ICMP协议ICMP协议是Internet控制报文协议的缩写,用于在IP网络中发送控制消息和错误报文。

它有助于网络中的主机和路由器之间进行通信和故障排除。

三、套接字编程套接字是实现网络通信的一种机制,也是Linux操作系统中网络通信的核心。

通过套接字编程,可以在应用层使用socket函数进行网络通信的建立和数据传输。

1. 套接字类型在Linux操作系统中,套接字类型可以分为面向连接的套接字和无连接的套接字。

面向连接的套接字主要基于TCP协议,提供可靠的数据传输和连接管理功能;无连接的套接字则主要基于UDP协议,提供高效的数据传输和较低的开销。

2. 套接字编程流程套接字编程的一般流程包括创建套接字、绑定地址、监听连接、接受连接、数据传输和关闭套接字等步骤。

通过这些步骤,应用程序可以实现与其他主机或服务的通信。

四、网络通信实现机制1. 数据链路层数据链路层是网络通信中的第一层,主要负责将数据包从物理层传输到网络层。

在Linux操作系统中,数据链路层由网络接口卡驱动程序和相应的设备驱动程序实现。

linux 路由原理

Linux 路由原理是指Linux 系统中数据包在不同网络接口之间进行转发和路由的过程。

在Linux 中,路由的实现主要是通过内核中的路由表来进行的。

路由表是一个包含网络目的地址、网关和出口设备的映射表,用来指导数据包在网络中的传输。

Linux 内核中有两个重要的数据结构用于路由功能:路由缓存和路由表。

1. 路由缓存:存储最近路由信息的高速缓存,用于加速路由查询和提高转发的效率。

2. 路由表:用来存储完整的路由信息的表格,包含了目的地址、子网掩码、下一跳网关等信息。

当一个数据包到达Linux 主机时,内核会根据数据包的目的IP 地址和路由表进行匹配,以确定数据包的下一跳网关和出口设备。

具体的路由过程如下:1. 数据包到达网卡:当一个数据包到达Linux 主机的网卡时,网卡会将数据包的头部信息传递给内核进行处理。

2. 头部解析:内核会解析数据包的头部信息,包括源IP 地址、目的IP 地址等信息。

3. 路由查询:内核将目的IP 地址与路由表进行匹配,以确定下一跳网关和出口设备。

内核会根据路由表中预设的优先级顺序进行匹配,找到第一条匹配的路由信息。

4. 更新路由缓存:如果找到了匹配的路由信息,内核会将该信息存储到路由缓存中,以便后面的数据包可以直接使用该信息。

如果没有找到匹配的路由信息,内核将会发出Destination Unreachable 的ICMP 报文。

5. 网络层转发:根据路由查询的结果,内核将选择合适的出口设备,将数据包转发出去。

如果目标IP 地址在本地区域网络中,内核会直接将数据包传递给对应的网卡进行发送。

6. 打包头部:内核会根据下一跳网关的MAC 地址和数据包的目的IP 地址,重新封装数据包的头部信息。

7. 发送数据包:内核将重新封装后的数据包发送给下一跳网关。

lvs的四种工作模式工作原理

lvs的四种工作模式工作原理LVS的四种工作模式工作原理LVS(Linux Virtual Server)是一种高可用性、高性能的负载均衡软件,它可以将来自客户端的请求分发到多个服务器上,从而提高系统的可用性和性能。

LVS有四种工作模式,分别是NAT模式、DR模式、TUN模式和FULLNAT模式。

下面将分别介绍这四种工作模式的工作原理。

一、NAT模式NAT模式是LVS最常用的一种工作模式,它的工作原理是将客户端的请求地址和端口号转换成LVS的虚拟IP地址和端口号,然后再将请求转发给后端的真实服务器。

当后端服务器返回响应时,LVS会将响应的源地址和端口号转换成虚拟IP地址和端口号,然后再将响应返回给客户端。

这种模式的优点是配置简单,但缺点是性能较低,因为需要进行地址转换。

二、DR模式DR模式是LVS的一种高性能工作模式,它的工作原理是将客户端的请求直接转发给后端的真实服务器,而不进行地址转换。

当后端服务器返回响应时,LVS会将响应的源地址和端口号修改成虚拟IP地址和端口号,然后再将响应返回给客户端。

这种模式的优点是性能高,但缺点是配置较为复杂,需要在后端服务器上配置虚拟IP地址。

三、TUN模式TUN模式是LVS的一种高可用性工作模式,它的工作原理是将客户端的请求转发给后端的真实服务器,同时在LVS和后端服务器之间建立一条虚拟隧道,用于传输数据。

当后端服务器返回响应时,LVS会将响应通过虚拟隧道返回给客户端。

这种模式的优点是可用性高,但缺点是性能较低,因为需要进行数据传输。

四、FULLNAT模式FULLNAT模式是LVS的一种高可用性、高性能工作模式,它的工作原理是将客户端的请求地址和端口号转换成LVS的虚拟IP地址和端口号,然后再将请求转发给后端的真实服务器。

当后端服务器返回响应时,LVS会将响应的源地址和端口号转换成LVS的虚拟IP地址和端口号,然后再将响应返回给客户端。

这种模式的优点是可用性高、性能高,但缺点是配置较为复杂。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux 上虚拟网络与真实网络的映射虚拟化环境中的网络问题在提供IaaS 服务的云计算环境中,每个用户都能得到一个虚拟的计算机,而这些虚拟机器以密集的方式运行在后台服务器集群中。

虚拟机的一个特点是提供给用户类似于物理机器的体验,而现实世界中的物理机器能通过各种网络拓扑结构组网。

如何在虚拟环境中方便快捷地创建和现实中一样的网络,成为一个新的挑战。

图 1.物理网络映射问题例子图1 为一个网络映射问题的例子。

图中左边是现实世界中一个常见的网络环境:四台PC 通过各自的物理网卡组成了两个子网,两个子网中的PC 默认情况下是不能通讯的,也就是说他们被物理隔离了。

图 1 的右边显示了虚拟化环境下的情景,四个虚拟机同时运行在一个物理主机上,并且需要象图 1 左边的真实环境一样划分出两个子网并隔离。

如何才能做到这一点,或者说如何简单方便的创建出和图1 左边部分类似的网络环境,成为虚拟化里必须要解决的一个问题。

回页首虚拟化环境中模拟网络的主要方法为方便理解,本文把虚拟化环境中模拟现实网络的方法分为两种:使用传统网络技术,或使用虚拟化网络扩展技术。

传统网络技术主要指在虚拟化技术流行以前,现实世界中已经存在的以太网络,包括传统IP 网络、802.1Q VLAN 网络,对它们Linux 已经有良好支持,用户可以配置这些Linux 设备以完成对现实网络的模拟。

虚拟化网络扩展技术主要指为应对云计算与虚拟化环境带来的挑战而新出现的网络技术,包括802.1Qbg 和802.1Qbh 网络。

回页首虚拟化环境中网络模型说明图 2 本文使用的网络模型说明点击查看大图为方便阅读,上图列出了本文将使用的网络元素。

图中左列表示现实世界中存在的网络元素,分别为电脑终端、二层交换机、路由器、网关、支持802.1Q VLAN 的交换机、三层交换机、物理网卡、支持Hairpin 模式的交换机。

图中中列为虚拟化环境中的元素,分别为虚拟机,Linux Bridge、Linux 路由表、Linux iptables、Host 主机。

棕色虚线框表示以太网广播域,黑色虚线框表示物理捆绑关系。

图中右列为Linux 系统里的网络设备模型,分别为TAP 设备、VETH 设备、工作在VEPA 模式的MACVLAN 设备、工作在Bridge 模式的MACVLAN 设备、工作在Passthrough 模式的MACVLAN 设备、SRIOV 的虚拟VF 设备、VLAN 设备,下文将有对它们的简介。

回页首使用传统网络技术模拟现实网络Linux Host 侧使用的网络元素简介Linux 主要使用以下三种设备模型:Bridge、TAP、VETH、VLAN。

Bridge 设备是基于内核实现的二层数据交换设备,其作用类似于现实世界中的二级交换机。

TAP 设备是一种工作在二层协议的点对点网络设备,每一个TAP 设备都有一个对应的Linux 字符设备,用户程序可以通过对字符设备的读写操作,完成与Linux 内核网络协议栈的数据交换工作,在虚拟化环境中经常被模拟器使用。

VETH 设备是一种成对出现的点对点网络设备,从一段输入的数据会从另一端改变方向输出,通常用于改变数据方向,或连接其它网络设备。

VLAN 设备是以母子关系出现的一组设备,是Linux 里对802.1.Q VLAN 技术的部分实现,主要完成对802.1.Q VLAN Tag 的处理。

模拟传统以太网图 3 .现实世界中的传统以太网络 A上图为一个典型的传统以太网结构:5 个终端机器通过各自的网卡连接接入层的交换机,交换机再通过汇聚端口连接第二级交换机,进而接入作为网关的路由器,路由器通过NAT(Net Address Translate)转发数据到外界网络,从而构成一个封闭但是可以连接外网,并且只占有一个公共IP 的私网环境。

由于所有的终端都在同一个二级交换机下,根据以太网协议,二层的广播报文将在整个网络内传遍,构成了潜在的广播风暴风险。

类似的网络结构广泛存在于公司、小区、家庭用户中。

图 4 .虚拟网络A_V0点击查看大图上图所示为虚拟化情况下,对网络 A 的一种比较准确的模拟。

四台虚拟机通过TAP 设备连接到接入层Bridge 设备,接入层Bridge 设备通过一对VETH 设备连接到二级Bridge 设备,主机通过一对VETH 设备接入二级Bridge 设备。

二级Bridge 设备进一步通过Linux 路由表,IP Tables 与物理网卡形成数据转发关系,最终和外部物理网络连接。

此图中的元素与网络 A 中的元素近乎一一对应,Bridge 相当于现实世界中的二层交换机,VETH 设备相当于连接Bridge 的网线,虚拟机看到的网络和网络 A 的物理机一样,广播域包括所有虚拟用户终端。

但在通常情况下,虚拟机不一定需要二级的Bridge 同时存在,它仅仅需要数据的转发功能,因此为了提高效率一般改变虚拟网络配置只保留最核心的功能。

图 5 .虚拟网络A_V1点击查看大图上图为虚拟化环境中一种常用的网络配置,对比网络A_V0 有如下变化:不再一一映射网络A,省去二级Bridge,省去VETH 设备。

这种情况下,虚拟机仍然能通过虚拟网关上网,只不过探测不到二级Bridge 的存在。

由于效率较高,这种一级Bridge 加NAT 的网络被选为Libvirt 的默认虚拟网络。

图中的Bridge 设备总是连接有一个MAC 为52:xx:xx:xx:xx:xx 的TAP 设备,原因是Linux 内核里Bridge 的实现有一个缺陷:当加入的设备MAC 为最小MAC 时,MAC 学习会打断Bridge 的工作,因此事先创建一个MAC 值很小的设备51:xx:xx:xx:xx:xx 绕过此问题。

图中由于存在两个子网(192.168.1.0 网段与192.168.2.0 网段),因此使用了两个Bridge 设备以区分出两个广播域,和网络A 产生了区别,这在没有802.1Q VLAN 的情况下不可避免。

模拟802.1Q VLAN 以太网在虚拟化技术流行之间,通讯业界已制定了802.1Q VLAN 标准,以解决复杂网络环境下广播风暴域的问题。

使用802.1Q VLAN 技术,可以把逻辑上的子网和物理上的子网分割开来,即物理上连接在同一交换机上的终端可以属于不同逻辑子网,处于不同逻辑子网的终端相互隔离,从而解决了前文描述的广播域混乱的问题。

图 6 .现实世界中的802.1Q VLAN 以太网络 B点击查看大图上图所示为一个现实世界中的802.1Q VLAN 网络。

六台电脑终端通过一级交换机接入网络,分属VLAN 10、VLAN 20、VLAN 30。

做为例子,图中左侧的交换机不支持802.1Q VLAN,导致其连接的两台终端处于一个广播域中,尽管它们属于不同子网。

作为对比,图中右侧的交换机支持802.1Q VLAN,通过正确配置正确切割了子网的广播域,从而隔离了分属不同网段的终端。

在连接外网之间,需要一个支持802.1Q VLAN 的三层交换机,在进行数据外发时剥离VLAN Tag,收到数据时根据IP 信息转发到正确的VLAN 子网。

路由器根据IP 信息进行NAT 转换最终连接外网。

图7.虚拟网络B_V0点击查看大图上图能在虚拟化的条件下对网络 B 进行较精确的模拟,六台虚拟机将和网络 B 中的真实PC 看到一样的网络环境。

Host C 上的Bridge、VLAN Device 与物理网卡共同完成了网络 B 中的支持802.1Q VLAN 的一级交换机的功能,从而隔离逻辑子网。

Host B 上的Bridge 仅仅起连接物理网卡与虚拟机的作用。

Host A 上的Bridge 相当于普通交换机,和网络B 一样存在广播域交叉问题。

图8 .虚拟网络B_V1点击查看大图上图通过在Host A 与Host B 上引入VLAN 设备,解决了B_V0 中存在的广播域交叉问题,虚拟机已经能正确用使用相互隔离的子网。

大多数情况下虚拟机并不关心Bridge 以上部分的网络情况,只要求正确隔离逻辑子网,并且他们可以运行在同一个Host 上,因此常把网络加以变换简化。

图9.虚拟网络B_V2上图表示了一个经常在虚拟化中使用的802.1Q VLAN 网络。

对于所有虚拟机来说,它们处于和网络 B 相同的逻辑子网中,并且由于VLAN Device 的引入,避免了B 中的VLAN 10 与VLAN 20 的广播域交叉问题。

多个虚拟机需要接入同一个VLAN 时,只需使用一个Bridge 来扩展,而不必像现实世界中的交换机那样使用多级交换机进行数据汇聚,因为Bridge 拥有近乎无限多个端口用于连接其他设备,没有物理端口数限制。

物理网卡输出的将是带VLAN Tag 的数据,和网络 B 一样,需要一个支持802.1Q VLAN 的三层交换机进行处理。

回页首使用虚拟化网络扩展技术模拟现实网络网络标准侧的扩展技术针对云计算中的复杂网络问题,业界主要提出了两种扩展技术标准:802.1Qbg 与802.1Qbh。

802.1Qbh Bridge Port Extension 主要由Vmware 与Cisco 提出,尝试从接入层到汇聚层提供一个完整的虚拟化网络解决方案,尽可能达到软件定义一个可控网络的目的。

它扩展了传统的网络协议,因此需要新的网络设备支持,成本较高。

802.1Qbg Edge Virtual Bridging (EVB) 主要由HP 等公司联合提出,尝试以较低成本利用现有设备改进软件模拟的网络。

本文主要针对后者做解析。

802.1Qbg 的一个核心概念是VEPA(Virtual Ethernet Port Aggregator ),简单来说它通过端口汇聚和数据分类转发,把Host 上原来由CPU 和软件来做的网络处理工作转移到一级交换机上,减少Host CPU 负载,同时使得在一级的交换机上做虚拟机网络流量监控成为可能,从而更清晰地分割服务器与网络设备的工作范围,方便系统的管理。

图10.VEPA 概念图(来自09 年HP VEPA 研讨会,略做修改)上图显示了VEPA 中的基本概念:在物理终端上,即虚拟机运行的Host 上,需要一个设备将虚拟端口根据一定的规则进行分组,完成端口分组功能(Port Group)。

同时这个设备能够对外抽象出被分为一组的端口,将属于同一组端口的数据一起投递出去,完成端口汇聚功能(Port Aggregation)。

图中画出了虚拟端口中的数据流向:所有来自虚拟端口的数据将和同组数据汇聚后投递到临近的一级交换机上,物理终端不再进行二层协议解析处理。

同一物理终端里的虚拟端口之间的通讯,也必须通过一级交换机转发回来,而不能走捷径在物理终端内部进行转发,会增加一些一级交换机的流量负载。

相关文档
最新文档