一种tcp连接的建立方法及装置的制造方法

文档序号:10578145阅读:281来源:国知局
一种tcp连接的建立方法及装置的制造方法
【专利摘要】本申请提供一种TCP连接的建立方法及装置,所述方法应用在网络设备上,包括:接收用户侧设备发送的TCP连接请求;查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket;当查找到所述第一socket时,根据所述第一socket创建第二socket;基于所述第二socket建立与所述用户侧设备的TCP连接。应用本申请实施例,网络设备可以通过创建携带有预设标识的公共监听socket来监听多个VRF下的连接和数据,大大减轻网络设备上层应用处理的复杂度,并节约了大量socket资源。
【专利说明】
一种TCP连接的建立方法及装置
技术领域
[0001 ]本申请涉及通信技术领域,尤其涉及一种TCP连接的建立方法及装置。
【背景技术】
[0002]VRF(Virtual Routing Forwarding,虚拟路由转发表)是VPN(Virtual PrivateNetwork,虚拟专用网络)中常用的一种网络隔离技术。现有技术中,管理人员可以在支持VPN的网络设备中创建多个VRF,用于对应VPN下的路由转发。
[0003]一般来说,针对每个VRF,网络设备可以创建一个或多个监听socket,比如:网络设备可以为每个上层应用创建对应的监听socket,用于为所述上层应用监听来自该VRF下的连接和数据。在这样的实施方式中,当所述网络设备中配置有大量VRF,或网络设备中安装有大量上层应用时,需要对应创建大量的监听socket,增加了上层应用处理的复杂度,同时浪费了大量socket资源。

【发明内容】

[0004]有鉴于此,本申请提供一种TCP(Transmiss1n Control Protocol,传输控制协议)连接的建立方法及装置,以解决现有技术中上层应用处理较复杂,且浪费大量socket资源的问题。
[0005]具体地,本申请是通过如下技术方案实现的:
[0006]本申请提供一种TCP连接的建立方法,所述方法应用在网络设备上,包括:
[0007]接收用户侧设备发送的TCP连接请求;
[0008]查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket ;
[0009]当查找到所述第一socket时,根据所述第一socket创建第二 socket;
[0010]基于所述第二socket建立与所述用户侧设备的TCP连接。
[0011 ] 可选的,所述根据所述第一socket创建第二socket,包括:
[0012]确定所述TCP连接请求所属的VRF;
[0013]复制所述第一socket,得到第二 socket ;
[0014]将所述第二socket的VRF设置为所述TCP连接请求所属的VRF。
[0015]可选的,所述方法还包括:
[0016]如果在所述监听socket队列中未查找到所述第一socket,则在所述监听socket队列中查找与所述五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的第三socket;
[0017]当查找到第三socket时,基于所述第三socket建立与所述用户侧设备的TCP连接。
[0018]可选的,所述方法还包括:
[0019]当未查找到所述第三socket时,丢弃所述TCP连接请求。
[0020]可选的,所述接收到用户侧设备发送的TCP连接请求之后,还包括:
[0021]判断本设备与所述用户侧设备是否已经建立TCP连接;
[0022]当未与所述用户侧设备建立TCP连接时,执行查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket的步骤。
[0023]本申请还提供一种TCP连接的建立装置,所述装置应用在网络设备上,包括:
[0024]请求接收单元,用于接收用户侧设备发送的TCP连接请求;
[0025]第一查找单元,用于查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket;
[0026]socket创建单元,用于当查找到所述第一 socket时,根据所述第一 socket创建第二socket;
[0027]第一连接单元,用于基于所述第二socket建立与所述用户侧设备的TCP连接。
[0028]可选的,所述socket创建单元,包括:
[0029]确定子单元,用于确定所述TCP连接请求所属的VRF;
[°03°] 复制子单元,用于复制所述第一 socket,得到第二 socket ;
[0031]设置子单元,用于将所述第二socket的VRF设置为所述TCP连接请求所属的VRF。
[0032]可选的,所述装置还包括:
[0033]第二查找单元,用于当所述监听socket队列中未查找到所述第一socket时,在所述监听socket队列中查找与所述五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的第三socket;
[0034]第二连接单元,用于在查找到第三socket时,基于所述第三socket建立与所述用户侧设备的TCP连接。
[0035]可选的,所述装置还包括:
[0036]请求丢弃单元,用于当未查找到所述第三socket时,丢弃所述TCP连接请求。
[0037]可选的,所述装置还包括:
[0038]判断单元,用于在接收用户侧设备发送的TCP连接请求后,判断本设备与所述用户侧设备是否已经建立TCP连接;
[0039]通知单元,用于当未与所述用户侧设备建立TCP连接时,通知所述第一查找单元查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket。
[0040]应用本申请实施例,网络设备创建携带有预设标识的公共监听socket,可以用于监听多个VRF的连接和数据,无需创建大量监听socket,大大减轻网络设备上层应用处理的复杂度,并节约了大量socket资源。
【附图说明】
[0041]图1是相关技术中一种支持多VPN的网络设备的组网架构图;
[0042]图2是本申请一示例性实施例示出的一种TCP连接的建立方法流程图;
[0043]图3是本申请一示例性实施例示出的一种TCP连接的建立装置的硬件结构图;
[0044]图4是本申请一示例性实施例示出的一种TCP连接的建立装置的框图;
[0045]图5是本申请一示例性实施例示出的另一种TCP连接的建立装置的框图;
[0046]图6是本申请一示例性实施例示出的另一种TCP连接的建立装置的框图。
【具体实施方式】
[0047]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0048]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0049]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0050]相关技术中,管理人员可以在支持VPN的网络设备中创建多个VRF,并为每个VRF创建对应的接口、协议等,从而实现各VPN之间的通信隔离。一般来说,针对每个VRF,网络设备可以创建一个或者多个监听socket,并保存到监听socket队列中,比如:网络设备可以为每个上层应用创建对应的监听socket,用于为所述上层应用监听来自该VRF下的连接和数据。[°°511目前,网络设备在为上层应用创建监听socket时,通常会给创建的socket设置所属的VRF,并保存该socket与VRF标识的对应关系,同时,还可以为该socket设置源端口号、源IP地址等配置信息。网络设备在接收到来自用户侧设备的TCP连接请求时,可以通过接收所述TCP连接请求的接口确定所述TCP连接请求所属的VRF,还可以提取出所述TCP连接请求的五元组信息,然后根据为监听socket设置的配置信息,在监听socket队列中查找与所述TCP连接请求所属VRF相同,且配置信息与所述TCP连接请求的五元组信息匹配的监听socket,如果查找到匹配的监听socket,则可以复制该监听socket,并基于复制得到的socket建立与所述用户侧设备的TCP连接。
[0052]请参考图1,图1所示的网络设备支持VPN功能,假设管理人员在所述网络设备中创建三个VPN,并分别为每个VPN创建对应的VRF,比如:VRF 10,VRF 20以及VRF 30。其中,接口Gige0_0属于VRF 10,接口Gige0_l属于VRF 20,接口Gige0_2属于VRF 30。用户侧设备设备I可以通过接口 GigeOJ)与网络设备进行通信,设备2可以通过接口 GigeOj与网络设备进行通信,设备3可以通过接口 Gige0_2与网络设备进行通信。在这样的组网框架下,网络设备可以创建监听socket a用于监听VRF 10下的连接和数据,比如:来自设备I的连接和数据。同样,网络设备还可以创建监听socket b用于监听VRF 20下的连接和数据,比如:来自设备2的连接和数据。创建监听socket c用于监听VRF 30下的连接和数据,比如:来自设备3的连接和数据。网络设备可以将监听socket a、监听socket b和监听socket c都保存到监听socket队列中。
[0053]但在现有技术的实现方式中,当网络设备中创建有大量VPN时,就需要对应创建大量的监听socket,因此所述网络设备需要处理大量的监听socket,增加了上层应用处理的复杂度,同时也浪费了大量socket资源。
[0054]为解决现有技术问题,本申请提供一种TCP连接的建立方法以及对应的装置,该方法可以应用在网络设备上,如图1所示,所述网络设备可以是支持VPN的PE(Provider Edge,服务提供商边缘设备)设备,也可以是支持VPN的服务器等设备。所述用户侧设备可以是CE(Customer Edge,用户侧边缘设备)设备,也可以是一台PC(Personal Computer,个人计算机)机。具体的,当网络设备接收到用户侧设备发送的TCP连接请求时,可以先查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket,当查找到所述第一socket时,根据所述第一socket创建第二socket,最后基于所述第二 socket建立与所述用户侧设备的TCP连接。应用本申请实施例,通过创建携带有预设标识的公共监听socket,可以监听多个VPN下的连接和数据,无需创建大量监听socket,大大减轻网络设备上层应用处理的复杂度,并节约了大量socket资源。
[0055]下面结合附图对本申请提供的TCP连接的建立方法及装置进行说明。
[0056]参见图2,为本申请一种TCP连接的建立方法的一个实施例流程图,该实施例从网络设备侧进行描述,包括以下步骤:
[0057]步骤201:接收用户侧设备发送的TCP连接请求。
[0058]步骤202:查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket ο
[0059]在本实施例中,网络设备在创建监听socket时,无需为监听socket设置所属的VRF。针对多个VPN,网络设备可以创建携带有预设标识的监听socket,该监听socket可供所述多个VPN使用。其中,所述预设的标识可以由开发人员进行设置,用于表示在查找监听socket时,忽略对VRF的匹配。当然,在实际应用中,网络设备通常还需要为所述监听socket配置对应的一项或多项配置信息,比如:源端口号、源IP地址等,本申请在此不再一一赘述。
[0060]基于前述步骤201,网络设备在接收到用户侧设备发送的TCP连接请求后,可以先判断本设备是否与所述用户侧设备已建立TCP连接,如果已建立,则可以结束本申请的后续流程。如果未建立,则可以查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket。
[0061 ] 在本实施例中,在监听socket队列中查找所述第一socket时,可以先判断监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配的监听socket。举例来说,针对所述监听socket队列中的某监听socket,假设为该监听socket配置有两项配置信息,分别为源IP地址以及源端口号,则在本步骤中,可以判断所述源IP地址以及源端口号是否与所述TCP连接请求的目的IP地址和目的端口号一致,如果一致,则可以确定该监听socket与所述TCP连接请求的五元组信息匹配,即查找到与所述TCP连接请求的五元组信息匹配的监听socket。如果不一致,则可以确定该监听socket与所述TCP连接请求的五元组信息不匹配,可以继续判断下一个监听socket。在本步骤中,当查找到匹配的监听socket时,查看所述监听socket中是否携带有预设标识,如果携带有预设标识,则执行步骤203;如果未携带预设标识,则可以采用现有技术的实现方案,获取所述TCP连接请求所属的VRF,比如:VRF标识,然后判断与所述TCP连接请求五元组匹配的监听socket的VRF是否与所述TCP连接请求所属的VRF相同,当该监听socket的VRF与所述TCP连接请求所属的VRF相同时,可以复制该监听socket,并根据复制后的监听socket建立与所述用户侧设备的TCP连接。当该监听socket的VRF与所述TCP连接请求所属的VRF不同时,可以确定网络设备在所述监听socket队列中没有查找到与所述TCP连接请求的五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的监听socket,则丢弃所述TCP连接请求。
[0062]可选的,网络设备还可以先判断监听socket队列中是否存在携带有预设标识的监听socket,如果存在携带有预设标识的监听socket,则可以再判断所述监听socket与所述TCP连接请求的五元组信息是否匹配,如果匹配,则执行步骤203;如果不匹配或监听socket队列中不存在携带有预设标识的监听socket,则网络设备可以根据现有技术方法查找与所述TCP连接请求所属VRF匹配且与所述TCP连接请求的五元组信息也匹配的监听socket,本申请在此不再一一赘述。
[0063]步骤203:当查找到所述第一socket时,根据所述第一socket创建第二socket。
[0064]在本实施例中,当网络设备查找到所述第一socket时,可以根据所述第一socket创建第二 socket。具体的,网络设备可以先复制所述第一 socket,得到第二 socket,由于所述第一socket携带有预设标识,表示未配置所述第一socket的VRF,因而所述第二socket也没有对应的VRF信息,考虑到这一点,在本申请实施例中,网络设备可以获取所述TCP连接请求所属的V R F,比如:获取接收到所述T C P连接请求的接口的V R F标识,然后将所述第二socket的VRF信息设置为所述接口的VRF标识。
[0065]在本实施例中,当所述第二socket的配置信息不完整时,还可以根据所述TCP连接请求的五元组信息完善所述第二 socket的配置信息。举例来说,假设所述第二 socket的配置信息中包括源端口号和源IP地址,但未包括目的端口号和目的IP地址,则可以将所述第二socket的目的端口号设置为所述TCP连接请求的源端口号,以及将所述第二socket的目的IP地址设置为所述TCP连接请求的源IP地址。
[ΟΟ??] 步骤204:基于所述第二 socket建立与所述用户侧设备的TCP连接。
[0067]在本实施例中,当网络设备得到所述第二socket时,可以基于所述第二socket建立与所述用户侧设备的TCP连接,用于监听来自所述用户侧设备的数据。
[0068]由上述实施例可见,网络设备创建携带有预设标识的公共监听socket,可以用于监听多个VRF的连接和数据,无需创建大量监听socket,大大减轻网络设备上层应用处理的复杂度,并节约了大量socket资源。
[0069 ]与前述TCP连接的建立方法的实施例相对应,本申请还提供了一种TCP连接的建立装置的实施例。
[0070]本申请TCP连接的建立装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请TCP连接的建立装置所在网络设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等;从硬件结构上来讲该网络设备还可能是分布式的网络设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0071]请参考图4、图5以及图6,为本申请提供的TCP连接的建立装置的框图,所述装置可以应用在前述图3所示的网络设备上,所述TCP连接的建立装置400可以包括:请求接收单元410、第一查找单元420、socket创建单元430和第一连接单元440。参见图5,所述TCP连接的建立装置400还可以包括:第二查找单元450、第二连接单元460、请求丢弃单元470、判断单元480和通知单元490。参见图6,所述socket创建单元430还可以包括:确定子单元431、复制子单兀432和设置子单兀433。
[0072]其中,请求接收单元410,用于接收用户侧设备发送的TCP连接请求;
[0073]第一查找单元420,用于查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket;
[0074]socket创建单元430,用于当查找到所述第一socket时,根据所述第一socket创建第二 socket ;
[0075]第一连接单元440,用于基于所述第二 socket建立与所述用户侧设备的TCP连接。
[0076]确定子单元431,用于确定所述TCP连接请求所属的VRF;
[0077 ] 复制子单元432,用于复制所述第一 socket,得到第二 socket ;
[0078]设置子单元433,用于将所述第二socket的VRF设置为所述TCP连接请求所属的VRF0
[0079]第二查找单元450,用于当所述监听socket队列中未查找到所述第一socket时,在所述监听socket队列中查找与所述五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的第三socket;
[0080]第二连接单元460,用于在查找到第三socket时,基于所述第三socket建立与所述用户侧设备的TCP连接。
[0081]请求丢弃单元470,用于当未查找到所述第三socket时,丢弃所述TCP连接请求。
[0082]判断单元480,用于在接收到用户侧设备发送的TCP连接请求后,判断本设备与所述用户侧设备是否已经建立TCP连接;
[0083]通知单元490,用于当未与所述用户侧设备建立TCP连接时,通知所述第一查找单元查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket。
[0084]由上述实施例可见,网络设备创建携带有预设标识的公共监听socket,可以用于监听多个VRF下的连接和数据,无需创建大量监听socket,大大减轻网络设备上层应用处理的复杂度,并节约了大量socket资源。
[0085]上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0086]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0087]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【主权项】
1.一种传输控制协议TCP连接的建立方法,其特征在于,所述方法应用在网络设备上,包括: 接收用户侧设备发送的TCP连接请求; 查找监听套接字socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket; 当查找到所述第一 socket时,根据所述第一 socket创建第二 socket; 基于所述第二 socket建立与所述用户侧设备的TCP连接。2.根据权利要I所述的方法,其特征在于,所述根据所述第一socket创建第二 socket,包括: 确定所述TCP连接请求所属的虚拟路由转发表VRF; 复制所述第一 socket,得到第二 socket ; 将所述第二 socket的VRF设置为所述TCP连接请求所属的VRF。3.根据权利要I所述的方法,其特征在于,所述方法还包括: 如果在所述监听socket队列中未查找到所述第一 socket,则在所述监听socket队列中查找与所述五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的第三socket; 当查找到第三socket时,基于所述第三socket建立与所述用户侧设备的TCP连接。4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 当未查找到所述第三socket时,丢弃所述TCP连接请求。5.根据权利要I所述的方法,其特征在于,所述接收到用户侧设备发送的TCP连接请求之后,还包括: 判断本设备与所述用户侧设备是否已经建立TCP连接; 当未与所述用户侧设备建立TCP连接时,执行查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket的步骤。6.一种TCP连接的建立装置,其特征在于,所述装置应用在网络设备上,包括: 请求接收单元,用于接收用户侧设备发送的TCP连接请求; 第一查找单元,用于查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一 socket; socket创建单元,用于当查找到所述第一socket时,根据所述第一socket创建第二socket; 第一连接单元,用于基于所述第二 socket建立与所述用户侧设备的TCP连接。7.根据权利要6所述的装置,其特征在于,所述socket创建单元,包括: 确定子单元,用于确定所述TCP连接请求所属的VRF ; 复制子单元,用于复制所述第一 socket,得到第二 socket ; 设置子单元,用于将所述第二 socket的VRF设置为所述TCP连接请求所属的VRF。8.根据权利要6所述的装置,其特征在于,所述装置还包括: 第二查找单元,用于当所述监听socket队列中未查找到所述第一socket时,在所述监听socket队列中查找与所述五元组信息匹配且与所述TCP连接请求所属的VRF也匹配的第三socket; 第二连接单元,用于在查找到第三socket时,基于所述第三socket建立与所述用户侧设备的TCP连接。9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 请求丢弃单元,用于当未查找到所述第三socket时,丢弃所述TCP连接请求。10.根据权利要6所述的装置,其特征在于,所述装置还包括: 判断单元,用于在接收到用户侧设备发送的TCP连接请求后,判断本设备与所述用户侧设备是否已经建立TCP连接; 通知单元,用于当未与所述用户侧设备建立TCP连接时,通知所述第一查找单元查找监听socket队列中是否存在与所述TCP连接请求的五元组信息匹配且携带有预设标识的第一socket ο
【文档编号】H04L29/06GK105939344SQ201610243263
【公开日】2016年9月14日
【申请日】2016年4月18日
【发明人】王富涛
【申请人】杭州迪普科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1