CN110300060B - 用于软件定义网络的通信方法和装置 - Google Patents

用于软件定义网络的通信方法和装置 Download PDF

Info

Publication number
CN110300060B
CN110300060B CN201810247562.4A CN201810247562A CN110300060B CN 110300060 B CN110300060 B CN 110300060B CN 201810247562 A CN201810247562 A CN 201810247562A CN 110300060 B CN110300060 B CN 110300060B
Authority
CN
China
Prior art keywords
virtual machine
virtual
communication
flow table
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810247562.4A
Other languages
English (en)
Other versions
CN110300060A (zh
Inventor
刘俊辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810247562.4A priority Critical patent/CN110300060B/zh
Publication of CN110300060A publication Critical patent/CN110300060A/zh
Application granted granted Critical
Publication of CN110300060B publication Critical patent/CN110300060B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例公开了用于软件定义网络的通信方法和装置。上述方法的一具体实施方式包括:根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息;响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识;基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表;将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。该实施方式提高了子网间的通信效率。

Description

用于软件定义网络的通信方法和装置
技术领域
本申请实施例涉及计算机技术领域,具体涉及用于软件定义网络的通信方法和装置。
背景技术
现有网络中,对流量的控制和转发都依赖于网络设备实现,且设备中集成了与业务特性紧耦合的操作系统和专用硬件,这些操作系统和专用硬件都是各个厂家自己开发和设计的。
软件定义网络(Software Defined Network,SDN)是一种新型的网络架构,它的设计理念是将网络的控制平面与数据转发平面进行分离,从而通过集中的控制器中的软件平台去实现可编程化控制底层硬件,实现对网络资源灵活的按需调配。
发明内容
本申请实施例提出了用于软件定义网络的通信方法和装置。
第一方面,本申请实施例提供了一种用于软件定义网络的通信方法,软件定义网络包括虚拟网关和至少两个子网,子网包括至少一个虚拟机以及至少一个虚拟交换机,子网中的虚拟交换机连接至少一个虚拟机,位于不同子网的第一虚拟机与第二虚拟机之间的通信由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现,方法包括:根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息;响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识;基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表;将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。
在一些实施例中,根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息,包括:根据流表中计数器的内容,确定第一统计信息。
在一些实施例中,基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表,包括:根据流表中匹配域的内容,确定第一虚拟交换机的标识和第二虚拟交换机的标识;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识和第二虚拟交换机的标识,生成通信流表。
在一些实施例中,基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表,包括:根据流表中匹配域的内容,确定第一虚拟机与第二虚拟机之间的通信所使用的通信协议和端口号;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识、第二虚拟交换机的标识、通信协议和端口号,生成通信流表。
在一些实施例中,方法还包括:根据通信流表,确定自下发通信流表后第一虚拟机与第二虚拟机之间的通信的第二统计信息;响应于检测到第二统计信息不满足预设条件,删除通信流表。
在一些实施例中,方法还包括:接收更新的路由表和/或更新的访问控制列表;根据更新的路由表和/或更新的访问控制列表,更新通信流表。
第二方面,本申请实施例提供了一种用于软件定义网络的通信装置,软件定义网络包括虚拟网关和至少两个子网,子网包括至少一个虚拟机以及至少一个虚拟交换机,子网中的虚拟交换机连接至少一个虚拟机,位于不同子网的第一虚拟机与第二虚拟机之间的通信由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现,装置包括:第一统计单元,用于根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息;标识确定单元,用于响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识;流表生成单元,用于基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表;流表下发单元,用于将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。
在一些实施例中,第一统计单元进一步用于:根据流表中计数器的内容,确定第一统计信息。
在一些实施例中,流表生成单元进一步用于:根据流表中匹配域的内容,确定第一虚拟交换机的标识和第二虚拟交换机的标识;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识和第二虚拟交换机的标识,生成通信流表。
在一些实施例中,流表生成单元进一步用于:根据流表中匹配域的内容,确定第一虚拟机与第二虚拟机之间的通信所使用的通信协议和端口号;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识、第二虚拟交换机的标识、通信协议和端口号,生成通信流表。
在一些实施例中,装置还包括:第二统计单元,用于根据通信流表,确定自下发通信流表后第一虚拟机与第二虚拟机之间的通信的第二统计信息;流表删除单元,用于响应于检测到第二统计信息不满足预设条件,删除通信流表。
在一些实施例中,装置还包括:接收单元,用于接收更新的路由表和/或更新的访问控制列表;流表更新单元,用于根据更新的路由表和/或更新的访问控制列表,更新通信流表。
第三方面,本申请实施例提供了一种设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得上述一个或多个处理器实现如第一方面任一实施例所描述的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面任一实施例所描述的方法。
本申请的上述实施例提供的用于软件定义网络的通信方法和装置,可以根据下发给虚拟交换机和虚拟网关的流表,得到任意位于不同子网的两个虚拟机之间通信的统计信息;在确定上述统计信息满足预设条件后,确定上述两个虚拟机的标识,然后基于得到的两个虚拟机的标识,生成通信流表,将生成的通信流表发送给上述两个虚拟机所连接的两个虚拟交换机,使得上述两个虚拟机之间的通信只通过其所连接的虚拟交换机实现,而无需经由网关转发,提高了通信的效率,减小了两个位于不同子网的虚拟机之间通信的延迟。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的用于软件定义网络的通信方法的一个实施例的流程图;
图3是根据本申请的用于软件定义网络的通信方法的一个应用场景的示意图;
图4是根据本申请的用于软件定义网络的通信装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于软件定义网络的通信方法或用于软件定义网络的通信装置的实施例的示例性系统架构100。可以理解的是,图1中所示的各个器件都是示意性的,并不对本申请的实施例做限定。本申请的软件定义网络可以运行于电子设备中。
如图1所示,系统架构100可以包括子网101、102、虚拟网关103和控制器104。子网101、102内可以包括至少一个虚拟机和至少一个交换机,每个虚拟交换机连接至少一个虚拟机。系统架构100中,子网101包括虚拟机1011、1012、1013和虚拟交换机1014;子网102包括虚拟机1021、1022、1023和虚拟交换机1024。控制器104可以向虚拟交换机1014、虚拟网关103以及虚拟交换机1024下发流表,以实现对虚拟交换机1014、虚拟网关103以及虚拟交换机1024的控制。
子网101中的虚拟机和子网102中的虚拟机通信时需经虚拟交换机1014、虚拟网关103以及虚拟交换机1024实现。例如,虚拟机1011需要向虚拟机1022发送数据包时,需要先将数据包发送给虚拟交换机1014。虚拟交换机1014在接收到上述数据包后,根据接收到的流表,将数据包转发至虚拟网关103。同样,虚拟网关103在接收到上述数据包后也根据流表将数据包转发至虚拟交换机1024。虚拟交换机1024再将数据包转发至虚拟机1022。经过数据包的上述三次转发,实现了虚拟机1011与虚拟机1022之间的通信。
需要说明的是,本申请实施例所提供的用于软件定义网络的通信方法一般由控制器104执行,相应地,用于软件定义网络的通信装置一般设置于控制器104中。
需要说明的是,控制器104可以由软件实现,也可以由硬件实现。当控制器104为硬件时,可以实现成包括用于控制虚拟机和虚拟网关的处理器的电子设备。当控制器104为软件时,可以实现成软件或软件模块。
应该理解,图1中的虚拟机、虚拟交换机和虚拟网关的数目仅仅是示意性的。根据实现需要,可以具有任意数目的虚拟机、虚拟交换机和虚拟网关。
继续参考图2,示出了根据本申请的用于软件定义网络的通信方法的一个实施例的流程200。本实施例中,软件定义网络中包括第一虚拟机和第二虚拟机,且第一虚拟机和第二虚拟机位于不同的子网,二者之间的通信需由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现。本实施例的用于软件定义网络的通信方法,包括以下步骤:
步骤201,根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息。
在本实施例中,用于软件定义网络的通信方法运行于其上的电子设备(例如图1所示的控制器104)可以预先下发流表给各虚拟交换机以及各虚拟网关。在传统网络设备中,交换机和网关的数据转发需要物理层的MAC地址(Media Access Control或者MediumAccess Control,媒体访问控制地址)转发表或者网络层的IP(Internet Protocol,网络之间互联的协议)地址路由表。在软件定义网络中,虚拟交换机和虚拟网关的数据转发需要流表。虚拟交换机或虚拟网关中可以存储多个流表,每个流表可以包括多个流表项,每个流表项可以整合了软件定义网络中各个层次的网络配置信息,从而使得虚拟交换机和虚拟网关在进行数据转发时可以利用更丰富的转发规则。
本实施例中,控制器会预先将流表发送给第一虚拟交换机、第二虚拟交换机和虚拟网关,以使得第一虚拟交换机、第二虚拟交换机和虚拟网关根据流表对数据包进行转发或丢弃。同样,控制器可以根据上述流表,确定第一虚拟机和第二虚拟机之间通信的第一统计信息。上述第一统计信息可以包括通信次数或通信频率、发送的字节数、平均带宽等。可以理解的是,上述第一统计信息可以是预设时间段内第一虚拟机和第二虚拟机通信的统计信息,例如过去24小时之内第一虚拟机和第二虚拟机通信的统计信息。
流表的流表项可以包括匹配域(或包头域)、计数器以及动作。其中,匹配域用于数据包匹配,计数器用于统计匹配数据包的信息(匹配的数据包个数、大小等等),动作用于展示匹配的数据包如何处理的动作(转发或丢弃)。
流表的匹配域可以包括数据包的入端口、源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP(Transmission Control Protocol,传输控制协议)/UDP(User DataProtocol,用户数据报协议)源端口、TCP/UDP目的端口等。
流表的计数器可以针对虚拟交换机或虚拟网关中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。例如:针对每张流表,统计当前活动的表项数、数据包查询次数、数据包匹配次数等;针对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等;针对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计;针对每个转发队列,统计发送的数据包数和字节数,还有发送时的溢出(Overrun)错误次数等。
在本实施例的一些可选的实现方式中,控制器可以根据流表中计数器的内容,确定上述第一统计信息。
步骤202,响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识。
用户可以预先设置各种条件,并将这些预设条件发送给控制器。则控制器可以判断步骤201中得到的第一统计信息是否满足这些预设条件。上述预先设置的条件例如可以包括通信次数大于5次、发送的字节数大于1兆等等。
控制器在检测到第一统计信息满足预设条件后,可以根据流表确定第一虚拟机的标识和第二虚拟机的标识。上述标识可以是任意可以代表第一虚拟机和第二虚拟机的信息,例如可以是IP地址、MAC地址、所使用的端口号等等。
在本实施例的一些可选的实现方式中,控制器可以根据流表中匹配域的内容,确定第一虚拟机的标识以及第二虚拟机的标识。
步骤203,基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表。
在得到第一虚拟机的标识和第二虚拟机的标识后,可以基于得到的两个标识,生成通信流表。可以理解的是,该通信流表与之前的流表的结构相同,不同之处在于其定义了新的转发规则。
步骤204,将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。
控制器在生成通信流表后,将通信流表分别下发给第一虚拟交换机和第二虚拟交换机。这样,第一虚拟交换机和第二虚拟交换机在接收到上述通信流表后,可以根据新的转发规则来转发数据包。也就是说,第一虚拟交换机在接收到第一虚拟机发送的、需要发往第二虚拟机的数据包时,可以直接将数据包转发给第二虚拟交换机,第二虚拟交换机再将数据包转发给第二虚拟机。这样,实现位于不同子网的虚拟机之间的通信由原本的数据包转发三次变成转发两次。
继续参见图3,图3是根据本实施例的用于软件定义网络的通信方法的应用场景的一个示意图。在图3的应用场景中,虚拟机301向虚拟机305发送的数据包,在建立通信流表前,需经虚拟交换机302、虚拟网关303以及虚拟交换机304的转发;在建立通信流表后,只需经虚拟交换机302以及虚拟交换机304的转发。
本申请的上述实施例提供的用于软件定义网络的通信方法,在确定位于不同子网的两个虚拟机之间通信的统计信息满足预设条件后,基于该两个虚拟机的标识建立通信流表,并将建立的通信流表发给两个虚拟机所连接的虚拟交换机,从而使得上述两个虚拟机之间的通信不再需要虚拟网关的转发,提高了数据包的转发效率。
在本实施例的一些可选的实现方式中,控制器可以根据以下步骤来建立通信流表:根据流表中匹配域的内容,确定第一虚拟交换机的标识和第二虚拟交换机的标识;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识和第二虚拟交换机的标识,生成通信流表。
本实现方式中,可以根据流表的匹配域的内容,确定第一虚拟交换机的标识和第二虚拟交换机的标识,然后基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识和第二虚拟交换机的标识,生成通信流表。
这样,第一虚拟交换机和第二虚拟交换机在接收到上述通信流表后,按照通信流表中的规则进行转发。当第一虚拟机所在子网中的其它虚拟机向第二虚拟机所在子网中的任意虚拟机发送数据包时,第一虚拟交换机可以直接将数据包发送给第二虚拟交换机。同样的,第二虚拟交换机也可以直接将数据包发送给第一虚拟交换机。也就是说,第一虚拟机所在子网中的虚拟机与第二虚拟机所在子网中的虚拟机之间的通信,不需经由虚拟网关,这样提高了子网间的通信效率。
在本实施例的一些可选的实现方式中,控制器还可以通过以下步骤来生成通信流表:根据流表中匹配域的内容,确定第一虚拟机与第二虚拟机之间的通信所使用的通信协议和端口号;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识、第二虚拟交换机的标识、通信协议和端口号,生成通信流表。
本实现方式中,控制器可以根据流表中匹配域的内容,确定第一虚拟机与第二虚拟机通信所使用的通信协议(TCP或UDP)以及端口号。然后根据第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识、第二虚拟交换机的标识、通信协议和端口号,生成通信流表。一般来说,TCP/UDP端口号的用途是固定的,如TCP21端口用于FTP文件传输服务、UDP53端口用于DNS域名解析服务。这样,第一虚拟交换机或第二虚拟交换机在接收到上述通信流表后,可以针对第一虚拟机和第二虚拟机之间发送的某一类型的数据包实施快速转发。即每当检测到第一虚拟机和第二虚拟机之间的通信使用上述端口号时,就将数据包直接发送给第二虚拟交换机或第一虚拟交换机。
在本实施例的一些可选的实现方式中,上述方法还可以包括图2中未示出的以下步骤:根据通信流表,确定自下发通信流表后第一虚拟机与第二虚拟机之间的通信的第二统计信息;响应于检测到第二统计信息不满足预设条件,删除通信流表。
本实现方式中,在建立通信流表后,控制器可以确定第一虚拟机和第二虚拟机之间通信的第二统计信息。然后检测该第二统计信息是否满足预设条件,在确定第二统计信息不满足预设条件时,将通信流表删除。可以理解的是,第二统计信息所包括的内容可以与第一统计信息所包括的内容相同,也可以不同。同样的,此处的预设条件可以与步骤203中所使用的预设条件相同,也可以与步骤203中所使用的预设条件不相同。
在本实施例的一些可选的实现方式中,上述方法还可以包括图2中未示出的以下步骤:接收更新的路由表和/或更新的访问控制列表;根据更新的路由表和/或更新的访问控制列表,更新通信流表。
本实现方式中,考虑到用户可能会更改软件定义网络的设置,即更新路由表和/或更新访问控制列表,可能会导致对数据包的动作变化。此时,控制器可以根据更新的路由表和/或更新的访问控制列表,来更新通信流表。此处的更新可以包括删除通信流表、改变通信流表中匹配域的内容。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于软件定义网络的通信装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
本实施例的软件定义网络包括第一虚拟机和第二虚拟机,且第一虚拟机和第二虚拟机位于不同的子网,二者之间的通信需由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现。
如图4所示,本实施例的用于软件定义网络的通信装置400包括第一统计单元401、标识确定单元402、流表生成单元403以及流表下发单元404。
其中,第一统计单元401,用于根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息。
标识确定单元402,用于响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识。
流表生成单元403,用于基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表。
流表下发单元404,用于将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。
在本实施例的一些可选的实现方式中,上述第一统计单元401可以进一步用于:根据流表中计数器的内容,确定第一统计信息。
在本实施例的一些可选的实现方式中,上述流表生成单元403可以进一步用于:根据流表中匹配域的内容,确定第一虚拟交换机的标识和第二虚拟交换机的标识;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识和第二虚拟交换机的标识,生成通信流表。
在本实施例的一些可选的实现方式中,上述流表生成单元403可以进一步用于:根据流表中匹配域的内容,确定第一虚拟机与第二虚拟机之间的通信所使用的通信协议和端口号;基于第一虚拟机的标识、第二虚拟机的标识、第一虚拟交换机的标识、第二虚拟交换机的标识、通信协议和端口号,生成通信流表。
在本实施例的一些可选的实现方式中,上述装置400还可以进一步包括图4中未示出的第二统计单元和流表删除单元。
第二统计单元,用于根据通信流表,确定自下发通信流表后第一虚拟机与第二虚拟机之间的通信的第二统计信息。
流表删除单元,用于响应于检测到第二统计信息不满足预设条件,删除通信流表。
在本实施例的一些可选的实现方式中,上述装置400还可以进一步包括图4中未示出的接收单元和流表更新单元。
接收单元,用于接收更新的路由表和/或更新的访问控制列表。
流表更新单元,用于根据更新的路由表和/或更新的访问控制列表,更新通信流表。
本申请的上述实施例提供的用于软件定义网络的通信装置,可以在确定位于不同子网的两个虚拟机之间通信的统计信息满足预设条件后,基于该两个虚拟机的标识建立通信流表,并将建立的通信流表发给两个虚拟机所连接的虚拟交换机,从而使得上述两个虚拟机之间的通信不再需要虚拟网关的转发,提高了数据包的转发效率。
应当理解,用于软件定义网络的通信装置400中记载的单元401至单元405分别与参考图2中描述的方法中的各个步骤相对应。由此,上文针对用于软件定义网络的通信方法描述的操作和特征同样适用于装置400及其中包含的单元,在此不再赘述。装置400的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
下面参考图5,其示出了适于用来实现本申请实施例的设备的计算机系统500的结构示意图。图5示出的设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所描述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一统计单元、标识确定单元、流表生成单元和流表下发单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一统计单元还可以被描述为“根据预先下发给所述第一虚拟交换机、所述第二虚拟交换机和所述虚拟网关的流表,确定所述第一虚拟机与所述第二虚拟机之间通信的第一统计信息的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:根据预先下发给第一虚拟交换机、第二虚拟交换机和虚拟网关的流表,确定第一虚拟机与第二虚拟机之间通信的第一统计信息;响应于检测到第一统计信息满足预设条件,确定第一虚拟机的标识和第二虚拟机的标识;基于第一虚拟机的标识和第二虚拟机的标识,生成通信流表;将通信流表分别下发给第一虚拟交换机和第二虚拟交换机,以使得第一虚拟机与第二虚拟机之间的通信由第一虚拟交换机与第二虚拟交换机实现。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种用于软件定义网络的通信方法,所述软件定义网络包括虚拟网关和至少两个子网,子网包括至少一个虚拟机以及至少一个虚拟交换机,子网中的虚拟交换机连接至少一个虚拟机,位于不同子网的第一虚拟机与第二虚拟机之间的通信由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现,所述方法包括:
根据预先下发给所述第一虚拟交换机、所述第二虚拟交换机和所述虚拟网关的流表,确定所述第一虚拟机与所述第二虚拟机之间通信的第一统计信息;
响应于检测到所述第一统计信息满足预设条件,确定所述第一虚拟机的标识和所述第二虚拟机的标识;
基于所述第一虚拟机的标识和所述第二虚拟机的标识,生成通信流表;
将所述通信流表分别下发给所述第一虚拟交换机和所述第二虚拟交换机,以使得所述第一虚拟机与所述第一虚拟机之间的通信由所述第一虚拟交换机与所述第二虚拟交换机实现;
所述基于所述第一虚拟机的标识和所述第二虚拟机的标识,生成通信流表,包括:
根据流表中匹配域的内容,确定所述第一虚拟交换机的标识和所述第二虚拟交换机的标识;
基于所述第一虚拟机的标识、所述第二虚拟机的标识、所述第一虚拟交换机的标识和所述第二虚拟交换机的标识,生成通信流表。
2.根据权利要求1所述的方法,其中,所述根据预先下发给所述第一虚拟交换机、所述第二虚拟交换机和所述虚拟网关的流表,确定所述第一虚拟机与所述第二虚拟机之间通信的第一统计信息,包括:
根据流表中计数器的内容,确定所述第一统计信息。
3.根据权利要求1所述的方法,其中,所述基于所述第一虚拟机的标识和所述第二虚拟机的标识,生成通信流表,包括:
根据所述流表中匹配域的内容,确定所述第一虚拟机与所述第二虚拟机之间的通信所使用的通信协议和端口号;
基于所述第一虚拟机的标识、所述第二虚拟机的标识、所述第一虚拟交换机的标识、所述第二虚拟交换机的标识、所述通信协议和所述端口号,生成通信流表。
4.根据权利要求1-3任一项所述的方法,其中,所述方法还包括:
根据所述通信流表,确定自下发所述通信流表后所述第一虚拟机与所述第二虚拟机之间的通信的第二统计信息;
响应于检测到所述第二统计信息不满足预设条件,删除所述通信流表。
5.根据权利要求1-3任一项所述的方法,其中,所述方法还包括:
接收更新的路由表和/或更新的访问控制列表;
根据所述更新的路由表和/或所述更新的访问控制列表,更新所述通信流表。
6.一种用于软件定义网络的通信装置,所述软件定义网络包括虚拟网关和至少两个子网,子网包括至少一个虚拟机以及至少一个虚拟交换机,子网中的虚拟交换机连接至少一个虚拟机,位于不同子网的第一虚拟机与第二虚拟机之间的通信由虚拟网关、第一虚拟机所连接的第一虚拟交换机以及第二虚拟机所连接的第二虚拟交换机实现,所述装置包括:
第一统计单元,用于根据预先下发给所述第一虚拟交换机、所述第二虚拟交换机和所述虚拟网关的流表,确定所述第一虚拟机与所述第二虚拟机之间通信的第一统计信息;
标识确定单元,用于响应于检测到所述第一统计信息满足预设条件,确定所述第一虚拟机的标识和所述第二虚拟机的标识;
流表生成单元,用于基于所述第一虚拟机的标识和所述第二虚拟机的标识,生成通信流表;
流表下发单元,用于将所述通信流表分别下发给所述第一虚拟交换机和所述第二虚拟交换机,以使得所述第一虚拟机与所述第一虚拟机之间的通信由所述第一虚拟交换机与所述第二虚拟交换机实现;
所述流表生成单元进一步用于:
根据流表中匹配域的内容,确定所述第一虚拟交换机的标识和所述第二虚拟交换机的标识;
基于所述第一虚拟机的标识、所述第二虚拟机的标识、所述第一虚拟交换机的标识和所述第二虚拟交换机的标识,生成通信流表。
7.根据权利要求6所述的装置,其中,所述第一统计单元进一步用于:
根据流表中计数器的内容,确定所述第一统计信息。
8.根据权利要求6所述的装置,其中,所述流表生成单元进一步用于:
根据所述流表中匹配域的内容,确定所述第一虚拟机与所述第二虚拟机之间的通信所使用的通信协议和端口号;
基于所述第一虚拟机的标识、所述第二虚拟机的标识、所述第一虚拟交换机的标识、所述第二虚拟交换机的标识、所述通信协议和所述端口号,生成通信流表。
9.根据权利要求6-8任一项所述的装置,其中,所述装置还包括:
第二统计单元,用于根据所述通信流表,确定自下发所述通信流表后所述第一虚拟机与所述第二虚拟机之间的通信的第二统计信息;
流表删除单元,用于响应于检测到所述第二统计信息不满足预设条件,删除所述通信流表。
10.根据权利要求6-8任一项所述的装置,其中,所述装置还包括:
接收单元,用于接收更新的路由表和/或更新的访问控制列表;
流表更新单元,用于根据所述更新的路由表和/或所述更新的访问控制列表,更新所述通信流表。
11.一种设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201810247562.4A 2018-03-23 2018-03-23 用于软件定义网络的通信方法和装置 Active CN110300060B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810247562.4A CN110300060B (zh) 2018-03-23 2018-03-23 用于软件定义网络的通信方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810247562.4A CN110300060B (zh) 2018-03-23 2018-03-23 用于软件定义网络的通信方法和装置

Publications (2)

Publication Number Publication Date
CN110300060A CN110300060A (zh) 2019-10-01
CN110300060B true CN110300060B (zh) 2022-06-07

Family

ID=68026050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810247562.4A Active CN110300060B (zh) 2018-03-23 2018-03-23 用于软件定义网络的通信方法和装置

Country Status (1)

Country Link
CN (1) CN110300060B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111131037B (zh) * 2019-12-27 2022-04-29 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012098786A1 (ja) * 2011-01-17 2012-07-26 日本電気株式会社 ネットワークシステム、コントローラ、スイッチ、及びトラフィック監視方法
WO2017152396A1 (zh) * 2016-03-09 2017-09-14 华为技术有限公司 流表处理方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710762B2 (en) * 2012-06-06 2017-07-18 Juniper Networks, Inc. Dynamic logging
US9325630B2 (en) * 2013-07-05 2016-04-26 Red Hat, Inc. Wild card flows for switches and virtual switches based on hints from hypervisors
WO2015100656A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 一种实现虚拟机通信的方法和装置
US9917769B2 (en) * 2014-11-17 2018-03-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for virtualizing flow tables in a software-defined networking (SDN) system
CN106031104B (zh) * 2015-01-21 2019-07-12 华为技术有限公司 数据报文的转发方法、装置及设备
CN107276783B (zh) * 2016-04-08 2022-05-20 中兴通讯股份有限公司 一种实现虚拟机统一管理及互通的方法、装置和系统
CN106789667B (zh) * 2016-11-21 2021-01-01 华为技术有限公司 一种数据转发方法、相关设备及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012098786A1 (ja) * 2011-01-17 2012-07-26 日本電気株式会社 ネットワークシステム、コントローラ、スイッチ、及びトラフィック監視方法
WO2017152396A1 (zh) * 2016-03-09 2017-09-14 华为技术有限公司 流表处理方法及装置

Also Published As

Publication number Publication date
CN110300060A (zh) 2019-10-01

Similar Documents

Publication Publication Date Title
US20160301603A1 (en) Integrated routing method based on software-defined network and system thereof
KR101803332B1 (ko) 사물 인터넷 네트워크 시스템
CN112491707B (zh) 一种转发路径的确定方法及装置
US20130297790A1 (en) Network system, control unit and optimal route controlling method
CN112039796B (zh) 数据包传输方法和装置、存储介质和电子设备
US20140365634A1 (en) Programmable Network Analytics Processing via an Inspect/Apply-Action Applied to Physical and Virtual Entities
CN111803925B (zh) 云游戏的转发服务器的调度方法、装置及可读存储介质
US10965605B2 (en) Communication system, communication control method, and communication apparatus
CN112788060A (zh) 数据包传输方法和装置、存储介质和电子设备
US20150229574A1 (en) Communication system, communication method, information processing apparatus, communication control method, and program
US20130275620A1 (en) Communication system, control apparatus, communication method, and program
CN110545230B (zh) 用于转发vxlan报文的方法和装置
EP1156629A1 (en) Network system and communication node
CN113422699B (zh) 数据流处理方法、装置、计算机可读存储介质及电子设备
KR20160116622A (ko) 서비스 체이닝이 가능한 오픈플로우 스위치
CN110300060B (zh) 用于软件定义网络的通信方法和装置
KR20180058592A (ko) Sdn 제어기
CN112436951A (zh) 一种预知流量路径的方法和装置
KR101729945B1 (ko) Sdn 기반의 네트워크 시스템의 멀티 테넌트 지원 방법
CN113904871B (zh) 网络切片的接入方法、pcf实体、终端和通信系统
KR101729939B1 (ko) Sdn 기반의 멀티 테넌트 지원 네트워크 시스템
KR20180058593A (ko) Sdn 화이트박스 스위치
CN114363183A (zh) 一种业务链地址池切片处理方法、装置及系统
CN113452471A (zh) 用于数据处理的方法、电子设备以及计算机程序产品
KR101739097B1 (ko) 오픈플로우 스위치의 서비스 체이닝 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant