一种基于Linux系统实现的路由器环回口方法和装置制造方法及图纸

技术编号:19352161 阅读:37 留言:0更新日期:2018-11-07 17:30
本发明专利技术涉及计算机路由技术领域,提供了一种基于Linux系统实现的路由器环回口方法和装置。物理网卡收到第一报文,并解析出第一报文的目的IP;确认第一报文的目的IP与虚拟网卡的环回口IP相同,将第一报文写入到对应的虚拟网卡的缓存区中;虚拟网卡获取到第一报文后,查询Linux系统上的第一路由表,生成回应报文;用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文,根据查找到的第二路由表项选取回应报文的出口物理网卡,通过出口物理网卡将所述回应报文发出去。本发明专利技术实现了基于Linux系统的路由器对外呈现的环回口功能,提高了路由器自身的稳定性。

【技术实现步骤摘要】
一种基于Linux系统实现的路由器环回口方法和装置
本专利技术涉及计算机路由
,特别是涉及一种基于Linux系统实现的路由器环回口方法和装置。
技术介绍
在传统路由器上,存在着一种虚拟接口,称之为环回口或loopback接口,环回口是一种逻辑上的接口,与物理网口无关,它的状态永远是UP的。环回口的特点是稳定,不存在故障的可能性,比如路由器有多个接口连接到网络,为了安全起见只允许一个接口的IP地址可以被telnet,而正好该接口出现了故障,这时就无法登录到该路由器了,而如果用了环回口作为telnet的管理地址,只要还有一个物理接口正常连接到网络,那么都能登录到该路由器,当然前提是把环回口的路由宣告到了网络。又比如边界网关协议(BorderGatewayProtocol,简写为:BGP)会话如果使用物理接口进行连接,那么这个物理接口一旦down了,BGP邻居也就down了,再up时又要重新初始化BGP并进行路由收敛,这是相当耗路由器性能的,而且耗时间,如果使用了环回口作为BGP会话的接口,那么即使当前使用的链路中断了,但只要网络中还存在其它可以到达对方的链路时,BGP会话就不会被重置,保证了网络的稳定性。当然,环回口还可以做很多用处,但它的特点主要体现在稳定性上。在x86架构Linux系统上实现路由器的功能,就必须实现环回口,但是通用Linux系统上并没有实现这样一个虚拟的接口,所以需要设计一种方案来实现。
技术实现思路
本专利技术要解决的技术问题是在x86架构Linux系统上实现路由器的功能,就必须实现环回口,但是通用Linux系统上并没有实现这样一个虚拟的接口,所以需要设计一种方案来实现。本专利技术进一步要解决的技术问题是如果通过Linux系统自身具有的处理能力,将其介入到常规的路由功能中去,从而提出常规路由器无法解决或者改善的功能,包括对报文的深度解析等等。本专利技术采用如下技术方案:第一方面,本专利技术提供了一种基于Linux系统实现的路由器环回口方法,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,方法包括:物理网卡收到第一报文,用户空间应用程序获取所述第一报文,并解析出所述第一报文的目的IP;用户空间应用程序确认所述第一报文的目的IP与虚拟网卡的环回口IP相同,将所述第一报文写入到对应的虚拟网卡的缓存区中;虚拟网卡通过对应缓存区获取到所述第一报文后,查询Linux系统上的第一路由表,并根据找到的第一路由表项,生成回应报文;其中,所述回应报文被存储在相应虚拟网卡的缓存区上;用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文,查询用户空间应用程序中的第二路由表,根据查找到的第二路由表项选取回应报文的出口物理网卡,通过所述出口物理网卡将所述回应报文发出去。优选的,所述第一路由表中存储有所述虚拟网卡的环回口IP地址以及相应虚拟网卡的端口号的策略路由,所述策略路由基于环回口IP作为源地址进行选路,虚拟网卡生成回应报文时查询该策略路由选取虚拟网卡;所述第二路由表存储有路由网络环境,由各0路由器的IP地址以及相应各路由器的端口号构成,用于用户空间应用程序查询该路由选取出物理网卡,基于源IP网段,目的IP网段,目的端口范围和协议类型进行选路。优选的,用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文后,查询用户空间应用程序中的第二路由表,根据查找到的第二路由表项选取回应报文的出口物理网卡,还包括:应用程序对于所述回应报文进行深度包分析,获取所述回应报文的应用类型、网速配置、带宽要求中的一项或者多项分析结果;并根据所述分析结果和所述第二路由表项,选配适合上述应用类型、网速配置和/或带宽要求的物理网卡和相应端口,用于传输所述回应报文。优选的,所述方法还包括:接收针对第二路由表的更新报文,其中,所述针对第二路由表的更新报文由服务器侧根据当前网络类型状态生成的用于深度报文解析后,识别出的对应不同应用类型、网速配置和/或带宽要求的路由策略;用户空间应用程序更新本地存储的第二路由表中的相应路由策略。优选的,在出现本地设备中的第一物理网卡故障时,用户空间应用程序检测到网卡故障,通过动态路由协议通告给相邻路由器,并更新本地的第二路由表,将原本基于深度包分析分配给所述第一物理网卡发送的报文的路由表项更新为与所述第一物理网卡性能最相近的第二物理网卡。优选的,在所述用户空间应用程序对从物理网卡收到的第一报文中,获取第一报文的目的IP之前,所述方法还包括:在Linux内核中,建立预设数量的缓存,然后用环形缓冲区队列描述符连接起来构成网络缓冲区列表;Linux内核建立物理网卡与所述网络缓冲区列表之间的映射关系;其中,所述缓冲区控制权根据数据的写入和读取需求,分别在物理网卡和用户空间应用程序之间进行切换。优选的,所述将所述第一报文写入到对应的虚拟网卡的缓存区上,具体包括:用户空间应用程序使用write()系统函数调用向虚拟网卡的字符设备文件写入第一报文时,tun_chr_write()函数将被调用,所述tun_chr_write()函数使用tun_get_user()从用户区接受数据,其中将数据存入虚拟网卡的缓存区中;以便虚拟网卡调用函数netif_rx()将虚拟网卡的缓存区发送给TCP/IP协议栈处理,完成回应报文的生成。优选的,所述用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文,具体包括:所述TCP/IP协议栈把生成的回应报文存储在虚拟网卡的缓存区中;唤醒被阻塞的使用虚拟网卡的字符设备读数据的进程,虚拟网卡的字符设备读取虚拟网卡的缓存区,并将每一个读到的缓存发给用户空间应用程序。优选的,所述方法还包括用户空间应用程序主动向外发起报文,具体包括:用户空间应用程序调用socket函数接口,指定目标设备IP地址,并从虚拟网卡主动发出报文;其中,所述主动发出报文包括:主动与路由器建立BGP邻居的报文、更新网络拓扑中其它路由器中路由表的报文、向服务器发送本地物理网卡发生故障的消息报文和向服务器发送DPI分析报文中的一种或者多种。第二方面,本专利技术还提供了一种基于Linux系统实现的路由器环回口装置,用于实现第一方面所述的基于Linux系统实现的路由器环回口方法,所述装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的基于Linux系统实现的路由器环回口方法。第三方面,本专利技术还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于Linux系统实现的路由器环回口方法。本专利技术通过设计一虚拟网卡,实现了基于Linux系统的路由器对外呈现的环回口功能,提高了路由器自身的稳定性,并且,通过创建虚拟网卡,实现了用户空间应用程序对数据报文的读取、解析和发送过程的介入,为本专利技术后续扩展实现方案中解决常规路由器所无法实现的复杂解析过程提供了设计接口。【附图说明】为了更清楚地说明本专利技术实施例的技术方案,下面将对本专利技术实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员本文档来自技高网...

【技术保护点】
1.一种基于Linux系统实现的路由器环回口方法,其特征在于,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,方法包括:物理网卡收到第一报文,用户空间应用程序获取所述第一报文,并解析出所述第一报文的目的IP;用户空间应用程序确认所述第一报文的目的IP与虚拟网卡的环回口IP相同,将所述第一报文写入到对应的虚拟网卡的缓存区中;虚拟网卡通过对应缓存区获取到所述第一报文后,查询Linux系统上的第一路由表,并根据找到的第一路由表项,生成回应报文;其中,所述回应报文被存储在相应虚拟网卡的缓存区上;用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文,查询用户空间应用程序中的第二路由表,根据查找到的第二路由表项选取回应报文的出口物理网卡,通过所述出口物理网卡将所述回应报文发出去。

【技术特征摘要】
1.一种基于Linux系统实现的路由器环回口方法,其特征在于,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,方法包括:物理网卡收到第一报文,用户空间应用程序获取所述第一报文,并解析出所述第一报文的目的IP;用户空间应用程序确认所述第一报文的目的IP与虚拟网卡的环回口IP相同,将所述第一报文写入到对应的虚拟网卡的缓存区中;虚拟网卡通过对应缓存区获取到所述第一报文后,查询Linux系统上的第一路由表,并根据找到的第一路由表项,生成回应报文;其中,所述回应报文被存储在相应虚拟网卡的缓存区上;用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文,查询用户空间应用程序中的第二路由表,根据查找到的第二路由表项选取回应报文的出口物理网卡,通过所述出口物理网卡将所述回应报文发出去。2.根据权利要求1所述的基于Linux系统实现的路由器环回口方法,其特征在于,所述第一路由表中存储有所述虚拟网卡的环回口IP地址以及相应虚拟网卡的端口号的策略路由,所述策略路由基于环回口IP作为源地址进行选路,虚拟网卡生成回应报文时查询该策略路由选取虚拟网卡;所述第二路由表存储有路由网络环境,由各路由器的IP地址以及相应各路由器的端口号构成,用于用户空间应用程序查询该路由选取出物理网卡,基于源IP网段,目的IP网段,目的端口范围和协议类型进行选路。3.根据权利要求1所述的基于Linux系统实现的路由器环回口方法,其特征在于,用户空间应用程序从对应的虚拟网卡的缓存区上读取回应报文后,查询用户空间应用程序中的第二路由表,根据查找到的第二路由表项选取回应报文的出口物理网卡,还包括:应用程序对于所述回应报文进行深度包分析,获取所述回应报文的应用类型、网速配置、带宽要求中的一项或者多项分析结果;并根据所述分析结果和所述第二路由表项,选配适合上述应用类型、网速配置和/或带宽要求的物理网卡和相应端口,用于传输所述回应报文。4.根据权利要求3所述的基于Linux系统实现的路由器环回口方法,其特征在于,所述方法还包括:接收针对第二路由表的更新报文,其中,所述针对第二路由表的更新报文由服务器侧根据当前网络类型状态生成的用于深度报文解析后,识别出的对应不同应用类型、网速配置和/或带宽要求的路由策略;用户空间应用程序更新本地存储的第二路由表中的相应路由策略。5.根据权利要求3所述的基于Linux系统实现的路由器环回口方法,其特征在于,在出现本地设备中的第一物理网卡故障时,用户空间应用程序检测到网卡故障,通过动态路由协议通告给相邻路...

【专利技术属性】
技术研发人员:薛秋宝谭国权
申请(专利权)人:武汉绿色网络信息服务有限责任公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1