一种实现二层网络的扩展方法及扩展的二层网络
技术领域
本发明涉及二层网络,尤其涉及一种实现二层网络的扩展方法及扩展的二层网络。
背景技术
目前的IP局域网络中,IPV4采用ARP(Address Resolution Protocol,地址解析协议),IPV6采用NDP(Neighbor Discovery Protocol,邻居发现协议)来获知二层网络的地址。两者在地址发现的机制上基本相同,都采用二层广播的方式来获知目的IP地址所对应的数据链路层地址。对于以太网,数据链路层地址对应于MAC(Media Access Control,媒体接入控制)地址。每个主机都维护有独立缓存,并预设老化定时时间,发送IP报文时,对于本机缓存中没有记录的目的IP地址,必须在局域网中广播一个ARP/NDP报文查询目的IP地址所对应的数据链路层地址。
当局域网内主机数目非常多时,比如大型数据中心,甚至是采用L2VPN(二层虚拟专用网)技术连接起来的跨地域的L2VPN,其主机数目可以达到数千台乃至数万台,虚拟化技术的应用使得这一情况更加恶化,利用虚拟化技术,一台物理机可以支持数十个虚拟主机,未来可以支持多达数百个虚拟主机,每个虚拟主机有自己独立的IP地址和MAC地址。虽然可以采用VLAN(虚拟局域网)划分的方式来进行广播风暴的隔离(VLAN包含基于端口的VLAN和基于MAC的VLAN),但是由于虚拟化技术带来的虚拟机迁移技术要求主机本身、IP地址和MAC地址完全可浮动,导致基于端口的VLAN和基于MAC的VLAN均无法使用。
OTV(Overlay Transport Virtualization,叠加网传输虚拟化)技术,相比较普通的L2VPN技术,其L2VPN不同站点间的广播风暴是隔离的,广播局限在同一个物理位置的数据中心内部。但是即使是一个数据中心内部,虚拟主机的数量仍然可以达到数万乃至数十万台,ARP/NDP广播仍然会极大影响网络的性能,同时每个二层交换机的MAC转发表的规模也有限,很难支持如此大规模的二层网络。
发明内容
本发明要解决的技术问题是提供一种实现二层网络扩展的方法及扩展的二层网络,解决主机在获取目的IP地址对应的MAC地址的过程中,产生广播风暴的问题。
为解决上述技术问题,本发明的一种实现二层网络扩展的方法,在运营商网络中设置地址解析服务器(ARS),在数据中心中的物理服务器上设置虚拟交换机;
所述虚拟交换机在所述物理服务器中的虚拟机上电后,向所述ARS注册所述虚拟机的IP地址与自身MAC地址的对应关系;
所述ARS记录所述虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系,供其他虚拟机查询;
所述物理服务器中的虚拟机根据通信对端的IP地址从所述ARS查询该IP地址对应的MAC地址,通过该MAC地址与所述通信对端进行报文交互。
进一步地,所述虚拟交换机向所述ARS注册所述虚拟机的IP地址与自身MAC地址的对应关系包括:
所述虚拟交换机在所述虚拟机上电后记录该虚拟机的IP地址与MAC地址的对应关系,并向该虚拟交换机归属的接入服务路由器(ASR)注册所述虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系;
所述ASR记录所述虚拟机的IP地址与所述虚拟交换机的MAC地址的对应关系,并向所述ARS注册该对应关系以及该ASR的地址。
进一步地,所述ARS记录所述虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系时,还对应地记录所述ASR的地址。
进一步地,所述物理服务器中的虚拟机根据通信对端的IP地址从所述ARS查询该IP地址对应的MAC地址包括:
所述物理服务器中的虚拟机发送MAC地址解析广播请求,该物理服务器中的虚拟交换机将该广播请求转换为单播的查询请求,采用该单播的查询请求从所述ARS查询所述通信对端的IP地址对应的MAC地址。
进一步地,所述虚拟交换机机采用该单播的查询请求从所述ARS查询所述通信对端的IP地址对应的MAC地址包括:
所述虚拟交换机将所述单播的查询请求发送给该虚拟交换机归属的ASR,通过该ASR查询所述通信对端的IP地址对应的MAC地址;
所述虚拟交换机归属的ASR接收到所述查询请求后,向所述ARS查询所述通信对端的IP地址对应的MAC地址,所述ARS查询并返回查询到的MAC地址和所述通信对端归属的ASR的地址,所述虚拟交换机归属的ASR保存接收到的MAC地址和ASR的地址,在所接收到的ASR的地址非自身地址时,向所述虚拟交换机返回自身的MAC地址;
所述虚拟交换机通知所述物理服务器中的虚拟机所述通信对端的IP地址对应的MAC地址为所述虚拟交换机归属的ASR的地址。
进一步地,所述物理服务器中的虚拟机通过该MAC地址与所述通信对端进行报文交互包括:
所述物理服务器中的虚拟机向所述通信对端发送报文,该报文的源MAC地址和目的MAC地址分别为该虚拟机的MAC地址和所述虚拟交换机归属的ASR的地址;
所述虚拟交换机接收到报文后,将该报文的源MAC地址修改为该虚拟交换机的MAC地址,并根据目的MAC地址将该报文发送给该虚拟交换机归属的ASR;
所述虚拟交换机归属的ASR在本地查询所述通信对端的MAC地址和通信对端归属的ASR的地址,将所述报文的目的MAC地址修改为查询到通信对端的MAC地址,并将该报文封装到目的地址为所述通信对端归属的ASR的地址的隧道中通过运营商网络发送给所述通信对端归属的ASR。
进一步地,该方法还包括:
所述通信对端归属的ASR接收到报文后,解除隧道,根据报文的目的MAC地址将报文发送给所述通信对端所在物理服务器上的虚拟交换机,该虚拟交换机根据报文的目的IP地址查询所述通信对端的MAC地址,将该报文的目的MAC地址修改为所述通信对端的MAC地址,发送给所述通信对端。
进一步地,所述物理服务器中的虚拟机根据通信对端的IP地址从所述ARS查询该IP地址对应的MAC地址包括:
所述虚拟交换机将所述单播的查询请求发送给该虚拟交换机归属的ASR,通过该ASR查询所述通信对端的IP地址对应的MAC地址;
所述虚拟交换机归属的ASR接收到所述查询请求后,向所述ARS查询所述通信对端的IP地址对应的MAC地址,所述ARS查询并返回查询到的MAC地址和所述通信对端归属的ASR的地址,所述虚拟交换机归属的ASR保存接收到的MAC地址和ASR的地址,在所接收到的ASR的地址为自身地址时,向所述虚拟交换机返回接收到的MAC地址;
所述虚拟交换机通知所述物理服务器中的虚拟机所述通信对端的IP地址对应的MAC地址为所述虚拟交换机归属的ASR接收到的MAC地址。
进一步地,所述物理服务器中的虚拟机通过该MAC地址与所述通信对端进行报文交互包括:
所述物理服务器中的虚拟机向所述通信对端发送报文,该报文的源MAC地址和目的MAC地址分别为该虚拟机的MAC地址和所述虚拟交换机归属的ASR接收到的MAC地址;
所述虚拟交换机接收到所述报文后,将该报文的源MAC地址修改为该虚拟交换机的MAC地址,并根据目的MAC地址,通过二层交换机将该报文发送给所述通信对端所在物理服务器上的虚拟交换机。
进一步地,该方法还包括:
所述通信对端所在物理服务器上的虚拟交换机查询所述通信对端的MAC地址,将该报文的目的MAC地址修改为查询到的通信对端的MAC地址,发送给所述通信对端。
进一步地,所述虚拟交换机设置在所述数据中心中的物理服务器的虚拟机管理器中。
进一步地,一种物理服务器,该物理服务器中安装有虚拟机,在该物理服务器上还设置有虚拟交换机;
所述虚拟交换机,用于在所述物理服务器中的虚拟机上电后,向运营商网络中设置的地址解析服务器(ARS)注册所述虚拟机的IP地址与自身MAC地址的对应关系。
进一步地,所述虚拟交换机向所述ARS注册所述虚拟机的IP地址与自身MAC地址的对应关系包括:
所述虚拟交换机在所述虚拟机上电后记录该虚拟机的IP地址与MAC地址的对应关系,并向该虚拟交换机归属的接入服务路由器(ASR)注册所述虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系。
进一步地,所述虚拟交换机,还用于在接收到所述物理服务器中的虚拟机发送MAC地址解析广播请求后,将该广播请求转换为单播的查询请求,采用该单播的查询请求从所述ARS查询通信对端的IP地址对应的MAC地址。
进一步地,所述虚拟交换机机采用该单播的查询请求从所述ARS查询通信对端的IP地址对应的MAC地址包括:
所述虚拟交换机将所述单播的查询请求发送给该虚拟交换机归属的ASR,通过该ASR查询所述通信对端的IP地址对应的MAC地址,并在所述ASR返回该ASR的地址或所述通信对端所在物理服务器上的虚拟交换机的地址后,相应地通知所述物理服务器中的虚拟机所述通信对端的IP地址对应的MAC地址为虚拟交换机归属的ASR的地址或所述通信对端所在物理服务器上的虚拟交换机的地址。
进一步地,所述虚拟交换机,还用于接收虚拟机向所述通信对端发送的报文,该报文的源MAC地址为该虚拟机的MAC地址,目的MAC地址为所述虚拟交换机归属的ASR的地址或所述通信对端所在物理服务器上的虚拟交换机的地址,该虚拟交换机在接收到所述报文后,将该报文的源MAC地址修改为该虚拟交换机的MAC地址,并根据目的MAC地址将该报文发送给该虚拟交换机归属的ASR或所述通信对端所在物理服务器上的虚拟交换机。
进一步地,所述虚拟交换机,还用于在接收到归属的ASR发送的报文时,根据报文的目的IP地址查询对应的MAC地址,将该报文的目的MAC地址修改为查询到的MAC地址,并进行发送。
进一步地,一种接入服务路由器(ASR),包括:注册模块,其中:
所述注册模块,用于记录虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系,并向地址解析服务器(ARS)注册该对应关系以及该ASR的地址。
进一步地,该ASR还包括地址查询模块,其中:
所述地址查询模块,用于在接收到所述虚拟交换机的查询请求后,向所述ARS查询虚拟机的通信对端的IP地址对应的MAC地址,并保存接收到的MAC地址和ASR的地址,在所接收到的ASR的地址非该地址查询模块所在ASR的地址时,向所述虚拟交换机返回该地址查询模块所在ASR的地址;在所接收到的ASR的地址为该地址查询模块所在ASR的地址时,向所述虚拟交换机返回接收到的MAC地址。
进一步地,该ASR还包括报文转发模块,其中:
所述报文转发模块,用于在接收到所述虚拟交换机发送的报文时,在本地查询所述通信对端的MAC地址和通信对端归属的ASR的地址,将所述报文的目的MAC地址修改为查询到通信对端的MAC地址,并将该报文封装到目的地址为所述通信对端归属的ASR的地址的隧道中通过运营商网络发送给所述通信对端归属的ASR。
进一步地,所述报文转发模块,还用于在接收到通过所述运营商网络发送的报文后,解除隧道,根据报文的目的MAC地址将报文发送给物理服务器上的虚拟交换机。
进一步地,一种扩展的二层网络,包括运营商网络和数据中心,在所述运营商网络中设置地址解析服务器(ARS),在所述数据中心中的物理服务器上设置虚拟交换机,其中:
所述虚拟交换机,用于在所述物理服务器中的虚拟机上电后,向所述ARS注册所述虚拟机的IP地址与自身MAC地址的对应关系;
所述ARS,用于记录所述虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系,供其他虚拟机查询;
所述物理服务器中的虚拟机,用于根据通信对端的IP地址从所述ARS查询该IP地址对应的MAC地址,通过该MAC地址与所述目的虚拟机进行报文交互。
进一步地,该二层网络还包括:在所述用户数据中心与运营商网络之间建立互通的接入服务路由器(ASR),其中:
所述虚拟交换机在所述虚拟交换机向ARS注册所述虚拟机的IP地址与自身MAC地址的对应关系时,接收到所述虚拟交换机的注册后,记录所述虚拟机的IP地址与虚拟交换机的MAC地址的对应关系,并向所述ARS注册该对应关系以及该ASR的地址。
进一步地,所述ASR,还用于在接收到所述虚拟交换机发送的报文时,在本地查询所述通信对端的MAC地址和通信对端归属的ASR的地址,将所述报文的目的MAC地址修改为查询到通信对端的MAC地址,并将该报文封装到目的地址为所述通信对端归属的ASR的地址的隧道中通过运营商网络发送给所述通信对端归属的ASR。
进一步地,所述ARS,还用于在记录所述虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系时,对应地记录所述归属ASR的地址。
进一步地,所述物理服务器中的虚拟机根据通信对端的IP地址从所述ARS查询该IP地址对应的MAC地址包括:
所述物理服务器中的虚拟机发送MAC地址解析广播请求,该物理服务器中的虚拟交换机将所述广播请求转换为单播的查询请求,采用该单播的查询请求从所述ARS查询所述通信对端的IP地址对应的MAC地址。
利用本发明,二层网络减少了地址解析协议的开销,避免了广播风暴的影响,因此可以极大地提高二层网络的可扩展性。
附图说明
图1是本实施方式的系统架构图;
图2是本实施方式二层网络中一个物理机内部的结构图;
图3是本实施方式的虚拟机MAC地址注册的流程图;
图4是本实施方式的两个虚拟机跨数据中心建立通信的流程图;
图5是本实施方式的两个虚拟机在同一个数据中心内建立通信的流程图;
图6为本实施方式的接入服务路由器的结构图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本实施方式对ARP/NDP协议进行改进,结合L2VPN技术,实现一个可扩展、可支持海量虚拟机的二层网络。
图1所示为本实施方式的网络架构,包含由多个数据中心以及负责互连的运营商网络,数据中心和运营商网络通过ASR(Access Service Router,接入服务路由器)连接,每个数据中心包含若干物理服务器和二层交换机,每个物理服务器上安装有虚拟机管理器(VMM),负责物理服务器上若干虚拟机的管理。
本实施方式中不修改数据中心中的二层交换机和虚拟机上现有的操作系统,在虚拟机管理器中增设虚拟交换机(vSwitch)、修改接入服务路由器(也称数据中心边界路由器),还引入ARS(Address Resolution Server,地址解析服务器,也称MAC地址解析数据库),负责接收二层地址的注册和查询。
虚拟交换机在虚拟机上电后,记录下该虚拟机的IP地址与MAC地址的对应关系,并向ARS请求注册对应关系,虚拟交换机将对应关系中的MAC地址修改为自身MAC地址,也就是说向ARS注册虚拟机的IP地址和虚拟交换机自身的MAC地址的对应关系,此时,一个VMM所管理的物理服务器中所有的虚拟机对外只呈现一个MAC地址,这大大减少了网络中二层交换设备中的MAC转发表体积。
ARS记录下注册的MAC地址、IP地址及虚拟机归属的ASR的IP地址,以备后续查询。
当VM需要和其它主机进行通信时,虚拟机现有操作系统仍然采用广播的ARP/NDP协议查询MAC地址,此广播请求被VMM中的虚拟交换机所截获,转化成到ARS的一个单播查询消息,该消息经过ASR,ASR可以对该消息进行格式转化并存储相关参数内容。ARS收到单播查询消息后返回目标虚拟机的IP地址所对应的MAC地址及归属的ASR的MAC地址。
由于在ARS中VM注册的MAC地址实际上是虚拟交换机的MAC地址,因此,查询方查询获得的也是虚拟交换机的地址,源虚拟机查询获得MAC地址后,将向目的虚拟机发送报文,该报文到达目的虚拟机所在的虚拟交换机,虚拟交换机查找本地数据库获得目的虚拟机的真实MAC地址,并将目的MAC地址修改为目标虚拟机的真实MAC地址,然后发送给虚拟机中的操作系统。
当源虚拟机和目的虚拟机不属于同一个数据中心时,ASR将查询响应中的目标虚拟机的MAC地址改为该ASR的MAC地址,并记下目的虚拟机的IP地址和注册的MAC地址的对应关系,这样源虚拟机获得查询响应后,发送的报文的目的MAC地址是本数据中心归属的ASR的MAC地址,确保归属的ASR可以截获报文,当ASR收到目的MAC地址为自身MAC地址的报文后,取出报文中的目的IP地址,查询本地数据库,获得目的IP对应的注册MAC地址及归属ASR的MAC地址,将原始报文的目的MAC地址改为目的虚拟机对应的注册MAC地址,并封装在一个外层地址为目的虚拟机归属ASR(目的ASR)的MAC地址的IP in IP隧道中,该隧道也可以是一个GRE(Generic Routing Encapsulation,通用路由封装)形式的封装;当目的ASR收到该报文时,解除外层封装报头,取出原始数据报文,发给目的MAC地址对应的虚拟交换机。
ARS可以位于运营商网络之中集中式部署或采用分布式技术进行构建;也可以部署在数据中心内部,多个数据中心的ARS服务器构成一个逻辑上一体化的分布式服务器系统。
为了维护MAC地址的有效性,虚拟交换机应替代虚拟机进行周期性地址注册刷新,ARS为每个地址维护一个老化定时器,当定时器周期内未收到刷新请求时,将释放该地址记录。
图1为本实施方式的系统架构图,系统中包括多个数据中心101,每个数据中心包括多个物理服务器102和多个二层交换机103;运营商网络104连接多个数据中心,其中包括核心路由器106以及处理二层地址注册、查询的ARS107;ASR105是连接数据中心和运营商网络的接入服务路由器。ASR和ARS之间运行单播地址映射协议(uMAP)。
图2是虚拟机池中一个物理服务器的内部架构,201是物理机器硬件;202是虚拟机管理器,负责本物理机器的虚拟机创建、撤销及调度;203是为了本实施方式所定义的虚拟交换机,负责代替虚拟机进行MAC地址的注册、将广播ARP请求转化为单播MAC查询等;204是VMM中的迁移管理器,本文不关注;205是由VMM管理的虚拟机;206是虚拟机中的操作系统;207是运行在虚拟机内操作系统之上的各种应用程序。
图3示出了本实施方式的MAC地址注册流程,包括:
步骤301:物理服务器中的虚拟机管理器控制虚拟机VM11上电;
步骤302:上电启动操作完成后,VM11发起获得IP地址配置的过程;
虚拟机VM11通过DHCP(动态主机设置协议)或其它方式获得IP地址。
步骤303:驻留在VMM中的vSwitch1通过查看IP地址自动配置报文获知VM11已经完成IP地址配置的过程,在本地记录下VM11的IP地址和MAC的对应关系,此处VM11的IP地址和MAC地址分别为IP11和MAC11,并向ARS发送MAC地址注册请求,注册IP11和vSwitch1自身MAC地址(MAC1)的对应关系,该请求经过归属ASR;
MAC地址注册请求的源IP地址和源MAC地址分别为IP11和MAC1。
VM11的MAC地址MAC11为VM11上电时VMM所分配。
步骤304:中间的二层交换机通过查看MAC地址注册请求的源MAC地址,学习到MAC1,并记入MAC-端口转发表中;
本步骤是二层交换机的标准行为。
步骤305:二层交换机转发MAC地址注册请求到ASR;
步骤306:ASR收到MAC地址注册请求后,在本地记录下<MAC1、IP11>的对应关系,为后续报文转发做准备;
步骤307:ASR向ARS发送地址映射注册请求,其中包括<MAC1、IP11>绑定关系以及ASR自身的IP地址;
步骤308:ARS记录该地址映射注册请求中所携带的MAC、IP地址及虚拟机归属的ASR的IP地址等,以备后续查询使用;
步骤309:ARS向ASR返回成功响应,该响应被转发给发起注册的vSwitch1。地址注册过程完成。
图4示出了一种跨数据中心的两个虚拟机之间建立通信的实施例,具体流程如下:
步骤401:位于数据中心2内的虚拟机VM21需要和位于数据中心1内的虚拟机VM11通信,本地ARP缓存中没有VM11的IP地址对应的MAC记录,VM21发出一个普通的ARP广播请求;
此处VM11、VM21均已经上电成功,并且由其所在vSwitch代为向ARS正确注册了IP地址和MAC对应关系。
步骤402:ARP广播请求被VM21所在物理机上的虚拟交换机vSWitch2截获,vSWitch2将其转换为一条单播的ARP查询请求通过二层交换机发给ASR2,该查询请求的查询标的为VM11的IP地址IP11;
步骤403:ASR2收到单播的ARP查询请求后,产生一条Map_Request(映射查询)请求发送给ARS,查询IP11对应的MAC地址;
本实施例中假定ASR到ARS的查询协议不同于vSwitch的单播的ARP查询请求,实际协议定义也可以复用。
步骤404:ARS查询本地数据库,获得IP11对应的MAC地址、归属ASR1的地址;
步骤405:ARS将查询获得的MAC地址、ASR1的地址和IP11通过Map_Reply消息返回给ASR2;
步骤406:ASR2收到Map_Reply消息后取出其中的IP、MAC和ASR1的地址,并在本地进行存储,同时构造一个ARP单播响应消息,其源MAC地址改为ASR2的MAC地址,目的MAC地址为vSWitch2的MAC地址;
步骤406:ASR2将ARP单播响应发送给vSwitch2;
步骤407:vSwitch2根据收到的ARP单播响应构造一个普通的ARP响应,通知VM21其所查询的IP11对应的MAC地址为ASR2的MAC地址;
步骤408:VM21根据查询获得的MAC地址,发送一个IP报文,源、目的IP地址、MAC地址分别为IP21、MAC21、IP11、MAC_ASR2;
步骤409:vSwitch2收到VM21的IP报文后,改写源MAC地址为本虚拟交换机的MAC地址MAC2,并且根据目的MAC地址为MAC_ASR2发送报文到ASR2;
步骤410:ASR2取出报文中的目的IP地址,查找本地数据库,获得IP11对应的已经注册的MAC地址MAC1以及归属的ASR1的地址IP_ASR1;
步骤411:ASR2根据上一步的数据得知目的IP地址位于另外一个数据中心内部,其将原始报文的目的MAC地址改为步骤406中获得的MAC1,并且将此报文封装在一个目的IP为ASR1的IP地址的隧道中发送给ASR1;
隧道可以是一个IP in IP的简单隧道,也可以是一个GRE隧道,或者是其它任何形式的隧道形式。
步骤412:ASR1收到报文后,解除外层隧道报文头部,恢复原始报文;
步骤413:ASR1根据报文的目的MAC地址将其发送给vSwitch1;
步骤414:vSwitch1查找本地数据库,获知报文中目的IP地址IP11对应的真实MAC地址为MAC11,其改写二层报文头部为MAC11,并且将报文发送给VM11中操作系统的协议栈。至此,IP通信建立完成。
图5示出了一种在同一数据中心内的两个虚拟机之间建立通信的实施例,具体流程如下:
步骤501:位于物理机2内的虚拟机VM21需要和位于物理机1内的虚拟机VM11通信,本地ARP缓存中没有VM11的IP地址对应的MAC记录,其发出一个普通的ARP广播请求;
此处VM11、VM21均已经上电成功,并且由其所在vSwitch代为向ARS正确注册了自身的IP地址、MAC对应关系。
步骤502:ARP广播请求被其所在物理机上的虚拟交换机vSwitch2所截获,vSwitch2将其转换为一条单播的ARP查询请求发给ASR1,该查询请求的查询标的为VM11的IP地址IP11;
步骤503:ASR1收到单播的ARP查询请求后,产生一条Map_Request请求发送给ARS,查询IP11对应的MAC地址;
本实施例中假定ASR到ARS的查询协议不同于vSwitch的ARP单播查询请求,实际协议定义也可以复用。
步骤504:ARS查询本地数据库,获得IP11对应的MAC地址和归属ASR1地址。
步骤505:ARS将查询获得的MAC地址、ASR1地址和IP11通过Map_Reply消息返回给ASR1;
步骤506:ASR1收到Map_Reply消息后取出其中的IP、MAC和ASR1地址,并在本地进行存储,同时构造一个ARP单播响应消息,ASR1注意到该目的虚拟机的归属ASR就是自己本身,因此ARP单播响应消息的IP、MAC地址均取自于Map_Reply消息,不做修改;
步骤507:vSwitch根据单播响应构造一个普通的ARP响应,通知VM21其所查询的IP11对应的MAC地址为MAC1;
步骤508:VM21根据上一步查询获得的MAC地址,发送一个IP报文,源、目的IP地址、MAC地址分别为IP21、MAC21、IP11和MAC1;
步骤509:vSwitch2收到VM21的IP报文后,改写源MAC地址为本虚拟交换机的地址MAC2,并且二层交换机根据目的MAC地址为MAC1发送报文到物理机1;
步骤510:物理机1上的vSwitch1收到此报文,查找本地数据库,获知报文中目的IP地址IP11对应的真实MAC地址为MAC11,其改写二层报文头部为MAC11,并且将报文发送给VM11中操作系统的协议栈。至此,IP通信建立完成。
图6为本实施方式的ASR的结构图,包括:注册模块、地址查询模块和报文转发模块,其中:
注册模块,用于记录虚拟交换机注册的虚拟机的IP地址与该虚拟交换机的MAC地址的对应关系,并向地址解析服务器(ARS)注册该对应关系以及该ASR的地址。
地址查询模块,用于在接收到虚拟交换机的查询请求后,向ARS查询虚拟机的通信对端的IP地址对应的MAC地址,并保存接收到的MAC地址和ASR的地址,在所接收到的ASR的地址非该地址查询模块所在ASR的地址时,向虚拟交换机返回该地址查询模块所在ASR的地址;在所接收到的ASR的地址为该地址查询模块所在ASR的地址时,向虚拟交换机返回接收到的MAC地址。
报文转发模块,用于在接收到虚拟交换机发送的报文时,在本地查询通信对端的MAC地址和通信对端归属的ASR的地址,将报文的目的MAC地址修改为查询到通信对端的MAC地址,并将该报文封装到目的地址为通信对端归属的ASR的地址的隧道中通过运营商网络发送给通信对端归属的ASR,并且在接收到通过运营商网络发送的报文后,解除隧道,根据报文的目的MAC地址将报文发送给物理服务器上的虚拟交换机。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有多种实施方式,在不背离本发明精神及其实质的情况,熟悉本领域的技术人员当可根据本发明做出各种相应的更改或变化,但凡在本发明的精神和原则之内所作的任何修改、等同替换、改进,均应包含在本发明的保护范围之内。