CN108886539A - 在位于nat之后的数据存储设备之间建立连接 - Google Patents
在位于nat之后的数据存储设备之间建立连接 Download PDFInfo
- Publication number
- CN108886539A CN108886539A CN201780022185.8A CN201780022185A CN108886539A CN 108886539 A CN108886539 A CN 108886539A CN 201780022185 A CN201780022185 A CN 201780022185A CN 108886539 A CN108886539 A CN 108886539A
- Authority
- CN
- China
- Prior art keywords
- group
- nat
- port
- calculating equipment
- socket
- 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.)
- Granted
Links
Classifications
-
- 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/255—Maintenance or indexing of mapping tables
- H04L61/2553—Binding renewal aspects, e.g. using keep-alive messages
-
- 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/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- 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/2521—Translation architectures other than single NAT servers
-
- 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/256—NAT traversal
-
- 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/256—NAT traversal
- H04L61/2582—NAT traversal through control of the NAT server, e.g. using universal plug and play [UPnP]
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/256—NAT traversal
- H04L61/2564—NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
-
- 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/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了用于在计算设备之间建立连接的系统和方法。第一计算设备可经由对称NAT传送数据,并且第二计算设备可经由锥形NAT传送数据。第一计算设备可经由对称NAT和锥形NAT在第一计算设备和第二计算设备之间建立连接,诸如对等(P2P)连接。
Description
相关申请的交叉引用
本专利申请要求2016年4月11日提交的名称为ESTABLISHING CONNECTIONSBETWEEN DATA STORAGE DEVICES的美国专利申请No.15/096,102的优先权,其公开内容据此全文以引用方式并入。
背景技术
跨一个或多个数据存储设备的数据存储的分布可通过数据冗余来提供増强的数据安全性。一种类型的数据存储设备可以是直连存储(DAS)设备。DAS设备可为一个或多个计算设备提供经由连接缆线(例如,通过直接连接或物理连接)对数据的直接访问。另一种类型的数据存储设备可以是网络连接的存储(NAS)设备。NAS设备可提供通过计算机网络(例如,经由有线和/或无线网络)对数据的访问。
附图说明
在附图中示出了各种实施方案以用于进行示意性的说明,并且决不应理解为限制本公开的范围。此外,所公开的不同实施方案的各种特征可被组合以形成作为本公开的一部分的附加实施方案。
图1是根据实施方案的数据存储系统的示意图。
图2是根据实施方案的数据存储系统的示意图。
图3是根据实施方案的数据存储系统的示意图。
图4A是根据实施方案的数据存储系统的示意图。
图4B是根据实施方案示出了示例性分组和/或消息的序列图。
图5是根据实施方案示出了用于在计算设备之间建立连接的过程的流程图。
图6是根据实施方案示出了用于在计算设备之间建立连接的过程的流程图。
具体实施方式
虽然描述了某些实施方案,但这些实施方案仅以举例的方式呈现,并且不旨在限制保护范围。实际上,本文所述的新型方法和系统能够以多种其他形式体现。此外,各种省略、替代和本文所述方法和系统的形式的改变可在不脱离保护范围的情况下作出。
本文提供的标题仅为方便起见,并且不一定影响受权利要求书保护的本发明的范围或含义。本文公开了与在经由网络地址转换(NAT)传送数据的计算设备之间建立连接诸如对等(P2P)连接有关的示例性具体实施、配置和/或实施方案。
概述
数据存储设备/系统可提供具有文件级数据存储的一个或多个计算设备。数据存储设备/系统的一个示例可以是DAS设备。DAS设备可经由耦接到DAS设备的DAS接口(例如,通信接口诸如USB 2.X、USB 3.X、Thunderbolt、eSATA等)的连接缆线(例如,Thunderbolt缆线、外部串行高级技术附件(eSATA)缆线、通用串行总线(USB)缆线等)耦接到计算设备(例如,膝上型计算机、台式计算机等)。DAS设备可提供用于在计算设备之间传输数据的方便的机制,从而増加计算设备的存储容量(例如,増加存储空间),和/或通过数据冗余提供増强的数据安全性。数据存储设备/系统的另一个示例可以是NAS设备。NAS设备可经由NAS接口(例如,网络接口或通信接口诸如以太网、802.11(Wi-Fi)等)耦接到网络。NAS设备可通过网络(例如,计算机网络)提供文件级数据存储,其中对所存储的数据的访问可由一组客户端访问。例如,NAS设备可包括硬件、软件或此类元件的组合,可被配置为使得NAS设备作为文件服务器操作。NAS设备/系统可提供用于在多个计算机之间共享数据和/或远程访问存储在NAS设备/系统上的数据的方便的机制。与传统文件服务器相比,NAS设备/系统的好处可包括从各种位置(例如,远程位置)访问数据的能力、更快的数据访问、更轻松的管理和/或更简单的配置。
本文公开的某些实施方案提供用于在经由NAT通信的计算设备之间建立连接的能力。第一计算设备可经由对称NAT传送数据,并且第二计算设备可经由锥形NAT传送数据。本文所述的实施方案可为第一计算设备提供用于经由对称NAT和锥形NAT在第一计算设备和第二计算设备之间建立连接诸如对等(P2P)连接的能力。
数据存储设备
图1是根据实施方案的数据存储系统100的示意图。在数据存储系统100中,数据存储设备120可通信地耦接到一个或多个客户端设备(例如,计算设备),以便向一个或多个客户端设备(例如,一个或多个计算设备)提供基于文件的数据存储服务。可访问数据存储设备120的客户端设备(例如,计算设备)的类型可包括但不限于电话137(例如,智能电话、蜂窝电话等)、有线电视机顶盒136、智能电视135、视频游戏控制器134、膝上型计算机133、平板电脑132、台式计算机131、可穿戴计算机和/或其他类型的计算设备。在一个实施方案中,数据存储设备120可以是外部独立数据存储设备。例如,数据存储设备120可以是不位于计算设备内的数据存储设备(例如,不位于计算设备的壳体或外壳内)。在另一个示例中,数据存储设备120可以是可在不直接耦接到计算设备(例如可以是NAS设备)的情况下提供对数据的访问的数据存储设备。客户端设备(例如,计算设备)也可被称为主机系统。在一个实施方案中,数据存储设备120可以是便携式数据存储设备。便携式数据存储设备可缺乏电源(例如,可缺乏电池和/或交流适配器),并且可从客户端设备(例如,主机系统)接收电力。
数据存储设备120可为各种客户端设备(例如,电话137、有线电视机顶盒136、智能电视135、视频游戏控制器134、膝上型计算机133、平板电脑132、台式计算机131)提供对存储在数据存储设备120上的各种类型的用户数据的访问。数据存储设备120还可允许用户在数据存储设备120上存储各种类型的用户数据。数据存储设备120可包括磁性介质、硬盘介质和/或固态介质。虽然本文的某些描述一般是指固态存储器,但应当理解,固态存储器可包括一个或多个各种类型的固态非易失存储器设备诸如闪存集成电路、硫系化合物RAM中(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向统一存储器(OUM)、电阻RAM(RRAM)、NAND存储器(例如,单电平单元(SLC)存储器、多电平单元(MLC)存储器或其任何组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其他分立的NVM(非易失性存储器)芯片或其任何组合。
进一步参考图1,数据存储设备120(例如,磁盘驱动器、混合硬盘驱动器、固态驱动器等)可包括控制器(图1中未示出),该控制器被配置为接收数据命令以及在数据存储设备120的一个或多个非易失性存储部件中执行此类命令。此类命令可包括数据读/写命令等。控制器可被配置为从驻留在计算设备(例如,主机系统)上的通信接口((例如,NAS接口和/或DAS接口))接收数据命令。数据命令可指定数据存储设备120中的块地址,并且可根基于此类命令访问/传输数据。数据命令也可称为数据访问请求。
数据存储设备120可被配置为将数据存储在一个或多个记录磁盘和/或固态存储器设备/阵列中。在实施方案中,数据存储设备120可包括缆线盒、备份磁盘驱动器、媒体存储单元、流媒体设备、数字相机或可存储可能需要直接或无线访问的数据的任何其他电子设备。
在某些实施方案中,数据存储设备120可存储从客户端设备接收的数据,使得数据存储设备120充当客户端设备的数据存储。为了促进该功能,数据存储设备120可实现逻辑接口。逻辑接口可向客户端设备存储器呈现为可供存储数据的一组逻辑地址(例如,顺序/连续的地址)。在内部,控制器可将逻辑地址映射到数据存储设备120的非易失性存储器中的各个物理存储器地址。指示逻辑地址到物理存储器地址映射的映射数据可被保持在数据存储设备120中。
在一个实施方案中,数据存储设备120可以是DAS设备。DAS设备可经由连接缆线121直接耦接到客户端设备(例如,台式计算机131)。连接缆线121可耦接到DAS设备(例如,数据存储设备120)的通信接口(例如USB 2.X接口、USB 3.X接口、Thunderbolt接口等)。在另一个实施方案中,数据存储设备120还可以是NAS设备。NAS设备还可经由网络105耦接到客户端设备(例如,计算设备)131-137。NAS设备可经由网络接口(例如,以太网接口、802.11(Wi-Fi)接口等)耦接到网络105。客户端设备131-137中的每一者还可经由网络接口耦接到网络105。在一个实施方案中,网络105可包括公共网络(例如,互联网)、专用网络(例如,局域网(LAN))、广域网(WAN)诸如因特网、有线网络(例如,以太网)、无线网络(例如,802.11网络或Wi-Fi网络)、蜂窝网络(例如,长期演进(LTE)网络)、路由器、集线器、交换机、服务器计算机、其他类型的计算机网络、和/或它们的组合。虽然图1示出了数据存储设备120被耦接到客户端设备131,但在其他实施方案中,数据存储设备可经由一个或多个连接缆线耦接到任何数量的客户端设备131-137。
在一个实施方案中,数据存储设备120可经由通信接口(例如,DAS接口诸如USB2.X、USB 3.X、Thunderbolt)和/或经由网络接口(例如,以太网、802.11等)从客户端设备131-137接收数据访问请求。数据访问请求可以是消息、命令和/或对存储在数据存储设备上的数据的访问的请求。例如,数据访问请求可指示计算设备想要从数据存储设备120读取数据。在另一个示例中,数据访问请求可指示计算设备想要将数据写入数据存储设备120。
许多计算设备可经由NAT与其他计算设备和/或网络通信。例如,数据存储设备120(例如,计算设备)可经由NAT与其他计算设备和/或网络通信。NAT的类型可包括但不限于锥形NAT和对称NAT。当两个计算设备经由两个锥形NAT传送数据时,用户数据报协议(UDP)打孔技术可用于允许两个计算设备彼此之间建立连接(例如,P2P连接)。然而,当两个计算设备经由锥体NAT和对称NAT传送数据时,UDP打孔技术可不起作用。这可防止两个计算设备彼此建立连接(例如,P2P连接)。由于锥形NAT和对称NAT均经常使用,因此可期望允许经由锥形NAT和对称NAT传送数据的两个计算设备彼此建立连接(例如,彼此建立P2P连接)。
图2是根据实施方案的数据存储系统200的示意图。数据存储系统200包括计算设备211、计算设备213、连接缆线和数据存储设备220。计算设备211和213中的每一者可以是膝上型计算机、台式计算机、服务器计算机、平板电脑、智能电话、机顶盒、智能电视、视频游戏控制器等。计算设备211和213也可被称为主机系统。数据存储设备220可包括控制器230、直接访问接口241(例如,USB 2.X、USB 3.X、Thunderbolt、eSATA等)、网络访问接口243(例如,以太网、Wi-Fi等)和非易失性存储部件245。在一个实施方案中,非易失性存储部件245可包括非易失性磁性介质和/或固态存储器,诸如NAND闪存。控制器230可为数据存储设备220提供总体控制。在一个实施方案中,数据存储设备220可以是便携式数据存储设备。便携式数据存储设备可缺乏电源(例如,可缺乏电池和/或交流适配器),并且可从计算设备211(例如,主机系统)接收电力。
在某些实施方案中,数据存储设备220可以是硬盘驱动器。非易失性存储部件245可包括一个或多个盘,并且数据存储设备220还可包括在一个或多个盘上径向致动的一个或多个头部(未示出)和用于旋转一个或多个盘的主轴马达。另选地或除此之外,可使用磁性旋转介质、固态存储器和/或其他非易失性存储器诸如MRAM和/或相变存储器。在某些实施方案中,数据存储设备220可以是例如包括磁性介质和固态介质两者的混合硬盘驱动器(例如,非易失性存储部件245可包括两个磁盘和固态介质/存储器两者)。在一个实施方案中,非易失性存储部件245可经由一个或多个串行总线连接器耦接到控制器。串行总线连接器的示例包括但不限于串行ATA(SATA)连接器、外围组件快速互连(PCIe)连接器和SATA快速连接器。在一个实施方案中,数据存储设备220可为外部独立数据存储设备(例如,NAS设备/驱动器,便携式外部硬盘驱动器等)。在另一个实施方案中,数据存储设备220可以是便携式数据存储设备。例如,数据存储设备220可以是便携式外部硬盘驱动器。在另一个实施方案中,数据存储设备220可经由连接缆线和直接访问接口212和241从计算设备211接收电力。例如,数据存储设备220可不包括电源(例如,电池、电源适配器等),并且可使用从计算设备211(例如,主机系统)接收的电力(例如,电压、电流等)来操作。
控制器230可从计算设备211的DAS接口212(例如,USB接口、Thunderbolt接口)接收数据访问请求(例如,数据和存储访问命令)。通过DAS接口212传送的数据访问请求可包括由计算设备211下发的写入和读取命令。数据访问请求可在数据存储设备220中指定LBA或LBA的范围,并且控制器230可在非易失性存储部件245中执行所接收的数据访问请求。控制器230还可从计算设备213的NAS接口214(例如,通信接口诸如以太网接口、Wi-Fi接口等)接收数据访问请求。控制器230可基于数据访问请求确定数据存储设备220中的LBA和/或LBA的范围,并且可在非易失性存储部件245中执行所接收的数据访问请求。在混合硬盘驱动器中,数据可被存储在磁性介质存储部件以及非易失性固态存储器中。
数据存储设备220可存储从计算设备211和213接收的数据,使得数据存储设备220充当计算设备211和213的存储器。为了促进该存储器功能,控制器230可实现逻辑接口。逻辑接口可向计算设备211和213和数据存储设备220的存储器呈现为可供存储数据的一组逻辑地址(例如,连续地址)。控制器230可将逻辑地址映射到非易失性存储部件245和/或其他一个或多个存储器模块中的各个物理存储器地址。
数据存储设备220可被配置为实现数据冗余,其中存储在非易失性存储部件245中的用户数据被保持在一个或多个内部和/或外部驱动器中。例如,控制器230可包括被配置为实现冗余功能的数据冗余管理模块(图2中未示出)。数据冗余管理模块可实现独立磁盘冗余阵列(RAID)技术,其中非易失性存储部件245包括多个内部驱动器、盘或合并为逻辑单元的其他数据存储分区,以用于数据冗余和性能改进。除此之外或作为另外一种选择,数据冗余管理模块可被配置为使用一个或多个内部存储器模块与一个或多个外部存储器设备组合来实现RAID,如下文更详细地讨论。
出于RAID目的,非易失性存储部件245可包括一个或多个存储设备的阵列,诸如硬盘或被配置为存储用户数据的其他存储器模块。在某些实施方案中,此类内部存储器模块/盘可各自直接耦接到控制器230,以提供用于读取和写入用户数据的高带宽接口。该非易失性存储部件245可包括被配置为存储奇偶校验信息的一个或多个附加存储器模块。
控制器230可被配置为在物理RAID存储器模块中划分和复制用户数据,从而提供存储虚拟化;阵列可由作为单个驱动器的计算设备211和213访问。数据可根据任何期望的或实际的RAID级别而分布在RAID存储器模块/驱动器上,具体取决于冗余的级别和/或期望的性能。例如,数据存储设备220可被配置为根据数据可靠性、可用性、性能和/或容量考虑或要求来实现RAID 0、RAID 1、RAID 5、RAID 6、RAID 10、其他RAID技术或其他擦除编码技术。
计算设备211可经由连接缆线耦接到数据存储设备220。连接缆线可直接连接计算设备211和数据存储设备220。连接缆线可使用一个或多个通信接口(诸如总线接口)和/或可允许计算设备211与数据存储设备220通信的协议。直接访问接口212和241可以是USB接口、Thunderbolt接口、串行SCSI(SAS)、eSATA接口等。
在一个实施方案中,连接缆线可包括允许计算设备211与数据存储设备220传送数据的一个或多个数据线(例如,一个或多个导线、管脚等)。例如,连接缆线可包括由计算设备211使用以从数据存储设备220读取数据和/或将数据写入该数据存储设备的数据线(图2中未示出)。计算设备211可使用DAS接口212(例如,经由DAS接口212)将数据传送到数据存储设备以及从该数据存储设备传送数据。在另一个实施方案中,计算设备211可向数据存储设备220提供输入电压,并且数据存储设备220可使用输入电压来操作数据存储设备220的一个或多个部件(例如,控制器230、非易失性存储部件245、马达等)。连接缆线可包括可经由DAS接口212从计算设备211接收输入电压的一个或多个电压线(例如,导线、管脚等)。一个或多个电压线可经由直接访问接口241将(从计算设备211接收的)输入电压提供到数据存储设备220。在另一个实施方案中,数据存储设备220可耦接到独立的电源(例如,可耦接到电池、耦接到交流适配器、耦接到壁装电源插座等)。
在一个实施方案中,连接缆线可包括桥接器单元(图2中未示出)。例如,连接缆线可包括USB桥接器、Thunderbolt桥接器或其他类型的桥接器。桥接器单元可在两种不同类型的通信接口和/或协议之间转换。例如,如果连接的存储设备在第一协议中通信而不是第二协议,则桥接器单元可将第二协议转换为第一协议,反之亦然。
计算设备213可经由网络205(例如,Wi-Fi网络、LAN、蜂窝网络等中的一者或多者)通信地耦接到数据存储设备220。该计算设备213可经由NAS接口214(例如,一个通信接口为以太网接口,wifi接口,等)和网络205发送数据(例如,文件,图像,电影,等等)和/或数据访问请求到数据存储装置220。数据存储设备220可经由网络访问接口243从计算设备213接收数据和/或数据访问请求。
在一个实施方案中,数据存储设备220可包括可对存储在非易失性存储部件245上的数据(例如文件)进行加密/解密的加密模块(例如,软件、硬件、固件或其组合)。例如,加密模块可使用加密密钥和/或加密功能/算法来加密和/或解密数据。在另一个实施方案中,数据存储设备220可包括各种传感器,诸如罗盘(例如磁力仪)、陀螺仪、加速度计、全球定位系统(GPS)传感器、温度传感器(例如温度计)等。
如上所述,计算设备(例如,计算设备213、数据存储设备220)可经由NAT彼此通信。例如,计算设备213可经由第一NAT(图2中未示出)与网络205传送数据,并且数据存储设备220可经由第二NAT(图2中未示出)与网络205传送数据。在一个实施方案中,第一NAT可以是对称NAT,并且第二NAT可以是锥形NAT。
在一个实施方案中,控制器230可创建一组套接字。第一NAT可将一组套接字中的每个套接字与第一NAT的外部接口相关联(例如,将每个套接字与NAT的端口相关联)。例如,第一NAT可将一组套接字与第一NAT的一组端口相关联。控制器230可通过将套接字绑定到端口0来创建套接字,这可允许第一NAT分配(例如,随机分配)与数据存储设备220相关联的(第一NAT的)端口的端口号。控制器230还可确定与计算设备213相关联的网络地址。例如,控制器230可确定与计算设备213相关联的互联网协议(IP)地址。
在一个实施方案中,控制器230可经由一组套接字和/或第一NAT(例如,经由第一NAT的与一组套接字相关联的端口)将一组分组发送至计算设备213。例如,控制器230可经由一组套接字中的每个套接字和/或第一NAT将一个(或多个)分组发送至计算设备213。控制器230可确定是否经由一组套接字中的第一套接字(例如,经由具有随机端口号的一组套接字)从计算设备213接收到分组。(从计算设备213接收的)分组可为由计算设备213发送至数据存储设备220的一组分组中的一个分组。计算设备213可将一组分组发送至(第一NAT的)与数据存储设备220相关联的一组端口。例如,计算设备213可将一个(或多个)分组发送至一组端口中的每个端口。该组端口可包括由计算设备213选择的随机端口号(例如,具有由计算设备213所选择的随机数的端口)。
在一个实施方案中,如果经由一组套接字和/或第一NAT(从计算设备213)接收到分组,则控制器230可经由第一套接字与计算设备213建立连。例如,如果经由一组套接字中的一个套接字和/或第一NAT从计算设备213接收到分组,则控制器230(和/或数据存储设备220)可与计算设备213建立对等(P2P)连接。
在另一个实施方案中,如果经由一组套接字和/或第一NAT未从计算设备213接收到分组,则控制器230可创建第二组套接字。第一NAT可将第二组套接字中的每个套接字与第一NAT的外部接口(例如端口)相关联。控制器230可经由第二组套接字和/或第一NAT将另一组分组发送至计算设备213。控制器230可确定是否经由第二组套接字中的套接字和/或第一NAT从计算设备213接收到分组。如果经由第二组套接字中的套接字和/或第一NAT从计算设备213接收到分组,则控制器230可经由该套接字与计算设备213建立连接。
在一个实施方案中,控制器230可确定(由数据存储设备220使用的)第一NAT和(由计算设备213使用的)第二NAT均是对称NAT。当第一NAT和第二NAT都是对称NAT时,控制器230可避免创建套接字、发送一组分组、确定是否已接收到分组以及建立与计算设备的连接。
在一个实施方案中,控制器230可确定一组套接字(和/或第二组套接字)中的套接字的数量。例如,控制器230可从另一计算设备(例如,服务器)接收一组套接字中的套接字的数量。在另一个示例中,一组套接字中的套接字的数量可被存储在由控制器230使用的配置文件和/或配置数据中。在另一个示例中,控制器230可计算一组套接字中的套接字的数量。套接字的数量可基于第一NAT的一组端口中的第一端口号与由计算设备213确定的一组端口号中的第二端口号匹配的阈值概率,如下文更详细地讨论。
如上所述,数据存储设备220可经由第一NAT(图2中未示出)来传送数据,并且计算设备213可经由第二NAT(图2中未示出)来传送。在一个实施方案中,第一NAT可以是锥形NAT,并且第二NAT可以是对称NAT。
在一个实施方案中,控制器230可确定与计算设备213相关联的网络地址。例如,控制器230可确定与计算设备213相关联的互联网协议(IP)地址。与计算设备相关联的网络地址(例如,IP地址)可由第二NAT指派和/或分配。控制器230可确定一组随机选择的端口号。例如,控制器230可选择和/或生成随机端口号以包括在一组随机选择的端口号中(例如,可使用伪随机数生成器(PRNG)来生成随机端口号)。在另一个示例中,控制器230可接收一组随机选择的数(例如,从另一个计算设备接收一组随机选择的数)。控制器230还可创建可用于将分组发送至计算设备213的套接字。
在一个实施方案中,控制器230可经由第一NAT将一组分组发送至与计算设备213相关联的一组端口。例如,控制器230可将一个(或多个)分组发送至与计算设备213相关联的一组端口中的每个端口。该组端口中的每个端口均可包括一组随机选择的端口号中的端口号。
在一个实施方案中,控制器230可确定是否已经由一组端口中的第一端口从计算设备213接收到第二组分组中的第一分组。第二组分组可由计算设备213经由与计算设备213相关联(例如,与由计算设备213创建的一组套接字相关联)的另一组端口来发送。另一组端口可包括由第二NAT随机选择的端口号。例如,(与计算设备213相关联的)另一组端口中的每个端口可包括由第二NAT随机选择的端口号。
在一个实施方案中,当经由一组端口中的第一端口从计算设备213接收到分组时,控制器230可经由第一套接字与计算设备213建立连接(例如,P2P连接)。在另一个实施方案中,如果经由一组套接字和/或第一NAT未从计算设备213接收到分组,则控制器230可确定第二组随机选择的端口号。控制器230可经由第一NAT将另一组分组发送至与计算设备213相关联的第二组端口。第二组端口中的每个端口均可包括第二组随机选择的端口号中的端口号。控制器230可确定是否经由第二组端口中的端口从计算设备213接收到分组。如果经由第二组端口中的端口和/或第一NAT从计算设备213接收到分组,则控制器230可与计算设备213建立连接。
在一个实施方案中,控制器230可确定(由数据存储设备220使用的)第一NAT和(由计算设备213使用的)第二NAT均是对称NAT。当第一NAT和第二NAT均为对称NAT时,控制器230可避免确定网络地址、确定一组随机选择的端口号、创建套接字、发送一组分组、确定是否接收到第一分组以及与计算设备213建立连接。
在一个实施方案中,控制器230可确定这一组随机选择的端口号(和/或第二组随机选择的端口号)中的端口号的数量。例如,控制器230可从另一个计算设备(例如服务器)接收端口号的数量,或者端口号的数量可被存储在由控制器230使用的配置文件和/或配置数据中。在另一个示例中,控制器230可计算端口号的数量。端口号的数量可基于一组随机选择的端口号中的第一端口号与和由数据存储设备220创建的套接字相关联的第二组端口中的第二端口号匹配的阈值概率,如下文更详细地讨论。
在计算设备之间建立连接
图3是根据实施方案的数据存储系统300的示意图。数据存储系统300包括网络305,用于NAT会话遍历实用工具(STUN)服务器321、STUN服务器322、会话发起协议(SIP)服务器325、NAT 331、NAT 332、计算设备311和计算设备312。STUN服务器321可为计算设备311提供有关NAT 331的信息。例如,STUN服务器321可提供用于向计算设备311指示NAT 331为锥形NAT(或对称NAT)的数据。STUN服务器322可为计算设备312提供关于NAT 332的信息。如上所述,计算设备可经由NAT与其他计算设备和/或网络传送(例如,发送和/或接收)数据。如图3所示,计算设备311经由NAT 331传送数据,并且计算设备312经由NAT 332传送数据。如上所述,计算设备311和312可以是计算机、平板电脑、膝上型计算机、服务器、数据存储设备诸如NAS驱动器等。
在一个实施方案中,计算设备311可具有与计算设备312传送(例如,发送/接收)的数据或反之亦然。可在计算设备311和计算设备312之间建立P2P连接(由虚线示出),以允许计算设备311和计算设备312彼此直接传送数据。SIP服务器325可帮助计算设备311和计算设备312在彼此之间建立连接。例如,SIP服务器325可为计算设备311提供与计算设备312相关联的网络地址(例如,由NAT 332分配给计算设备312的网络地址),反之亦然。在另一个示例中,SIP服务器325可为计算设备311和计算设备312提供NAT 331和NAT 332的类型(例如,NAT 331是锥形NAT还是对称NAT)。
NAT 331和NAT 332可执行防火墙功能和/或可用作非军事区(DMZ)。例如,如果计算设备311先前未将分组发送至计算设备312,则NAT 331可防止计算设备311从计算设备312接收分组。在另一个示例中,如果计算设备312先前未将分组发送至计算设备311,则NAT332可防止计算设备312从计算设备311接收分组。这可防止计算设备311与计算设备312建立连接(例如,P2P连接)。如果NAT 331和NAT 332均为锥形NAT,则可使用打孔技术(例如,用户数据报协议(UDP)打孔技术)来在计算设备311和计算设备312之间建立P2P连接。如果NAT331和NAT 332均为对称NAT,则计算设备311和/或计算设备312可避免在彼此之间建立P2P连接,如上文所述。
在一个实施方案中,NAT 331可以是随机分配端口号的对称NAT,并且NAT 332可以是锥形NAT。如上所述,计算设备311可创建一组套接字(每个套接字与NAT 331的随机端口号相关联),经由这一组套接字和NAT 331发送一组分组,确定是否已经由第一组套接字从计算设备312接收到第一分组,以及当已经接收到第一分组时与计算设备312建立P2P连接。在一个实施方案中,计算设备311可基于与一组套接字相关联的一组端口中的端口号与由计算设备312确定的一组随机端口号中的另一个端口号匹配的阈值概率来确定一组套接字中的套接字的数量。
同样如上所述,计算设备312可确定与计算设备311相关联的网络地址(例如,IP地址),确定一组随机选择的端口号,将一组分组发送至与计算设备311相关联的一组端口,确定是否已经由与计算设备311相关联的一组端口中的第一端口从计算设备311接收到第一分组,以及当接收到第一分组时建立连接。在一个实施方案中,计算设备312可基于与一组随机选择的端口号中的端口号与和由计算设备311创建的一组套接字相关联的NAT 331的一组端口中的另一个端口号匹配的阈值概率来确定一组随机选择的端口号中的端口号的数量。
在一个实施方案中,可使用下面列出的公式(1)和(2)来首先确定两个参数Ω1和Ω2,从而确定和/或计算阈值概率。Ω1可以是一组“r”个端口号内的“n”个不同的随机端口号的可能的组合的数量。例如,Ω1可以是可由NAT 331选择的一组“r”个端口号内的“n”个不同的随机端口号的组合的数量。Ω2可以是一组“r”个端口号内的“m”个不同的随机端口号的可能的组合的数量。例如,Ω2可以是可由计算设备312选择的一组“r”个端口号内的“m”个不同的随机端口号的组合的数量。
可使用下面列出的公式(3)来确定组合Ω的总数:
数N1可以是其中由NAT 331选择的“n”个端口号中的至少一个端口号与由计算设备312选择的“m”个端口号中的至少一个端口号匹配的组的数量。组的数量N2可以是其中由NAT 331选择的所有“n”个端口号不同于由计算设备312选择的“m”个端口号的组的数量。N2可使用下面列出的公式(4)来确定:
因此,由NAT 331选择的“n”个端口号中的至少一个端口号与由计算设备312选择的“m”个端口号中的至少一个端口号匹配的概率P可使用下面列出的公式(5)来确定:
在一个实施方案中,NAT 331和计算设备312可选择相同数量的随机数。因此,当“n”等于“m”时,公式(5)可被改写为下面列出的公式(6):
在一个实施方案中,斯特林公式可用于基于公式(6)计算“P”的近似值(例如,以计算由计算设备311选择的第一组端口号中的至少一个端口号与由计算设备312选择的第二组端口号中的至少一个端口号匹配的概率的近似值)。通过使用斯特林公式,公式(6)可被改写为下面列出的公式(7):
P=1-e2r-nlnr-n-rlnr-r-2nlnr-2n (7)
因此,考虑到第一组端口号和第二组端口号中的每一者将具有“n”个端口号并且可从一共“r”个端口号中选择,公式(6)和/或公式(7)可用于确定与由计算设备311创建的一组套接字相关联的第一组端口号中的至少一个端口号与由计算设备312随机选择的第二组端口号中的至少一个端口号匹配的概率。在一个实施方案中,当计算设备311和计算设备312使用UDP来建立P2P连接时,可将“r”设置为值64511。这可能是由UDP通信协议所使用的可用端口的数量决定的(例如,一共65536个可能的端口号减去1025个保留端口号)。通过将“r”设置为值64511,可针对“n”的各种值确定概率“P”。
表1
上述表1示出了针对“n”的不同值的示例性概率“P”。例如,当将“n”设置为值100并且“r”设置为值64511时,概率“P”为14.38%。在另一个示例中,当将“n”设置为值600并且“r”设置为值64511时,概率“P”为99.64%。因此,可选择“n”的值以获得第一组端口号和第二组端口号之间的至少一个匹配端口号的阈值概率(例如,期望概率)。例如(参见上述表1),如果期望(第一组端口号和第二组端口号之间的至少一个匹配端口号的)99%概率,则计算设备311可创建600个套接字,并且计算设备312可选择600个随机端口号。
尽管上述公式(1)至(7)示出了可用于确定由计算设备311选择的第一组端口号中的至少一个端口号与由计算设备312选择的第二组端口号中的至少一个端口号匹配的概率(例如概率“P”)的示例性公式,但本领域的普通技术人员理解,在其他实施方案中可使用其他公式、功能和/或算法。此外,本领域的普通技术人员理解,可以在公式(1)至(7)中使用“P”、“r”和“n”的各种值。
图4A是根据实施方案的数据存储系统400的示意图。数据存储系统400包括计算设备411、计算设备412、NAT 431、NAT 432和网络405。如上所述,计算设备411可经由NAT 431与计算设备412(和其他计算设备和/或网络)传送数据,并且计算设备412可经由NAT 432与计算设备411(和其他计算设备和/或网络)传送数据。NAT 431包括外部接口433,并且NAT432包括外部接口435。外部接口433和435可被称为端口、套接字等。
在一个实施方案中,NAT 431是对称NAT。对称NAT可将由计算设备411创建的每个套接字与不同的外部接口433相关联。例如,当计算设备411创建多个套接字时,计算设备411可与多个外部接口433相关联。对称NAT可为外部接口433随机分配端口号。例如,对称NAT可从一组可用端口号中为外部接口433随机选择端口号。在另一个实施方案中,NAT 432是锥形NAT。例如,锥形NAT可以是全锥形NAT、受限的NAT(例如,地址受限的NAT)或端口受限的NAT。锥形NAT可将由计算设备412创建的每个套接字与一个外部接口435(例如,与相同的外部接口)相关联。例如,计算设备412可将单个外部接口435与由计算设备412创建的多个套接字相关联。
如图4A所示,计算设备411可创建一组套接字并可经由该组套接字将一组分组发送至计算设备412。该计算设备411还可确定与计算设备412相关联的网络地址。与计算设备412相关联的网络地址可由NAT 432分配和/或指派。该计算设备411可从另一个计算设备诸如SIP服务器获取与计算设备412相关联的网络地址。计算设备411可经由一组端口将一组分组发送至计算设备412。由计算设备411创建的套接字中的每个套接字可被映射到NAT431的外部接口433(例如,端口、套接字、一些其他通信接口等)和/或与该外部接口相关联。例如,NAT 431可将具有端口号1025的外部接口433与一组套接字中的第一套接字相关联,可将具有端口号21335的外部接口433与第二组套接字中的第二套接字相关联,可将具有端口号47799的外部接口433与一组套接字中的第三套接字相关联等。外部接口433(例如端口)的端口号可由NAT 431随机选择。因此,一组套接字与具有由NAT 431随机选择的端口号的一组外部接口433相关联。
另外如图4A所示,计算设备412可确定与计算设备411相关联的网络地址(例如,可从SIP服务器接收与计算设备411相关联的IP地址)。与计算设备411相关联的网络地址可由NAT 431分配和/或指派。计算设备412可(例如,使用PRNG)确定一组随机选择的端口号并可创建套接字。套接字可与具有端口号47800的外部接口435相关联。计算设备412可经由套接字和NAT 432(经由套接字和具有端口号47800的外部接口435)将一组分组发送至与计算设备411相关联的一组端口。例如,计算设备412可将一组分组发送至NAT 431的一组外部接口。一组外部接口中的每个外部接口433可具有一组随机选择的端口号中的端口号。
如上所述,NAT 431和432可执行防火墙功能或可充当DMZ。如果计算设备411先前未经由(NAT 432的)外部接口435将分组发送至计算设备412,则NAT 431可不允许计算设备411经由(NAT 432的)外部接口435接收由计算设备412发送的分组。例如,如果计算设备411先前未经由具有端口号53222的外部接口435将分组发送至计算设备412,则NAT 431可不允许计算设备411经由具有端口号53222的外部接口435接收由计算设备412发送的分组。此外,如果计算设备412先前未经由(NAT 431的)外部接口433将分组发送至计算设备411,则NAT 432可不允许计算设备412经由(NAT 431的)外部接口433接收由计算设备411发送的分组。例如,如果计算设备412先前未经由具有端口号47800的外部接口433将分组发送至计算设备411,则NAT 432可不允许计算设备412经由具有端口号47800的外部接口433接收由计算设备411发送的分组。
如上所述,由计算设备411创建的一组套接字与一组外部接口433相关联,所述外部接口继而具有一组随机选择的端口号。同样如上所述,计算设备412确定第二组随机选择的端口号并将一组分组发送至具有第二组随机选择的端口号中的端口号的第二组外部接口433。如果(与由计算设备411创建的一组套接字相关联的)一组随机选择的端口号中的至少一个端口号与(由计算设备412确定的)第二组随机选择的端口号中的至少一个端口号相匹配,则计算设备411能够经由NAT 431和NAT 432与计算设备412建立连接(例如,P2P连接)。例如,如果第一组随机选择的端口号中的至少一个端口号与第二组随机选择的端口号中的至少一个端口号相匹配,则计算设备411可经由供该计算设备411将分组发送至计算设备412的外部接口433而从计算设备412接收分组。由于NAT 431经由供计算设备411将分组发送至计算设备412的外部接口433而从计算设备412接收分组,则NAT 431可允许计算设备411从计算设备412接收分组,反之亦然。
由计算设备411创建的一组套接字中的套接字的数量和/或由计算设备412所选择的端口号的数量可基于第一组随机选择的端口号和第二组随机选择的端口号之间的至少一个匹配端口号的阈值概率来选择。例如(参见上述表1),如果期望(第一组随机选择的端口号和第二组随机选择的端口号之间的至少一个匹配端口号的)99%概率(例如期望99%的阈值概率),则计算设备411可创建600个套接字,并且计算设备412可选择600个随机端口号。本领域的普通技术人员理解,可期望其他阈值概率(例如,75%、90%等),并且套接字的另一数量和/或端口号的另一数量可基于其他阈值概率来选择。阈值概率可基于用户输入和/或可基于计算设备411和计算设备412的配置设置/参数。
图4B是根据实施方案示出了示例性分组和/或消息的序列图。如上所述,数据存储系统(例如图4A所示的数据存储系统400)包括计算设备411、计算设备412、NAT 431、NAT432和网络405。如上所述,计算设备411可经由NAT 431与计算设备412传送数据,并且计算设备412可经由NAT 432与计算设备411传送数据。在一个实施方案中,NAT 431为对称NAT,并且NAT 432为锥形NAT。
如图4B所示,计算设备411可创建600个套接字(例如,一组套接字),并且可经由600个套接字和NAT 431(例如,经由对称NAT)发送600个分组(例如,一组分组)。在一个实施方案中,计算设备411可在发送600个分组中的每个分组期间暂停一段时间(例如,休眠几毫秒,一秒等)。该组分组包括分组PACKET_A_1至PACKET_A_600。NAT 431可将每个套接字与NAT 431的端口(例如,外部接口)相关联。例如,NAT 431可将发送PACKET_A_1的套接字与NAT 431的端口10333相关联,并且NAT 431可经由端口10333将PACKET_A_1转发至NAT 432和/或计算设备412(如由PACKET_A_1的源SRC:10333所示)。在另一个示例中,NAT 431可将发送PACKET_A_599的套接字与NAT 431的端口54433相关联,并且NAT 431可经由端口54433将PACKET_A_599转发至NAT 432和/或计算设备412(如由PACKET_A_599的源SRC:54433所示)。
另外如图4B所示,计算设备412可经由套接字(例如,单个套接字)和NAT 432(例如,经由锥形NAT)发送600个分组(例如,一组分组),如上所述。在一个实施方案中,计算设备412也可在发送600个分组中的每个分组期间暂停一段时间(例如,休眠几毫秒,一秒等)。该组分组包括分组PACKET_B_1至PACKET_B_600。计算设备412可将每个分组发送至NAT 431的随机选择的端口,如上所述。例如,可将PACKET_B_3发送至NAT 431的端口3253(如由PACKET_B_3的目的地DST:3253所示)。在另一个示例中,可将PACKET_B_600发送至NAT 431的端口10333(如由PACKET_B_600的目的地DST:10333所示)。
如上所述,如果NAT 431的(与由计算设备411创建的600个套接字相关联的)第一组随机选择的端口号中的至少一个端口号与NAT 431的(由计算设备412确定的)第二组随机选择的端口号中的至少一个端口号相匹配,则计算设备411能够经由NAT 431和NAT 432与计算设备412建立连接(例如,P2P连接)。如图4B所示,发送PACKET_A_2的套接字与NAT431的端口3253相关联,并且PACKET_B_3由计算设备412发送至NAT 431的端口3253。因此,与由计算设备411创建的第一组套接字相关联的端口号3253与由计算设备412选择的端口号3253相匹配。这可允许计算设备411经由NAT 431和NAT 432建立与计算设备412的连接。
图5是根据实施方案示出了用于在计算设备之间建立连接的过程500的流程图。过程500可由控制器、处理设备(例如处理器、中央处理单元(CPU))和/或计算设备(例如膝上型计算机、NAS设备等)执行。控制器、处理设备和/或计算设备可以是处理逻辑,该处理逻辑包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,处理器上运行的用于执行硬件模拟的指令)、固件或它们的组合。
过程500开始于框505处,其中过程500确定由计算设备使用的NAT的类型。例如,过程500可确定由第一计算设备使用的第一NAT是对称NAT还是锥形NAT。过程500还可确定由第二计算设备使用的第二NAT是对称NAT还是锥形NAT。在框510处,过程500确定是否基于NAT的类型继续进行。如果第一NAT和第二NAT均为对称NAT,则过程500可结束(例如,过程500可避免确定套接字的数量,创建一组套接字,发送一组分组等)。如果第一NAT是对称NAT并且第二NAT为锥形NAT,则过程500前进至框515,在此处,过程500确定套接字的数量。套接字的数量可基于阈值概率(例如,期望的概率)来确定,如上所述。在一个实施方案中,套接字的数量可从另一个计算设备接收,或者可由用户提供,如上所述。
在框520处,过程500创建一组套接字(例如,可创建600个套接字,如图4B所示)。一组套接字中的每个套接字可与第一NAT的端口(例如,外部接口)相关联。第一NAT可为与一组套接字相关联的一组端口选择随机端口号,如上文所述。在框525处,过程500可经由一组套接字和/或第一NAT(例如,第一NAT的与一组套接字相关联的一组端口)发送一组分组。例如,过程500可经由600个套接字发送600个分组,如图4B所示。
在框530处,过程500确定是否经由一组套接字中的至少一个套接字从第二计算设备接收到分组,如上文所述。如果经由一组套接字中的一个套接字接收到分组,则第一计算设备可在框535处与第二计算设备建立连接。例如,可在第一计算设备和第二计算设备之间建立P2P连接。如果经由一组套接字未从第二计算设备接收到分组,则在框540处,进程500可确定是否再次执行框520,525和530(例如,是否创建第二组套接字,发送第二组分组等)。例如,过程500可确定是否已经接收到指示过程500应该再次执行框520,525和530的用户输入。在另一个示例中,过程500可分析配置文件或配置设置以确定是否再次执行框520,525和530(例如,配置文件可指示过程500应执行框520,525和530一定次数)。如果框520,525和530应当被再次执行,则过程500可继续前进到框520。如果框520,525和530不应被再次执行,则过程500可结束。
图6是根据实施方案示出了用于在计算设备之间建立连接的过程600的流程图。过程600可由控制器、处理设备(例如处理器、中央处理单元(CPU))和/或计算设备(例如膝上型计算机、NAS设备等)执行。控制器、处理设备和/或计算设备可以是处理逻辑,该处理逻辑包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,处理器上运行的用于执行硬件模拟的指令)、固件或它们的组合。
过程600开始于框605处,其中过程600确定由计算设备使用的NAT的类型。例如,过程600可确定由第一计算设备使用的第一NAT是对称NAT还是锥形NAT。过程600还可确定由第二计算设备使用的第二NAT是对称NAT还是锥形NAT。在框610处,过程600确定是否基于NAT的类型继续进行。如果第一NAT和第二NAT均为对称NAT,则过程600可结束(例如,过程600可避免确定网络地址,创建套接字,确定一组端口号等)。如果第一NAT为锥形NAT并且第二NAT为对称NAT,则过程600前进至框615,在该框处,过程600确定与第二计算设备相关联的网络地址(例如,IP地址)。在框620处,过程600创建可用于将分组发送至第二计算设备的套接字。
在框625处,该过程600可确定一组随机选择的端口号。一组随机选择的端口号中的端口号的数量可基于期望的概率(例如,阈值概率)来确定,如上文所述。在一个实施方案中,端口号的数量可从另一个计算设备接收,或者可由用户提供,如上所述。在框630处,过程600将一组分组发送至第二计算设备。例如,过程600可经由套接字发送600个分组,如图4B所示。
在框635处,过程600确定是否经由一组随机选择的端口号中的端口从第二计算设备接收到分组,如上文所述。如果经由一组随机选择的端口号中的端口接收到分组,则在框640处,第一计算设备可与第二计算设备建立连接。例如,可在第一计算设备和第二计算设备之间建立P2P连接。如果经由一组随机选择的端口号中的端口未接收到分组,则在框645处,进程600可确定是否再次执行框625,630和635(例如,是否确定第二组端口号,是否发送第二组分组等)。例如,过程600可确定是否已经接收到指示过程600应该再次执行框625,630和635的用户输入。在另一个示例中,过程600可分析配置文件或配置设置以确定是否再次执行框625,630和635(例如,配置文件可指示过程600应执行框625,630和635一定次数)。如果框625,630和635应当被再次执行,则过程600可继续前进到框625。如果框625,630和635不应被再次执行,则过程600可结束。
附加实施方案
本领域的技术人员将会知道,在一些实施方案中,可在本公开的范围内实现其他类型的分布式数据存储系统。此外,本文所述的过程中采取的实际步骤可能不同于附图中所描述或示出的那些。根据实施方案,上述步骤中的某些步骤可被去除,其他步骤可被添加。
虽然已经描述了某些实施方案,但这些实施方案仅以举例的方式呈现,并且不旨在限制保护范围。实际上,本文所述的新型方法和系统能够以多种其他形式体现。此外,可作出各种省略、替代以及对本文所述方法和系统的形式的改变。所附权利要求及其等同物旨在涵盖落入保护范围和实质的此类形式或修改。例如,附图中所示的各种部件可被实现为处理器上的软件和/或固件、ASIC/FPGA或专用的硬件。另外,上文公开的具体实施方案的特征和属性能够以不同的方式组合以形成附加实施方案,所有这些实施方案落入本公开的范围内。虽然本公开提供了某些优选的实施方案和应用,但对于本领域的普通技术人员而言显而易见的其他实施方案,包括不提供本文所述的所有特征和优点的实施方案也在本公开的范围内。因此,本公开的范围旨在仅通过对所附权利要求的标引来限定。
本文所用的词语“示例”或“示例性”是指用作例子、实例或例证。本文描述为“示例”或“示例性”的任何方面或设计不一定理解为优于其他方面或设计。相反,词语“示例”或“示例性”的使用旨在以具体方式呈现概念。如本公开中所用,术语“或”旨在表示包括端值在内的“或”而非不包括端值的“或”。即,除非另外指明或者上下文中明确指明,否则“X包括A或B”旨在表示包含端值在内的自然排列中的任一者。即,如果X包括A;X包括B;或X包括A和B两者,则“X包括A或B”在前述情况中的任一情况下被满足。此外,本公开中所用的冠词“一个”和“一种”以及所附权利要求一般应理解为是指“一个或多个”,除非另外指明或上下文中明确指明为单数形式。此外,全文中术语“实施方案”或“一个实施方案”或“具体实施”或“一个具体实施”的使用并非旨在表示相同的实施方案或具体实施,除非这样描述。此外,如本文所用,术语“第一”、“第二”、“第三”、“第四”等是指区分不同元件的标签,并且不一定具有与它们的数字名称相符的顺序含义。
上文所述的所有过程可体现在由一个或多个通用或专用计算机或处理器执行的软件代码模块中,并且通过软件代码模块完全实现自动化。代码模块可存储在任何类型的计算机可读介质或其他计算机存储设备上或存储设备的集合中。方法中的一些或全部可另选地体现在专用计算机硬件中。
Claims (20)
1.一种装置,包括:
网络接口,所述网络接口被配置为与第一网络地址转换(NAT)传送数据;和
控制器,所述控制器耦接到所述网络接口,所述控制器被配置为:
创建一组套接字,其中所述一组套接字与所述第一NAT的一组端口相关联,并且其中所述一组端口包括由所述第一NAT随机选择的端口号;
经由所述一组套接字和所述一组端口将一组分组发送至计算设备;
确定是否已经由所述一组套接字中的第一套接字接收到第二组分组中的第一分组,其中所述第二组分组由所述计算设备发送至与所述装置相关联的第二组端口,并且其中所述第二组端口包括由所述计算设备随机选择的端口号;以及
当已经接收到所述第一分组时,经由所述第一套接字建立与所述计算设备的连接。
2.根据权利要求1所述的装置,其中所述计算设备经由第二NAT传送数据。
3.根据权利要求2所述的装置,其中所述第一NAT包括对称NAT,并且其中所述第二NAT包括锥形NAT。
4.根据权利要求2所述的装置,其中所述控制器被进一步配置为:
确定所述第一NAT包括第一对称NAT;
确定所述第二NAT包括第二对称NAT;以及
避免创建所述一组套接字,发送所述一组分组,确定是否已接收到所述第一分组,以及建立与所述计算设备的所述连接。
5.根据权利要求1所述的装置,其中所述控制器被进一步配置为:
当经由所述一组套接字未从所述计算设备接收到分组时,创建第二组套接字,其中所述第二组套接字与所述第一NAT的第三组端口相关联,并且其中所述第三组端口包括由所述第一NAT随机选择的端口号;
经由所述第二组套接字和所述第三组端口将第二组分组发送至所述计算设备;
确定是否已经由所述第二组套接字中的第二套接字从所述计算设备接收到第二分组;以及
当已经接收到所述第二分组时,经由所述第二套接字建立与所述计算设备的连接。
6.根据权利要求1所述的装置,其中所述控制器被进一步配置为确定所述一组套接字中的套接字的数量。
7.根据权利要求6所述的装置,其中所述控制器被进一步配置为通过以下各项来确定套接字的所述数量:
确定所述第一NAT的所述一组端口中的第一端口号与和所述计算设备相关联的第二组端口中的第二端口号匹配的阈值概率;以及
基于所述阈值概率选择套接字的所述数量。
8.根据权利要求7所述的装置,其中套接字的所述数量进一步基于由所述第一NAT使用的端口的第一数量来选择。
9.一种装置,包括:
网络接口,所述网络接口被配置为与第一网络地址转换(NAT)传送数据;和
控制器,所述控制器耦接到所述网络接口,所述控制器被配置为:
确定与计算设备相关联的网络地址;
确定一组随机选择的端口号;
经由第一套接字和所述第一NAT将一组分组发送至与所述计算设备相关联的一组端口,其中所述一组端口中的每个端口包括所述网络地址和所述一组随机选择的端口号中的端口号;
确定是否已经由所述一组端口中的第一端口从所述计算设备接收到第二组分组中的第一分组,其中所述第二组分组由所述计算设备经由第二NAT的第二组端口发送,并且其中所述第二组端口包括由所述第二NAT随机选择的端口号;以及
当已经接收到所述第一分组时,经由所述第一套接字建立与所述计算设备的连接。
10.根据权利要求9所述的装置,其中所述第二组端口与所述计算设备相关联,并且其中所述计算设备经由所述第二NAT传送数据。
11.根据权利要求10所述的装置,其中所述第一NAT包括锥形NAT,并且其中所述第二NAT包括对称NAT。
12.根据权利要求10所述的装置,其中所述控制器被进一步配置为:
确定所述第一NAT包括第一对称NAT;
确定所述第二NAT包括第二对称NAT;以及
避免确定所述网络地址,确定所述一组随机选择的端口号,发送所述一组分组,确定是否已接收到所述第一分组,以及建立与所述计算设备的所述连接。
13.根据权利要求9所述的装置,其中所述控制器被进一步配置为:
确定第二组随机选择的端口号;
经由所述第一套接字和所述第一NAT将第二组分组发送至与所述计算设备相关联的第三组端口,其中所述第三组端口中的每个端口包括所述网络地址和所述第二组随机选择的端口号中的端口号;
确定是否已从所述第三组端口中的第二端口接收到第二分组;
以及
当已经接收到所述第二分组时,经由所述第一套接字建立与所述计算设备的连接。
14.根据权利要求9所述的装置,其中所述控制器被进一步配置为确定所述一组随机选择的端口号中的端口号的数量。
15.根据权利要求14所述的装置,其中所述控制器被进一步配置为通过以下各项来确定端口号的所述数量:
确定所述一组随机选择的端口号中的第一端口号与和所述计算设备相关联的一组套接字中的第二端口号匹配的阈值概率;以及
基于所述阈值概率选择端口号的所述数量。
16.根据权利要求9所述的装置,其中所述控制器被进一步配置为:
创建所述第一套接字。
17.一种系统,包括:
第一计算设备和第二计算设备,其中所述第一计算设备包括:
第一控制器,所述第一控制器被配置为:
经由第一组套接字和第一网络地址转换(NAT)将第一组分组发送至所述第二计算设备,其中所述第一组套接字与所述第一NAT的第一组端口相关联,并且其中所述第一组端口包括由所述第一NAT随机选择的端口号;
确定是否已经由所述第一组套接字中的第一套接字从所述第二计算设备接收到第一分组;以及
当已经接收到所述第一分组时,经由所述第一套接字建立与所述第二计算设备的连接;并且
其中所述第二计算设备包括:
第二控制器,所述第二控制器被配置为:
经由第二NAT将第二组分组发送至与所述第一计算设备相关联的第二组端口,其中所述第二组端口中的每个端口包括与所述第一计算设备相关联的网络地址和一组随机选择的端口号中的端口号;
确定是否已从所述第二组端口中的第二端口接收到第二分组;以及
当已经接收到所述第二分组时,经由所述第二端口建立与所述第一计算设备的连接。
18.根据权利要求17所述的系统,其中所述第一控制器被进一步配置为:
确定所述第一组套接字中的套接字的数量。
19.根据权利要求18所述的系统,其中所述第一控制器被进一步配置为通过以下各项来确定套接字的所述数量:
确定所述第一组套接字中的第一端口号与所述一组随机选择的端口号中的第二端口号匹配的阈值概率;以及
基于所述阈值概率选择套接字的所述数量。
20.根据权利要求17所述的系统,其中所述第一NAT包括对称NAT,并且其中所述第二NAT包括锥形NAT。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/096,102 | 2016-04-11 | ||
US15/096,102 US10645059B2 (en) | 2016-04-11 | 2016-04-11 | Establishing connections between data storage devices |
PCT/US2017/019972 WO2017180254A1 (en) | 2016-04-11 | 2017-02-28 | Establishing connections between data storage devices located behind a nat |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108886539A true CN108886539A (zh) | 2018-11-23 |
CN108886539B CN108886539B (zh) | 2022-03-04 |
Family
ID=58358857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780022185.8A Active CN108886539B (zh) | 2016-04-11 | 2017-02-28 | 在位于nat之后的数据存储设备之间建立连接 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10645059B2 (zh) |
CN (1) | CN108886539B (zh) |
DE (1) | DE112017001966T5 (zh) |
WO (1) | WO2017180254A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636149A (zh) * | 2019-10-17 | 2019-12-31 | 深圳市网心科技有限公司 | 远程访问方法、装置、路由器及存储介质 |
WO2020259459A1 (zh) * | 2019-06-24 | 2020-12-30 | 华为技术有限公司 | 一种通信方法以及相关设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109962987A (zh) * | 2017-12-22 | 2019-07-02 | 杭州萤石软件有限公司 | 一种通信连接的建立方法、装置及系统 |
CN109040344A (zh) * | 2018-09-20 | 2018-12-18 | 杭州智块网络科技有限公司 | 一种nat穿透方法、装置、设备及存储介质 |
CN113839849A (zh) * | 2021-09-22 | 2021-12-24 | 天津津航计算技术研究所 | 一种基于stun的虚拟专用网络架设方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075127A1 (en) * | 2004-09-30 | 2006-04-06 | Logitech Europe S.A. | Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host |
US20090138611A1 (en) * | 2007-11-27 | 2009-05-28 | Yu-Ben Miao | System And Method For Connection Of Hosts Behind NATs |
CN101478493A (zh) * | 2009-02-10 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种穿越nat的通信方法及设备 |
CN101848235A (zh) * | 2010-04-16 | 2010-09-29 | 北京航空航天大学 | 一种支持nat穿越的实时多媒体数据p2p传输方案 |
CN101883056A (zh) * | 2010-07-23 | 2010-11-10 | 华南理工大学 | 基于udt和tcp中转实现nat穿越的系统和方法 |
CN101945141A (zh) * | 2010-09-17 | 2011-01-12 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
CN103442224A (zh) * | 2013-09-09 | 2013-12-11 | 杭州巨峰科技有限公司 | 一种基于nat穿透的视频监控访问策略和实现方法 |
CN104519061A (zh) * | 2014-12-17 | 2015-04-15 | 迈普通信技术股份有限公司 | 一种报文转发方法、装置和系统 |
CN104717311A (zh) * | 2013-12-12 | 2015-06-17 | 中国移动通信集团公司 | 一种nat穿越的方法、网络节点和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9876759B2 (en) * | 2014-04-07 | 2018-01-23 | Benu Networks, Inc. | Carrier grade NAT |
TWI595765B (zh) * | 2015-10-22 | 2017-08-11 | 財團法人工業技術研究院 | 穿透網路位置轉換器之方法及通訊裝置 |
-
2016
- 2016-04-11 US US15/096,102 patent/US10645059B2/en active Active
-
2017
- 2017-02-28 WO PCT/US2017/019972 patent/WO2017180254A1/en active Application Filing
- 2017-02-28 CN CN201780022185.8A patent/CN108886539B/zh active Active
- 2017-02-28 DE DE112017001966.4T patent/DE112017001966T5/de active Pending
-
2020
- 2020-04-18 US US16/852,462 patent/US11032240B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075127A1 (en) * | 2004-09-30 | 2006-04-06 | Logitech Europe S.A. | Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host |
US20090138611A1 (en) * | 2007-11-27 | 2009-05-28 | Yu-Ben Miao | System And Method For Connection Of Hosts Behind NATs |
CN101478493A (zh) * | 2009-02-10 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种穿越nat的通信方法及设备 |
CN101848235A (zh) * | 2010-04-16 | 2010-09-29 | 北京航空航天大学 | 一种支持nat穿越的实时多媒体数据p2p传输方案 |
CN101883056A (zh) * | 2010-07-23 | 2010-11-10 | 华南理工大学 | 基于udt和tcp中转实现nat穿越的系统和方法 |
CN101945141A (zh) * | 2010-09-17 | 2011-01-12 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
CN103442224A (zh) * | 2013-09-09 | 2013-12-11 | 杭州巨峰科技有限公司 | 一种基于nat穿透的视频监控访问策略和实现方法 |
CN104717311A (zh) * | 2013-12-12 | 2015-06-17 | 中国移动通信集团公司 | 一种nat穿越的方法、网络节点和系统 |
CN104519061A (zh) * | 2014-12-17 | 2015-04-15 | 迈普通信技术股份有限公司 | 一种报文转发方法、装置和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020259459A1 (zh) * | 2019-06-24 | 2020-12-30 | 华为技术有限公司 | 一种通信方法以及相关设备 |
US12003477B2 (en) | 2019-06-24 | 2024-06-04 | Huawei Technologies Co., Ltd. | Communication method and related device |
CN110636149A (zh) * | 2019-10-17 | 2019-12-31 | 深圳市网心科技有限公司 | 远程访问方法、装置、路由器及存储介质 |
CN110636149B (zh) * | 2019-10-17 | 2022-06-10 | 深圳市网心科技有限公司 | 远程访问方法、装置、路由器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20200252370A1 (en) | 2020-08-06 |
US11032240B2 (en) | 2021-06-08 |
CN108886539B (zh) | 2022-03-04 |
DE112017001966T5 (de) | 2019-01-03 |
WO2017180254A1 (en) | 2017-10-19 |
US20170295136A1 (en) | 2017-10-12 |
US10645059B2 (en) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108886539A (zh) | 在位于nat之后的数据存储设备之间建立连接 | |
US11374880B2 (en) | Automated deployment of internet connectivity to rack switches in a data center | |
US9665501B1 (en) | Self-encrypting data storage device supporting object-level encryption | |
WO2018125320A1 (en) | Validating firmware for data storage devices | |
US9792048B2 (en) | Identifying disk drives and processing data access requests | |
US20220321501A1 (en) | Network configuration of top-of-rack switches across multiple racks in a data center | |
US10673975B2 (en) | Content streaming service method for reducing communication cost and system therefor | |
CN108370382A (zh) | 用于虚拟机之间的数据传输的可缩放技术 | |
CN105745640A (zh) | 访问文件的方法、系统和主机 | |
US11960630B2 (en) | Register access | |
JP2013105396A (ja) | 通信方法、通信機器、ストレージ機器、及び制御プログラム | |
TWI522811B (zh) | 基於裝置狀況來組配信號的技術 | |
CN104077374B (zh) | 一种实现ip盘文件存储的方法及装置 | |
US9778293B1 (en) | Monitoring voltage levels for data storage devices | |
CN109783404A (zh) | 具有非对称通道的固态存储设备 | |
US20220368851A1 (en) | Removable Storage Device with a Virtual Camera for Video Surveillance as a Service | |
CN107710144A (zh) | 跨越逻辑卷的数据存储装置复制数据 | |
US20240020184A1 (en) | Message Routing in a Network-Ready Storage Product for Internal and External Processing | |
EP4180977A1 (en) | Parameter change command for storage device interface tuning | |
US20230269114A1 (en) | Automated cloud on-ramp in a data center | |
US9710170B2 (en) | Processing data storage commands for enclosure services | |
CN104182362B (zh) | 一种数据使用控制方法及移动存储设备 | |
EP2245544B1 (fr) | Dispositif de mémoire de masse et système de stockage | |
TWI333620B (en) | Network access point apparatus and method | |
KR20240069474A (ko) | 메모리 장치 및 사용 기록 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |