CN113206807B - 用于信息处理的方法、电子设备和计算机存储介质 - Google Patents

用于信息处理的方法、电子设备和计算机存储介质 Download PDF

Info

Publication number
CN113206807B
CN113206807B CN202010077768.4A CN202010077768A CN113206807B CN 113206807 B CN113206807 B CN 113206807B CN 202010077768 A CN202010077768 A CN 202010077768A CN 113206807 B CN113206807 B CN 113206807B
Authority
CN
China
Prior art keywords
port
forwarding
determining
indicator
packet
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
CN202010077768.4A
Other languages
English (en)
Other versions
CN113206807A (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.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN202010077768.4A priority Critical patent/CN113206807B/zh
Priority to US16/827,082 priority patent/US11296974B2/en
Publication of CN113206807A publication Critical patent/CN113206807A/zh
Application granted granted Critical
Publication of CN113206807B publication Critical patent/CN113206807B/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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • 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
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/564Connection-oriented
    • H04L2012/5641Unicast/point-to-point

Landscapes

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

Abstract

根据本公开的示例实施例,提供了一种用于信息处理的方法、电子设备和计算机可读存储介质。该方法包括如果确定在所接收的分组的报头中检测到预定指示符,则从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息,基于源端口、目的地端口和转发指示符,更新端口转发表,对分组执行用户定义的动作,以得到结果分组,以及如果确定进程标识符的数量达到进程最大数目,基于进程最大数目、转发指示符和经更新的端口转发表,确定用于结果分组的转发端口,以用于向转发端口转发结果分组。由此,能够对分组执行用户定义的动作,以及支持来自多个进程的分组的转发,从而实现对分组的灵活操作和转发。

Description

用于信息处理的方法、电子设备和计算机存储介质
技术领域
本公开的实施例总体涉及信息处理领域,具体涉及用于信息处理的方法、电子设备和计算机存储介质。
背景技术
随着软件定义网络的发展,对于网络可编程性和自动化存在越来越多的期待。可编程交换机被定义成解决该问题。传统交换机仅支持转发分组的基本规则,无法提供更灵活的方案,用于适配以满足网络需求。目前的交换机模拟器主要基于传统交换机的架构,因而也仅支持转发分组的基本规则,缺乏灵活性。
发明内容
本公开的实施例提供了用于信息处理的方法、电子设备和计算机存储介质,能够实现对分组的灵活操作和转发。
在本公开的第一方面,提供了一种用于信息处理的方法。该方法包括:如果确定在所接收的分组的报头中检测到预定指示符,则从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息,基于源端口、目的地端口和转发指示符,更新端口转发表,对分组执行用户定义的动作,以得到结果分组,以及如果确定进程标识符的数量达到进程最大数目,基于进程最大数目、转发指示符和经更新的端口转发表,确定用于结果分组的转发端口,以用于向转发端口转发结果分组。
在本公开的第二方面,提供了一种电子设备。该设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得设备执行动作,该动作包括:如果确定在所接收的分组的报头中检测到预定指示符,则从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息,基于源端口、目的地端口和转发指示符,更新端口转发表,对分组执行用户定义的动作,以得到结果分组,以及如果确定进程标识符的数量达到进程最大数目,基于进程最大数目、转发指示符和经更新的端口转发表,确定用于结果分组的转发端口,以用于向转发端口转发结果分组。
在本公开的第三方面,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时使机器实现根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了根据本公开的实施例的信息处理环境100的示例的示意图;
图2示出了根据本公开的实施例的可编程交换机模拟器200的示意框图;
图3示出了根据本公开的实施例的用于信息处理的方法300的示意流程图;
图4示出了根据本公开的实施例的用于更新端口转发表的方法400的流程图;
图5示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法500的流程图;
图6示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法600的流程图;
图7示出了根据本公开的实施例的多播的示意图;
图8示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法800的流程图;
图9示出了根据本公开的实施例的广播的示意图;
图10示出了根据本公开的实施例的分组结构1000的示意图;以及
图11示出了可以用来实施本公开内容的实施例的示例设备1100的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,随着软件定义网络(SDN)的发展,可编程交换机开始出现。对于开发者而言,不总是有机会得到硬件可编程交换机来部署他们的应用,这是因为,硬件是新的并且价格较贵。目前尚未见到用于可编程交换机的模拟器,大部分交换机模拟器都是基于传统交换机的架构而定义的。这些传统交换机仅支持转发分组的基本规则,但是在可编程交换机中,期待支持更多灵活规则或计算。
此外,当应用进程之间的连接建立时,分组的形式是固定的。然而不是分组中的所有报头或元组都是有用的。这可造成数据传输中的大量冗余,特别是在高速传输情形,例如5G。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于信息处理的方案。在该方案中,如果确定在所接收的分组的报头中检测到预定指示符,则从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息,基于源端口、目的地端口和转发指示符,更新端口转发表,对分组执行用户定义的动作,以得到结果分组,以及如果确定进程标识符的数量达到进程最大数目,基于进程最大数目、转发指示符和经更新的端口转发表,确定用于结果分组的转发端口,以用于向转发端口转发结果分组。
由此,支持对分组执行用户定义的动作,以及支持来自多个进程的分组的转发,从而能够实现对分组的灵活操作和转发。
在下文中,将结合附图更详细地描述本方案的具体示例。
图1示出了根据本公开的实施例的信息处理环境100的示例的示意图。信息处理环境100可以包括终端设备110和服务器120。
在一些实施例中,终端设备110用于发送(例如向服务器120)用户应用的分组。终端设备110可以是具备联网能力的电子设备。终端设备110例如但不限于是膝上型计算机、平板计算机、个人计算机等。
终端设备110可以运行用户应用。在一些实施例中,多个用户应用可以运行在一个终端设备110上。在另一些实施例中,多个用户应用可以运行在多个终端设备110上。用户应用可以运行在用户空间中,例如xterm上,其类似于诸如Linux的操作***上运行的程序。
服务器120包括但不限于个人计算机、服务器计算机、多处理器***、大型计算机、包括上述***或设备中的任意一个的分布式计算环境等。在一些实施例中,服务器120可以具有一个或多个处理单元,包括诸如GPU、FPGA和ASIC等的专用处理单元以及诸如CPU的通用处理单元。另外,服务器120上也可以运行着一个或多个虚拟机。
服务器120用于接收分组,以及对分组执行用户定义的动作以得到结果分组。服务器120还可以确定用于结果分组的转发端口,以用于向转发端口转发结果分组。服务器120可以运行可编程交换机模拟器。可编程交换机模拟器例如也可以运行在xterm上。
来自用户应用的分组将从终端设备110的处理器发送到服务器120的可编程交换机模拟器。用户应用与可编程交换机模拟器之间的连接可以包括套接字,例如Linux套接字。可以利用例如TCP来建立连接。
在一些实施例中,服务器120经由可编程交换机模拟器处理完来自用户应用的分组后可以将结果分组发送回相同的用户应用。在一些实施例中,服务器120经由可编程交换机模拟器处理完来自用户应用的分组后可以将结果分组发送到不同的用户应用。
应当理解,虽然图1中示出了2个用户应用,但这只是示例,可以包括更多或更少的用户应用。还应当理解,虽然图1示出了1个终端设备,但是这只是示例,也可以包括更多的终端设备。
应当理解,虽然图1中示出可编程交换机模拟器运行在服务器120上以及应用运行在终端设备110上,但是这只是示例,可编程交换机模拟器和应用可以运行在相同的设备上,例如相同的终端设备110或相同的服务器120上,也可以运行在不同的设备上,例如不同的终端设备上。
图2示出了根据本公开的实施例的可编程交换机模拟器200的示意框图。如图1所示,可编程交换机模拟器200可以包括总线201、解析器202、匹配动作模块203、函数模块204以及编辑器205。每个模块可通过读写一条或多条总线201与其相邻模块进行交互。例如,总线201可经过模块以形成管道。模块可以在总线元组经过时修改它们。
总线201可以在分组处理管道中承载分组数据,其在各自管道的端处开始和结束。
解析器202可以容纳现有的、定制的以及新的协议,并且可以从分组中提取报头元组。
匹配动作模块203可以包括匹配动作表,其允许用户定义可修改的数据结构,用户能够指定存储在表中的关键字和策略元组,并且该匹配动作表可以允许用户指定处理元组的元组指派方法。
函数模块204可在不同阶段使用,以实现交换决策中的灵活性,该模块可主要由用户设计。它可以允许条件声明、赋值声明以及用于总线中的数据变换的复杂操作。
编辑器205可以用于修改分组报头,以及可以在各种报头偏移处对报头进行添加、修改和删除。
分组处理可以从解析器202开始,匹配动作模块203和函数模块204能够混杂出现,其顺序指示分组处理阶段,编辑器205可以位于最后。
对于这些模块中的每个模块,目标模拟器可以选择包括多个这样的模块,并且可以按照任何的顺序来布置。
图3示出了根据本公开的实施例的用于信息处理的方法300的流程图。应当理解,方法200例如可以在图11所描述的电子设备1100处执行。也可以由如图1所示的终端设备110或服务器120来执行。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框302处,确定在所接收的分组的报头中是否检测到预定指示符。预定指示符可以用于指示该分组是发送给可编程交换机模拟器的。预定指示符例如可以位于分组的报头的预定位置,例如报头的起始位置。例如报头的起始位置的1个比特可用作预定指示符,例如确定该比特的值为1可以确定检测到预定指示符。
在一些实施例中,在框302之前,方法300还可以包括初始化可编程交换机模拟器以及运行网络拓扑的步骤。初始化可编程交换机模拟器可以包括启动模拟器程序,例如脚本,以便监听输入的分组。运行网络拓扑可以包括基于网络拓扑配置信息,例如网络拓扑配置文件,生成交换机和用户应用。在这之后,可以接收来自用户应用的分组。
如果在框302处确定在所接收的分组的报头中检测到预定指示符,则在框304处,从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息。
转发指示符用于指示分组的转发状态。例如,转发指示符的范围可以从0x00到0xFF,其中0x00可以用于指示单播,0x01-0xFE可以用于指示多播,以及0xFF可以用于指示广播。应当理解,这只是举例,也可以存在其他的范围以及其他的对应关系,例如0x00指示广播以及0xFF指示单播等等。
进程标识符用于标识发送分组的应用进程。进程最大数目用于指示发送分组的应用进程的最大数目。源端口与目的地端口可以相同或不同。源端口与目的地端口的范围可以例如从0x00到0xFF。应当理解,这只是示例,也可以是其他范围。
在一些实施例中,从报头中获取用于指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息可以包括从报头中提取用于指示分组的报头结构的元组,以及基于该元组,从报头中提取指示分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的元组。在下文中将结合图10详细描述分组结构。
在框306处,基于源端口、目的地端口和转发指示符,更新端口转发表。
端口转发表的条目可以包含源端口、目的地端口和转发指示符3项,如下表一所示。
表1
源端口 目的地端口 转发指示符
下文将结合图4详细描述更新端口转发表的过程。
在框308处,对分组执行用户定义的动作,以得到结果分组。
用户定义的动作例如可以包括各种逻辑操作和/或算术操作。
在一些实施例中,对分组执行用户定义的动作可以包括:对分组和先前结果分组执行用户定义的动作,以得到结果分组。在一个示例中,可以对分组的负荷数据与先前结果分组的负荷数据执行用户定义的操作,以得到结果分组。例如,对分组的负荷数据与先前结果分组的负荷数据进行逻辑操作和/或算术操作,例如加法操作、乘法操作等,得到结果分组。
在框310处,确定进程标识符的数量是否达到进程最大数目。进程标识符的数量例如可以基于先前接收的分组和当前接收的分组中的进程标识符累计的。例如,在处理先前分组时,可以存储先前进程标识符的数量,基于存储的先前进程标识符的数量和当前分组中包含的进程标识符,可以得到进程标识符的数量。
如果在框310处确定进程标识符的数量达到进程最大数目,则在框312处,基于进程最大数目、转发指示符和经更新的端口转发表,确定用于结果分组的转发端口,以用于向转发端口转发结果分组。下文中将结合图5详细描述确定用于结果分组的转发端口的过程。
在一些实施例中,方法300还可以包括向转发端口转发结果分组,以用于向转发端口对应的应用进程转发结果分组。
由此,能够对分组执行用户定义的动作,以及支持来自多个进程的分组的转发,从而实现对分组的灵活操作和转发。此外,通过对分组和先前结果分组执行用户定义的动作,以得到结果分组,可以使得来自多个进程的分组的处理结果能够累积,并将累积的结果进行转发,从而实现更复杂的功能。
图4示出了根据本公开的实施例的用于更新端口转发表的方法400的流程图。例如,方法400可以由如图1所示的终端设备110或服务器120来执行。也可以在图11所描述的电子设备1100处执行。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,在端口转发表中搜索源端口。
如果在框402处确定在端口转发表中未找到源端口,则在框410处,将源端口、目的地端口以及转发指示符作为条目添加到端口转发表中。
如果在框402处确定在端口转发表中找到源端口,则在框404处,在端口转发表中的源端口所对应的条目中搜索目的地端口。
如果在框404处确定在端口转发表中的源端口所对应的条目中未找到目的地端口,则在框410处,将源端口、目的地端口以及转发指示符作为条目添加到端口转发表中。
如果在框404处确定在端口转发表中的源端口所对应的条目中找到目的地端口,则在框406处,确定所获取的转发指示符与端口转发表中与源端口和目的地端口对应的条目中的转发指示符是否相同。
如果在框406处确定所获取的转发指示符与端口转发表中与源端口和目的地端口对应的条目中的转发指示符不同,则在框408处,将端口转发表中与源端口和目的地端口对应的条目中的转发指示符更新为所获取的转发指示符。
由此,能够在发现新的源端口、已有源端口对应的新的目的地端口以及已有源端口和目的地端口对应的新的转发指示符的情况下更新端口转发表,方便后续分组的转发。
下面举一个例子来说明上述方法400。例如,如果端口转发表的初始状态如表2所示,其包含2条条目,一条条目指示源端口、目的地端口和转发指示符分别为1、2以及0x00,另一条条目指示2、3以及0xFF。
表2
源端口 目的地端口 转发指示符
1 2 0x00
2 3 0xFF
如果所获取的源端口、目的地端口以及转发指示符分别为3、4以及0x00,则确定在端口转发表中未找到源端口3,将源端口3、目的地端口4以及转发指示符0x00作为条目添加到端口转发表。更新后的端口转发表可如表3所示:
表3
源端口 目的地端口 转发指示符
1 2 0x00
2 3 0xFF
3 4 0x00
如果所获取的源端口、目的地端口以及转发指示符分别为2、4以及0x00,则确定在端口转发表中找到源端口2,随后在端口转发表的源端口为2对应的条目中搜索所获取的目的地端口4,也就是在指示2、3以及0xFF的条目中搜索所获取的目的地端口4。确定在指示2、3以及0xFF的条目中未找到所获取的目的地4,将源端口2、目的地端口4以及转发指示符0x00作为条目添加到端口转发表。更新后的端口转发表可如表4所示:
表4
源端口 目的地端口 转发指示符
1 2 0x00
2 3 0xFF
2 4 0x00
如果所获取的源端口、目的地端口以及转发指示符分别为2、3以及0x00,则确定在指示2、3以及0xFF的条目中找到所获取的目的地3,确定所获取的转发指示符0x00与指示2、3以及0xFF的条目中的转发指示符0xFF是否相同,这里确定0x00与0xFF不相同,则将指示2、3以及0xFF的条目中的转发指示符0xFF修改为0x00。更新后的端口转发表可如表5所示:
表5
源端口 目的地端口 转发指示符
1 2 0x00
2 3 0x00
图5示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法500的流程图。例如,方法500可以由如图1所示的终端设备110或服务器120来执行。应当理解的是,方法500还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框502处,确定进程最大数目是否等于1。
如果在框502处确定进程最大数目等于1,则在框504处,确定转发指示符是否指示单播。例如,确定转发指示符是否等于0x00,如果确定转发指示符等于0x00,则确定转发指示符指示单播。
如果在框504处确定转发指示符指示单播,则在框506处,确定目的地端口为转发端口。
由此,能够确定分组的单播转发端口。
图6示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法600的流程图。例如,方法600可以由如图1所示的终端设备110或服务器120来执行。应当理解的是,方法600还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框602处,确定进程最大数目是否大于1。
如果在框602处确定进程最大数目大于1,则在框604处,确定转发指示符是否指示多播。例如,确定转发指示符是否大于0x00小于0xFF,如果确定转发指示符大于0x00小于0xFF,则确定转发指示符指示多播。
如果在框604处确定转发指示符指示多播,则在框606处,获取经更新的端口转发表中的转发指示符所对应的条目中的目的地端口,以便用作转发端口。
例如,经更新的端口转发表可如表6所示:
表6
源端口 目的地端口 转发指示符
1234 1234 0x05
1235 1235 0x05
1236 1236 0x05
1237 1237 0x05
1238 1238 0x00
如表6所示,端口转发表中包括了5个条目,如果所获取的转发指示符为0x05,则确定该转发指示符指示多播,获取端口转发表中的转发指示符0x05所对应的条目中的目的地端口,也就是端口1234、1235、1236以及1237,以便用作转发端口。
由此,能够支持来自多进程的分组的多播转发。由于只需端口和转发指示符来进行多播,使得多播转发能够独立于具体协议。此外,由于在最终转发之前,可基于来自应用的分组数据对端口转发表进行更新,从而能够及时更新模拟器的多播行为。
如上所述,在一些实施例中,结果分组可以是通过对所接收的分组和先前结果分组执行用户定义的动作而得到的。在这种情况下,多播结果分组的情形可如图7所示,其中单个方块表示来自应用进程的分组,格子方块表示来自模拟器的结果分组,其中来自端口1234、1235、1236以及1237的分组1、2、3和4经过模拟器累积处理得到结果分组后多播给端口1234、1235、1236以及1237。由此,可以使得来自多个进程的分组的累积处理结果进行多播转发,从而实现更复杂的功能。
图8示出了根据本公开的实施例的用于确定用于结果分组的转发端口的方法800的流程图。例如,方法800可以由如图1所示的终端设备110或服务器120来执行。应当理解的是,方法800还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框802处确定进程最大数目是否大于1。
如果在框802处确定进程最大数目大于1,则在框804处,确定转发指示符是否指示广播。例如,确定转发指示符是否等于0xFF,如果确定转发指示符等于0xFF,则确定转发指示符指示广播。
如果在框804处确定转发指示符指示广播,则在框806处,获取经更新的端口转发表中的所有目的地端口,以便用作转发端口。
例如,经更新的端口转发表可如表7所示:
表7
源端口 目的地端口 转发指示符
1234 1234 0xFF
1235 1235 0xFF
1236 1236 0xFF
1237 1237 0xFF
1238 1238 0x01
如表7所示,端口转发表中包括了5个条目,如果所获取的转发指示符为0xFF,则确定该转发指示符指示广播,以及获取端口转发表中的所有目的地端口,也就是端口1234、1235、1236、1237以及1238,以便用作转发端口。
由此,能够支持来自多进程的分组的广播转发。由于只需端口和转发指示符来进行广播,使得广播转发能够独立于具体协议。此外,由于在最终转发之前,可基于来自应用的分组数据对端口转发表进行更新,从而能够及时更新模拟器的广播行为。
如上所述,在一些实施例中,结果分组可以是通过对所接收的分组和先前结果分组执行用户定义的动作而得到的。在这种情况下,广播结果分组的情形可如图9所示,其中单个方块表示来自应用进程的分组,格子方块表示来自模拟器的结果分组,其中来自端口1234、1235、1236以及1237的分组1、2、3和4经过模拟器累积处理得到结果分组后广播给端口1234、1235、1236、1237以及1238。由此,可以使得来自多个进程的分组的累积处理结果进行广播,从而实现更复杂的功能。
图10示出了根据本公开的实施例的分组结构1000的示意图。应当理解的是,分组结构1000还可以包括未示出的附加元组和/或可以省略所示出的元组,本公开的范围在此方面不受限制。
如图10所示,分组的报头可以包括模拟器报头Si_head、以太网报头、IPv4报头、UDP报头以及Worker_info,负荷包括分组承载的实际数据。Si_head和Worker_info可以设计成适应可编程交换机模拟器。
Si_head和Worker_info的结构可如表8所示。Si_head结构可以包括Sicode元组,其用于指示该分组是发送给可编程交换机模拟器的。Si_head结构还可以包括Header_flags元组,其用于指示分组的报头结构,以及Plength元组,其用于指示分组长度,分组长度可涉及除了Si_head以外的所有分组报头。
在Worker_info结构中,Process_id用于指示进程标识符,Max_process用于指示进程最大数目,序列号用于指示进程所发送的分组的序列号,SPort用于指示源端口,DPort用于指示目的地端口,以及转发指示符Forward_value用于指示分组的转发状态。
表8
Figure BDA0002379036990000151
如表8所示,Si_head报头结构可以包括3个元组,Sicode元组可以用于指示分组是发送给可编程交换机模拟器的。Header_flags元组可以用于指示分组的报头结构,如表9所示。
表9
Figure BDA0002379036990000152
在一些实施例中,可以基于Header_flags元组,确定Worker_info结构在分组的报头的偏移位置,以及从该偏移位置提取Worker_info结构,也就是提取源端口、目的地端口、转发指示符、进程标识符以及进程最大数目。此外,也可以基于Header_flags元组,提取其他报头结构,例如以太网报头、IPv4报头以及UDP报头等。通过Header_flags元组,还可以根据需要省略上述这些报头中的一个或多个。
由此,能够根据需要省略一个或多个报头结构,从而降低分组冗余,提高传输效率。
图11示出了可以用来实施本公开内容的实施例的示例设备1100的示意性框图。例如,如图1所示的终端设备110和服务器120可以由设备1100来实施。如图所示,设备1100包括中央处理单元(CPU)1110,其可以根据存储在只读存储器(ROM)1120中的计算机程序指令或者从存储单元1180加载到随机访问存储器(RAM)1130中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1130中,还可存储设备1100操作所需的各种程序和数据。CPU1110、ROM1120以及RAM 1130通过总线1140彼此相连。输入/输出(I/O)接口1150也连接至总线1140。
设备1100中的多个部件连接至I/O接口1150,包括:输入单元1160,例如键盘、鼠标等;输出单元1170,例如各种类型的显示器、扬声器等;存储单元1180,例如磁盘、光盘等;以及通信单元1190,例如网卡、调制解调器、无线通信收发机等。通信单元790允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300-600以及800,可由处理单元1110执行。例如,在一些实施例中,方法300-600以及800可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1180。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1120和/或通信单元1190而被载入和/或安装到设备1100上。当计算机程序被加载到RAM 1130并由CPU 1110执行时,可以执行上文描述的方法300-600以及800的一个或多个动作。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (19)

1.一种用于信息处理的方法,包括:
响应于确定在所接收的分组的报头中检测到预定指示符,从所述报头中获取用于指示所述分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息;
基于所述源端口、所述目的地端口和所述转发指示符,更新端口转发表;
对所述分组执行用户定义的动作,以得到结果分组;以及
响应于确定所述进程标识符的数量达到所述进程最大数目,基于所述进程最大数目、所述转发指示符和经更新的端口转发表,确定用于所述结果分组的转发端口,以用于向所述转发端口转发所述结果分组。
2.根据权利要求1所述的方法,其中更新所述端口转发表包括:
在所述端口转发表中搜索所述源端口;以及
响应于确定在所述端口转发表中未找到所述源端口,将所述源端口、所述目的地端口以及所述转发指示符作为条目添加到所述端口转发表中。
3.根据权利要求2所述的方法,其中更新所述端口转发表还包括:
响应于确定在所述端口转发表中找到所述源端口,在所述端口转发表中的所述源端口所对应的条目中搜索所述目的地端口;以及
响应于确定在所述端口转发表中的所述源端口所对应的所述条目中未找到所述目的地端口,将所述源端口、所述目的地端口以及所述转发指示符作为条目添加到所述端口转发表中。
4.根据权利要求3所述的方法,其中更新所述端口转发表还包括:
响应于确定在所述端口转发表中的所述源端口所对应的所述条目中找到所述目的地端口,确定所获取的所述转发指示符与所述端口转发表中与所述源端口和所述目的地端口对应的条目中的转发指示符是否相同;以及
响应于确定所获取的所述转发指示符与所述端口转发表中与所述源端口和所述目的地端口对应的所述条目中的所述转发指示符不同,将所述端口转发表中与所述源端口和所述目的地端口对应的所述条目中的所述转发指示符更新为所获取的所述转发指示符。
5.根据权利要求1所述的方法,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目等于1,确定所述转发指示符是否指示单播;以及
响应于确定所述转发指示符指示单播,确定所述目的地端口为所述转发端口。
6.根据权利要求1所述的方法,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目大于1,确定所述转发指示符是否指示多播;以及
响应于确定所述转发指示符指示多播,获取经更新的所述端口转发表中的所述转发指示符所对应的条目中的目的地端口,以便用作所述转发端口。
7.根据权利要求1所述的方法,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目大于1,确定所述转发指示符是否指示广播;以及
响应于确定所述转发指示符指示广播,获取经更新的所述端口转发表中的所有目的地端口,以便用作所述转发端口。
8.根据权利要求1所述的方法,其中从所述报头中获取用于指示所述分组的所述源端口、所述目的地端口、所述转发指示符、所述进程标识符和所述进程最大数目的信息包括:
从所述报头中提取用于指示所述分组的报头结构的元组;以及
基于所述元组,从所述报头中提取指示所述分组的所述源端口、所述目的地端口、所述转发指示符、所述进程标识符和所述进程最大数目的元组。
9.根据权利要求1所述的方法,其中对所述分组执行所述用户定义的所述动作包括:
对所述分组和先前结果分组执行所述用户定义的所述动作,以得到所述结果分组。
10.一种电子设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行以下步骤:
响应于确定在所接收的分组的报头中检测到预定指示符,从所述报头中获取用于指示所述分组的源端口、目的地端口、转发指示符、进程标识符和进程最大数目的信息;
基于所述源端口、所述目的地端口和所述转发指示符,更新端口转发表;
对所述分组执行用户定义的动作,以得到结果分组;以及
响应于确定所述进程标识符的数量达到所述进程最大数目,基于所述进程最大数目、所述转发指示符和经更新的端口转发表,确定用于所述结果分组的转发端口,以用于向所述转发端口转发所述结果分组。
11.根据权利要求10所述的电子设备,其中更新所述端口转发表包括:
在所述端口转发表中搜索所述源端口;以及
响应于确定在所述端口转发表中未找到所述源端口,将所述源端口、所述目的地端口以及所述转发指示符作为条目添加到所述端口转发表中。
12.根据权利要求11所述的电子设备,其中更新所述端口转发表还包括:
响应于确定在所述端口转发表中找到所述源端口,在所述端口转发表中的所述源端口所对应的条目中搜索所述目的地端口;以及
响应于确定在所述端口转发表中的所述源端口所对应的所述条目中未找到所述目的地端口,将所述源端口、所述目的地端口以及所述转发指示符作为条目添加到所述端口转发表中。
13.根据权利要求12所述的电子设备,其中更新所述端口转发表还包括:
响应于确定在所述端口转发表中的所述源端口所对应的所述条目中找到所述目的地端口,确定所获取的所述转发指示符与所述端口转发表中与所述源端口和所述目的地端口对应的条目中的转发指示符是否相同;以及
响应于确定所获取的所述转发指示符与所述端口转发表中与所述源端口和所述目的地端口对应的所述条目中的所述转发指示符不同,将所述端口转发表中与所述源端口和所述目的地端口对应的所述条目中的所述转发指示符更新为所获取的所述转发指示符。
14.根据权利要求10所述的电子设备,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目等于1,确定所述转发指示符是否指示单播;以及
响应于确定所述转发指示符指示单播,确定所述目的地端口为所述转发端口。
15.根据权利要求10所述的电子设备,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目大于1,确定所述转发指示符是否指示多播;以及
响应于确定所述转发指示符指示多播,获取经更新的所述端口转发表中的所述转发指示符所对应的条目中的目的地端口,以便用作所述转发端口。
16.根据权利要求10所述的电子设备,其中确定用于所述结果分组的所述转发端口包括:
响应于确定所述进程最大数目大于1,确定所述转发指示符是否指示广播;以及
响应于确定所述转发指示符指示广播,获取经更新的所述端口转发表中的所有目的地端口,以便用作所述转发端口。
17.根据权利要求10所述的电子设备,其中从所述报头中获取用于指示所述分组的所述源端口、所述目的地端口、所述转发指示符、所述进程标识符和所述进程最大数目的信息包括:
从所述报头中提取用于指示所述分组的报头结构的元组;以及
基于所述元组,从所述报头中提取指示所述分组的所述源端口、所述目的地端口、所述转发指示符、所述进程标识符和所述进程最大数目的元组。
18.根据权利要求10所述的电子设备,其中对所述分组执行所述用户定义的所述动作包括:
对所述分组和先前结果分组执行所述用户定义的所述动作,以得到所述结果分组。
19.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现根据权利要求1至9中任一项所述的方法。
CN202010077768.4A 2020-01-31 2020-01-31 用于信息处理的方法、电子设备和计算机存储介质 Active CN113206807B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010077768.4A CN113206807B (zh) 2020-01-31 2020-01-31 用于信息处理的方法、电子设备和计算机存储介质
US16/827,082 US11296974B2 (en) 2020-01-31 2020-03-23 Information processing method, electronic device and computer storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010077768.4A CN113206807B (zh) 2020-01-31 2020-01-31 用于信息处理的方法、电子设备和计算机存储介质

Publications (2)

Publication Number Publication Date
CN113206807A CN113206807A (zh) 2021-08-03
CN113206807B true CN113206807B (zh) 2022-12-09

Family

ID=77024801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010077768.4A Active CN113206807B (zh) 2020-01-31 2020-01-31 用于信息处理的方法、电子设备和计算机存储介质

Country Status (2)

Country Link
US (1) US11296974B2 (zh)
CN (1) CN113206807B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262485A (zh) * 2010-12-16 2013-08-21 日本电气株式会社 交换设备、交换设备的上层设备、网络和分组转发方法
CN104468462A (zh) * 2013-09-12 2015-03-25 杭州华三通信技术有限公司 分布式虚拟交换机***的报文转发方法及设备
CN105791169A (zh) * 2014-12-16 2016-07-20 电信科学技术研究院 软件定义网络中交换机转发控制、转发方法及相关设备
CN106612306A (zh) * 2015-10-22 2017-05-03 中兴通讯股份有限公司 虚拟机的数据共享方法及装置
CN108965372A (zh) * 2017-12-20 2018-12-07 北京视联动力国际信息技术有限公司 一种服务调度方法和装置
CN109327393A (zh) * 2018-11-17 2019-02-12 中国人民解放军战略支援部队信息工程大学 网络交换目的端口确定方法、装置及基于该装置的交换机

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735198B1 (en) * 1999-12-21 2004-05-11 Cisco Technology, Inc. Method and apparatus for updating and synchronizing forwarding tables in a distributed network switch
US20130064246A1 (en) * 2011-09-12 2013-03-14 Cisco Technology, Inc. Packet Forwarding Using an Approximate Ingress Table and an Exact Egress Table
US9781036B2 (en) * 2015-07-28 2017-10-03 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Emulating end-host mode forwarding behavior
JP6662136B2 (ja) * 2016-03-22 2020-03-11 日本電気株式会社 中継装置、通信システム、中継方法及び中継プログラム
CN108307434B (zh) * 2017-01-12 2023-04-07 马维尔以色列(M.I.S.L.)有限公司 用于流控制的方法和设备
US10397096B2 (en) * 2017-04-28 2019-08-27 International Business Machines Corporation Path resolution in InfiniBand and ROCE networks
US10659252B2 (en) * 2018-01-26 2020-05-19 Nicira, Inc Specifying and utilizing paths through a network

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262485A (zh) * 2010-12-16 2013-08-21 日本电气株式会社 交换设备、交换设备的上层设备、网络和分组转发方法
CN104468462A (zh) * 2013-09-12 2015-03-25 杭州华三通信技术有限公司 分布式虚拟交换机***的报文转发方法及设备
CN105791169A (zh) * 2014-12-16 2016-07-20 电信科学技术研究院 软件定义网络中交换机转发控制、转发方法及相关设备
CN106612306A (zh) * 2015-10-22 2017-05-03 中兴通讯股份有限公司 虚拟机的数据共享方法及装置
CN108965372A (zh) * 2017-12-20 2018-12-07 北京视联动力国际信息技术有限公司 一种服务调度方法和装置
CN109327393A (zh) * 2018-11-17 2019-02-12 中国人民解放军战略支援部队信息工程大学 网络交换目的端口确定方法、装置及基于该装置的交换机

Also Published As

Publication number Publication date
CN113206807A (zh) 2021-08-03
US11296974B2 (en) 2022-04-05
US20210243109A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US8681819B2 (en) Programmable multifield parser packet
CN102104541B (zh) 报头处理引擎
CN109547580B (zh) 一种处理数据报文的方法和装置
US20120159132A1 (en) Accelerating Data Packet Parsing
CN115486046B (zh) 基于开放虚拟软交换机ovs的数据包处理方法及设备
US11343360B2 (en) Packet aggregation and disaggregation method
US11601508B2 (en) Network access method and device for edge router
CN106921578B (zh) 一种转发表项的生成方法和装置
CN103974380A (zh) 一种终端接入位置保活的方法及装置
CN114285781B (zh) Srv6业务流量统计方法、装置、电子设备及介质
CN107483341B (zh) 一种跨防火墙报文快速转发方法及装置
CN110545230B (zh) 用于转发vxlan报文的方法和装置
CN113206807B (zh) 用于信息处理的方法、电子设备和计算机存储介质
CN107707548B (zh) Tlv报文解析方法、装置、电子设备及存储介质
CN113556414B (zh) 用于网络间通信的方法、网关设备和存储介质
US10084893B2 (en) Host network controller
CN114338529B (zh) 五元组规则匹配方法及装置
EP3128437A1 (en) Data processing method, processor, and data processing device
US11048550B2 (en) Methods, devices and computer program products for processing task
CN114978986A (zh) 一种数据传输方法、装置及存储介质
CN113452471A (zh) 用于数据处理的方法、电子设备以及计算机程序产品
US11836382B2 (en) Data read method, data storage method, electronic device, and computer program product
CN115250254B (zh) Netflow报文分发处理方法及装置
CN110738017A (zh) 分布式集成电路仿真方法、装置、计算设备及存储介质
CN115334003B (zh) 一种基于汇聚分流设备的数据流处理方法及***

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