CN110832824B - 节点路径上的双向数据包交换的方法 - Google Patents

节点路径上的双向数据包交换的方法 Download PDF

Info

Publication number
CN110832824B
CN110832824B CN201880028407.1A CN201880028407A CN110832824B CN 110832824 B CN110832824 B CN 110832824B CN 201880028407 A CN201880028407 A CN 201880028407A CN 110832824 B CN110832824 B CN 110832824B
Authority
CN
China
Prior art keywords
flow
packet
node
data packet
server
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
CN201880028407.1A
Other languages
English (en)
Other versions
CN110832824A (zh
Inventor
G·菲尔德
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.)
Network Next Generation Co
Original Assignee
Network Next Generation Co
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
Priority claimed from US15/656,454 external-priority patent/US9979550B1/en
Application filed by Network Next Generation Co filed Critical Network Next Generation Co
Publication of CN110832824A publication Critical patent/CN110832824A/zh
Application granted granted Critical
Publication of CN110832824B publication Critical patent/CN110832824B/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • 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
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/16Flow control; Congestion control in connection oriented networks, e.g. frame relay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/045Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply hybrid encryption, i.e. combination of symmetric and asymmetric encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种节点系统,实现了用于节点中继通信的方法。接收对包括流中的地址和私有密钥的流条目的描述。将该流条目和该私有密钥存储在索引到流ID的数据库中。接收数据包,该数据包包括验证码以及包括数据包序列信息和流ID的数据包数据。在与该数据包的该流ID对应的流条目的该数据库中执行查找。根据该查找的结果,忽略该数据包或者将该数据包转发到该流中的该地址。

Description

节点路径上的双向数据包交换的方法
相关申请的交叉引用
本申请要求2017年5月9日提交的美国临时专利申请号62/503,808的优先权权益,该申请的全部内容通过引用全部并入本文。
本申请还要求2017年6月26日提交的美国临时专利申请号62/524,705的优先权权益,该申请的全部内容通过引用并入本文。
本申请是2017年7月21日提交的Glenn Alexander Fiedler的美国专利申请15/656,454的部分继续申请,该申请的全部内容通过引用并入本文,美国专利申请号15/656,454要求2017年2月22日提交的美国临时专利申请号62/462,224的优先权权益,该申请的全部内容通过引用并入本文。
技术领域
本公开的领域是网络通信。
背景技术
背景描述包括可用于理解本发明的信息。并不承认本申请中提供的任何信息都是现有技术,或与目前要求保护的本发明有关,或并不承认明确地或隐含地引用的任何公布是现有技术。
实时多人游戏通常通过以双向流动模式在互联网上发送例如作为用户数据报协议(UDP)数据包的不可靠无序数据包来进行操作,在该双向流动模式中,在从客户端到服务器以及从服务器到客户端的两个方向上以如每秒10个、20个、30个或60个数据包的某一速率发送数据包。
在客户端与服务器之间交换的数据包对延迟、抖动和/或数据包丢失极为敏感。统称为服务质量或“QoS”。
通常,客户端通过直接向服务器的IP地址发送和接收数据包而连接到专用服务器,但是这会使专用服务器容易受到分布式拒绝服务(DDoS)攻击,因为服务器的IP地址是公开的。
另外,当数据包通过公共互联网发送时,数据包在客户端与服务器之间所采取的路由不受客户端或服务器的直接控制。数据包采取最便宜的路由,而不是优化QoS的路由。
类似地,当通过互联网交换数据包时,如果数据包在客户端与服务器之间采取的路由降级或者更好的路由变得可用,则客户端或服务器将无法调整数据包在客户端与服务器之间采取的路由。
因此,需要将客户端与专用服务器连接的改进方法,该方法不公开服务器的IP地址,并且提供对数据包在客户端与服务器之间所采取的路由的某种程度的控制。
附图说明
图1示出了向匹配器(matchmaker)报告信息的专用服务器。
图2示出了将报告信息中继到主服务器。
图3示出了请求连接到专用服务器的客户端。
图4示出了将一系列流路返回客户端的主服务器。
图5A示出了流路。
图5B示出了流令牌。
图6示出了向专用服务器发送请求数据包的客户端。
图7示出了响应于从该客户端接收的请求数据包而发送到客户端的响应数据包。
图8A示出了中继器的高速缓存。
图8B示出了中继器的高速缓存中的条目数据。
图9A示出了服务器的高速缓存。
图9B示出了服务器的高速缓存中的令牌数据。
图10示出了请求更新的流路的客户端。
图11示出了向客户端发送更新的流路的主服务器。
图12示出了从客户端传递到服务器的更新的路由的请求数据包,同时为有效载荷数据包保留现有路由。
图13示出了响应于从客户端接收的更新的请求数据包而发送到客户端的响应数据包。
图14示出了根据本公开的方面的会话令牌。
图15示出了根据本公开的一个方面的可以用于实现节点中继通信方法的系统。
具体实施方式
以下讨论提供了本发明主题的示例性实施方式。尽管每个实施方式代表发明元素的单个组合,但是发明主题被认为包括所公开元素的所有可能的组合。因此,如果一个实施方式包括元素A、B和C,并且第二实施方式包括元素B和D,那么即使没有明确公开,本发明主题也被认为包括A、B、C或D的其他剩余组合。
除非上下文另有明确指示,如在本申请中的描述和随后的整个权利要求中所使用的“一”、“一个”和“所述”的含义包含复数个参照对象。另外,除非上下文另有明确指示,如本申请的描述中所使用的“在……中”的含义包含“在……中”和“在……上”。
另外,如本申请中所使用的并且除非上下文另有规定,术语“联接到”旨在包括直接联接(其中彼此联接的两个元件彼此接触)和间接联接(其中至少一个附加元件位于两个元件之间)。因此,同义地使用术语“联接到”和“与……联接”。
在一些实施方式中,用于描述和要求本发明的某些实施方式的表示成分、特性(诸如浓度、反应条件等)的量的数值在一些情况下应理解为被术语“约”修饰。因此,在一些实施方式中,在书面描述和所附权利要求书中阐述的数值参数是可以根据特定实施方式所试图获得的期望性质而变化的近似值。在一些实施方式中,应根据所报告的有效位的数量且通过应用一般的舍入技术来解释数值参数。虽然阐述本发明的一些实施方式的广泛范围的数值范围和参数是近似值,但是尽可能精确地报告了在特定示例中阐述的数值。在本发明的一些实施方式中呈现的数值可以含有由在它们的相应试验测量中发现的标准偏差必然产生的某些误差。此外,并且除非上下文有相反的指示,否则本申请中提出的所有范围应解释为包括其端点,并且开放范围应解释为仅包括商业实用性的值。类似地,除非上下文有相反的指示,否则所有值的列表都应视为包括中间值。
应当注意,针对计算机的任何语言应被理解为包括计算设备的任何适当组合,包括服务器、接口、系统、数据库、代理、对等体、引擎、控制器或者单独或共同运行的其它类型的计算设备。应当理解,计算设备包括处理器,该处理器被配置成执行存储在有形、非暂时性的计算机可读存储介质(例如,硬盘驱动器、固态驱动器、RAM、闪存、ROM等)上的软件指令。软件指令优选地配置计算设备以提供如以下关于公开的装置所讨论的角色、职责或其它功能。在特别优选的实施方式中,各种服务器、系统、数据库或接口使用标准化协议或算法来交换数据,标准化协议或算法可能基于HTTP、HTTPS、AES、公共-私有密钥交换、web服务应用程序接口(API)、已知的金融交易协议或其他电子信息交换方法。优选地在数据包交换网络、互联网、LAN、WAN、VPN或其他类型的数据包交换网络上进行数据交换。以下描述包括可用于理解本发明的信息。并不承认本申请中提供的任何信息都是现有技术或与目前要求保护的本发明有关,或并不承认明确地或隐含地引用的任何公布是现有技术。
本发明的主题包括经由流路连接两台计算机使得两台计算机都无法知道另一台的IP地址的系统和方法。预期可以在在线游戏领域中将本发明的主题实现为一种保护措施,以确保没有客户端(例如游戏玩家)能够知道专用服务器(例如游戏托管服务器)的IP地址。
为了确保客户端无法知道服务器的身份或位置(例如,IP地址和端口),至少一个中继器可以实现为媒介以促进数据包交换。通过在客户端与服务器之间定位中继器,客户端只需要知道它必须将数据包发送到中继器,并且中继器进而知道它从客户端接收数据包并将数据包发送到服务器。服务器以相同的方式仅知道它从中继器接收数据包,并且进而将数据包发送到中继器。
包括附加中继器可能是有利的。在包括多于一个中继器的系统中,中继器、客户端和服务器都可以称为“节点”。最终目标是使客户端与服务器之间能够经由流路进行数据包交换,以这种方式使得客户端永远不知道服务器的IP地址和端口,同时还根据某种指标优化路由。
更具体地,通过在公共互联网上定位路由以在其间“中继”,本发明主题的实施方式在客户端与专用服务器之间提供优化的路由。可以优化路由以例如根据需要减少延迟、减少数据包丢失或者改善任何其它QoS(服务质量)指标。只要客户端与服务器之间存在多个中继器路由,并且每个中继器路由具有不同的特性,就可以选择最佳路由。这类似于诸如谷歌地图、苹果地图、Waze等的路线查找软件,因为期望的最终结果是选择并建立到达目的地的最快路线。
本发明主题的实施方式还通过向与专用服务器通信的客户端隐藏专用服务器的IP地址来提供DDoS保护。这使得不可能在传统的DDoS攻击中攻击专用服务器。实施方式还提供了在客户端继续与专用服务器交换数据包的同时动态地改变路由的能力。例如,如果更好的路由变得可用,或者如果当前路由具有沿途受到DDoS攻击的中继器,则通过动态改变路由,而无需停止在现有路由上的客户端与服务器之间的数据包交换,客户端的会话(例如,游戏会话)即使它已动态调整其路由也能够在专用服务器上继续不中断。
本发明主题的实施方式还提高了安全性。恶意的第三方无法劫持本发明主题的中继器以在其间发送数据包。本发明的主题使得系统拒绝不源自有效客户端或服务器的数据包变得不重要。
图1和图2示出了几种背景轮询操作。专用服务器{s1,...,sj}(例如,在诸如私人云(例如,数据中心或“裸金属”)的数据中心中运行的游戏的无头版本)的专用游戏服务器或者诸如谷歌计算、亚马逊EC2或微软Azure的公共云)定期(例如,以规则或不规则的间隔)向匹配器报告其IP地址、端口和公共密钥。图1示出了专用服务器s1 s2...sj,专用服务器s1s2...sj将它们的IP地址和端口以及它们的公共密钥报告104给匹配器101。报告(例如,以规则或不规则的间隔)定期进行。例如,每个专用服务器s1 s2...sj可以每1-5分钟向匹配器101报告104其IP地址和端口。还设想专用服务器s1 s2...sj可以以包括每1-30秒、30-59秒或者甚至每秒多次(例如2-10Hz)的其它间隔向匹配器101报告。定期报告104使基于队列的优化微服务体系结构能够处理大量专用服务器。
匹配器101维护该列表,并且根据需要对其进行更新(例如,如果专用服务器s1s2...sj停止报告,则匹配器101将该专用服务器从其维护的列表中移除,或者如果新的专用服务器使用新的IP地址和端口进行报告,那么匹配器会将该信息添加到其数据库中)。每个专用服务器的数据至少包含每个专用服务器的IP地址、端口和公共密钥,但是也可以包括其它标准,该标准可用于确定哪些专用服务器最能满足客户端的请求(例如,游戏版本号、当前连接到服务器的玩家数量、允许连接到服务器的玩家总数、服务器所在的区域、服务器当前正在运行的游戏模式(例如“夺旗(CTF)”或“死亡竞赛(Deathmatch)”)、当前连接到服务器的玩家的技能水平等)。
匹配器101可以由例如视频游戏公司来操作。匹配器101具有允许其与主服务器102通信的某种认证,否则该主服务器102不可公开访问。匹配器101的角色是接受客户端103玩游戏的请求,并找到专用服务器IP地址和端口的集合,以供客户端连接来满足该客户端的请求。这可以是例如运行客户端请求的相同游戏模式的服务器或者与客户端103处于相同区域、具有相同的游戏版本号和与客户端玩家具有相似技能的一组玩家或者任何其它标准的服务器。
出于本申请的目的,“流路”是将客户端链接到服务器的节点路径。“流”描述一旦建立就在“流路”上交换的数据包。
图2示出了向主服务器报告其IP地址和端口及其公共密钥的中继器r1,r2...ri。主服务器以这种能力执行102与匹配器101相同的功能:它存储IP地址和端口以及中继器r1,r2...ri的公共密钥,并且根据需要更新此信息。如同匹配器101,报告201(例如,以规则或不规则的间隔)定期进行。例如,每个中继器r1,r2...ri可以每1-5分钟向主服务器报告201该每个中继器的IP地址和端口。还设想中继器可以以包括每1-30秒、30-59秒或者甚至每秒多次(例如2-10Hz)的其它间隔向主服务器102报告201。定期报告201使基于队列的优化微服务体系结构能够处理大量中继器。
此外,设想中继器r1,r2...ri可以向主服务器102进行验证,以确保未授权的中继器无法向主服务器102注册。
至少,每个中继器的数据包括该中继器的IP地址+端口和公共密钥,但是也可以包含可用于创建基于不同标准(例如,每个中继器的经度/纬度、附近的中继器、到附近中继器的电流测量往返时间等)优化的流路的附加信息。
主服务器102的作用是在两个端点之间生成流路(例如,经由一系列中继器从客户端到专用服务器的路径)。可以通过算法标识节点路径,以试图标识基于一个或多个因素(例如,最小化延迟、最小化数据包丢失、最小化抖动或其任意组合)优化的流路。主服务器102可用于匹配器101使用例如REST API来查询。
在讨论建立流的过程之前,重要的是介绍本发明主题的实施方式所包括的不同的数据包类型。在本发明主题的实施方式中,通过网络发送的数据包以标识数据包类型的一个字节为前缀。存在四种数据包类型:0、1、2和3。数据包类型0指示请求数据包。数据包类型0的格式为[0][流令牌0,流令牌1,…,流令牌n-1],并且对应于以零字节为前缀的流路数据结构。数据包类型1指示响应数据包。数据包类型2指示从客户端传递到服务器的有效载荷数据包。数据包类型3指示从服务器传递到客户端的有效载荷数据包。数据包序列号仅适用于响应数据包和有效载荷数据包。数据包类型1具有以下形式:[1][数据包序列][流ID][流版本][哈希信息验证码(hmac)],并且数据包类型2和3具有以下形式:[1、2或3][数据包序列][流ID][流版本][hmac](有效载荷数据)。
客户端状态
首先,客户端可以以几种状态存在:
FLOW_CLIENT_STATE_INVALID_FLOW_ROUTE 2
FLOW_CLIENT_STATE_TIMED_OUT 1
FLOW_CLIENT_STATE_StopPED
FLOW_CLIENT_STATE_REQUESTED
FLOW_CLIENT_STATE_ESTABLISHED
客户端以“停止”状态(状态0)开始,并且当用户需要建立流时,用户将流路传递给客户端。客户端随后尝试使用其私有密钥和(它所知道的)主服务器的公共密钥来对流路中的第一个流令牌进行解密。如果流令牌无法解密、已过期或者由于任何原因无效,则客户端将进入无效的流路状态(状态-2)。否则,客户端进入“请求”状态(状态1)。当在这种状态下时,客户端以某个频率(例如10Hz)向第一中继器发送请求数据包。如果当处于“请求”状态时,客户端从第一中继器接收到“响应数据包”,则客户端转换到“已建立”状态(状态2)。当处于“已建立状态”时,客户端停止发送“请求数据包”。如果处于“请求”或“已建立”状态的客户端在一段时间(例如1-10秒)内未接收到来自第一中继器的数据包,则它超时并进入“超时”状态。
如果客户端处于“请求”状态或“已建立”状态,则用户可以从客户端向服务器发送有效载荷数据包,并且可能接收到从服务器向客户端发送的任何有效载荷数据包。这允许客户端在已确认完全建立流之前乐观地发送有效载荷数据包。此外,当客户端向服务器发送有效载荷数据包时,它会为每个数据包生成“流报头”,流报头具有数据包序列号、流ID、流版本和HMAC(例如,用来自流令牌的流私有密钥签名),并且随后将该数据包传递给第一中继器。随后,客户端增加数据包序列号,该序列号从0开始,并且随着向服务器发送每个数据包而增加1。流私有密钥是独立的对称密钥,用于保护流免受未经授权的数据包的侵害。可以针对由主服务器102授予的每个流随机地生成流私有密钥。
当客户端从服务器接收到有效载荷数据包时,它将它们的数据包序列号与重放保护缓冲区进行比较。如果已接收到数据包或者数据包太旧,则将其丢弃。这避免了称为“重放”攻击的一类协议级别的攻击,其中,在尝试破坏协议时,攻击者会重放已在系统中交换的有效数据包。这些概念中的许多将在下文更全面地描述。
中继器行为
实施方式之间的中继器可以具有一些共同行为。例如,当数据包通过中继器在网络上接收时,如果数据包中的第一字节为0,指示“请求数据包”,则在一些实施方式中,中继器将采取若干动作:(1)中继器将使用中继器私有密钥和主服务器公共密钥来对数据包中的第一流令牌(例如,与流路中的该中继器对应的令牌)进行解密;(2)如果流令牌无法解密,则中继器忽略该数据包;(3)中继器测试流令牌是否已期满,并且如果令牌期满则忽略数据包;(4)中继器在流令牌中搜索与流ID和流版本(例如,{流ID,流版本}元组)对应的流条目;(5)如果该条目已存在,则中继器将从前一节点接收到的最后一个数据包的时间戳更新为当前时间戳;(6)如果该条目在中继器的高速缓存中尚不存在,则中继器为此流创建新的条目,该条目由流ID和流版本(例如,{流ID,流版本}元组)索引,其中将从前一节点和当前节点最后接收的数据包的时间戳设置为当前时间戳,(6a)如果流令牌中的先前地址被标记为“无(none)”,则新的流条目中的先前地址和端口被设置为从其发送请求数据包的IP地址+端口,从而允许没有固定公共IP地址和端口的客户端(例如,网络地址转换(NAT)之后的客户端)参与流路;(7)在情况5和情况6两者中,中继器接收请求数据包,并且移除前缀字节(针对此数据包类型为0)和第一流令牌两者;(8)中继器随后在请求数据包的其余部分之前添加新的前缀字节0,并且将此修改的数据包传递到流路中的下一个节点(例如,下一个中继器,或者如果服务器是下一个则服务器)。
上文提到的中继器私有密钥可以为每个中继器随机生成。每个中继器私有密钥具有对应的公共密钥。中继器私有密钥允许主服务器102在仅知道该中继器的公用密钥的情况下将流令牌安全地传达到该中继器。在一些实现方式中,在每个流的末端处的节点(例如客户端和服务器),也可以具有它们自己的随机生成的私有密钥。在本文中有时使用的术语“节点私有密钥”通常指代用于中继器和其它类型的节点(诸如客户端和服务器)的私有密钥。
如果数据包的第一字节为1,指示“响应数据包”,则在一些实施方式中,中继器将采取若干动作:(1)它在数据包中查找与流ID和流版本(例如,{流ID,流版本}元组)对应的流条目;(2)如果不存在流条目,则中继器忽略该数据包;(3)中继器检查数据包的HMAC是否指示数据包数据(序列号、流ID、流版本)用流私有密钥(其在请求数据包中以流令牌发送给中继器)签名;(4)如果签名不匹配,则中继器忽略该数据包;(5)中继器针对从下一个节点接收到的数据包对重放保护缓冲区测试数据包序列号,并且如果已接收该数据包或者数据包是旧的(例如,数据包在重放保护缓冲区之外),则中继器忽略该数据包;(6)否则,该数据包是有效的,并且中继器在没有修改的情况下将该数据包转发到前一个节点(例如,如果该中继器是流路中的第一中继器,则前一个中继器或客户端);(7)将从条目中的下一个节点接收的最后数据包的时间戳更新为当前时间戳。
如果数据包的第一字节为2,指示“客户端到服务器数据包”,则在一些实施方式中,中继器将采取若干动作:(1)中继器在数据包中查找与流ID和流版本(例如,{流ID,流版本}元组)对应的流条目;(2)如果不存在流条目,则中继器忽略该数据包;(3)中继器检查数据包的HMAC是否指示数据包数据(序列号、流ID、流版本)用流私有密钥(其在请求数据包中以流令牌发送给中继器)签名;(4)如果签名不匹配,则中继器忽略该数据包;(5)针对从前一个节点接收到的数据包对重放保护缓冲区测试数据包序列号,并且如果已接收该数据包或者数据包是旧的(例如,在重放保护缓冲区之外),则中继器忽略该数据包;(6)否则,该数据包是有效的,并且中继器在没有修改的情况下将该数据包转发到下一个节点(例如,如果该中继器是服务器之前的最后一个中继器,则下一个中继器或服务器);并且(7)将从前一个节点接收的最后数据包的时间戳更新为当前时间戳。
如果数据包的第一字节为3,指示“服务器到客户端数据包”,则在一些实施方式中,中继器将采取若干动作:(1)中继器在数据包中查找与流ID和流版本(例如,{流ID,流版本}元组)对应的流条目;(2)如果不存在流条目,则中继器忽略该数据包;(3)中继器检查数据包的HMAC是否指示数据包数据(序列号、流ID、流版本)用流私有密钥(其在请求数据包中以流令牌发送给中继器)签名;(4)如果签名不匹配,则中继器忽略该数据包;(5)中继器针对来自下一个节点的数据包对重放保护缓冲区测试数据包序列号,并且如果已接收该数据包或者数据包是旧的(例如,在重放保护缓冲区之外),则忽略该数据包;(6)否则,该数据包是有效的,并且中继器在没有修改的情况下将该数据包转发到流路中的前一个节点(其是用于流中的第一中继器节点的前一个中继器或客户端);并且(7)将从下一个节点接收的最后数据包的时间戳更新为当前时间戳。
如果在任何时间中继器高速缓存中的条目在任何时间段(例如5秒)内未从前一个节点接收到数据包或者在一段时间内(例如5秒)未从下一个节点接收到数据包,则由{流ID,流版本}元组索引的流条目超时并且将其从中继器高速缓存中移除。此时,中继器停止在任一方向上转发由{流ID,流版本}元组标识的流的数据包。
服务器行为
如同中继器,实施方式之间的服务器可以具有共同行为。服务器侦听数据包并为客户端会话创建条目。条目由流ID索引,因此服务器可以在客户端会话使用较新的流版本时“更新”该客户端会话(例如,已为客户端建立更新的流路)。这允许从一个流动路径到另一个流动路径的无缝过渡。
如果数据包的第一字节为0,则它是“请求数据包”。在一些实施方式中,服务器将采取以下动作:(1)服务器将使用主服务器的服务器私有密钥和公共密钥来对数据包中的第一流令牌进行解密;(2)如果流令牌无法解密,则服务器忽略该数据包;(3)如果流令牌已期满,则服务器忽略该数据包;(4)否则,服务器查找令牌中具有流ID的条目;(5)如果条目已存在,并且流版本号相同,则服务器将在该条目中接收到最后一个数据包的时间戳更新为当前时间戳;(6)如果条目已存在,但是请求数据包中的流版本号大于条目值,则服务器跨新的流数据进行复制(例如,就像是新的客户端会话),并且将在该条目中接收到的最后一个数据包的时间戳更新为当前时间戳;(7)否则,服务器添加新的流条目,该流条目由流ID索引,其中将在该条目中接收到的最后一个数据包的时间戳设置为当前时间戳;(8)在上述(5、6和7)的所有情况下,服务器向前一中继器回复“响应数据包”,其中用于具有高位的该条目的数据包序列号的被设置为1(例如,以避免重复客户端到服务器数据包与服务器到客户端数据包之间的相同的现时值);并且(9)在服务器将响应数据包发送到前一节点后,用于该流条目的数据包序列号递增。
如果数据包的第一字节为2,则它是“客户端到服务器数据包”。在一些实施方式中,服务器将采取以下动作:(1)服务器在数据包中查找对应的流条目以获取流ID;(2)如果不存在流条目,则服务器忽略该数据包;(3)服务器根据与该流条目对应的流私有密钥对数据包中的HMAC进行检查以确保签名检查通过,并且如果不是,服务器则忽略该数据包;(4)服务器将数据包有效载荷传递给用户。这允许客户端跨流路将数据发送到服务器,就像将其直接连接到服务器一样。
用户可以通过指定应将数据包发送到的流ID来将有效载荷数据包从服务器发送到客户端。当服务器向客户端发送有效载荷数据包时,服务器会在其高速缓存中查找用于该流ID的条目。服务器随后使用来自该流条目的数据包序列号、流ID、流版本和HMAC(例如,使用来自流令牌的流私有密钥签名)来生成“流报头”,并且将该数据包传递到用于该流条目的流路中的前一个中继器。如同响应数据包,服务器将数据包序列号的高位设置为1,以确保数据包序列号(现时(nonce))值在用于特定流的客户端到服务器以及服务器到客户端数据包上是唯一的。服务器随后增加该流条目的数据包序列号,该序列号从0开始,并且随着每个数据包被发送给该流中的客户端而增加1。
如果在任何时间服务器的高速缓存中的流条目在一定时间内(例如5秒)未接收到数据包,则由流ID索引的条目超时并且从高速缓存中移除。此时,服务器停止能够接收从与该流ID对应的客户端发送的数据包,并且能够向与该流ID对应的客户端发送数据包。
以下讨论描述了这些客户端、服务器和中继器行为如何在服务器与客户端之间建立流的背景下操作。尽管下文的一些描述可能包括不同的细节,但是可以预期,可以在下文描述的过程或步骤中在必要时实现上文描述的任何行为。
图3示出了建立流路的第一步骤。在游戏的背景下,例如,匹配器101是游戏公司拥有的服务器,该服务器跟踪正在运行以托管游戏的所有专用服务器s1 s2...sj。如301所示,客户端对匹配器的请求包括一组参数(例如,游戏类型、玩家数量、游戏地图等)以及客户端的公共密钥。可以例如通过REST API来进行对匹配器101的客户端请求301。该请求301包括将客户端的公共密钥传递给匹配器。
因为匹配器101知道客户端的期望服务器参数,所以它可以标识满足客户端请求101的服务器s1 s2...sj。如302所示,在标识一组专用服务器s1 s2...sj的情况下,匹配器101可以创建路由请求并将其发送到主服务器102。
路由请求302包括客户端的公共密钥、以及满足客户端的初始请求301的公共密钥和专用服务器s1 s2...sj的IP地址和端口(请注意,路由请求中不需要多个专用服务器)。在此过程中,不需要知道客户端的IP地址。相反,主服务器102至少需要知道客户端的公共密钥,因为流路中的客户端的地址被设置为“无”,并且可以由第一中继器r1确定为从其发送请求数据包的地址。
主服务器102(例如,经由REST API)从匹配器101接收路由请求302,并且主服务器102根据一些标准(例如,最小的延迟、数据包丢失、抖动等)为由匹配器101标识的专用服务器s1 s2...sj中的每个标识最佳路由。如图4所示,主服务器102随后用从客户端到服务器401的路由阵列响应匹配器101,每个路由与路由请求中的专用服务器的列表中的一个服务器对应。在本发明的替代实施方式中,主服务器102可以通过将会话ID和会话令牌的阵列发送到匹配器101来响应匹配器的请求。每个会话令牌对应于标识的专用服务器,并且会话ID标识客户端的会话。在一些实施方式中,会话ID是数字(例如,64位数字、128位数字等)。尽管不是必需的,但每个会话ID优选地是唯一的。
每个流路具有流令牌。第一流令牌对应于客户端103。它使用客户端的公共密钥和主服务器的私有密钥进行加密。在客户端令牌之后但在服务器令牌之前的令牌(最后一个令牌)对应于中继器,并且这些令牌各自用主服务器的私有密钥和对应中继器的公共密钥进行加密。每个流路中的最后一个流令牌使用服务器的公共密钥和主服务器的私有密钥进行加密。随后通过匹配器101将加密的流令牌发送402到客户端103。
通过使主服务器将到服务器的路由阵列发送到匹配器而不是直接发送给客户端,客户端将永远无法访问关于主服务器的信息(例如IP地址)。这有助于保护主服务器(例如,该主服务器可以由除了拥有/操作匹配器的实体之外的单独实体拥有/操作)免受攻击。
在替代实施方式中,会话令牌用于维持安全连接。会话令牌的内容如图14所示。会话令牌包括两个子令牌:会话启动令牌和会话继续令牌。会话启动令牌包括私人信息和公共信息两者。私人信息是非对称加密的,从而该私人信息只能由主服务器创建,并且只能由对应的中继器读取。公共信息易于读取,但是经过签名后,收件人才能验证其真实性。会话启动令牌中的私人信息包括例如专用服务器IP地址和端口、会话序列号、会话ID、带宽上限和带宽下限。会话继续令牌中的公共信息包括例如中继器的IP地址和期满时间戳。会话继续令牌具有包括会话序列号和会话ID的私人信息。
图5A示出了流路的实施方式。在每个流路内是一系列流令牌,每个流令牌对应于特定节点。节点0始终对应于客户端,并且最后一个节点(例如,节点n-1)始终对应于专用服务器。两者之间的所有节点(例如,节点1至n-2)对应于中继器,并且按指示期望流路的顺序来进行排序。图5B示出了流令牌的实施方式,该流令牌包括:流ID、流版本、期满时间戳、前一个节点IP地址+端口、下一个节点IP地址+端口、以及流私有密钥。在一些实施方式中,流令牌中的前一个节点IP+地址+端口可以用“无”条目代替,从而指示与该令牌对应的中继器应当使用从其发送请求数据包的地址作为该流条目的前一个IP地址+端口。
图6和图7示出了如何可以经由任意数量的中继器r1 r2...ri在客户端103与服务器sj之间建立流。尽管附图中所示的实施方式包括三个中继器,但是可以设想,可以使用本发明主题的实施方式来实现任何数量的中继器。
图6和图7示出了对单个流路采取的动作。在到服务器sj的路由阵列包括多于一个路由的实施方式中,客户端迭代遍历每个流路直到建立流为止。例如,如果客户端103和服务器sj在一定时间(例如1秒)内无法使用第一流路建立流,则客户端103继续移动到第二流路以尝试建立第二流路包含的流,并且针对第三路由等进行同样的事情。在一些实施方式中,客户端103尝试同时使用所有流路来建立流,并且接受所建立的第一流。在其它实施方式中,客户端103可以尝试使用到服务器sj的路由的子组来建立流。类似地,在使用会话令牌的替代实施方式中,客户端103从匹配器101接收会话令牌,并且可以迭代遍历会话令牌的集合,从而尝试使用每个会话令牌来经由一个或多个中继器建立与专用服务器的连接。在成功经由一个或多个中继器与专用服务器建立连接后,客户端停止迭代遍历会话令牌。
如同本发明主题的每个节点(例如,客户端、中继器或服务器)具有公共密钥和私有密钥对,主服务器102也具有公共密钥和私有密钥对。每次创建流路时,该路由内的每个流令牌都使用主服务器的私有密钥和对应节点的公共密钥进行加密,该节点是客户端、中继器或服务器)。因此,每个流令牌仅可以由主服务器生成,并且无法由任何第三方修改,并且仅可以由为其生成的特定节点进行解密。
因此,601示出客户端103接收流路并对第一令牌进行解密,用请求数据包类型指示符、单个“0”字节的前缀来替换第一令牌,从而创建请求数据包。对于上下文,图6示出了存在“i”个中继器。这个记号用于指示在图6的上下文中,i是4到任意高数之间的任何数字,该数字仅受可以在现实世界中合理部署(例如,部署为物理或虚拟设备)的中继器的数量限制。因此,预期的是,在1与任意高数之间可以存在任意数量的中继器。
客户端103能够对流路中的第一流令牌进行解密,因为它是使用客户端的公共密钥和主服务器的私有密钥加密的。在第一令牌(例如,如图5A所示的与节点0对应的令牌)被数据包类型指示符(例如,0)代替的情况下,流路被转换成请求数据包。请求数据包因此包括少一个令牌,并且请求数据包中的第一令牌现在对应于节点1,该节点是流路中的第一中继器r1。客户端随后将一系列此请求数据包发送到流路中指示的第一中继器r1(并且其地址包含在客户端的流令牌中,作为下一个节点IP地址+端口),最终目的是建立流。在一些实施方式中,一系列请求数据包以某个频率(例如10Hz)被发送一段时间(例如5秒),而在其它实施方式中,不管时间发送一定量的请求数据包(例如100)。每当节点发送“一系列”数据包时,这都适用。
在利用会话令牌的实施方式中,分阶段建立连接。一旦客户端开始将数据包发送到中继器(例如,会话令牌中指示的中继器),客户端将经历两个数据包发送阶段。在第一数据包发送阶段中,客户端将数据包发送到以会话启动令牌为前缀的识别的中继器。这些数据包被发送一定时间(例如1-2秒、2-3秒、3-4秒、4-5秒、5-10秒、10-15秒)。在该时间量期满之后,在第二数据包发送阶段中,数据包以会话继续令牌而不是会话启动令牌为前缀。
如602所示,第一中继器r1(对应于流路径中的节点1)接收从客户端103发送的请求数据包中的至少一个。第一中继器r1在将第一令牌和现有的数据包类型指示符用请求数据包类型指示符(例如,在这种情况下为0,因为该数据包是请求数据包)替换之前对请求数据包的第一令牌进行解密。因为客户端103已经对原始的“第一”令牌进行解密并且将其替换为请求数据包类型指示符,所以新的“第一”令牌是第一中继器r1(并且仅第一中继器)可以解密的令牌,因为它使用第一中继器的公共密钥和主服务器的私有密钥进行加密。
每当流令牌将客户端103称为前一个节点时(例如,与流路中的第一中继器对应的流令牌),客户端将具有0地址类型(其中,类型0表示未知或“无”地址,类型1表示IPv4地址,并且类型2表示IPv6地址)。每当请求数据包进入并且对应的令牌具有先前类型0的地址时,它就会用从其发送请求数据包的地址+端口替换。因此,永远不需要将客户端的地址包括在中继器的令牌中。这主要用于处理客户端103位于网络地址转换(NAT)后的情况(例如,该客户端的公用IP地址+端口是由路由器动态生成的),但是可以相对于前一个节点的地址类型为0的任何节点扩展和使用该概念。这对于以下情况可以有用:沿路由的一些节点在专用网络上,并且事先不公开或不一定知道其公共IP地址。
第一中继器r1随后检查以查看该令牌中的流ID和流版本是否已经存在于中继器的高速缓存中,以及接下来将数据包发送到何处。如果流ID和流版本是新的,则流ID和令牌的其它内容将存储在中继器的高速缓存中。随后将修改的请求数据包传递到流路中的下一个节点。
在利用会话令牌的实施方式中。会话启动令牌在有限的时间内被加前缀在数据包上,以确保中继器接收到会话启动令牌。当中继器接收到以会话启动令牌为前缀的数据包时,中继器首先检查期满时间戳(其被存储为公共数据)。如果会话启动令牌已期满,则忽略该数据包。接下来,中继器运行签名和验证检查,以确保会话初始令牌是有效的并由主服务器生成。此后,它对会话启动令牌进行解密。
一旦解密,中继器随后检查以查看会话启动令牌中的会话ID是否已经存在于中继器的高速缓存中。中继器还可以检查会话的带宽上限/下限(如会话启动令牌中所示),并且如果带宽在任一方向上超出限制达一定时间(例如1-5秒、5-10秒、10-15秒或者另一指定时间),则终止会话。这样,即使客户端具有有效的会话令牌,该客户端仍无法DDoS专用服务器。
如果会话ID是新的,则会话ID和会话启动令牌的其它内容(例如,会话启动令牌中的全部或一些公共信息和私人信息)被存储在中继器的高速缓存中,随后将数据包发送到专用服务器或另一中继器。在将数据包发送到专用服务器或另一中继器之前,中继器将来自数据包的前缀(例如会话启动令牌)去除,并且将其替换为会话ID和会话序列号,随后将数据包传递到在会话令牌中标识的专用服务器sj或中继器ri
如果中继器发现会话启动令牌中的会话ID已存在于其高速缓存中(指示已经接收并记录了以会话启动令牌为前缀的数据包),则将该数据包传递给专用服务器或另一中继器。同样,在将数据包发送到专用服务器或另一服务器之前,中继器将来自数据包的前缀(例如会话启动令牌)去除,并且将其替换为会话ID和会话序列号,随后将数据包传递到在会话令牌中标识的专用服务器sj或中继器ri
如果中继器接收到以会话继续令牌为前缀的数据包,则中继器仅检查会话ID是否已存在于高速缓存中。如果会话ID存在于中继器的高速缓存中,则中继器会继续去除该前缀,并且将其替换为会话ID和会话序列号,随后将数据包传递到专用服务器。如果会话ID不存在于在高速缓存中,则忽略该数据包。
图8A示出了本发明主题的一些实施方式所需的中继器的高速缓存中的内容。每个中继器的高速缓存包括具有密钥和值的表,其中,密钥包括元组{流ID,流版本},并且与每个密钥对应的值包括条目。图8B示出了分为令牌数据和运行时数据的示例性条目数据。令牌数据包括:期满时间戳、前一个节点地址(例如IP地址和端口)、下一个节点地址(例如IP地址和端口)、以及流私有密钥。运行时数据包括:从前一个节点最后接收到数据包的时间、从下一个节点最后接收到数据包的时间、前一个节点重放保护、以及下一个节点重放保护。在下文更详细地讨论重放保护。
如603所示,在本公开的一些实施方式中,第二中继器r4(对应于流路的节点2)接收从节点1(即中继器r1)发送的请求数据包中的至少一个。第二中继器r4在再次将第一令牌和现有的数据包类型指示符用请求数据包类型指示符(例如,在这种情况下为0,因为该数据包是请求数据包)替换之前对请求数据包的第一令牌进行解密。因为第一中继器r1已经对先前的“第一”令牌进行解密并且将其替换为请求数据包类型指示符,所以新的“第一”令牌是第二中继器r4(并且仅第二中继器)可以解密的令牌,因为它使用第二中继器的公共密钥和主服务器的私有密钥加密。
第二中继器r4随后检查以查看该令牌中的流ID和流版本是否已经存在于中继器的高速缓存中,以及接下来将数据包发送到何处。如果流ID和流版本是新的,则流ID和令牌的其它内容将存储在中继器的高速缓存中。随后将修改的请求数据包传递到流路中的下一个节点。
如604所示,第三中继器r3(顺序地对应于原始流路中的节点2之后的下一个节点)接收从节点2(即中继器r4)发送的请求数据包中的至少一个。第三中继器r3在再次将第一令牌和现有的数据包类型指示符两者用请求数据包类型指示符(例如,在这种情况下为0,因为该数据包是请求数据包)替换之前对请求数据包的第一令牌进行解密。因为第二中继器r4已经对先前的“第一”令牌进行解密并且将其替换为请求数据包类型指示符,所以新的“第一”令牌将是第三中继器r3(并且仅第三中继器)可以解密的令牌,因为它使用第三中继器的公共密钥和主服务器的私有密钥加密。
第三中继器r3随后检查以查看该令牌中的流ID和流版本是否已经存在于中继器的高速缓存中,以及接下来将数据包发送到何处。如果流ID和流版本是新的,则流ID和令牌的其它内容将存储在中继器的高速缓存中。随后将修改的请求数据包传递到流路中的下一个节点。尽管在附图中第三中继器r3是最终的中继器,但是可以设想,可以根据需要使用尽可能多或者尽可能少的中继器来找到最佳流路。
最后,如605所示,专用服务器sj(对应于请求数据包中的最后一个节点)接收从节点3(即中继器r3)发送的请求数据包中的至少一个。专用服务器sj对请求数据包的第一令牌进行解密(现在它与只有服务器可以解密的流令牌对应,因为它已用主服务器的私有密钥和服务器的公共密钥加密),并且检查以查看该令牌中的流ID是否已经存在于专用服务器的高速缓存中。如果流ID是新的,则流ID和令牌的其它内容将存储在专用服务器的高速缓存中。服务器用发送到流路中的前一个节点的响应数据包来响应每个有效请求数据包。
出于安全原因,数据包类型1、2和3用流私有密钥“签名”,该流私有密钥包含在每个流令牌中,并且对于在涉及的每个节点(例如客户端、中继器和服务器)上,与该流对应的每个流条目都相同。这允许每个节点微不足道地拒绝由未授权方(例如,不知道流私有密钥的一方)发送的数据包。重要的是应当注意,响应和有效载荷数据包(例如,类型1、2和3)未加密,它们仅被签名。因此,任何人都可以读取内容,但是第三方无法为这些数据包类型生成或修改流报头中的流ID或流版本号。为了使这些实施方式起作用,数据包类型1、2和3必须具有数据包序列号(例如,仅使用一次的“现时”号)和密钥哈希运算消息认证码(HMAC)。为了避免多次使用数据包序列号,在客户端向服务器方向发送的类型1、2和3的数据包会将64位序列号的高位设置为0,并且在服务器向客户端方向发送的类型1、2和3的数据包会将64位序列号的高位设置为1。
在替代实施方式中,可以利用会话令牌来获得更安全的连接过程。在使用会话令牌的实施方式中,可以设想每个中继器具有对应的公共密钥/私有密钥对。这有助于主服务器对令牌进行加密,以确保令牌(例如,会话令牌)只能由主服务器为其生成令牌的中继器经由非对称加密来读取。这确保如果一个中继器受损,则不会破坏系统中所有其它中继器。在一些实施方式中,中继器需要证书来向主服务器注册,从而允许被破坏的中继器的证书被撤销。在一些实施方式中,中继器(例如,以规则或不规则的间隔,诸如5-10分钟或每小时或者该范围内的间隔的任何组合)自动生成新的公共密钥/私有密钥对。每次中继器生成新的公共密钥/私有密钥对,中继器会将其新的公共密钥传达到主服务器。
此外,在根据本公开的方面的利用会话令牌的实施方式中,可以设想主服务器还具有其自己的公共密钥/私有密钥对。主服务器将其公共密钥赋予中继器。因此,中继器可以对会话令牌进行解密但是无法写入该会话令牌。还可以设想,中继器可以对其与专用服务器交换的数据包进行签名、或者加密和签名。
与中继器很类似,专用服务器具有高速缓存来存储与不同的流有关的数据。这使得服务器能够跟踪特定流与特定客户端有关,依此类推。图9A示出了服务器如何能够存储与流有关的密钥和值的示例。密钥包括流ID,并且与每个密钥对应的值包括条目。如图9B所示,该条目具有令牌数据和运行时数据。令牌数据包括:期满时间戳、前一个节点IP地址+端口、流私有密钥、以及流版本。运行时数据包括接收到最后一个数据包的时间、数据包序列号、以及重放保护缓冲区。
如701所示,在专用服务器rj处接收到有效的请求数据包的情况下,专用服务器rj用响应数据包来回复前一节点r3。最终,响应数据包经由由请求数据包定义的相同的流路(但是向相反方向)转发回客户端103。应当理解,逆流路由不需要限于与顺流完全相同的路由,并且逆流可以采用任意数量的其它路由
如702所示,中继器r3从专用服务器sj接收响应数据包,该响应数据包使用流私有密钥(例如,包含在专用服务器从沿流路中的中继器组传递的、最终到达专用服务器sj的请求数据包解密的令牌数据内的流私有密钥)来进行签名。中继器r3通过流ID和流版本在其高速缓存中查找流条目,随后检查以查看签名是否有效。如果签名有效,则中继器将响应数据包转发到前一个中继器r4
如703所示,中继器r4从中继器r3接收使用流私有密钥签名的响应数据包。中继器r4通过流ID和流版本查找流条目,随后查看签名是否有效。如果签名有效,则中继器将响应数据包转发到前一个中继器r1
如704所示,中继器r1从中继器r4接收使用流私有密钥签名的响应数据包。中继器r1通过流ID和流版本查找流条目,随后查看签名是否有效。如果签名有效,则中继器将响应数据包转发到前一个节点(在这种情况下,是客户端或节点0)。
当客户端从第一中继器接收到响应数据包时,客户端进行相同的签名检查以确认所有前一个节点均已完成,并且如果该数据包通过,则客户端认为流“已建立”。一旦建立流,客户端就确认有效载荷数据包(例如,数据包类型2和3)可以在客户端与服务器之间跨流路进行交换。有效载荷数据包与响应数据包一样,其流报头由流私有密钥签名,并且可以按以下结构进行构造:[2或3][数据包序列][流ID][流版本][hmac](有效载荷数据)。
在一些实施方式中,客户端可以在从专用服务器接收响应数据包之前开始将有效载荷数据包发送到专用服务器。这可以有助于最小化建立流的延迟,因为在大多数情况下,请求数据包将在有效载荷数据包之前到达每个中继器和服务器,从而“穿孔(punching)”通过流路,使得在通常情况下可以将从客户端到服务器移动的数据包立即转发到下一个节点。
在一些情况下,由于任何数量的原因,流可能变得不可靠或变慢(例如,节点受到攻击、节点开始意外变慢、数据包丢失变得不可接受地高,等等)。在其它情况下,现有的流路可能仍然是高质量的,但是更好的流路变得可用。在这些情况下,可能需要更新流路。
如1001所示,当有效载荷数据包继续经由现有流路1003(使用与该流路对应的原始流ID和流版本号)在客户端与专用服务器之间交换时,客户端103可以从匹配器101请求更新的流路。该请求将客户端的流ID(例如,与将客户端链接到服务器的现有流对应的ID)和流版本传递给匹配器101,使得服务器将新的流路识别为属于同一逻辑客户端会话但是较新(例如,现有流的更新版本)。在使用会话令牌的实施方式中,重定位请求将客户的前一个会话令牌传递给匹配器。使用同一个会话令牌很重要,使得可以在客户端与客户端已连接的同一专用服务器之间维持连接。最终发生的仅有的改变是中继器的改变。
如1002所示,匹配器101随后将客户端的重定位请求以及流ID和流版本发送到主服务器102。如图11的1101中所示,主服务器102随后以具有相同流ID的新流路进行响应,但是以新流路(例如,不同的中继器组)进行响应,从而导致相同的专用服务器sj和递增的流版本,因此可以将该路由确定为现有流路的最新版本。类似地,在使用会话令牌的实施方式中,匹配器将包括前一个会话令牌的重定位请求发送到主服务器。主服务器以新的会话令牌进行响应,该会话令牌具有与前一个会话令牌相同的属性,除了新的会话令牌指向主服务器已选择的一个或多个新的中继器,并且会话序列号递增。
接下来,如1102所示,将更新的流路(或者在一些实施方式中,会话令牌)从匹配器101发送到客户端103。从那里开始,如图12所示,客户端103使用更新的流路来创建请求数据包1201,客户端使用该请求数据包进行与关于图6描述的相同的过程以建立新的流。一旦客户端103经由更新的流路1302从服务器sj接收到响应数据包,如图13所示(并且如关于图7更充分地描述的),则建立更新的流。同时,有效载荷数据包交换仅通过现有的流路继续进行,直到专用服务器sj接收到与在更新的路由1301中跨一组新的中继器r2、r3、r4发送的更新的流路对应的更新的请求数据包。在接收到请求数据包之后,专用服务器sj开始经由更新的流路1302向客户端103发送有效载荷数据包,并且仅从更新的流路接收用于该客户端会话的数据包,从而忽略从客户端103沿着前一个流路发送的任何数据包。客户端103就其本身而言,立即开始沿着更新的流路发送客户端到服务器的有效载荷数据包,而在过渡时期,它从现有或更新的路由中接受服务器到客户端的有效载荷数据包。一旦建立更新的路由,客户端将使前一个路由超时并且停止接受沿该路由发送给它的数据包,并且更新的路由已完全建立,并且到更新的流路的转换已完成。
在会话令牌流方法的情况下,如上所述,重定位请求的处理类似于使用会话令牌的连接启动。除了在有限的时间内将数据包发送到由会话启动令牌标识的中继器。在该时间量期满之后,在第二数据包发送阶段中,数据包以新的会话继续令牌而不是新的会话启动令牌为前缀。如果中继器接收到以会话继续令牌为前缀的数据包,则中继器运行签名和验证检查,以确保会话继续令牌是有效的并由主服务器生成,之后它对会话继续令牌进行解密。一旦解密,中继器随后检查以查看会话继续令牌中的会话ID是否已经存在于中继器的高速缓存中。
在会话令牌连接方法的情况下,如果会话ID存在于中继器的高速缓存中,则中继器继续去除前缀(例如,会话继续令牌),并且将其替换为会话ID和会话序列号,随后将数据包传递到专用服务器或者一个或多个其它中继器。如果会话ID不存在于在高速缓存中,则忽略该数据包。
根据本公开的令牌会话连接方法的各方面,经由新的中继器发送的数据包将全部具有递增的会话序列号,使得专用服务器可以将前一个会话序列号和新的会话序列号进行比较,以确定新的中继器比旧的中继器更新近。换句话说,每次中继器重定位发生时,会话序列号改变(例如,递增)。例如,在发生中继器重定位后,会话序列号可以从1计数到2。这允许专用服务器比较会话序列号,并且仅接受具有最新近会话序列号(即,在这种情况下为2)的数据包。
根据本公开的替代方面,客户端已连接以运行会话令牌连接方法的专用服务器将始终检查会话ID(例如,以知道哪个客户端是哪个)并且还检查会话序列号。专用服务器检查会话序列号很重要,这样在发生会话重定位的情况下,专用服务器将知道要侦听哪些数据包并且忽略哪些数据包。例如,尽管在经由新的中继器将连接重新定位到服务器的过程中,数据包仍将从客户端发送到专用服务器,但是一旦从新的中继器开始出现数据包,就可以忽略从旧的中继器接收到的数据包。专用服务器将基于会话序列号基于该数字的新近性(recency)知道保留哪些数据包。例如,如果会话序列号从1开始并且在会话重定位后递增到2,则专用服务器(尽管可能会从两个中继器接收数据包一段时间)将仅侦听最新近会话序列号为2的数据包。
可以设想,超时可能发生在沿流路的任何节点处。例如:如果客户端在一段时间内(例如1-10,并且优选地5秒)没有接收到来自第一中继器的任何数据包,则它超时;如果服务器在某个特定时间段内(例如1-10秒,并且优选地5秒)没有针对特定流接收到来自它之前的中继器的任何数据包,则它超时并且删除该流条目;并且如果中继器在某个时间段内(例如1-10,并且优选地5秒)没有从前一个节点接收到任何数据包,或者在某个时间段内(例如,1-10秒,并且优选地5秒)没有接收到来自下一个节点的任何先前数据包,则它超时并且删除该流条目。
在先前的段落中简要提到的重放保护阻止了攻击者记录有效的数据包,并且随后在对节点(例如,客户端、中继器站或服务器)的攻击中将该数据包重放。为了实现重放保护,可以采取若干措施。例如,可以使用从零开始并且随着每个发送的数据包递增的64位序列号发送加密和/或签名的数据包。序列号可以包括在数据包报头中,并且可以(例如,在解密或签名检查之前)由接收数据包的节点读取。此外,序列号可以用作数据包加密的现时值,因此对序列号的任何修改都将使加密签名检查失败。
重放保护因此如下操作。首先,接收数据包并将其存储在节点的具有设置的重放缓冲区大小的重放缓冲区中。重放缓冲区的大小决定了可以存储在重放缓冲区中的数据包的量(例如64-128、128-256、256-512、512-1028个数据包)。重放缓冲区大小是特定于实现方式的。在一些实施方式中,以典型的发送速率(20-60Hz)支持几秒钟价值的数据包。例如,对于大多数应用程序,每个客户端256个条目的重放缓冲区大小应当足够。接收到的每个数据包具有相关联的序列号。序列号早于所接收的最新近序列号(例如,与数据包一起接收)减去重放缓冲区大小的任何数据包都在接收器侧被丢弃。
例如,如果重放缓冲区大小为100,并且最新近接收的数据包的序列号为600,则将丢弃序列号为599或更小(即,比小于600减去100小1)的数据包。当到达的新的数据包具有比接收到的先前最新近的序列号更新近的序列号时,与新的数据包相关联的序列号在接收器侧上被更新并且新的数据包被接受。如果到达的数据包在最新近序列号的重放缓冲区大小之内,则仅当尚未接收到其序列号时才接受该数据包。如果接收的数据包的序列号已经被接收,则忽略该数据包。
实现方式
本公开的各方面可以在诸如服务器(例如,匹配器服务器、主服务器等)、个人计算机、网络中继器等的适当配置的计算机装置上实现。图15示出了根据本公开的一个方面的可以用于实现节点中继通信方法的系统1500的框图。装置1500通常可以包括处理器模块1501和存储器1505。
处理器模块1501可以包括一个或多个处理器内核。例如,如果将要实现并行处理,则处理器模块1501可以包括多个处理器内核。合适的多核处理器的示例包括但不限于双核处理器、四核处理器、具有主处理器和一个或多个协处理器的处理器架构、单元处理器架构等。并行处理数据的能力节省了宝贵的处理时间,从而产生更有效且简化的系统来进行情感识别。
存储器1505可以是集成电路的形式,例如RAM、DRAM、ROM等。存储器1505还可以是可由所有处理器模块访问的主存储器。在一些实施方式中,处理器模块1501可以具有与每个内核相关联的本地存储器。可以以可以在处理器模块上执行的处理器可读指令的形式将程序1503存储在主存储器1505中。程序1503可以被配置成实现如上所述以及在图1至图13中使用令牌在节点之间进行通信的方法。程序1503可以用任何适当的处理器可读语言编写,例如C、C++、JAVA、Assembly、MATLAB、FORTRAN以及许多其它语言。在程序数据数据包1507的操作期间,可以在将这些程序数据数据包发送到另一节点之前将其存储在存储器中。程序可以使数据库1508存储数据包数据,并且根据存储器1505中的流ID和/或流版本来对该存储数据包进行索引。此外,数据库可以存储用于对令牌进行解密的公共密钥或私有密钥。在系统1500是主服务器的一些实施方式中,存储器1505可以存储用于对令牌数据进行加密的私有密钥。此外,在主服务器的情况下,程序1503可以使系统使用网络接口1523为客户端设备绘制通过网络1550的流路,并且提供定义该流路的一系列流令牌。在程序1503的执行期间,程序代码和/或数据的部分可以被加载到处理器内核的存储器或本地存储库中,以便由多个处理器内核进行并行处理。
装置1500还可以包括众所周知的支持功能1509,诸如输入/输出(I/O)元件1511、电源(P/S)1513、时钟(CLK)1515、以及高速缓存1517。装置1500可以可选地包括诸如磁盘驱动器、CD-ROM驱动器、磁带驱动器等的大容量存储设备5119,以存储程序和/或数据。装置1500可以可选地包括显示单元1521,以促进装置与用户之间的交互。显示单元1521可以是显示文本、数字、图形符号或图像的阴极射线管(CRT)或平板屏幕的形式。用户接口1525可以包括键盘、鼠标、操纵杆、触摸屏、触摸板或者可以与图形用户接口(GUI)结合使用的其它设备。
包括处理器1501、存储器1505、支持功能1509、大容量存储设备1519、用户接口1525、网络接口1523、以及显示器1521的装置1500的部件可以经由一个或多个数据总线1527可操作地彼此连接。这些部件可以用硬件、软件或固件或者它们中的两个或多个的某种组合来实现。
因此,已经公开了建立用于双向数据包交换的流的特定组成和方法。然而,对于本领域技术人员显而易见的是,在不脱离本申请中的本发明概念的情况下,除了已描述的那些之外的更多修改是可能的。因此,除了本公开的精神之外,本发明主题不受限制。此外,在解释本公开时,所有术语应当以与上下文一致的最广泛的可能方式来解释。具体地,术语“包括”和“包含”应被解释为是指各元件、各部件或非排他方式的各步骤,指示可能存在或被利用的所标记的元件、部件或步骤,或者与未明确标记的其他元件、部件或步骤的组合。

Claims (36)

1.一种节点系统,包括;
处理器
存储器
其中,所述节点系统被配置成实现用于节点中继通信的方法,所述方法包括:
步骤a)接收对流条目的描述,所述流条目包括流中的地址和私有密钥;
步骤b)将所述流条目和所述私有密钥存储在索引到流ID的数据库中;
步骤c)接收数据包,其中,所述数据包包括验证码以及包括数据包序列信息和流ID的数据包数据;
步骤d)在与所述数据包的所述流ID对应的流条目的所述数据库中执行查找;和
步骤e)根据所述查找的结果,忽略所述数据包或者将所述数据包转发到所述流中的所述地址。
2.根据权利要求1所述的系统,其中,步骤e)包括:如果不存在流条目,则忽略所述数据包。
3.根据权利要求1所述的系统,其中,在步骤d)中,在所述数据库中执行查找还包括:检查所述数据包的所述验证码是否指示所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥来签名的。
4.根据权利要求3所述的系统,其中,步骤e)包括:如果所述数据包数据没有用与所述流条目中的所述私有密钥匹配的流私有密钥来签名,则忽略所述数据包。
5.根据权利要求3所述的系统,其中,步骤e)还包括:如果所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥签名的,则针对从下一个节点接收的数据包针对重放保护缓冲区测试数据包序列号;以及如果已经接收到所述数据包或者所述数据包是旧的,则忽略所述数据包。
6.根据权利要求5所述的系统,其中,步骤e)还包括:如果所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥签名的并且尚未收到所述数据包并且所述数据包不是旧的,则将所述数据包在没有修改的情况下转发到所述流中的前一个节点和/或下一个节点。
7.根据权利要求6所述的系统,其中,所述方法还包括:将接收到的最后一个数据包的所述流条目中的时间戳更新为当前时间戳。
8.根据权利要求6所述的系统,其中,从所述前一个节点接收所述数据包,并且所述系统将所述数据包在没有修改的情况下转发到所述下一个节点。
9.根据权利要求6所述的系统,其中,从所述下一个节点接收所述数据包,并且所述系统将所述数据包在没有修改的情况下转发到所述前一个节点。
10.根据权利要求6所述的系统,其中,所述方法还包括:步骤f)如果在预定时间段内没有从所述前一个节点和/或所述下一个节点接收到具有与所述流条目对应的所述流ID的数据包,则从所述数据库中移除所述流条目;以及停止转发具有与所移除的流条目对应的所述流ID的数据包。
11.根据权利要求1所述的系统,其中,所述数据库还被索引到流版本。
12.根据权利要求1所述的系统,其中,所述数据包包括流版本。
13.根据权利要求11所述的系统,其中,在所述数据库中执行所述查找包括使用所述数据包中的流版本进行查找。
14.根据权利要求1所述的系统,其中,步骤a)包括:从主服务器接收对所述流条目的所述描述。
15.根据权利要求1所述的系统,其中,步骤a)包括:从包含一个或多个流令牌的另一节点接收对数据包中的所述流条目的所述描述,每个流令牌包括所述流ID、流版本、所述流中的一个或多个其它节点的地址和端口信息、以及流私有密钥。
16.根据权利要求15所述的系统,其中,来自所述另一节点的所述数据包包括期满时间戳、前一个节点IP地址和端口、下一个节点IP地址和端口。
17.根据权利要求15所述的系统,其中,所述方法还包括:
尝试使用节点私有密钥和主服务器公共密钥来对来自所述另一节点的所述数据包中的第一流令牌进行解密;以及
通过移除所述第一流令牌来修改所述数据包,并且在对所述第一流令牌进行解密的所述尝试成功时将所产生的修改的数据包转发到所述第一流令牌中的下一个节点IP地址和端口。
18.一种非暂时性计算机可读介质,具有在其中实现的计算机可读指令,所述计算机可读指令被配置成在执行节点中继通信方法时实现所述节点中继通信方法,所述方法包括;
步骤a)接收对包括流中的地址和私有密钥的流条目的描述;
步骤b)将所述流条目和所述私有密钥存储在索引到流ID的数据库中;
步骤c)接收数据包,其中,所述数据包包括验证码以及包括数据包序列和流ID的数据包数据;
步骤d)在与所述数据包的所述流ID对应的流条目的所述数据库中执行查找;以及
步骤e)根据所述查找的结果,忽略所述数据包或者将所述数据包转发到所述流中的所述地址。
19.根据权利要求18所述的非暂时性计算机可读介质,其中,步骤e)包括:如果不存在流条目,则忽略所述数据包。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,在步骤d)处在所述数据库中执行查找还包括:检查所述数据包的所述验证码是否指示所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥来签名的,其中所述数据包数据的类型具有以下形式:序列号、流ID、流版本。
21.根据权利要求20所述的非暂时性计算机可读介质,其中,步骤e)包括:如果所述数据包数据没有用与所述流条目中的所述私有密钥匹配的流私有密钥来签名,则忽略所述数据包。
22.根据权利要求20所述的非暂时性计算机可读介质,其中,步骤e)还包括:如果所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥签名的,则针对从下一个节点接收的数据包针对重放保护缓冲区测试数据包序列号;以及如果已经接收到所述数据包或者所述数据包是旧的,则忽略所述数据包。
23.根据权利要求22所述的非暂时性计算机可读介质,其中,步骤e)还包括:如果所述数据包数据是用与所述数据库中的所述流条目中的所述私有密钥匹配的流私有密钥签名的并且尚未收到所述数据包并且所述数据包不是旧的,则将所述数据包在没有修改的情况下转发到前一个节点和/或下一个节点。
24.根据权利要求23所述的非暂时性计算机可读介质,其中,所述方法还包括将接收到的最后一个数据包的所述流条目中的时间戳更新为当前时间戳。
25.根据权利要求23所述的非暂时性计算机可读介质,其中,从所述前一个节点接收所述数据包,并且将所述数据包在没有修改的情况下转发到所述下一个节点。
26.根据权利要求23所述的非暂时性计算机可读介质,其中,从所述下一个节点接收所述数据包,并且将所述数据包在没有修改的情况下转发到所述前一个节点。
27.根据权利要求23所述的非暂时性计算机可读介质,其中,所述方法还包括:步骤f)如果在预定时间段内没有从所述前一个节点和/或所述下一个节点接收到具有与所述流条目对应的所述流ID的数据包,则从所述数据库中移除所述流条目;以及停止转发具有与所移除的流条目对应的所述流ID的数据包。
28.根据权利要求18所述的非暂时性计算机可读介质,其中,所述数据库还被索引到流版本。
29.根据权利要求18所述的非暂时性计算机可读介质,其中,所述数据包包括流版本。
30.根据权利要求29所述的非暂时性计算机可读介质,其中,在所述数据库中执行所述查找包括使用所述数据包中的流版本进行查找。
31.根据权利要求18所述的非暂时性计算机可读介质,其中,步骤a)还包括:从主服务器接收对所述流条目的所述描述。
32.根据权利要求18所述的非暂时性计算机可读介质,其中,步骤a)包括:从包含一个或多个流令牌的另一节点接收对数据包中的所述流条目的所述描述,每个流令牌包括所述流ID、流版本、所述流中的一个或多个其它节点的地址和端口信息、以及流私有密钥。
33.根据权利要求32所述的非暂时性计算机可读媒体,其中,来自所述另一节点的所述数据包包括期满时间戳、前一个节点IP地址和端口、下一个节点IP地址和端口。
34.根据权利要求32所述的非暂时性计算机可读介质,其中,所述方法还包括:尝试使用节点私有密钥和主服务器公共密钥来对来自所述另一节点的所述数据包中的第一流令牌进行解密;以及
通过移除所述第一流令牌来修改数据包,并且在对所述第一流令牌进行解密的所述尝试成功时将所产生的修改的数据包转发到所述第一流令牌中的下一个节点IP地址和端口。
35.一种主服务器系统,包括:
处理器;
存储器;
其中,所述主服务器系统被配置成实现用于节点中继通信的方法,所述方法包括:
步骤a)从网络中的节点接收节点信息;
步骤b)根据节点信息确定起始节点与结束节点之间的一条或多条流路,其中,在所述流路中包括所述网络中的一个或多个节点;
步骤c)将流路信息发送到一个或多个节点,其中,所述流路信息包括与所述流路中一个或多个节点中的每个节点对应的一个或多个流令牌以及用于所述服务器的流令牌,并且其中,每个流令牌包括流ID、流版本、期满时间戳、流私有密钥、以及下一个和/或前一个节点IP地址和端口。
36.一种匹配器服务器系统,包括:
处理器;
存储器
其中,所述匹配器服务器系统被配置成实现用于节点中继通信的方法,所述方法包括:
步骤a)从客户端接收连接到一个或多个服务器的请求;
步骤b)从主服务器请求所述客户端与一个或多个服务器之间的一条或多条流路;
步骤c)从所述主服务器接收所述客户端与所述一个或多个服务器之间的一条或多条流路的流路信息,其中,所述流路信息包括所述客户端的流令牌、与所述流路中的一个或多个中继器中的每个中继器对应的一个或多个流令牌、以及所述服务器的流令牌,并且其中,每个流令牌包括流ID、流版本、期满时间戳、流私有密钥、前一个和/或下一个节点IP地址和端口。
CN201880028407.1A 2017-05-09 2018-05-08 节点路径上的双向数据包交换的方法 Active CN110832824B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762503808P 2017-05-09 2017-05-09
US62/503,808 2017-05-09
US201762524705P 2017-06-26 2017-06-26
US62/524,705 2017-06-26
US15/656,454 2017-07-21
US15/656,454 US9979550B1 (en) 2017-02-22 2017-07-21 Methods of facilitating packet-based connections
PCT/US2018/031641 WO2018208809A1 (en) 2017-05-09 2018-05-08 Methods of bidirectional packet exchange over nodal pathways

Publications (2)

Publication Number Publication Date
CN110832824A CN110832824A (zh) 2020-02-21
CN110832824B true CN110832824B (zh) 2022-05-03

Family

ID=64104904

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880028407.1A Active CN110832824B (zh) 2017-05-09 2018-05-08 节点路径上的双向数据包交换的方法

Country Status (9)

Country Link
US (2) US10880280B2 (zh)
EP (1) EP3622699B1 (zh)
KR (1) KR102622282B1 (zh)
CN (1) CN110832824B (zh)
BR (1) BR112019022714A2 (zh)
CA (1) CA3060436C (zh)
ES (1) ES2964955T3 (zh)
RU (1) RU2766438C2 (zh)
WO (1) WO2018208809A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9979550B1 (en) * 2017-02-22 2018-05-22 The Network Protocol Company, Inc. Methods of facilitating packet-based connections
US11558193B2 (en) * 2018-08-13 2023-01-17 Google Llc Location-based access to controlled access resources
US11050566B2 (en) * 2018-12-18 2021-06-29 Citrix Systems, Inc. Method for securing the rendezvous connection in a cloud service using routing tokens
US11695546B2 (en) * 2019-05-30 2023-07-04 AdsWizz Inc. Decoupled custom event system based on ephemeral tokens for enabling secure custom services on a digital audio stream
US11336683B2 (en) * 2019-10-16 2022-05-17 Citrix Systems, Inc. Systems and methods for preventing replay attacks
US11349736B1 (en) * 2020-11-09 2022-05-31 Vmware, Inc. Flow-based latency measurement for logical overlay network traffic
US11546242B2 (en) 2020-12-30 2023-01-03 Vmware, Inc. Logical overlay tunnel monitoring
US11764958B2 (en) * 2021-04-06 2023-09-19 Capital One Services, Llc Systems and methods for dynamically encrypting redirect requests
CN113449159B (zh) * 2021-06-29 2024-02-02 乐视云网络技术(北京)有限公司 节点数据处理方法、装置、设备和计算机可读存储介质
CN116167030A (zh) * 2021-11-25 2023-05-26 华为技术有限公司 信息处理系统、方法、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839751B1 (en) * 1999-06-30 2005-01-04 Hi/Fn, Inc. Re-using information from data transactions for maintaining statistics in network monitoring
CN106464674A (zh) * 2014-05-12 2017-02-22 谷歌公司 管理nic加密流以用于迁移客户或任务

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159116B2 (en) * 1999-12-07 2007-01-02 Blue Spike, Inc. Systems, methods and devices for trusted transactions
US20030083903A1 (en) * 2001-10-30 2003-05-01 Myers Gene E. Method and apparatus for contemporaneous billing and documenting with rendered services
US7343619B2 (en) * 2002-03-16 2008-03-11 Trustedflow Systems, Inc. Trusted flow and operation control method
US7506368B1 (en) * 2003-02-13 2009-03-17 Cisco Technology, Inc. Methods and apparatus for network communications via a transparent security proxy
US7535905B2 (en) * 2004-03-31 2009-05-19 Microsoft Corporation Signing and validating session initiation protocol routing headers
US8270309B1 (en) * 2005-03-07 2012-09-18 Verizon Services Corp. Systems for monitoring delivery performance of a packet flow between reference nodes
WO2007035655A2 (en) 2005-09-16 2007-03-29 The Trustees Of Columbia University In The City Of New York Using overlay networks to counter denial-of-service attacks
CN101965722B (zh) * 2008-03-12 2013-06-26 艾利森电话股份有限公司 安全性关联的重新建立
JP2010205376A (ja) * 2009-03-06 2010-09-16 Sony Corp 情報処理装置、データ記録システム、および情報処理方法、並びにプログラム
EP2449749B1 (en) * 2009-06-29 2014-03-12 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for relaying packets
US8560854B2 (en) * 2009-09-08 2013-10-15 Ricoh Co., Ltd. Device enabled verifiable stroke and image based workflows
US9398517B2 (en) * 2010-01-11 2016-07-19 Blackberry Limited System and method for enabling discovery of local service availability in local cellular coverage
JP5440210B2 (ja) * 2010-01-28 2014-03-12 富士通株式会社 アクセス制御プログラム、アクセス制御方法およびアクセス制御装置
US8814697B2 (en) * 2011-04-19 2014-08-26 Sony Computer Entertainment America Llc Method and apparatus for use in preserving a game state
US9433862B2 (en) * 2013-02-12 2016-09-06 Microsoft Technology Licensing, Llc Dynamic allocation of computing resources in remote gaming environment
US9843451B2 (en) * 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
US9819596B2 (en) 2015-02-24 2017-11-14 Qualcomm Incorporated Efficient policy enforcement using network tokens for services C-plane approach
US20160344729A1 (en) * 2015-03-27 2016-11-24 Thomas M. Slaight Technologies for geolocation attestation of computing devices in a network path
US10432571B2 (en) * 2016-08-16 2019-10-01 Oath Inc. Automated connection of electronic messaging and social networking services method and apparatus
US9979550B1 (en) 2017-02-22 2018-05-22 The Network Protocol Company, Inc. Methods of facilitating packet-based connections

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839751B1 (en) * 1999-06-30 2005-01-04 Hi/Fn, Inc. Re-using information from data transactions for maintaining statistics in network monitoring
CN106464674A (zh) * 2014-05-12 2017-02-22 谷歌公司 管理nic加密流以用于迁移客户或任务

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"PBS NSLP: Network Traffic Authorization draft-hong-nsis-pbs-nslp-04.txt";S. Hong等;《IETF》;20131014;全文 *

Also Published As

Publication number Publication date
US20180255036A1 (en) 2018-09-06
RU2019131454A3 (zh) 2021-07-20
WO2018208809A1 (en) 2018-11-15
BR112019022714A2 (pt) 2020-05-19
US10880280B2 (en) 2020-12-29
RU2766438C2 (ru) 2022-03-15
CA3060436A1 (en) 2018-11-15
ES2964955T3 (es) 2024-04-10
CA3060436C (en) 2023-08-01
US20200145393A9 (en) 2020-05-07
US20210194863A1 (en) 2021-06-24
KR102622282B1 (ko) 2024-01-08
US11381548B2 (en) 2022-07-05
EP3622699B1 (en) 2023-11-01
CN110832824A (zh) 2020-02-21
EP3622699A4 (en) 2020-12-09
KR20200018398A (ko) 2020-02-19
EP3622699A1 (en) 2020-03-18
EP3622699C0 (en) 2023-11-01
RU2019131454A (ru) 2021-06-09

Similar Documents

Publication Publication Date Title
CN110832824B (zh) 节点路径上的双向数据包交换的方法
Donenfeld WireGuard: Next Generation Kernel Network Tunnel.
CN110771118B (zh) 一种具有tcp移动性选项的无缝移动性和会话连续性
CN103907330B (zh) 在网络环境中用于重定向的防火墙发现的系统和方法
CN110870277A (zh) 将中间盒引入到客户端与服务器之间的安全通信中
US11431507B2 (en) Methods of facilitating packet-based connections
Ellard et al. Rebound: Decoy routing on asymmetric routes via error messages
US9722919B2 (en) Tying data plane paths to a secure control plane
Cai et al. Source authentication and path validation in networks using orthogonal sequences
Chen et al. Secure communication channel establishment: TLS 1.3 (over TCP fast open) versus QUIC
Tennekoon et al. Prototype implementation of fast and secure traceability service over public networks
Liu et al. LightPay: A Lightweight and Secure Off-Chain Multi-Path Payment Scheme Based on Adapter Signatures
Kim et al. Efficient design for secure multipath TCP against eavesdropper in initial handshake
WO2020191095A1 (en) Network route optimization using excess private network capacity
EP2753043B1 (en) Reverse authorized syn cookie
Hogan Security analysis of Tor over QUIC
TENNEKOON Implementation and Evaluation of Secured Network Infrastructure Using Content-based Router
Cohen et al. On The Protection of A High Performance Load Balancer Against SYN Attacks
Wilms Improving the Tor Hidden Service Protocol Aiming at Better Performances
Strufe Resilient Networking
Sachdeva et al. A Review: Enhancing Security Of Network System Using Ip Filter And Cryptography
Wang A deployable IP spoofing defence system
Robertson et al. Wireless bandwidth aggregation for wireless traffic
Brinkmeyer Jr IPV6 alias resolution via induced router fragmentation
Robertson Wireless Bandwidth Aggregation for Internet Traffic

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40014111

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant