大规模组网中报文转发方法及装置与流程

文档序号:11253882阅读:680来源:国知局
大规模组网中报文转发方法及装置与流程

本发明实施例涉及通信技术领域,尤其涉及一种大规模组网中报文转发方法及装置。



背景技术:

现有技术中,随着服务器集群规模的增大,以及虚拟化颗粒度的变小,现有的一台服务器上可虚拟化出多台虚拟机或者容器。

假设节点1下面包括100个叶子节点,每个叶子节点下面可挂有48个服务器,每个服务器可虚拟化为100个虚拟机或容器,则节点1下面可有48*100*100=480k个虚拟机或者容器,由于每个虚拟机或容器在与其他网元或者设备通信时需要一个mac地址和一个ip地址,则节点1需存储有480k个mac地址和ip地址的对应关系。

若节点1是一个网关设备,则需要网关设备支持480k的地址解析协议(addressresolutionprotocol,简称arp)表项空间,但是现有技术中的网关设备的arp表项并没有这么大的空间,该网关设备实际连接的虚拟机或者容器的个数远比480k小,导致通过该网关设备可组建的网络规模较小。



技术实现要素:

本发明实施例提供一种大规模组网中报文转发方法及装置,以降低网关设备的arp表项的占用率,增大可组建的网络规模。

本发明实施例的一个方面是提供一种大规模组网中报文转发方法,包括:

叶子节点接收其下属的虚拟机或容器发送的第一报文,所述第一报文包括所述虚拟机或容器的mac地址,以及所述虚拟机或容器的ip地址;

所述叶子节点将所述第一报文中所述虚拟机或容器的mac地址替换为预设的mac地址,并将替换mac地址后的第一报文发送给根节点,所述叶子节点存储有所述虚拟机或容器的mac地址、所述虚拟机或容器的ip地址、以及预设的mac地址的对应关系;

所述叶子节点接收所述根节点发送的第二报文,所述第二报文包括所述预设的mac地址和所述虚拟机或容器的ip地址;

所述叶子节点根据所述虚拟机或容器的ip地址、以及所述对应关系,确定所述虚拟机或容器的mac地址;

所述叶子节点将所述第二报文中所述预设的mac地址替换为所述虚拟机或容器的mac地址,并将替换mac地址后的第二报文发送给所述虚拟机或容器。

本发明实施例的另一个方面是提供一种大规模组网中报文转发装置,包括:

接收模块,用于接收虚拟机或容器发送的第一报文,所述第一报文包括所述虚拟机或容器的mac地址,以及所述虚拟机或容器的ip地址;

替换模块,用于将所述第一报文中所述虚拟机或容器的mac地址替换为预设的mac地址;

发送模块,用于将替换mac地址后的第一报文发送给根节点,所述叶子节点存储有所述虚拟机或容器的mac地址、所述虚拟机或容器的ip地址、以及预设的mac地址的对应关系;

所述接收模块还用于接收所述根节点发送的第二报文,所述第二报文包括所述预设的mac地址和所述虚拟机或容器的ip地址;

确定模块,用于根据所述虚拟机或容器的ip地址、以及所述对应关系,确定所述虚拟机或容器的mac地址;

所述替换模块还用于将所述第二报文中所述预设的mac地址替换为所述虚拟机或容器的mac地址;

所述发送模块还用于将替换mac地址后的第二报文发送给所述虚拟机或容器。

本发明实施例提供的大规模组网中报文转发方法及装置,通过叶子节点下属的所有虚拟机或容器可以对应有一个预设的mac地址,也可以对应有几个预设的mac地址,但预设的mac地址的个数小于所有虚拟机或容器的mac地址的个数,以使叶子节点对外表现为一个mac地址或者是几个mac地址,而一个mac地址或者是几个mac地址可对应所有虚拟机或容器的mac地址。当根节点接收到叶子节点发送的第一报文后,将第一报文转发出去,且根节点接收到同一叶子节点发送的第一报文的源mac地址均呈现为固定的一个mac地址或几个mac地址,因此,根节点的arp表项中只需记录该固定的一个mac地址或几个mac地址与该叶子节点的对应关系即可,不需记录每个叶子节点下属的每个虚拟机或容器的mac地址和ip地址的对应关系,降低了网关设备的arp表项的占用率,增大了通过该网关设备可组建的网络规模。

附图说明

图1为本发明实施例提供的大规模组网中报文转发方法流程图;

图1a为本发明实施例提供的大规模组网中报文转发方法适用的网络结构图;

图1b为本发明实施例提供的第一报文的帧格式的示意图;

图2为本发明实施例提供的大规模组网中报文转发装置的结构图。

具体实施方式

图1为本发明实施例提供的大规模组网中报文转发方法流程图;图1a为本发明实施例提供的大规模组网中报文转发方法适用的网络结构图。本发明实施例针对现有技术中的网关设备的arp表项并没有这么大的空间,该网关设备实际连接的虚拟机或者容器的个数远比480k小,导致通过该网关设备可组建的网络规模较小,提供了适用于交换机通信的方法,该方法具体包括步骤如下:

步骤s101、叶子节点接收其下属的虚拟机或容器发送的第一报文,所述第一报文包括所述虚拟机或容器的mac地址,以及所述虚拟机或容器的ip地址。

如图1a所示,根节点下面包括若干个叶子节点,每个叶子节点下面可挂有若干个服务器,每个服务器可虚拟化为多个虚拟机或容器,根节点具体可以是网关设备,每个叶子节点上增加一个地址池,该地址池是对外通信的mac地址池,里面保存本leaf叶子节点所连接的vm虚拟机或容器的真实mac地址,ip地址的对应关系列表。如果这样每个leaf叶子节点下面的vm虚拟机或者容器在与外界通信的时候,都体现为一个固定的mac地址的时候,则不需要维持列表中加入一项表示该叶子节点的mac地址的列表,如果是leaf叶子节点下面的vm虚拟机或者容器在与外界通信的时候体现为少数的几个固定的mac地址的话,那么就将这几个mac地址,分别与被自己替换的vm虚拟机或容器的真实mac地址以及该vm虚拟机或容器的ip进行一一对应的记录。

本实施例中的每个叶子节点对外表现为一个mac地址或者是几个mac地址,可以根据通信的需要,例如某些功能或类型或者是属于某用户的vm虚拟机或容器,被统一被分为统一的一个mac,而另一类功能或类型或者用户的vm虚拟机或者容器被统一分为另一个mac地址。也可以根据叶子节点地址池寻址的计算效率来区分,如果是整体一个大的记录表里寻找的效率低,也可以分为不同的mac地址对应不同的mac地址和ip地址记录表,例如根据ip地址的地址段,或者是ip地址的哈希值等等之类,来划分各自所属的不同的mac地址。

在本实施例中,涉及到叶子节点转发报文进行通信的情况有3种:

第一种:叶子节点接收到其下属的虚拟机或容器发送的第一报文,叶子节点需要将该第一报文通过该根节点发送给其他设备,以便实现虚拟机或容器和其他设备之间的通信。

第二种:叶子节点接收到根节点发送的第二报文,叶子节点需要将该第二报文转发给其下属的虚拟机或容器,以便实现虚拟机或容器和其他设备之间的通信。

第三种:叶子节点接收到其他设备发送的arp请求,叶子节点针对该arp请求进行应答。

本实施例及下面实施例将逐一介绍该3种情况下,叶子节点对相应报文进行转发的方法。

在本实施例种,其他设备具体可以是除该叶子节点下属的虚拟机或容器之外的虚拟机或容器。

对于第一种情况,叶子节点接收其下属的虚拟机或容器发送的第一报文,图1b为本发明实施例提供的第一报文的帧格式的示意图。如图1b所示,第一报文包括目的mac地址、源mac地址、ip地址、报文内容等,其中,目的mac地址、源mac地址构成第一报文的以太头,ip地址构成第一报文的ip头。在本实施例中,虚拟机或容器发送给叶子节点的第一报文的源mac地址是虚拟机或容器的源mac地址,ip地址是虚拟机或容器的ip地址。

步骤s102、所述叶子节点将所述第一报文中所述虚拟机或容器的mac地址替换为预设的mac地址,并将替换mac地址后的第一报文发送给根节点,所述叶子节点存储有所述虚拟机或容器的mac地址、所述虚拟机或容器的ip地址、以及预设的mac地址的对应关系。

叶子节点接收到其下属的虚拟机或容器发送的第一报文后,将第一报文中的源mac地址即虚拟机或容器的mac地址替换为叶子节点本地地址池中的mac地址,地址池中的mac地址是预设的mac地址,该预设的mac地址具体可以是叶子节点自身的mac地址,也可以是预设的一个mac地址,还可以是预设的多个mac地址中的一个。另外,第一报文中的ip地址不变,始终是虚拟机或容器的ip地址,后续在通信过程中利用虚拟机或容器的ip地址去查询叶子节点的地址池里的列表来区分不同的虚拟机或容器,找到该虚拟机或者容器对应的真实mac地址。

假设预设的mac地址是maca1,叶子节点将第一报文中的源mac地址即虚拟机或容器的mac地址替换为maca1之后,将替换mac地址后的第一报文发送给根节点,叶子节点存储有所述虚拟机或容器的mac地址、所述虚拟机或容器的ip地址、以及预设的mac地址的对应关系,在本实施例中,叶子节点下属的所有虚拟机或容器可以对应有一个预设的mac地址,也可以对应有几个预设的mac地址,但预设的mac地址的个数小于所有虚拟机或容器的mac地址的个数,以使叶子节点对外表现为一个mac地址或者是几个mac地址,而一个mac地址或者是几个mac地址可对应所有虚拟机或容器的mac地址。当根节点接收到叶子节点发送的第一报文后,将第一报文转发出去,且根节点接收到同一叶子节点发送的第一报文的源mac地址均呈现为固定的一个mac地址或几个mac地址,因此,根节点的arp表项中只需记录该固定的一个mac地址或几个mac地址与该叶子节点的对应关系即可,不需记录每个叶子节点下属的每个虚拟机或容器的mac地址和ip地址的对应关系,降低了网关设备的arp表项的占用率,增大了通过该网关设备可组建的网络规模。

步骤s103、所述叶子节点接收所述根节点发送的第二报文,所述第二报文包括所述预设的mac地址和所述虚拟机或容器的ip地址。

对于第二种情况,叶子节点接收到根节点发送的第二报文,该第二报文是其他设备经过根节点和该叶子节点发送给虚拟机或容器的报文,根据步骤s102可知,根节点发送给其他设备的第一报文的源mac是预设的mac地址,则其他设备针对第一报文回复第二报文时,将第一报文的源mac即预设的mac地址作为目的mac地址,第二报文中的ip地址依然是第一报文中的ip地址即虚拟机或容器的ip地址。

步骤s104、所述叶子节点根据所述虚拟机或容器的ip地址、以及所述对应关系,确定所述虚拟机或容器的mac地址。

叶子节点接收到第二报文后,根据步骤s102所述的对应关系,确定虚拟机或容器的ip地址对应的虚拟机或容器的mac地址,在本实施例中,可选的,每个虚拟机或容器的ip地址是不同的,这样根据虚拟机或容器的ip地址便可唯一的确定虚拟机或容器的mac地址,即使叶子节点对外呈现的其下属的虚拟机或容器的mac地址是固定的一个mac地址和几个mac地址。

步骤s105、所述叶子节点将所述第二报文中所述预设的mac地址替换为所述虚拟机或容器的mac地址,并将替换mac地址后的第二报文发送给所述虚拟机或容器。

叶子节点根据第二报文中虚拟机或容器的ip地址,确定虚拟机或容器的mac地址后,将第二报文中的目的mac地址即预设的mac地址替换为所述虚拟机或容器的mac地址,并将替换mac地址后的第二报文发送给所述虚拟机或容器。

本发明实施例通过叶子节点下属的所有虚拟机或容器可以对应有一个预设的mac地址,也可以对应有几个预设的mac地址,但预设的mac地址的个数小于所有虚拟机或容器的mac地址的个数,以使叶子节点对外表现为一个mac地址或者是几个mac地址,而一个mac地址或者是几个mac地址可对应所有虚拟机或容器的mac地址。当根节点接收到叶子节点发送的第一报文后,将第一报文转发出去,且根节点接收到同一叶子节点发送的第一报文的源mac地址均呈现为固定的一个mac地址或几个mac地址,因此,根节点的arp表项中只需记录该固定的一个mac地址或几个mac地址与该叶子节点的对应关系即可,不需记录每个叶子节点下属的每个虚拟机或容器的mac地址和ip地址的对应关系,降低了网关设备的arp表项的占用率,增大了通过该网关设备可组建的网络规模。

在上述实施例的基础上,对于第三种情况,所述叶子节点根据所述预设的mac地址,对其接收到的arp请求进行应答,所述arp请求包括所述叶子节点下属的虚拟机或容器的ip地址。某个虚拟机或者容器为了让其他vm虚拟机或者容器知道自己对外的mac地址,虚拟机或者容器所属的叶子节点接收其他vm虚拟机或者容器发送的arp请求,该arp请求包括虚拟机或者容器的ip地址,叶子节点根据该虚拟机或者容器的ip地址查询内部的地址池,发现该ip地址是自己下面的某个虚拟机或者服务器的ip地址,则该叶子节点不将该arp请求转发出去,而是叶子节点直接将该arp请求用自己的地址池中的mac地址进行应答,并记录下该条替换对应的虚拟机或者容器的真实的mac地址,以及ip地址,和被替换成的mac地址。这样后续所有发送到该vm虚拟机或者容器的报文将首先发送到本叶子节点上,然后叶子节点再查询内部地址池后转发该报文到该虚拟机或者容器。

本实施例相比于根据根节点arp表项大小来部署它下面链接的叶子节点的数目的方式,某个根节点下部署的叶子节点设备的数目将不受到限制,或者某个根节点所链接的所有的叶子节点上可以运行的虚拟机或者容器的数目将不受到限制。而且并不需要对现网的网关设备进行替换,利用旧设备来实现大规模组网,并且虚拟化的颗粒度不受限制,节约了投资成本的同时,还提高了网络设备的利用率。

图2为本发明实施例提供的大规模组网中报文转发装置的结构图。本实施提供的大规模组网中报文转发装置可以是上述实施例中的叶子节点,也可以是叶子节点中的一个模块或装置,本发明实施例提供的大规模组网中报文转发装置可以执行大规模组网中报文转发方法实施例提供的处理流程,如图2所示,大规模组网中报文转发装置包括接收模块21、替换模块22、发送模块23、确定模块24。

接收模块21用于接收虚拟机或容器发送的第一报文,所述第一报文包括所述虚拟机或容器的mac地址,以及所述虚拟机或容器的ip地址;

替换模块22用于将所述第一报文中所述虚拟机或容器的mac地址替换为预设的mac地址;

发送模块23用于将替换mac地址后的第一报文发送给根节点,所述叶子节点存储有所述虚拟机或容器的mac地址、所述虚拟机或容器的ip地址、以及预设的mac地址的对应关系;

接收模块21还用于接收所述根节点发送的第二报文,所述第二报文包括所述预设的mac地址和所述虚拟机或容器的ip地址;

确定模块24用于根据所述虚拟机或容器的ip地址、以及所述对应关系,确定所述虚拟机或容器的mac地址;

替换模块22还用于将所述第二报文中所述预设的mac地址替换为所述虚拟机或容器的mac地址;

发送模块23还用于将替换mac地址后的第二报文发送给所述虚拟机或容器。

本发明实施例通过叶子节点下属的所有虚拟机或容器可以对应有一个预设的mac地址,也可以对应有几个预设的mac地址,但预设的mac地址的个数小于所有虚拟机或容器的mac地址的个数,以使叶子节点对外表现为一个mac地址或者是几个mac地址,而一个mac地址或者是几个mac地址可对应所有虚拟机或容器的mac地址。当根节点接收到叶子节点发送的第一报文后,将第一报文转发出去,且根节点接收到同一叶子节点发送的第一报文的源mac地址均呈现为固定的一个mac地址或几个mac地址,因此,根节点的arp表项中只需记录该固定的一个mac地址或几个mac地址与该叶子节点的对应关系即可,不需记录每个叶子节点下属的每个虚拟机或容器的mac地址和ip地址的对应关系,降低了网关设备的arp表项的占用率,增大了通过该网关设备可组建的网络规模。

在上述实施例的基础上,所述预设的mac地址是所述叶子节点的mac地址;或者,所述预设的mac地址是预设的多个mac地址中的一个;或者,所述预设的mac地址是预设的一个mac地址。

发送模块23还用于根据所述预设的mac地址,对其接收到的arp请求进行应答,所述arp请求包括所述叶子节点下属的虚拟机或容器的ip地址。

本发明实施例提供的大规模组网中报文转发装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例相比于根据根节点arp表项大小来部署它下面链接的叶子节点的数目的方式,某个根节点下部署的叶子节点设备的数目将不受到限制,或者某个根节点所链接的所有的叶子节点上可以运行的虚拟机或者容器的数目将不受到限制。而且并不需要对现网的网关设备进行替换,利用旧设备来实现大规模组网,并且虚拟化的颗粒度不受限制,节约了投资成本的同时,还提高了网络设备的利用率。

综上所述,本发明实施例通过叶子节点下属的所有虚拟机或容器可以对应有一个预设的mac地址,也可以对应有几个预设的mac地址,但预设的mac地址的个数小于所有虚拟机或容器的mac地址的个数,以使叶子节点对外表现为一个mac地址或者是几个mac地址,而一个mac地址或者是几个mac地址可对应所有虚拟机或容器的mac地址。当根节点接收到叶子节点发送的第一报文后,将第一报文转发出去,且根节点接收到同一叶子节点发送的第一报文的源mac地址均呈现为固定的一个mac地址或几个mac地址,因此,根节点的arp表项中只需记录该固定的一个mac地址或几个mac地址与该叶子节点的对应关系即可,不需记录每个叶子节点下属的每个虚拟机或容器的mac地址和ip地址的对应关系,降低了网关设备的arp表项的占用率,增大了通过该网关设备可组建的网络规模;相比于根据根节点arp表项大小来部署它下面链接的叶子节点的数目的方式,某个根节点下部署的叶子节点设备的数目将不受到限制,或者某个根节点所链接的所有的叶子节点上可以运行的虚拟机或者容器的数目将不受到限制。而且并不需要对现网的网关设备进行替换,利用旧设备来实现大规模组网,并且虚拟化的颗粒度不受限制,节约了投资成本的同时,还提高了网络设备的利用率。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1