CN110809033B - 报文转发方法、装置及交换服务器 - Google Patents
报文转发方法、装置及交换服务器 Download PDFInfo
- Publication number
- CN110809033B CN110809033B CN201911011778.1A CN201911011778A CN110809033B CN 110809033 B CN110809033 B CN 110809033B CN 201911011778 A CN201911011778 A CN 201911011778A CN 110809033 B CN110809033 B CN 110809033B
- Authority
- CN
- China
- Prior art keywords
- node
- destination node
- address
- message
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 239000000872 buffer Substances 0.000 claims description 25
- 238000012795 verification Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 abstract description 23
- 230000008569 process Effects 0.000 abstract description 12
- 239000000284 extract Substances 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 3
- 230000035515 penetration Effects 0.000 abstract description 3
- 239000003795 chemical substances by application Substances 0.000 description 16
- 238000013507 mapping Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- CNQCVBJFEGMYDW-UHFFFAOYSA-N lawrencium atom Chemical compound [Lr] CNQCVBJFEGMYDW-UHFFFAOYSA-N 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2546—Arrangements for avoiding unnecessary translation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
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
本公开实施例提出一种报文转发方法、装置及交换服务器,交换服务器记录节点的标识和该节点的地址的对应关系,从节点发送的待转发报文提取有效荷载,根据有效荷载中的目的节点标识查找目的节点标识与目的节点地址的目标对应关系,根据查找到的目标对应关系,查找与有效荷载中的目的节点标识对应的目的节点地址,向目的节点地址对应的目的节点发送有效荷载。通过上述设计,需要通信的两个节点可以不必知道对方的外部通信地址,避免了复杂的NAT穿透过程。
Description
技术领域
本公开公开涉及通信技术领域,具体而言,涉及一种报文转发方法、装置及交换服务器。
背景技术
分属异构网络的节点A和节点B无法直接进行数据交换。目前,主要通过网络地址转换(Network Address Translation,NAT)穿透技术,确定节点A和B各自的外部通信地址(如,公网地址和公网端口),再基于该外部通信地址实现端到端(peer-to-peer,P2P)通信。
然而,NAT穿透技术的实现比较复杂,节点A和节点B难以获知对方的外部通信地址,导致节点A与节点B实现数据交换的难度较大。
发明内容
有鉴于此,本公开的目的之一在于提供一种报文转发方法、装置及交换服务器。
为了实现上述目的,本公开采用的技术方案如下:
第一方面,本公开提供一种报文转发方法,应用于交换服务器,所述交换服务器存储有节点的标识与该节点的地址的对应关系,所述方法包括:
接收待转发报文,所述待转发报文的目的地址为所述交换服务器的地址,所述待转发报文的有效荷载包括目的节点标识;
从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系;
根据查找到的目标对应关系,查找与所述有效荷载中的所述目的节点标识对应的目的节点地址,向所述目的节点地址对应的目的节点发送所述有效荷载。
第二方面,本公开提供一种报文转发装置,应用于交换服务器,所述交换服务器存储有节点的标识与该节点的地址的对应关系,所述装置包括:
第一接口模块,用于待转发报文,所述待转发报文的目的地址为所述交换服务器的地址,所述待转发报文的有效荷载包括目的节点标识;
转发控制模块,用于:
从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系;
根据查找到的目标对应关系,查找与所述有效荷载中的所述目的节点标识对应的目的节点地址,向所述目的节点地址对应的目的节点发送所述有效荷载。
第三方面,本公开提供一种交换服务器,包括处理器及机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令被执行时促使所述处理器实现前述实施方式中任意一项所述的方法。
第四方面,本公开提供一种机器可读存储介质,其上存储有机器可执行指令,该机器可执行指令被执行时实现前述实施方式中任意一项所述的方法。
本公开提供一种报文转发方法、装置及交换服务器,交换服务器记录节点的标识和该节点的地址的对应关系,从节点发送的待转发报文提取有效荷载,根据有效荷载中的目的节点标识查找目的节点标识与目的节点地址的目标对应关系,根据查找到的目标对应关系,查找与有效荷载中的目的节点标识对应的目的节点地址,向目的节点地址对应的目的节点发送有效荷载。通过上述设计,需要通信的两个节点可以不必知道对方的外部通信地址,避免了复杂的NAT穿透过程。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开提供的一种交换服务器的框架示意图;
图2示出了本公开提供的交换服务器与节点的交互示意图;
图3示出了本公开提供的交换服务器与节点的另一种交互示意图;
图4示出了本公开提供的一种I/O通道的架构示意图;
图5示出了本公开提供的另一种交换服务器与节点的交互示意图;
图6示出了本公开提供的一种报文转发方法的流程示意图;
图7示出了本公开提供的报文转发方法的另一流程示意图。
具体实施方式
下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
为了实现分属异构网络的两个节点间的数据交换,本实施例提供一种报文转发方法、装置及交换服务器,下面将对该内容进行详细阐述。
请参照图1,图1示出了本实施例提供的一种交换服务器100的架构示意图。交换服务器100包括处理器101、机器可读存储介质102及报文转发装置110,处理器101和机器可读存储介质102通过系统总线通信连接,以实现数据通讯。
报文转发装置110包括至少一个可以以机器可执行指令形式存储于机器可读存储介质102中的软件功能模块,处理器101通过读取并执行机器可读存储介质102中的机器可执行指令,可以实现本实施例提供的报文转发方法。
应当理解,图1所示结构仅为示意,交换服务器100还可以包括比图1所示更多或更少的组件,例如还可以包括网络单元103,或者可以具有与图1所述完全不同的配置。图1所示的组件可以通过软件和/或硬件实现,本实施例对此没有限制。
请参照图2,图2为本实施例提供的一种应用场景示意图,其中示出了异构的网络200和300,网络300中存在节点210,网络300中存在节点310。节点210和节点310分别与交换服务器100通信连接。
异构是指两个网络采用不同的网络接入技术,或者具有不同的网络结构等。本实施例的节点可以是任意具有通信功能的电子设备。
一些实施例中,可以采用NAT穿透技术实现节点210和节点310之间的数据交换。即,分别确定节点210和节点310各自的外部通信地址,基于该外部通信地址进行通信。但是,以节点210为例,其外部通信地址通常是由网络10的网关(部署有NAT功能)为其分配的,可能发生变化,导致难以准确地确定节点210的外部通信地址。类似地,节点310的外部通信地址的确定也存在困难。如此,要实现节点210和节点310的数据交换非常困难。
为了改善上述问题,本实施例中,交换服务器具有确定的外部通信地址(如,特定的域名或公网地址),并且存储有节点的标识和该节点的地址的对应关系,则节点210和节点310可以分别与交换服务器通信,再基于交换服务器上存储的对应关系,对节点发送的报文进行转发。
请再次参照图2,本实施例提供的报文转发装置110从功能上划分,可以包括转发控制模块111和第一接口模块112。
第一接口模块112用于接收待转发报文。
其中,所述待转发报文的目的地址为交换服务器100的地址,目的地址例如可以是目的IP(InternetProtocol,互联网协议)地址、目的MAC(MediaAccessControl,媒体访问控制)地址等,用于指示源节点与交换服务器之间的转发设备,将待转发报文发送给交换服务器。
所述待转发报文的有效荷载(payload)包括目的节点标识,目的节点标识为需要接收待转发报文的目的节点的标识。待转发报文的有效荷载还可以包括源节点标识,源节点标识为向交换服务器100发送待转发报文的源节点的标识。例如,节点210向节点12发送的待转发报文,其有效荷载中的源节点标识为节点210的标识,目的节点标识为节点310的标识。
此外,有效荷载中还可以包括消息内容,该消息内容可以为文本形式或二进制形式,本实施例对此没有限制。
转发控制模块111用于:从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系;根据查找到的目标对应关系,查找与所述有效荷载中的所述目的节点标识对应的目的节点地址,向所述目的节点地址对应的目的节点发送所述有效荷载。
本实施例中,对于接入交换服务器100的每个节点,交换服务器100存储有该节点的标识和该节点的地址的对应关系。如此,基于从待转发报文中提取的有效荷载,转发控制模块111可以识别出该有效荷载中的目的节点标识,并从存储的对应关系中查找该目的节点标识命中的对应关系,即,查找包含该目的节点标识的对应关系。查找到的对应关系即为目标对应关系,目标对应关系中的地址即为目的节点地址。
转发控制模块111可以将有效荷载发送给目标对应关系中的地址,则有效荷载可以到达目的节点地址对应的目的节点。
通过本实施例提供的报文转发装置,需要通信的两个节点可以不必知道对方的外部通信地址,避免了当两个节点分属异构网络时为获取对方的外部通信地址所需的NAT穿透过程,可以非常便捷地实现分属异构网络的两个节点间的数据交换。
请参照图3,其中示例性地示出了报文转发装置110与节点210、节点310的另一种交互示意图。
其中,报文转发装置110还可以包括接入控制模块114,通过该接入控制模块114,交换服务器100可以对需要接入的节点进行验证,若验证通过,创建相应的接口模块与该节点建立websocket连接,从而可以通过该websocket连接获取节点的地址,并记录该节点的地址与该节点的标识的对应关系。
详细地,本实施例中,接入控制模块114可以用于:
在转发控制模块根据有效荷载中的目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系之前,接收目的节点发送的接入请求,根据所述接入请求对所述目的节点进行接入验证;
当目的节点通过所述接入验证时,创建至少包括websocket(网络套接字)对象的第二接口模块,并通过所述websocket对象与所述目的节点建立websocket连接;
在交换服务器中存储所述第二接口模块与所述目的节点标识的第一关联关系,以及所述第二接口模块中的所述websocket对象与所述目的节点地址的第二关联关系,其中,所述目标对应关系包括所述第一关联关系和所述第二关联关系。
在一个示例中,接入控制模块114可以默认所有接入请求均验证通过。
在另一个示例中,接入控制模块114可以存储有准入名单,并基于该准入名单对需要接入的节点进行验证。其中,该准入名单可以根据需要进行更改。下面以节点310为例,对本示例中的接入验证过程进行阐述:
一、交换服务器100可以响应管理员的配置操作,向节点310发送令牌(token),或是在节点310获得相应权限(如购买了交换服务器的转发服务等)时,主动向节点310发送令牌。
其中,所述令牌可以为根据特定算法生成的标识符。
二、将节点310的元数据(metadata)和令牌关联并存储至准入名单中。所述元数据例如可以是节点的标识、设备类型、设备厂商信息、所属网络的网关IP地址等能够标识节点身份的信息,本实施例对此没有限制。
三、节点310安装代理(agent)程序311,并在代理程序311中配置自身的元数据及令牌。
其中,代理程序311至少包括websocket(网络套接字)对象,例如websocket客户端(client),通过该websocket客户端可以与交换服务器100建立websocket连接。
四、代理程序311可以通过HTTPS(HyperTextTransferProtocoloverSecureSocketLayer,超文本传输安全协议)协议向交换服务器100发送接入请求,该接入请求的请求体包含节点310的元数据和令牌。
五、交换服务器100通过接入控制模块114接收接入请求,并查找接入请求的请求体中的元数据和令牌是否存在于准入名单中,若是,则判定节点310通过接入验证,若否,则判定节点310没有通过所述接入验证。
六、接入控制模块在节点310通过接入验证的情况下,创建一接口实例作为第二接口模块113,该第二接口模块113至少包括websocket对象,并在交换服务器100中存储第二接口模块113与节点310的标识的第一关联关系。
其中,第二接口模块113中的websocket对象例如可以是websocket服务端。
七、接入控制模块114通过第二接口模块113中的websocket服务端,与节点310的代理程序311中的websocket客户端建立websocket连接,并在交换服务器100中存储第二接口模块113中的websocket服务端与节点310的地址的第二关联关系。
其中,第二接口模块113的websocket服务端通常会对一传输层端口进行监听,该websocket服务端可以通过该传输层端口与外部通信。则,第二接口模块113可以将该传输层端口的端口号携带在HTTPS响应消息中返回给代理程序311,代理程序311中的websocket客户端可以通过该传输层端口与第二接口模块113中的websocket服务端建立websocket连接。
本实施例中,节点310的地址和节点310的标识的对应关系可以包括上述的第一关联关系和第二关联关系。在此情况下,转发控制模块111根据查找到的目标对应关系,查找与所述有效荷载中的所述目的节点标识对应的目的节点地址,向所述目的节点地址对应的目的节点发送所述有效荷载的方式可以为:
根据第一关联关系查找与所述目的节点标识对应的所述第二接口模块;
调用所述第二接口模块中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址。
其中,第一关联关系可以有多种实现形式。
示例性地,交换服务器100可以存储有一张映射表和一张转发表,接入控制模块114可以为创建的第二接口模块113分配接口标识,例如port-310,并在映射表中添加一条映射表项,该映射表项包括第二接口模块113的接口标识port-310和第二接口模块113的结构体。然后,为节点310的代理程序311分配节点标识node-310,并在转发表中添加一条转发表项,该转发表项包括节点标识node-310和接口标识port-310。
所述第一关联关系可以包括所述映射表项和所述转发表项。
通过上述的第一关联关系和第二关联关系,交换服务器100可以实现对目的节点标识为节点310的标识的报文的转发处理。
例如,节点210发送的待转发报文d1进入交换服务器100,待转发报文d1的有效荷载包括源节点标识node-210、目的节点标识node-310,转发控制模块111可以从待转发报文d1的有效荷载中识别出目的节点标识node-310,从而根据识别出的节点标识node-310查找转发表,确定用于向node-310指示的节点310发送报文的接口模块的接口标识port-310;进而根据确定的接口标识port-310查找映射表,确定用于向节点310发送报文的第二接口模块113的结构体。
第二接口模块113的结构体封装了websocket服务端的多个指令,如发送指令,转发控制模块111可以通过上述结构体,调用第二接口模块113的websocket服务端的发送指令,发送有效荷载。
由于第二接口模块113中的websocket服务端与节点310的代理程序311中的websocket客户端之间存在websocket连接,在第二接口模块113的websocket服务端的发送指令被调用时,待转发报文d1的有效荷载将依照第二关联关系,被发送至与第二接口模块113中的websocket服务端关联的地址,即节点310的地址。
那么,代理程序311中的websocket客户端可以收到所述有效荷载,并将所述有效荷载传递给节点310,所述有效荷载包含了节点210希望发送给节点310的消息m1。
类似地,接入控制模块114可以在接收节点210发送的待转发报文之前,可以参照上述对节点310的验证流程,对节点210进行接入验证。
其中,节点210包括代理程序211,代理程序211包括websocket客户端。第一接口模块112是由交换服务器100在节点210通过接入验证时创建的接口实例,第一接口模块112至少包括websocket客户端,该websocket客户端与代理程序211中的websocket客户端之间建立有websocket连接。交换服务器100还存储有节点210的标识和节点210的地址的对应关系,该对应关系包括:第一接口模块112与节点210的标识的第一关联关系,以及第一接口模块112中的websocket服务端与节点210的地址的第二关联关系。
对应地,第一接口模块112与节点210的标识的第一关联关系可以包括一个映射表项和一个转发表项,该转发表项可以包括第一接口模块112的接口标识port-210和节点210的节点标识node-210,该映射表项可以包括接口标识port-210和第一接口模块112的结构体。
节点210可以通过调用代理程序211中的websocket客户端的发送指令,发送包含源节点标识node-210、目的节点标识node-310及消息m1的有效荷载。由于代理程序211中的websocket客户端与第一接口模块112中的websocket服务端之间存在websocket连接,该有效荷载将被封装成待转发报文d1(目的地址为交换服务器100的地址),被发送至第一接口模块112中的websocket服务端,进而由转发控制模块111对待转发报文d1按照前述流程进行转发处理。
本实施例中,一个节点需要获得对端节点的标识,再通过交换服务器向对端节点发送消息。因此,本实施例的接入控制模块114在通过接口模块中的websocket对象与对应节点建立websocket连接之后,可以向除该节点之外的、接入交换服务器100的其他所有节点发送节点接入通知,节点接入通知包括新对应节点的标识及元数据,使得其他所有节点记录该对应节点的标识和元数据。
在一些场景中,当一个节点通过交换服务器100向对端节点发送消息时,对端节点可能已经与交换服务器100断开连接,此时消息将会被丢弃,出现丢包。为了避免这一问题,接入控制模块114还可以用于在对应节点与交换服务器100之间的websocket连接断开时,向除该对应节点之外的、接入交换服务器100的其他所有节点发送节点断开通知,节点断开通知可以包括该对应节点的标识,使得其他所有节点删除该对应节点的标识和元数据。
此外,在一个示例中,接入控制模块114在发送包含节点310的标识的节点断开通知后,还可以删除节点310的标识和节点310的地址的对应关系,并删除第二接口模块113。
本实施例中,交换服务器100与节点间的websocket连接的断开可以有不同的触发条件。
例如,接入控制模块114在检测到节点的令牌过期时,调用该节点对应的接口模块中websocket对象的连接断开指令,主动断开与该节点的websocket连接。又如,节点可以主动向交换服务器100上对应的接口模块发送断开请求报文,以使接口模块调用websocket对象的连接断开指令,将websocket连接断开。又如,由交换服务器100的管理员进行配置,促使接入控制模块114调用接口模块中websocket对象的连接断开指令,断开与对应节点的websocket连接。
又如,接口模块在检测到网络连接错误时,主动调用自身的websocket对象的连接断开指令,断开与对应节点的websocket连接。所述网络连接错误例如可能是因节点中的外部通信地址发生改变所导致的,在此情形下,节点的代理程序可以重新向交换服务器100发送接入请求,交换服务器100将重新对该节点进行接入验证,并记录节点的标识和该节点的新地址的对应关系,从而继续实现对该节点的报文的收发。如此,可以解决相关技术中,NAT穿透技术因节点的外部通信地址变化,而难以准确地确定节点的外部通信地址,所导致的异构网络节点数据交换困难的问题。
可选地,为了提高交换服务器100的数据吞吐能力,每个接口模块(接口示例)还可以包括缓冲组件(buffer)。例如,第一接口模块112和第二接口模块113均包括各自的buffer。
在此情形下,转发控制模块111调用第二接口模块113中的websocket对象的发送指令,根据第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址的方式,可以为:
调用所述发送指令,将所述待转发报文写入第二接口模块113的缓冲组件中,触发第二接口模块113的websocket对象依次读取所述缓冲组件中的报文,并根据第二关联关系将读取的报文发送给关联的所述目的节点地址。
以前述待转发报文d1为例,转发控制模块111调用第二接口模块113的websocket服务端的发送指令,来发送待转发报文d1的有效荷载,则该有效荷载将被写入第二接口模块113的buffer中,第二接口模块113的websocket服务端从buffer中读取到待转发报文d1的有效荷载,并将读取的有效荷载通过websocket连接发送至自身关联的地址,即节点310的地址。
为了进一步提高交换服务器100的数据吞吐能力,报文转发装置110还可以包括图4所示的I/O通道115,该I/O通道115包括负载均衡器(LoadBalance,LB)和至少一个队列(queue),例如,图4所示的队列Q1、Q2、Qm。
其中,初始状态下,I/O通道115只包含一个队列,该队列的容量为L。当LB检测到该队列的占用率达到第一设定比率时,可以创建新的队列。对应地,在I/O通道115包含多个队列的情况下,LB可以在每个队列的占用率都达到第一设定比率时,创建新队列。其中,第一设定比率可以根据需求进行设置,例如可以为75%-85%,比如80%。
此外,LB还可以在I/O通道115中所有队列的总占用率低于第二设定比率的时长达到预设时长时,将部分队列中的报文转移至其他队列中,并删除该部分队列。其中,第二设定比率和预设时长可以根据需求进行设定。例如,第二设定比率可以是35%-45%,如40%;预设时长可以为1小时、2小时、1天等。
其中,占用率是指队列中当前的数据量与队列的数据容量的比值。对应地,当I/O通道中队列的总占用率低于第二设定比率的时长达到预设时长时,将部分队列中的数据拷贝到其他队列中,并删除该部分队列。
第一接口模块112可以用于在接收待转发报文之后,将接收的待转发报文传递给LB,由LB根据当前各个队列的占用率来选取一个目标队列,并将待转发报文添加到该目标队列中。例如,可以选取当前占用率最小的队列作为该目标队列。
转发控制模块111可以从目标队列中读取到该待转发报文,并进行后续的转发处理。
可选地,转发控制模块111可以在I/O通道中的一个队列被创建时,创建与该队列对应的一个线程,该线程用于读取该队列中的待转发报文,并根据转发表和映射表对读取的待转发报文进行转发处理。
请参照图5,其中示出了本实施例提供的一种交换服务器中的报文转发装置510与多个节点的交互示意图。其中,该多个节点为节点1、2、……、N(N为正整数),报文转发装置510包括转发控制模块511、接入控制模块512和I/O通道513,接入控制模块512维护有准入名单。
下面结合图5所示场景给出具体示例,以对本实施例提供的报文转发装置510的工作流程做进一步的阐述。首先对节点的接入验证过程进行举例说明。
接入控制模块512响应管理员的配置操作,向节点1发送对应的令牌x1,将节点1的元数据与令牌x1关联并存储到准入名单中。
节点1安装代理程序AGENT-1,AGENT-1包括websocket客户端和buffer。节点1在AGENT-1中配置令牌x1及交换服务器100的地址(如,公网地址)。
代理程序AGENT-1根据交换服务器500的地址向交换服务器500发送基于HTTPS协议的接入请求r1,接入请求r1包括节点1的元数据和令牌x1。
交换服务器500通过接入控制模块512接收接入请求r1,判定接入请求r1中的元数据和令牌x1存在于准入名单中,因此判定节点1通过接入验证,创建接口实例,该接口实例可以为上文中的接口模块。
接入控制模块512为创建的接口实例分配接口标识PORT-1,接口实例PORT-1包括websocket服务端和buffer,生成一条包括接口标识PORT-1和接口实例PORT-1的结构体的映射表项,例如<key:PORT-1,value:PORT>,并存储到映射表(PORT-MAP)中。
接入控制模块512为AGENT-1所在的节点1分配节点标识NODE-1,生成一条包括节点标识NODE-1和接口标识PORT-1的转发表项,例如<key:NODE-1,value:PORT-1>,并存储到转发表(SWITCH-MAP)中。
接入控制模块512将接口实例PORT-1的websocket服务端监听的TCP(TransmissionControlProtocol,传输控制协议)端口的端口号携带在HTTPS响应消息中返回给AGENT-1。AGENT-1中的websocket客户端通过该TCP端口与接口实例PORT-1中的websocket服务端建立websocket连接,该websocket服务端与节点1的地址关联。
此时,尚未有其他节点接入交换服务器500,接入控制模块512可以不必向其他节点发送节点接入通知。
对于其他节点2至n,可以参照上述的接入验证过程进行验证。
对应地,节点2安装有代理程序AGENT-2,AGENT-2包括websocket客户端和buffer,节点2的节点标识为NODE-2。报文转发装置510包括接口实例PORT-2,其包括buffer以及与AGENT-2的websocket客户端建立有websocket连接的websocket服务端,该websocket服务端与节点2的地址关联。
节点N安装有代理程序AGENT-N,AGENT-N包括websocket客户端和buffer,节点N的节点标识为NODE-N。报文转发装置510包括接口实例PORT-N,其包括buffer、与AGENT-N的websocket客户端建立有websocket连接的websocket服务端,该websocket服务端与节点N的地址关联。
其中,当接口实例PORT-i(2≤i≤N,i为正整数)中的websocket服务端与节点i的AGENT-i中的websocket客户端建立websocket连接之后,接入控制模块512可以通过不同方式向其他节点发送节点接入通知。
在一种方式中,接入控制模块512可以采用多播方式向节点i之外的、接入交换服务器500的其他所有节点发送节点接入通知A。
在这种情况下,节点接入通知A的目的节点标识包括节点i之外的、接入交换服务器500的其他所有节点的标识。接入控制模块512将节点接入通知A传递给I/O通道513中的LB,LB将节点接入通知传递给队列占用率最少的队列,如Q1。
接入控制模块512中与队列Q1对应的线程Th1从Q1读取到节点接入通知A,针对节点接入通知A中的每个目的节点标识,根据转发表确定该目的节点标识对应的接口标识,并根据映射表确定该接口标识对应的接口实例,再将节点接入通知A写入所确定的接口实例的buffer中,以通过该接口实例的websocket服务端发送出去。
在另一种方式中,接入控制模块512可以采用广播方式向接入交换服务器500的所有节点发送节点接入通知B。
在此情况下,节点接入通知B的目的节点标识可以为预设字符,例如是全为0的字符。类似地,节点接入通知B被LB添加到某一队列中,转发控制模块511中的相应线程从该队列读取到节点接入通知B,识别出其目的节点标识为所述预设字符,则分别向所有接口实例的buffer写入该节点接入通知B,如此,可以实现向接入交换服务器500的所有节点发送节点接入通知B。
下面以节点1需要向节点2发送消息m2为例,对报文转发处理过程进行阐述。
节点1调用AGENT-1中websocket服务端的发送指令发送一有效荷载data,data包括消息m2、源节点标识NODE-1及目的节点标识NODE-2,data将被写入AGENT-1的buffer中,AGENT-1的websocket客户端读取buffer中的data,并利用websocket连接向接口实例PORT-1中的websocket服务端发送该data。
其中,该data被封装成目的地址为交换服务器500的地址的待转发报文d2,待转发报文d2到达接口实例PORT-1中的websocket服务端,该websocket服务端将待转发报文d2传递给I/O通道513的LB。
LB从已有队列Q1至Qm中确定一个占用率最小的目标队列,如Q1,将待转发报文d2写入目标队列Q1,转发控制模块511中的线程Th1从目标队列Q1读取到待转发报文d2,提取待转发报文d2的有效荷载data,从有效荷载data中识别出目的节点标识NODE-2,通过查找转发表确定节点标识NODE-2对应的接口标识PORT-2,通过查找映射表确定接口标识PORT-2对应的接口实例的结构体。通过该结构体,调用接口实例PORT-2中的websocket服务端的发送指令,发送有效荷载data。则,有效荷载data被写入接口实例PORT-2的buffer中,接口实例PORT-2中的websocket服务端从buffer中读取数据,并发送至关联的节点2的地址。
有效荷载data将到达节点2的AGENT-2中的websocket客户端,websocket客户端可以将有效荷载data传递给节点2。
对于其他任意两个节点间的通信,与上述流程类似,在此不再赘述。
在实际应用中,对于接入交换服务器的节点,可能在运行过程中与交换服务器断开连接。下面以节点N与交换服务器断开连接为例,对节点断开连接的处理过程进行阐述。
接入控制模块512在检测到AGENT-N中的websocket客户端与接口实例PORT-N中的websocket服务端之间的websocket连接断开时,生成一节点断开通知。
其中,节点断开通知可以是多播报文,即目的节点标识为除节点N之外的、当前接入交换服务器的其他所有节点的标识,在此情况下,对节点断开通知的转发处理流程与上述节点接入通知A类似。
节点断开通知还可以是广播报文,即目的节点标识为预设字符。在此情况下,对节点断开通知的转发处理流程与上述节点接入通知B类似。
在发送节点断开通知后,接入控制模块512还可以删除转发表中包含接口标识PORT-N的转发表项、映射表中包含接口标识PORT-N的映射表项,并删除接口实例PORT-N。
请参照图6,其中示出了本实施例提供的一种应用于交换服务器100的报文转发方法的流程示意图,该方法可以包括以下步骤。
步骤S601,接收待转发报文,所述待转发报文的目的地址为交换服务器的地址,所述待转发报文的有效荷载包括目的节点标识。
其中,待转发报文的有效荷载还可以包括源节点标识,步骤S601可以由上文所述的第一接口模块112执行。
步骤S602,从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系。
步骤S603,根据查找到的目标对应关系,查找与所述有效荷载中的所述目的节点标识对应的目的节点地址,向所述目的节点地址对应的目的节点发送所述有效荷载。
其中,步骤S602和步骤S603可以由上文描述的转发控制模块111执行。
可选地,在执行步骤S602之前,所述报文转发方法还可以包括以下步骤:
接收所述目的节点发送的接入请求,根据所述接入请求对所述目的节点进行接入验证;
若所述目的节点通过所述接入验证,创建至少包括网络套接字websocket对象的接口实例,通过所述websocket对象与所述目的节点建立websocket连接;
存储所述接口实例与所述目的节点标识的第一关联关系以及所述接口实例中的所述websocket对象与所述目的节点地址的第二关联关系;其中,所述目标对应关系包括所述第一关联关系和所述第二关联关系。
在所述目标对应关系包括第一关联关系和第二关联关系的情况下,步骤S603可以通过以下子步骤实现:
根据所述第一关联关系查找与所述目的节点标识对应的所述接口实例;
调用所述接口实例中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址。
其中,与目的节点标识对应的接口实例可以为上述的第二接口模块113。
可选地,所述接口实例可以包括缓冲组件。在此情况下,调用所述接口实例中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址的步骤,可以通过以下流程实现:
调用所述发送指令,将所述待转发报文写入所述接口实例的所述缓冲组件中,触发所述websocket对象依次读取所述缓冲组件中的报文,并根据所述第二关联关系将读取的报文发送给关联的所述目的节点地址。
可选地,交换服务器100还可以包括至少一个队列。在此情况下,如图7所示,本实施例提供的报文转发方法还可以包括以下步骤:
步骤S604,从所述至少一个队列中查找占用率最小的目标队列,将接收的所述待转发报文添加到该目标队列中。
其中,所述队列的占用率为该队列中当前的数据量与该队列的数据容量的比值。步骤S604可以由上述的负载均衡器在步骤S601之后执行,步骤S604的描述可以参照前文对负载均衡器的描述。
步骤S605,从所述目标队列中获取所述待转发报文。
其中,步骤S605在步骤S602之前执行。
可选地,本实施例提供的报文转发方法还可以包括以下针对队列的管理步骤:
若每个队列的占用率达到第一设定比率,创建新的队列;和/或,
若所有队列的总占用率低于第二设定比率的时长达到预设时长,将部分队列中的报文转移至其他队列中,并删除该部分队列。
上述针对队列的管理步骤可以由上述的负载均衡器执行,详细描述可以参照前文对负载均衡器的描述。
可选地,本实施例中,所述报文转发方法还可以包括:
在通过所述websocket对象与所述目的节点建立websocket连接之后,向除所述目的节点之外的、接入所述交换服务器的其他所有节点发送节点接入通知,所述节点接入通知包括所述目的节点标识及所述目的节点的元数据;或者,
当目的节点与所述交换服务器之间的websocket连接断开时,向除该目的节点之外的、接入所述交换服务器的其他所有节点发送节点断开通知,所述节点断开通知包括所述目的节点标识;删除所述目标对应关系,删除所述接口实例。
关于上述步骤的描述,可以参照前文对相应模块的详细描述。
综上所述,本公开提供的报文转发方法、装置及交换服务器,交换服务器记录节点的标识和该节点的地址的对应关系,从节点发送的待转发报文提取有效荷载,根据有效荷载中的目的节点标识查找目的节点标识与目的节点地址的目标对应关系,根据查找到的目标对应关系,查找与有效荷载中的目的节点标识对应的目的节点地址,向目的节点地址对应的目的节点发送有效荷载。通过上述设计,需要通信的两个节点可以不必知道对方的外部通信地址,避免了复杂的NAT穿透过程。
以上所述仅为本公开的选定实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种报文转发方法,其特征在于,应用于交换服务器,所述交换服务器存储有节点的标识与该节点的地址的对应关系,所述方法包括:
接收待转发报文,所述待转发报文的目的地址为所述交换服务器的地址,所述待转发报文的有效荷载包括目的节点标识;
从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系,其中,所述目标对应关系包括第一关联关系和第二关联关系,所述第一关联关系表征接口实例与所述目的节点标识之间的对应关系,所述第二关联关系表征所述接口实例中的websocket对象与所述目的节点地址之间的对应关系;
根据所述第一关联关系查找与所述目的节点标识对应的所述接口实例;
调用所述接口实例中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址。
2.根据权利要求1所述的方法,其特征在于,在根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系之前,还包括:
接收所述目的节点发送的接入请求,根据所述接入请求对所述目的节点进行接入验证;
若所述目的节点通过所述接入验证,创建至少包括网络套接字websocket对象的接口实例,并存储所述接口实例与所述目的节点标识的第一关联关系;
通过所述websocket对象与所述目的节点建立websocket连接,并存储所述接口实例中的所述websocket对象与所述目的节点地址的第二关联关系。
3.根据权利要求1所述的方法,其特征在于,所述接口实例包括缓冲组件;所述调用所述接口实例中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址,包括:
调用所述发送指令,将所述待转发报文写入所述接口实例的所述缓冲组件中,触发所述websocket对象依次读取所述缓冲组件中的报文,并根据所述第二关联关系将读取的报文发送给关联的所述目的节点地址。
4.根据权利要求3所述的方法,其特征在于,所述交换服务器还包括至少一个队列;所述方法还包括:
在接收待转发报文之后,从所述至少一个队列中查找占用率最小的目标队列,将接收的所述待转发报文添加到该目标队列中,其中,所述队列的占用率为该队列中当前的数据量与该队列的数据容量的比值;在从所述待转发报文中提取所述有效荷载之前,从所述目标队列中获取所述待转发报文。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若每个所述队列的占用率达到第一设定比率,创建新的队列;和/或,
若所有所述队列的总占用率低于第二设定比率的时长达到预设时长,将部分所述队列中的报文转移至其他所述队列中,并删除部分所述队列。
6.根据权利要求2-5中任意一项所述的方法,其特征在于,还包括:
在通过所述websocket对象与所述目的节点建立websocket连接之后,向除所述目的节点之外的、接入所述交换服务器的其他所有节点发送节点接入通知,所述节点接入通知包括所述目的节点标识及所述目的节点的元数据;或者,
当所述目的节点与所述交换服务器之间的websocket连接断开时,向除该目的节点之外的、接入所述交换服务器的其他所有节点发送节点断开通知,所述节点断开通知包括所述目的节点标识;删除所述目标对应关系,删除所述接口实例。
7.根据权利要求1-5中任意一项所述的方法,其特征在于,所述待转发报文的有效荷载还包括源节点标识。
8.一种报文转发装置,其特征在于,应用于交换服务器,所述交换服务器存储有节点的标识与该节点的地址的对应关系,所述装置包括:
第一接口模块,用于接收待转发报文,所述待转发报文的目的地址为所述交换服务器的地址,所述待转发报文的有效荷载包括目的节点标识;
转发控制模块,用于:
从所述待转发报文中提取所述有效荷载,根据所述有效荷载中的所述目的节点标识查找所述目的节点标识与目的节点地址的目标对应关系,其中,所述目标对应关系包括,第一关联关系和第二关联关系,所述第一关联关系表征接口实例与所述目的节点标识之间的对应关系,所述第二关联关系表征所述接口实例中的websocket对象与所述目的节点地址之间的对应关系;
根据所述第一关联关系查找与所述目的节点标识对应的所述接口实例;
调用所述接口实例中的所述websocket对象的发送指令,根据所述第二关联关系将所述有效荷载发往所述websocket对象关联的所述目的节点地址。
9.一种交换服务器,其特征在于,包括处理器及机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令被执行时促使所述处理器实现权利要求1-7中任意一项所述的方法。
10.一种机器可读存储介质,其特征在于,其上存储有机器可执行指令,该机器可执行指令被执行时实现权利要求1-7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911011778.1A CN110809033B (zh) | 2019-10-23 | 2019-10-23 | 报文转发方法、装置及交换服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911011778.1A CN110809033B (zh) | 2019-10-23 | 2019-10-23 | 报文转发方法、装置及交换服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110809033A CN110809033A (zh) | 2020-02-18 |
CN110809033B true CN110809033B (zh) | 2022-07-12 |
Family
ID=69488952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911011778.1A Active CN110809033B (zh) | 2019-10-23 | 2019-10-23 | 报文转发方法、装置及交换服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110809033B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844878B (zh) * | 2022-03-29 | 2023-04-11 | 宁德星云检测技术有限公司 | 一种基于WebSocket的锂电池测试系统通讯方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127758A (zh) * | 2006-08-16 | 2008-02-20 | 华为技术有限公司 | 移动节点的ip地址获取方法与获取系统 |
CN101296238A (zh) * | 2008-06-17 | 2008-10-29 | 杭州华三通信技术有限公司 | 一种保持安全套接层会话持续性的方法及设备 |
CN101594297A (zh) * | 2008-05-30 | 2009-12-02 | 当代天启技术(北京)有限公司 | 控制网络中数据寻址和转发的交换服务器、系统和方法 |
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
CN102098349A (zh) * | 2009-12-09 | 2011-06-15 | 中兴通讯股份有限公司 | 地址映射方法及接入业务节点 |
CN102684969A (zh) * | 2011-03-18 | 2012-09-19 | 日电(中国)有限公司 | Vpn节点及其标识解析代理及方法、和vpn服务器 |
CN102752413A (zh) * | 2012-07-02 | 2012-10-24 | 杭州华三通信技术有限公司 | Dhcp服务器选择方法和网络设备 |
EP2787693A1 (en) * | 2013-04-05 | 2014-10-08 | Telefonaktiebolaget LM Ericsson (PUBL) | User plane traffic handling using network address translation and request redirection |
CN107370727A (zh) * | 2017-06-22 | 2017-11-21 | 北京邮电大学 | 一种ZigBee网络中节点设备触发方法及装置 |
-
2019
- 2019-10-23 CN CN201911011778.1A patent/CN110809033B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127758A (zh) * | 2006-08-16 | 2008-02-20 | 华为技术有限公司 | 移动节点的ip地址获取方法与获取系统 |
CN101594297A (zh) * | 2008-05-30 | 2009-12-02 | 当代天启技术(北京)有限公司 | 控制网络中数据寻址和转发的交换服务器、系统和方法 |
CN101296238A (zh) * | 2008-06-17 | 2008-10-29 | 杭州华三通信技术有限公司 | 一种保持安全套接层会话持续性的方法及设备 |
CN102098349A (zh) * | 2009-12-09 | 2011-06-15 | 中兴通讯股份有限公司 | 地址映射方法及接入业务节点 |
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
CN102684969A (zh) * | 2011-03-18 | 2012-09-19 | 日电(中国)有限公司 | Vpn节点及其标识解析代理及方法、和vpn服务器 |
CN102752413A (zh) * | 2012-07-02 | 2012-10-24 | 杭州华三通信技术有限公司 | Dhcp服务器选择方法和网络设备 |
EP2787693A1 (en) * | 2013-04-05 | 2014-10-08 | Telefonaktiebolaget LM Ericsson (PUBL) | User plane traffic handling using network address translation and request redirection |
CN107370727A (zh) * | 2017-06-22 | 2017-11-21 | 北京邮电大学 | 一种ZigBee网络中节点设备触发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110809033A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113115480B (zh) | 地址信息发送方法、获取方法、装置、设备及介质 | |
US11075948B2 (en) | Method and system for virtual machine aware policy management | |
US9438679B2 (en) | Method, apparatus, name server and system for establishing FCOE communication connection | |
EP2993838A1 (en) | Method for setting identity of gateway device and management gateway device | |
CN111327668B (zh) | 网络管理方法、装置、设备和存储介质 | |
US20170214691A1 (en) | Methods, systems, and computer readable media for remote authentication dial-in user service (radius) topology hiding | |
KR20150076041A (ko) | 가상 사설 클라우드망에서 사설 ip 주소 기반의 멀티 테넌트를 지원하기 위한 시스템 및 그 방법 | |
WO2022033345A1 (zh) | 一种pdu会话建立方法、终端设备和芯片系统 | |
CN107094110B (zh) | 一种dhcp报文转发方法及装置 | |
CN113810349B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
US20110035413A1 (en) | Diameter bus communications between processing nodes of a network element | |
CN113709250B (zh) | 一种基于订阅发送模式的跨域用户数据同步方法 | |
CN112437127A (zh) | 报文处理方法、装置以及负载均衡器和服务器 | |
CN113364741A (zh) | 一种应用访问方法及代理服务器 | |
EP2218214B1 (en) | Network location service | |
CN104488240B (zh) | 一种会话管理方法、地址管理方法及相关装置 | |
CN111953806B (zh) | 一种链路选择方法、装置、计算机设备及计算机存储介质 | |
US11363060B2 (en) | Email security in a multi-tenant email service | |
US10069715B2 (en) | Method for deploying resource in cloud computing environment | |
CN109561004B (zh) | 报文转发方法、装置及交换机 | |
CN109120556B (zh) | 一种云主机访问对象存储服务器的方法及系统 | |
EP2165502B1 (en) | Lawful interception of data of a roaming mobile node | |
CN110809033B (zh) | 报文转发方法、装置及交换服务器 | |
CN115379010A (zh) | 一种容器网络构建方法、装置、设备及存储介质 | |
WO2013129207A1 (ja) | 移動体通信システム、通信システム、ノード、フロー制御ネットワーク及び通信制御方法 |
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 |