一种基于独立内核模块的LISP数据流处理方法与流程

文档序号:18061062发布日期:2019-07-03 03:05阅读:273来源:国知局
一种基于独立内核模块的LISP数据流处理方法与流程

本发明是计算机网络领域数据流处理方法,尤其涉及一种基于独立内核模块的位置与身份分离协议LISP(Locator/Identity Separation Protocol)数据流处理方法。



背景技术:

LISP是最初由思科公司提出的一种位置与身份分离的方案。LISP支持位置和身份信息的解耦合,避免IP(Internet Protocol,网络之间互连的协议)语义重载,用来支持移动性方案设计。它采用“映射-封装”机制,以终端身份标识EID(Endpoint ID)为索引查询映射系统(Mapping Service System),利用匹配的路由位置标识RLOC(Routing Locator)对报文进行封装,在路由空间依据报文目的RLOC进行路由寻址。它能从根本上解决IP语义重载的难题,同时能有效地解决BGP(Border Gateway Protocol,边界网络协议)表项膨胀问题。相对于推倒重来式的未来互联网架构方案,LISP属于演进式的改良方案。正是由于LISP增量部署的特点,它逐渐被学术界和工业界所接受。目前,LISP的RFC(Request For Comments,一系列以编号排定的文件)已成为IETF(Internet Engineering Task Force,互联网工程任务组)标准文档;同时,思科的网络设备也支持LISP协议。

在LISP协议中,网络架构划分为两个功能平面:数据平面和控制平面。控制平面指用于处理映射表项注册以及响应数据平面的映射表项请求的功能平面;数据平面(即LISP数据流处理方法)指处理LISP数据流的封装与解封装的功能平面。在现有的LISP数据流处理方法实现中,标准LISP数据流处理软件的开发是在Linux系统的协议栈展开的。图1是OpenLISP采取的LISP协议架构图(见http://inl.info.ucl.ac.be/OpenLISP):标准LISP数据流处理软件和IP协议栈均部署在Linux系统的协议栈,位于网络驱动程序与传输层之间。它需要对IP协议栈的代码进行修改,从而达到IP协议栈与标准LISP数据流处理软件间报文传递:1)IP协议栈通过网络驱动程序从网络接口接收到报文,并将报文传递给标准LISP数据流处理软件,由标准LISP数据流处理软件确定报文下一步处理流程;标准LISP数据流处理软件通过传输层接收到应用程序发送的报文,完成报文的处理后,将报文传递给IP协议栈,最后由IP协议栈利用网络驱动程序通过网络接口发送到与其直连的设备。

通过对Linux系统的协议栈打补丁,将LISP数据流处理软件源代码集成到Linux内核中。这种采用对Linux系统的协议栈打补丁的方法来实现LISP数据流处理方法存在以下弊端与不足:

(1)需要开发人员针对每一系列的Linux系统内核维护一套LISP数据流处理方法的补丁包,增加了维护LISP代码成本;

(2)在不公开内核源码的Linux系统中,无法通过对Linux系统的协议栈打补丁的方式来部署LISP数据流处理方法;

(3)LISP数据流处理方法的开发人员需具备熟练掌握Linux系统的协议栈能力,增加了开发难度和开发周期。



技术实现要素:

本发明要解决的技术问题是提供一种基于独立内核模块的LISP数据流处理方法,解决采用对Linux系统协议栈打补丁的方法来实现LISP数据流处理方法在代码维护成本、跨平台部署难度和开发周期等方面存在的不足。

本发明的技术方案包括以下步骤:

第一步、将标准LISP数据流处理软件(见IETF RFC6830第10页-第53页)和一种称为虚拟接口Tunnel的网络驱动模块(见http://en.m.wikipedia.org/wiki/IP_tunnel)整合在一起,将LISP解封装报文功能(见IETF RFC6830第42页-第50页)和LISP封装报文功能(见IETF RFC6830第15页-第24页)移到虚拟接口Tunnel的网络驱动模块的传递报文部分,得到改进后LISP数据流处理软件。改进后LISP数据流处理软件安装在Linux系统的传输层。改进后LISP数据流处理软件与标准LISP数据流处理软件相比,运行的结果多了创建成功虚拟接口Tunnel。虚拟接口Tunnel是Linux系统的IP协议栈与改进后LISP数据流处理软件间报文传递通道,虚拟接口Tunnel具有三类功能:1)LISP解封装报文功能,2)LISP封装报文功能,3)在改进后LISP数据流处理软件和IP协议栈之间传递报文的功能。虚拟接口Tunnel是Linux系统中一类网络接口,并不真实地从外部接收和发送报文,而是在Linux系统内部接收和发送报文。

第二步、将改进后LISP数据流处理软件加载到Linux系统中,由改进后LISP数据流处理软件自动创建虚拟接口Tunnel,方法是:

2.1利用Linux系统中insmod工具将改进后LISP数据流处理软件加载到Linux系统的传输层。利用Linux系统中lsmod工具查询改进后LISP数据流处理软件是否加载成功:如果加载成功,执行步骤2.2;否则,跳转至步骤2.1继续加载。

2.2运行改进后LISP数据流处理软件,利用Linux系统中iplink工具查询虚拟接口Tunnel是否创建成功:如果创建成功,执行步骤2.3,否则,跳转至步骤2.1.

2.3利用Linux系统中ifconfig工具配置虚拟接口Tunnel的IP地址,要求虚拟接口Tunnel的IP地址与Linux系统中网络接口的IP地址位于不同网段。

2.4利用Linux系统中route工具添加默认网关,默认网关的地址是虚拟接口Tunnel的IP地址。

第三步、协议栈中的IP协议栈、虚拟接口Tunnel、改进后LISP数据流处理软件相互协作,从网络接口收发报文,方法是:

3.1 IP协议栈通过网络驱动程序从网络接口接收报文,检查报文中目的IP地址是否等于Linux系统中任意一个网络接口的IP地址:如果与Linux系统中所有网络接口的IP地址均不相等,说明报文类型是IP报文,跳转至步骤3.2;如果在Linux系统中找到一个与报文中目的IP地址相等的网络接口的IP地址,说明报文类型是LISP报文,跳转至步骤3.3。

3.2 IP协议栈判断接收的IP报文的下一跳的IP地址是否等于虚拟接口Tunnel的IP地址,如果下一跳IP地址等于虚拟接口Tunnel的IP地址,说明报文类型是IP报文,跳转至步骤3.2.2;否则说明报文类型是非法报文,跳转至步骤3.2.1。

3.2.1 IP协议栈将该IP报文丢弃,跳转至步骤3.4;

3.2.2虚拟接口Tunnel从IP协议栈接收IP报文,将IP报文传递到改进后LISP数据流处理软件;

3.2.3改进后LISP数据流处理软件将IP报文封装为LISP报文(见IETF RFC6830第15页-第24页)并将封装好的LISP报文传递给虚拟接口Tunnel;

3.2.4虚拟接口Tunnel接收到LISP报文,将LISP报文又传递回IP协议栈;

3.2.5 IP协议栈从虚拟接口Tunnel接收LISP报文,查找转发表确定报文转发的下一跳的网络接口,将LISP报文通过该网络接口发送至与其直连的设备,跳转至步骤3.4。

3.3 IP协议栈检查LISP报文头部中IP协议号是否等于4:如果LISP报文头部中IP协议号等于4,说明报文类型是LISP报文,跳转至步骤3.3.2;如果报文头部中IP协议号不等于4,说明报文类型是非法报文,跳转至步骤3.3.1.

3.3.1 IP协议栈将报文丢弃,并跳转至步骤3.4;

3.3.2 IP协议栈去掉LISP报文中IP头部,将LISP报文传递给虚拟接口Tunnel;

3.3.3虚拟接口Tunnel从IP协议栈接收LISP报文,将LISP报文传递给改进后LISP数据流处理软件,改进后LISP数据流处理软件将收到的LISP报文解封装报文为IP报文(见IETF RFC6830第42页-第50页),并将解封装后IP报文传递给虚拟接口Tunnel,由虚拟接口Tunnel传递给IP协议栈;

3.3.5 IP协议栈从虚拟接口Tunnel接收IP报文,查找转发表确定报文转发的下一跳的网络接口,将IP报文通过该网络接口发送至与其直连的设备,跳转至步骤3.4。

3.4完成一个报文处理任务。

采用本发明可以达到以下技术效果:

1、改进后LISP数据流处理软件以独立内核模块的方式加载在Linux系统,使得不需要修改Linux协议栈的代码,完全不需要利用对Linux系统的协议栈打补丁的方式来实现LISP数据流处理,使得代码维护成本低,开发人员能力要求也大大降低。

2、本发明利用Linux系统提供的insmod工具动态地加载改进后LISP数据流处理软件,利用Linux系统提供的rmmod工具动态地卸载LISP数据流处理软件,跨平台部署难度降低,开发周期减少。

3、改进后LISP数据流处理软件通过虚拟接口Tunnel来实现IP协议栈和改进后LISP数据流处理软件间报文传递,使得改进后LISP数据流软件与IP协议栈有机的结合在一起。

附图说明

图1是背景技术所述的OpenLISP采取的LISP协议架构图;

图2是本发明第一步对标准LISP数据流处理软件进行改进后的LISP协议架构图;

图3是本发明的总体流程图。

具体实施方式

图1是背景技术所述的OpenLISP采取的LISP协议架构图。如图1所示:标准LISP数据流处理软件和IP协议栈均部署在Linux系统的协议栈,位于网络驱动程序与传输层之间。它需要对IP协议栈的代码进行修改,从而达到IP协议栈与标准LISP数据流处理软件间报文传递:1)IP协议栈通过网络驱动程序从网络接口接收到报文,并将报文传递给标准LISP数据流处理软件,由标准LISP数据流处理软件确定报文下一步处理流程;标准LISP数据流处理软件通过传输层接收到应用程序发送的报文,完成报文的处理后,将报文传递给IP协议栈,最后由IP协议栈利用网络驱动程序通过网络接口发送到与其直连的设备。

图2是本发明第一步对标准LISP数据流处理软件进行改进后的LISP协议架构图;如图2所示,将标准LISP数据流处理软件和一种称为虚拟接口Tunnel的网络驱动模块整合在一起,将LISP解封装报文功能和LISP封装报文功能移到虚拟接口Tunnel的网络驱动模块的传递报文部分,得到改进后LISP数据流处理软件。改进后LISP数据流处理软件安装在Linux系统的传输层。改进后LISP数据流处理软件与标准LISP数据流处理软件相比,运行的结果多了创建成功虚拟接口Tunnel。虚拟接口Tunnel是Linux系统的IP协议栈与改进后LISP数据流处理软件间报文传递通道,虚拟接口Tunnel具有三类功能:1)LISP解封装报文功能,2)LISP封装报文功能,3)在改进后LISP数据流处理软件和IP协议栈之间传递报文的功能。虚拟接口Tunnel是Linux系统中一类网络接口,并不真实地从外部接收和发送报文,而是在Linux系统内部接收和发送报文。

图3是本发明的总体流程图。本发明包括以下步骤:

第一步、将标准LISP数据流处理软件(见IETF RFC6830第10页-第53页)和一种称为虚拟接口Tunnel的网络驱动模块(见http://en.m.wikipedia.org/wiki/IP_tunnel)整合在一起,将LISP解封装报文功能(见IETF RFC6830第42页-第50页)和LISP封装报文功能(见IETF RFC6830第15页-第24页)移到虚拟接口Tunnel的网络驱动模块的传递报文部分,得到改进后LISP数据流处理软件。

第二步、将改进后LISP数据流处理软件加载到Linux系统中,由改进后LISP数据流处理软件自动创建虚拟接口Tunnel。

第三步、协议栈中的IP协议栈、虚拟接口Tunnel、改进后LISP数据流处理软件相互协作,从网络接口收发报文。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1