基于DPDK的URL认证的重定向系统与方法与流程

文档序号:11517827阅读:489来源:国知局
本公开涉及通信网络
技术领域
:,尤其涉及一种基于数据平面开发套件(dataplanedevelopmentkit,简称dpdk)的url认证重定向的系统及方法。
背景技术
::随着网络技术的普及和发展,网络使用愈来愈频繁,为了保障网络的安全,同时也为网络应用提供身份认证、访问控制等安全服务,有必要建立用户和网络的信誉服务系统。而且,面对日益增长的庞大网络流量,网关需要处理的数据量也越来越大,流量的实时处理性能要求越高。通常url认证重定向系统包括访问的第三方系统和重定向url服务器。第三方系统一般是用户将要访问的地址,重定向url服务器是第三方系统重定向指向的地址。此架构下,该系统部署需要有个第三方系统的接入,而且只有用户访问才会出现重定向,因此该重定向系统适用于基于网页到网页的重定向。但是针对于网络登录,尤其是计费网关类的使用,重定向系统需要透明接入,同时要求当用户端打开浏览器的时候,弹出登录页面以便于用户上网的身份认证。因此需要一种基于网关的url认证重定向系统来实现。目前,基于网关实现的url认证重定向系统是通过linux内核实现,但是由于内核本身没有针对大流量情景进行专门优化,比如频繁地网卡中断会降低cpu使用率等,导致内核处理大流量数据性能一般,当网络使用频繁,数据量很大的时候,性能受限,因此寻求一个适用于常见硬件平台同时性能优异的开发技术成为必然。公开内容(一)要解决的技术问题本公开提供了一种基于dpdk的url认证的重定向系统及方法,以至少部分解决以上所提出的技术问题。(二)技术方案根据本公开的一个方面,提供了一种基于dpdk的url认证的重定向系统,该系统在部署的dpdk环境下运行,包括:控制网关,该控制网管包括dpdk库,该控制网关用于基于dpdk库接收并解析及转发用户端发送的报文:当用户端已经被授权登录时,基于dpdk库转发报文,使用户直接连接外网;当用户端未被授权登录且用户端与控制网关处于已连接状态时,将重定向url添加到回复报文并基于dpdk库转发至用户端。在本公开一些实施例中,所述dpdk库包括:接收函数模块,用于直接从网卡接口读取完整链路层报文,存储在dpdk结构体变量rte_mbuf中,并调用读取函数模块读取二层、三层、四层报文信息;读取函数模块,用于处理由dpdk结构体变量rte_mbuf传入的接收数据,并分别将ip类型、二层、三层、四层头部指针传入相应的头指针结构体变量。在本公开一些实施例中,所述dpdk库还包括:处理函数模块,用于解析所述接收函数模块读取的报文信息,并对报文信息进行处理,获得需要发送的报文信息;发送函数模块,用于将通过所述处理函数模块获得的报文通过发送网卡接口发送出去。在本公开一些实施例中,所述的重定向系统还包括:webportal服务器,连接到控制网关,作为用户端重定向时访问的url地址的服务器,当用户端未被授权登录且用户端与控制网关处于未连接状态,需要重定向时,提供网页供用户进行登录,并判断用户登录是否成功,同时将登录结果发送至控制网关。在本公开一些实施例中,控制网关中包括:自定义结构体变量gtable,存储已授权的用户端ip,以及自定义结构体变量conn_item,存储尚未授权用户ip连接信息。根据本公开的另一个方面,提供了一种基于dpdk的url认证的重定向方法,所述方法包括如下步骤:步骤a,控制网关获取用户发送的tcp请求连接报文,调用dpdk库的接收函数直接从网卡获取二层数据,并用dpdk库的处理函数解析报文信息;步骤b,判断用户是否授权,若该用户尚未授权,则进行报文重定向,则转至步骤c;若用户已授权,则直接转发报文;步骤c,判断用户连接状态,若用户状态为未连接,则控制网关伪装成目的ip与用户ip进行三次握手,当握手成功后,该用户ip标记为已连接状态;若用户状态为已连接,转至步骤d;步骤d,握手成功后,当控制网关接收到用户端再次发送http请求报文后,判断该用户ip为已连接状态,将重定向的url添加至回复报文中发送至用户端;步骤e,控制网关得到报文后转发,用户端访问webportal服务器,到指定的url页面并登录,若登录成功,webportal服务器将登录结果返回至控制网关,此时控制网关标记该用户ip为已授权状态。在本公开一些实施例中,所述步骤b中,当控制网关分析接收报文的源ip时,首先在gtable中查找,判断是否该所接收的用户ip是否处于已授权状态。在本公开一些实施例中,执行所述步骤b过程中,在用户为已授权状态下,当用户超时未传输或者会话超时后,则清除gtable中的用户授权信息。在本公开一些实施例中,判断用户是否超时,由该重定向系统中的计时器计算,当用户上一次发消息的时间加上超时时间超过了现在的时间,表示用户会话已超时,用户的会话超时时间和可以由系统灵活设置。在本公开一些实施例中,在所述步骤c中进一步包括,当控制网关伪装成目的ip与用户端进行tcp三次握手时,tcp握手的状态信息存储在conn_item中,包括目的ip及源ip,完全建立成功后在conn_item中将该用户ip设置为已连接状态。在本公开一些实施例中,连接状态又分为:tcp_listen,tcp_syn_recv,tcp_established和tcp_closed:当用户ip第一次发送报文,控制网关将该用ip置为tcp_listen状态,并添加至conn_item中;伪装成目的ip组建成tcp握手回复报文发送至用户ip,此时将用户ip置为tcp_syn_recv;当用户ip发送tcp握手确认,控制网关将该用户ip状态置为tcp_established,表示连接成功;当用户ip超时未发送数据或者发送断开请求,控制网关回复用户ip并置为tcp_closed。在本公开一些实施例中,在所述步骤e中进一步包括:控制网关将重定向url附在报文后发送至源ip,直至源ip合法登录后,控制网关将该源ip记录在gtable中,表示该源ip处于已授权状态,url重定向地址也可以由系统指定;控制网关在用户访问重定向url地址时作转发作用,用户端与webportal服务器首先进行tcp三次握手,握手成功后,用户获取到url页面并进行登录,若用户成功登录则将该用户ip标记为已授权状态。在本公开一些实施例中,执行所述步骤a~d过程中,若用户端发送释放连接给上述的目的ip,则控制网关伪装成目的ip与该用户四次挥手断开tcp连接,挥手的状态保存在存储用户连接信息的conn_item中。在本公开一些实施例中,执行所述步骤a~d过程中,若用户端超时未发送消息给上述目的ip,则控制网关将该用户连接信息标记从conn_item中删除。(三)有益效果从上述技术方案可以看出,本公开基于dpdk的url认证重定向的系统及方法至少具有以下有益效果其中之一:(1)通过引入dpdk来实现url认证重定向,使得控制网关在收发报文和处理性能上明显提高,在收发报文时,控制网关通过调用dpdk的收发函数直接从网卡即硬件上获取二层报文或发送报文,绕过linux内核直接和硬件进行交互,避免了内存的拷贝,节约了数据处理时间,提高了计算机性能;(2)控制网关通过监控接收报文的源ip来判断用户ip是否需要重定向,在流量出网之前进行过滤,避免了其它用户操作,可以解决用户首次上网需要进行账号登录,实现网关计费的问题,整个重定向接入过程对用户完全透明,提升了用户体验;(3)由于系统过滤操作是基于用户进行http访问,即需要浏览网页等其它http协议操作时才会进行过滤,因而不会排除其它的协议使用。附图说明图1为本公开实施例是本公开的基于dpdk的url认证的重定向系统的模块架构图。图2是本公开的基于dpdk的url认证的重定向系统操作流程图。具体实施方式本公开提供了一种基于dpdk的url认证重定向的系统及方法,通过引入dpdk来实现url认证重定向,使得控制网关在收发报文和处理性能上明显提高。在收发报文时,控制网关通过调用dpdk的收发函数直接从网卡即硬件上获取二层报文或发送报文,避免了内存的拷贝,节约了数据处理时间。控制网关通过判断用户是否已登录来决定是否需要重定向,分为未授权和已授权。当用户尚未授权时,控制网关会重定向至webportal服务器;当用户登录成功后,控制网关标记该用户为已授权状态,当用户再次发送报文时,控制网关直接将报文转发。为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。在本公开的第一个示例性实施例中,提供了一种基于dpdk的url认证的重定向系统。图1为本公开第一实施例基于dpdk的url认证的重定向系统的模块架构图,其表示出了控制网关、webportal服务器、出口路由器及用户所在的内网和访问的外网的连接关系。如图1所示,本公开基于dpdk的url认证重定向的系统包括:用户端,控制网关和webportal服务器,其中,用户端作为浏览网页的访问端,包括出口路由器(router);控制网关是用户出网经过的交换机,通过监控接收报文的源ip来判断用户ip是否需要重定向,若该源ip未授权,则控制网关对用户端进行重定向;若该源ip已授权,控制网关将报文直接转发;webportal服务器是重定向url指向地址的服务器。所述重定向系统基于dpdk实现,该系统需要在dpdk环境下运行,因此部署该系统之前需要先部署dpdk。系统不使用内核协议栈的函数而是调用dpdk库函数实现对报文的接收、处理和发送。dpdk直接和硬件进行交涉,并对包处理的流程进行了大量的优化,尤其当处理的数据报文很多时,dpdk的处理速度更加明显,提高了计算机的性能。以下分别对本实施例基于dpdk的url认证重定向系统的各个组成部分进行详细描述。控制网关(gateway),连接用户端与外网,是用户出网经过的交换机,用于监听所有总的数据流,接收报文并进行相应的数据分析处理和转发。当尚未授权的用户发出tcp请求时,控制网关伪装成目的ip与用户端进行tcp握手并返回重定向url用户端;当用户已授权时,控制网关直接将报文转发。这样,通过在流量出网之前进行过滤,同时避免了其它用户操作,实现了系统的透明插入。该控制网关不会影响其他设备的操作,同时,该控制网关基于dpdk库来操作,系统性能更优,处理效率和转发效率更高。但是,该过滤操作是基于用户进行http访问,也就是需要浏览网页等其它http协议操作时才会进行过滤,所以不会排除其它的协议使用。所述dpdk库包括:接收函数模块,用于直接从网卡接口读取完整链路层报文,存储在dpdk结构体变量rte_mbuf中,并调用所述读取函数模块读取二层、三层、四层报文信息;读取函数模块,用于处理由dpdk结构体变量rte_mbuf传入的接收数据,并分别将ip类型、二层、三层、四层头部指针传入结构体变量。所述dpdk库还包括:处理函数模块,用于解析所述接收函数模块读取的报文信息,并对报文信息进行处理,获得需要发送的报文信息;发送函数模块,用于将通过所述处理函数模块获得的报文通过发送网卡接口发送出去。控制网关控制用户ip处于未授权和已授权状态,未授权表示用户尚未登录,需要先登录账号,因此控制网关会重定向至webportal服务器;而已授权状态表示用户已登录,此时控制网关作为交换机直接将数据报文发送至目的ip。已授权的用户端ip存储于gtable中,而尚未授权的用户ip连接信息存储于conn_item中。初始化的时候,控制网关需要对写入重定向url,超时时间以及记录已授权用户ip的信息的gtable和记录需要连接用户ip的信息的conn_item的变量进行初始化。当用户登录成功后,该用户ip信息添加至gtable中,表示该用户ip已被标记为授权状态;若用户尚未登录,登录的过程存储在conn_item中,标记该用户所处的状态。用户的实时状态除了由用户自己发送,另一方面由该系统的定时查看来实时更新用户的状态。控制网关使用dpdk库的接收函数直接从网卡接口读取完整链路层报文,存储在dpdk结构体rte_mbuf变量中,并使用dpdk库的读取函数模块读取二层、三层、四层报文信息并将获得的报文通过dpdk库的发送函数从指定网卡接口发送出去。在使用dpdk接收报文和发送报文时不使用中断而使用轮询方式的方法,避免了数据报文过多时,中断次数过多,从而节省了大量不必要的时间。webportal服务器连接到控制网关,是url重定向指向地址的服务器,负责和请求登录的用户响应。当用户首次上网尚未登录时,用户需要先重定向至webportal服务器的网页进行登录,并判断用户登录是否成功,同时将登录结果发送至控制网关。当用户访问webportal服务器时,仍然需要三次握手,进而进行http请求。同时,当用户输入账号和密码登录时,该服务器需要对用户的账号输入进行检查,查看是否账号是否合法,若登录合法,则将登录结果发送至控制网关。优选地,控制网关需连接在出口路由器与外网之间,在用户报文发出之前进行过滤,判断用户需要重定向还是转发至外网。webportal服务器需要与控制网关连接,是控制网关指向的重定向url地址。但是,本公开并不限于具体的连接方式,现有的其他各种连接方式均可应用于本公开中。尚未登录的用户浏览网页,会发送tcp的请求连接报文,控制网关会伪装成用户访问的目的ip与该用户端进行tcp三次握手。当控制网关伪装成目的ip与用户端进行tcp三次握手时,tcp握手的状态信息存储在conn_item中,包括目的ip,源ip等其他信息,完全建立成功后将该用户ip设置为已连接状态。握手成功后,控制网关将该用户ip标记为已连接状态。用户与控制网关tcp连接成功后,用户端继续向上述目的ip发送http请求报文,控制网关接收到该请求后,判断该ip状态为已连接,会伪装成目的ip向用户端返回一个重定向url。用户端访问该url地址的webportal服务器,服务器响应,当用户端登录账号和密码后,控制网关设置该用户ip为已授权状态。当用户端向上述目的ip发送释放连接报文时,控制网关会继续伪装成目的ip与用户端进行四次挥手直至断开。挥手的状态仍然保存在存储用户连接信息的conn_item中。当用户登录成功后,控制网关将该用户端的信息添加至gtable中,表示该用户被设置为ip授权状态。当控制网关分析接收报文的源ip时,首先在gtable中查找,判断是否该所接收的用户ip是否处于已授权状态。判断用户为已登录状态后,控制网关对接收到的报文不作处理直接从指定端口转发。当用户与控制网关(伪目的ip)连接成功后,用户向控制网关发送断开请求时,控制网关将该用户ip从gtable中删除,表示用户处于未授权状态。当用户超时未传输或者会话超时后,控制网关将该用户ip信息的授权信息或者连接信息标记删除,即将该用户ip从conn_item或者gtable中删除。用户的会话超时时间和可以由系统灵活设置,同时url重定向地址也可以由系统指定。为了更加精确的管理用户ip,当连接过程中用户ip超时未发送或者会话超时,控制网关会将该用户ip信息从conn_item中删除。在运行的过程中,控制网关会定时查看是否有用户ip超时未发送数据,将超时的用户ip信息从conn_item中释放,确保了当用户ip连接状态的实时性。至此,本公开第一实施例基于dpdk的url认证重定向的系统介绍完毕。在本公开的第二个示例性实施例中,提供了一种基于dpdk的url认证重定向的方法。图2是本实施例基于dpdk的url认证重定向系统的具体操作方法的流程图。下面参照图2来说明本公开的基于dpdk的url认证重定向系统的具体操作方法的流程。如图2所示,重定向方法包括依次执行的如下步骤:步骤a,控制网关获取用户发送的tcp请求连接报文,调用dpdk库的接收函数直接从网卡获取二层数据,并用dpdk库的处理函数解析报文信息。在所述步骤a中,该系统从网卡获取数据不使用linux内核栈函数,直接从网卡获取二层数据。通过调用dpdk库的数据处理函数,优化了包处理流程,缩短了反应时间。步骤b,判断用户是否授权,若该用户尚未授权,则进行报文重定向,转至步骤c;若用户已授权,则直接转发报文。在所述步骤b中进一步包括,子步骤b1,若该用户尚未授权,则转至步骤c;子步骤b2,用户已授权表示用户已合法登录,用户端可以正常上网,此时控制网关作为交换机直接将报文进行转发。步骤c,判断用户连接状态,若用户状态为未连接,则控制网关伪装成目的ip与用户ip进行三次握手,当握手成功后,该用户ip标记为已连接状态;若用户状态为已连接,转至步骤d。在所述步骤b中进一步包括,控制网关伪装成报文的目的ip与与该源ip进行tcp握手。控制网关将尚未授权的用户ip标记的连接状态记录在conn_item中,连接状态又分为:tcp_listen,tcp_syn_recv,tcp_established和tcp_closed。当用户ip第一次发送报文,控制网关将该用ip置为tcp_listen状态,并添加至conn_item中;伪装成目的ip组建成tcp握手回复报文发送至用户ip,此时将用户ip置为tcp_syn_recv;当用户ip发送tcp握手确认,控制网关将该用户ip状态置为tcp_established,表示连接成功。只有当用户发送基于tcp协议的报文时,控制网关才会判断该用户端是否授权。同时,当控制网关接收非ip,ipv6或者不是tcp协议时,控制网关直接转发,不再做任何处理。步骤d,握手成功后,当控制网关接收到用户端再次发送http请求报文后,判断该用户ip为已连接状态,将重定向的url添加至回复报文中发送至用户端。在所述步骤d中进一步包括,用户ip与控制网关tcp握手成功后,用户ip会进行页面请求,控制网关继续伪装成目的ip将重定向url添加到回复报文末尾,发送至用户端。用户端接收到重定向url报文后,得知想要访问的目的网址不存在,需要访问该url。步骤e,控制网关得到报文后转发,用户端访问webportal服务器,到指定的url页面并登录,若登录成功,webportal服务器将登录结果返回至控制网关,此时控制网关标记该用户ip为已授权状态。在所述步骤e中进一步包括:子步骤e1控制网关将重定向url附在报文后发送至源ip,直至源ip合法登录后,控制网关将该源ip记录在gtable中,表示该源ip处于已授权状态。子步骤e2,用户访问重定向url地址时,控制网关作转发作用,用户端与webportal服务器首先进行tcp三次握手,握手成功后,用户才会获取到url页面并进行登录,若用户成功登录则将该用户ip标记为已授权状态。在执行上述步骤a~d过程中,若用户端超时未发送消息给上述的目的ip,则控制网关将该用户从conn_item中删除。其中,当用户超时未发送数据或者会话超时则认为该用户已断开,该系统将该用户ip信息从conn_item或者gtable中释放。当用户端超时未发送消息时,表示用户端会话超时,用户端可能出现了异常中断等其它原因,控制网关需要清除此次的用户端的连接信息,若用户已登录,则需要清除gtable中的用户信息;若用户尚未登录,正在连接,则需要清除conn_item中的用户信息。当用户再次发送连接信息时,重新从第一步进行连接。判断用户是否超时,由该重定向系统中的计时器计算,当用户上一次发消息的时间加上超时时间超过了现在的时间,表示用户会话已超时,控制网关会针对用户所在的状态做相应的操作。在执行上述a~d过程中,当伪装成目的ip的控制网关发送至用户端重定向报文后,用户端访问重定向url并进行登录,当用户会与伪装成目的ip的控制网关释放tcp连接时,控制网关继续伪装成目的ip与该用户四次挥手断开tcp连接。在执行上述a~d过程中,当用户ip超时未发送数据或者发送断开请求,控制网关回复用户ip并置为tcp_closed,同时将该用户ip信息从该conn_item中删除。至此,本公开第二实施例基于dpdk的url认证重定向的方法介绍完毕。至此,已经结合附图对本公开实施例进行了详细描述。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属
技术领域
:中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。再者,单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的最佳实施方式。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本公开实施例的相关设备中的一些或者全部部件的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。并且,在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1