CN106484375B - 一种指令块加载方法、软交换设备及系统 - Google Patents

一种指令块加载方法、软交换设备及系统 Download PDF

Info

Publication number
CN106484375B
CN106484375B CN201510532479.8A CN201510532479A CN106484375B CN 106484375 B CN106484375 B CN 106484375B CN 201510532479 A CN201510532479 A CN 201510532479A CN 106484375 B CN106484375 B CN 106484375B
Authority
CN
China
Prior art keywords
instruction block
soft switch
code
block
dynamic
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.)
Active
Application number
CN201510532479.8A
Other languages
English (en)
Other versions
CN106484375A (zh
Inventor
喻径舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510532479.8A priority Critical patent/CN106484375B/zh
Publication of CN106484375A publication Critical patent/CN106484375A/zh
Application granted granted Critical
Publication of CN106484375B publication Critical patent/CN106484375B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种指令块加载方法、软交换设备及系统,涉及通信技术领域,可以减少指令块下发过程中的代码编译时间,进而提高指令块的加载效率。具体方案为:软交换设备接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;将所述指令块代码编译成二进制机器码;将所述二进制机器码加载至所述软交换设备的本地进程。本发明用于指令块加载的过程中。

Description

一种指令块加载方法、软交换设备及系统
技术领域
本发明涉及通信技术领域,尤其涉及一种指令块加载方法、软交换设备及系统。
背景技术
软件定义网络(Software Define Network,SDN)是一种可以实现数据转发面和控制面分离的网络架构。Open Flow技术可以应用于SDN,通过Open Flow协议实现转发与控制分离。Open Flow技术实现数据的转发必须遵循已有的网络协议,为了摆脱对特定协议的限制,业界提出了协议无感知转发(Protocol Oblivious Forwarding,POF)技术。POF技术是一种SDN转发面不感知协议格式的转发技术。
其中,POF可以分为解释型POF和编译型POF。编译型POF的指令不包含于流表项中,而是将指令块(由一组指令构成)以底层可以直接识别的二进制机器码的形式,保存在固定的指令空间中。
现有的编译型POF技术中,控制器上的编译器首先需要将用户为每一个指令块编写好的源代码(如C代码)编译成标准POF消息,然后由交换设备将标准POF消息编译成可以直接识别的二进制机器码,然后交换设备才能够加载该二进制机器码,实现报文的转发。
但是,存在的问题是:现有技术的编译型POF,需要对指令块进行两次编译,才能够得到交换设备可以识别的二进制机器码,而对指令块进行两次编译的编译时间较长,会影响指令块的加载效率。
发明内容
本发明的实施例提供一种指令块加载方法、软交换设备及系统,可以节省指令块下发过程中的代码编译时间,进而可以提高指令块的加载效率。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种指令块加载方法,包括:
软交换设备接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
所述软交换设备将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;
所述软交换设备将所述指令块代码编译成二进制机器码;
所述软交换设备将所述二进制机器码加载至所述软交换设备的本地进程。
结合第一方面,在第一种可能的实现方式中,所述软交换设备将所述二进制机器码加载至所述软交换设备的本地进程,包括:
所述软交换设备将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;
所述软交换设备将所述动态链接指令块加载至所述软交换设备的本地进程。
结合第一方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述代码文件中还包含所述待加载指令块的块号;
在所述软交换设备将所述动态链接指令块加载至所述软交换设备的本地进程之后,所述方法还包括:
所述软交换设备生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;
所述软交换设备保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
结合第一方面的第二种可能的实现方式中,在第三种可能的实现方式中,所述软交换设备接收所述控制器下发的指令块删除指示,所述指令块删除指示中携带有待删除指令块的块号;
所述软交换设备查找与所述待删除指令块的块号对应的动态指令块描述符;
所述软交换设备释放查找到的动态指令块描述符所标识的动态链接指令块,并删除所述查找到的动态指令块描述符。
结合第一方面的第二种可能的实现方式中,在第四种可能的实现方式中,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
在所述软交换设备保存所述动态指令块描述符以及所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,所述方法还包括:
所述软交换设备确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;
所述软交换设备查找与所述待执行指令块的块号对应的动态指令块描述符;
所述软交换设备根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;
所述软交换设备将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
结合第一方面,在第五种可能的实现方式中,所述软交换设备将所述代码文件中的源代码转换成指令块代码,包括:
所述软交换设备将所述代码文件的函数名转换为所述软交换设备支持的函数名,所述代码文件的函数名为所述控制器提供的协议无感知转发POF指令库函数名;
所述软交换设备将所述代码文件所对应的函数的输入参数转换为所述软交换设备的应用程序编程接口API支持的输入参数;
所述软交换设备将所述源代码中的网络字节序转换为所述软交换设备的本地字节序;
所述软交换设备由转换后的源代码生成所述指令块代码,所述指令块代码以文件格式存储或者以字符串格式存储。
结合第一方面,在第六种可能的实现方式中,在所述软交换设备将所述代码文件中的源代码转换成指令块代码之前,所述方法还包括:
所述软交换设备检查所述代码文件是否齐全;
若所述代码文件不齐全,所述软交换设备则向所述控制器反馈所述代码文件不齐全的指示消息,以获得齐全的代码文件;
若所述代码文件齐全,所述软交换设备则将所述代码文件中的源代码转换成所述指令块代码。
本发明实施例的第二方面,提供一种软交换设备,包括:
接收单元,用于接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
转换单元,用于将所述接收单元接收的所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;
编译单元,用于将所述转换单元转换得到的所述指令块代码编译成二进制机器码;
加载单元,用于将所述编译单元编译得到的所述二进制机器码加载至所述软交换设备的本地进程。
结合第二方面,在第二种可能的实现方式中,所述加载单元,包括:
链接保存模块,用于将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;
加载模块,用于将所述链接保存模块得到的所述动态链接指令块加载至所述软交换设备的本地进程。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述代码文件中还包含所述待加载指令块的块号;
所述软交换设备,还包括:
生成单元,用于在所述加载单元将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;
保存单元,用于保存所述生成单元生成的所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
结合第三种可能的实现方式,在第四种可能的实现方式中,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
所述软交换设备,还包括:
获取单元,用于在所述保存单元保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;
查找单元,用于查找与所述获取单元获取的所述待执行指令块的块号对应的动态指令块描述符;
所述获取单元,还用于根据所述查找单元查找到的动态指令块描述符的指示,获取所述待执行指令块函数;
函数执行单元,用于将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述获取单元获取的所述待执行指令块函数。
本发明实施例的第三方面,还提供一种指令块加载系统,包括:控制器和软交换设备;
所述控制器,用于向所述软交换设备下发待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
所述软交换设备,用于接收所述控制器下发的所述代码文件,并将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;将所述指令块代码编译成二进制机器码;将所述二进制机器码加载至所述软交换设备的本地进程。
结合第三方面,在第一种可能的实现方式中,所述软交换设备,还用于将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;将所述动态链接指令块加载至所述软交换设备的本地进程。
结合第一种可能的实现方式,在第二种可能的实现方式中,所述代码文件中还包含所述待加载指令块的块号;
所述软交换设备,还用于在将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
所述软交换设备,还用于在保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;查找与所述待执行指令块的块号对应的动态指令块描述符;根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
本发明实施例提供的指令块加载方法、软交换设备及系统,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种指令块加载方法的流程示意图;
图2为本发明实施例提供的另一种指令块加载方法的流程示意图;
图3为本发明实施例提供的另一种指令块加载方法的流程示意图;
图4为本发明实施例提供的另一种指令块加载方法的流程示意图;
图5为本发明实施例提供的另一种指令块加载方法的流程示意图;
图6为本发明实施例提供的一种软交换设备的组成示意图;
图7为本发明实施例提供的另一种软交换设备的组成示意图;
图8为本发明实施例提供的另一种软交换设备的组成示意图;
图9为本发明实施例提供的另一种软交换设备的组成示意图;
图10为本发明实施例提供的另一种软交换设备的组成示意图;
图11为本发明实施例提供的另一种软交换设备的组成示意图;
图12为本发明实施例提供的一种指令块加载系统的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明实施例提供的一种指令块加载方法、软交换设备及系统可以应用于编译型协议无感知转发(Protocol Oblivious Forwarding,POF)技术所执行的指令块加载过程中,具体应用于软交换设备加载控制器指令块的过程中。
POF技术是软件定义网络(Software Define Network,SDN)中的一种新型转发面技术。在POF技术中,转发设备(即本发明实施例中的交换设备,如交换机)对数据报文协议和处理转发流程没有感知,网络行为完全由控制面负责定义。即使得转发设备不受特定协议的限制,即转发设备不感知报文的协议类型,所有的报文转发业务将完全由控制器软件控制,对报文数据的读写访问均通过指令来进行。
POF技术可以包括:解释型POF技术和编译型POF技术。其中,本发明实施例的方法采用编译型POF技术。编译型POF技术中,指令不包含于流表项中,而是将指令块(由一组指令构成)编译成底层可以直接识别的二进制机器码,并保存在固定的指令空间中;因此可以解决解释型POF存在的降低POF的运行效率,且指令占用较大的流表项存储空间的问题。
本发明实施例提供的指令块加载方法的执行主体可以为软交换设备或者软交换设备中用于执行指令块加载的装置,软交换设备中用于执行指令块加载的装置可以为上述软交换设备的中央处理器(Central Processing Unit,CPU)或者可以为上述软交换设备的中的控制单元或者模块。
本发明实施例中的软交换设备可以为个人计算机((personal computer,PC)、服务器、虚拟机等可以使用软件模拟硬件网络交换设备的电子设备。
下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种指令块加载方法、软交换设备及系统进行详细地说明。
实施例一
本发明实施例提供一种指令块加载方法,可以应用于软交换设备,如图1所示,该指令块加载方法包括:
S101、软交换设备接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码。
其中,编程人员可以在控制器上采用高级编程语言为每一个指令块(待加载指令块)编写源代码,该源代码用于对报文做编辑或转发等处理。
示例性的,编程人员编写源代码所采用的高级编程语言可以为C语言。其中,编程人员可以采用C语言中指针的方式代替POF技术中对Field的描述,采用普通C语言的赋值,条件判断等语句,来直观的代替POF技术中的报文编辑类、判断跳转类等指令。
在本发明实施例中,编程人员在控制器上编写好源代码后,控制器无需像现有技术中一样,将源代码编译成包含标准POF指令的POF消息,而是直接将源代码通过控制器与软交换设备之间的SDN通道发送给软交换设备。
S102、软交换设备将源代码转换成指令块代码,指令块代码的格式为软交换设备支持的编译格式。
由于控制器为编程人员编写代码提供的应用程序编程接口(ApplicationProgramming Interface,API)与软交换设备侧的API可能是不同的接口,因此则不能保证这两个接口会支持相同的数据格式,因此需要对控制器下发的代码文件的数据格式(包括函数名和输入参数)进行处理,使得软交换设备可以更好的识别该代码文件,例如,软交换设备可以将代码文件中的源代码转换成软交换设备可以直接编译的指令块代码。具体的,S102可以包括S102a-S102d:
S102a、软交换设备将代码文件的函数名转换为软交换设备支持的函数名,代码文件的函数名为控制器提供的POF指令库函数名。
S102b、软交换设备将代码文件所对应的函数的输入参数转换为软交换设备的API支持的输入参数。
S102c、软交换设备将源代码中的网络字节序转换为软交换设备的本地字节序。
字节序(byte order),即字节存储顺序,是处理器在处理多字节数据时,在寄存器和内存中保存字节的顺序。常见的字节序包括:Little endian和Big endian两种。其中,Little endian将低序字节存储在起始地址,Big endian将高序字节存储在起始地址。
由于不同设备的CPU不同,而不同的CPU存储字节的顺序不同(即字节序不同),因此,本发明实施例中,需要将源代码中的网络字节序转换为软交换设备的本地字节序。
通常在从文件、网络或者其他设备读取一个不同于本地字节序的多字节数据时,需要判断获取到的数据的字节序(即网络字节序)是否与本地字节序相同,若不同则需要将网络字节序转换为本地字节序。
需要说明的是,软交换设备将源代码中的网络字节序转换为软交换设备的本地字节序,使得交换设备在将源代码转换成指令块代码的过程中,可以快速识别该源代码。
S102d、软交换设备由转换后的源代码生成指令块代码。
其中,指令块代码可以以文件格式存储或者以字符串格式存储。
S103、软交换设备将指令块代码编译成二进制机器码。
其中,软交换设备可以调用常用的高级编程语言编辑器,对指令块代码进行编译,将指令块代码编译成软交换设备的CPU可以直接识别并执行的二进制机器码。
S104、软交换设备将二进制机器码加载至软交换设备的本地进程。
可以想到的是,软交换设备可以在编译得到二进制机器码后直接将二进制机器码加载至软交换设备的本地进程。
优选的,软交换设备的本地进程一般运行在软交换设备的内存中,为了减少对软交换设备的内存的占用,软交换设备还可以在编译得到二进制机器码后,将编译得到的二进制机器码存放在软交换设备的本地存储空间,在需要执行该二进制机器码对应的指令块时,才将该二进制机器码加载至软交换设备的本地进程。
在本发明实施例中,为了进一步减少对软交换设备的内存的占用,软交换设备还可以在执行完一指令块后,及时释放内存中已加载的该指令块对应的二进制机器码。
本发明实施例提供的指令块加载方法,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
进一步的,如图2所示,软交换设备将二进制机器码加载至软交换设备的本地进程的方法(即S104)具体可以包括:S104a和S104b:
S104a、软交换设备将二进制机器码以动态链接库的形式保存至软交换设备的本地存储空间,形成动态链接指令块,动态链接指令块中包含二进制机器码。
其中,动态链接库(Dynamic Link Library,DLL)可以被多个进程同时调用。为了实现多进程对上述二进制机器码的共享,本发明实施例中,软交换设备可以将二进制机器码以动态链接库的形式保存至软交换设备的本地存储空间,形成动态链接指令块。
动态链接库通常都不能直接运行,也不能接收消息。动态链接库是一些独立的文件,其中包含能被可执行程序或其它动态连接库,调用来完成某项工作的函数。如动态链接指令块的执行函数,即动态链接指令块对应的二进制机器码(或者二进制机器码所对应的待加载指令块)所对应的函数,一个指令块相当于一个函数。
S104b、软交换设备将动态链接指令块加载至软交换设备的本地进程。
软交换设备可以将动态链接指令块加载至运行在软交换设备内存中的进程中,即软交换设备的本地进程。
进一步的,代码文件中还包含待加载指令块的块号。指令块的块号可以用于唯一标识该指令块。
一种情形下,指令块的块号可以配置在流表的流表项中,例如,一个流表项中可以包含一个指令块的块号,即该流表项对应于该块号指示的指令块。由于一个流表可以包含多个流表项,因此一个流表可以对应于多个指令块。
报文转发的过程中,软交换设备需要从转发设备侧存储的流表中查找与该报文匹配的流表项,然后根据该流表项中包含的指令块的块号获取并执行对应的指令块函数。
另一种情形下,指令块的块号可以保存在流表的流表信息中。此时,一个流表只能对应一个指令块。其中,每一个流表对应一个流表信息,该流表信息中可以包含流表ID、查表key长度、流表项长度、流表容量、匹配字段信息、流表名称以及关联的指令块号等信息。
报文转发的过程中,软交换设备则可以直接获取与转发报文对应的流表的流表信息,根据该流表信息中包含的指令块的块号获取并执行对应的指令块函数。
在软交换设备将动态链接指令块加载至软交换设备的本地进程(即S104〞)之后,为了便于软交换设备在进行报文的转发过程中,能够快速根据流表项中包含的指令块的块号,获取并执行对应的指令块函数(即指令块转换后得到的动态链接指令块的执行函数),如图3所示,本发明实施例的方法还可以包括S105-S106:
S105、软交换设备生成动态指令块描述符,动态指令块描述符用于唯一标识动态链接指令块,并指向动态链接指令块的执行函数。
其中,动态指令块描述符是对应的动态链接库(Dynamic Link Library,DLL)加载进内存后的描述句柄。该句柄(即动态指令块描述符)可以用于标识动态链接指令块,并指向动态链接指令块的执行函数。通过该句柄和其所指示的执行函数的函数名称,可以获得函数指针。进一步的,通过该句柄,也可以对已经加载进内存的DLL进行释放。
S106、软交换设备保存动态指令块描述符与待加载指令块的块号之间的对应关系。
其中,由于动态指令块描述符用于唯一标识动态链接指令块,而待加载指令块的块号用于唯一标识该待加载指令块,且动态链接指令块是由待加载指令块编译成二进制机器码后得到的;因此保存动态指令块描述符与待加载指令块的块号之间的对应关系,则可以在获取到一个指令块的块号之后,根据动态指令块描述符与待加载指令块的块号之间的对应关系,查找到由该指令块编译成二进制机器码后得到的动态链接指令块。
示例性的,本发明实施例中可以采用表格的方式保存动态指令块描述符与待加载指令块的块号之间的对应关系,如表1所示,为动态指令块描述符与待加载指令块的块号对应关系表实例。
表1
进一步的,当控制器中已下发至软交换设备的指令块被修改或删除(即编程人员在控制器侧修改或删除写入的指令块的源代码)时,为了减少对软交换设备的内存占用,控制器可以向软交换设备下发指令块删除指示,以指示软交换设备将对应指令块的相关信息删除。具体的,本发明实施例的方法还可以包括:
S107、软交换设备接收控制器下发的指令块删除指示,指令块删除指示中携带有待删除指令块的块号。
S108、软交换设备查找与待删除指令块的块号对应的动态指令块描述符。
S109、软交换设备释放查找到的动态指令块描述符所标识的动态链接指令块,并删除查找到的动态指令块描述符。
可以想到的是,软交换设备根据控制器下发的指令块删除指示及时释放对应的动态链接指令块,并删除对应的动态指令块描述符,可以减少对软交换设备的内存占用。
当然,软交换设备还可以删除保存在所述软交换设备中的,待删除指令块的块号与相关动态指令块描述符之间的对应关系。
进一步的,只有当一指令块的代码文件为一个齐全的文件时,软交换设备对该代码文件进行编译和加载后,才能够正常执行该指令块对应的指令块函数,实现报文的转发。因此,为了避免软交换设备对不齐全代码文件的编译以及加载,如图4所示,在S102之前,本发明实施例的方法还可以包括S102′:
S102′、软交换设备检查代码文件是否齐全。
具体的,若代码文件不齐全,则继续执行S102〞;若代码文件齐全,则继续执行S102。
S102〞、软交换设备向控制器反馈代码文件不齐全的指示消息,以获得齐全的代码文件。
示例性的,若编程人员编写源代码所采用的高级编程语言为C语言,即上述待加载指令块的代码文件为C代码文件,软交换设备则可以检查该C代码文件的.h头文件是否齐全;若C代码文件的.h头文件齐全,则可以确定该代码文件齐全;若C代码文件的.h头文件不齐全,则可以确定该代码文件不齐全。例如,C代码文件应该包含5个.h头文件,但是此时控制器仅下发了4个.h头文件,则可以确定该代码文件不齐全。
进一步的,在S106之后,软交换设备则可以在接收到报文后,根据已加载的指令块(即动态链接指令块)实现报文的转发,具体的,如图5所示,本发明实施例的方法还可以包括S201-S204:
S201、软交换设备确定待转发报文对应的流表项,并从流表项中获取待执行指令块的块号。
其中,软交换设备确定待转发报文对应的流表项的方法可以参考现有技术转发报文过程中,获得待转发报文对应的流表项的具体方法,本发明实施例这里不再赘述。
示例性的,在报文传输过程中,一般在三种情况下需要执行一个指令块:1)指令块处于报文转发流程入口,即预先约定好在报文转发流程开始时便执行该指令块;2)从其他流表跳转(即通过Goto Table转发)到当前流表,执行与该当前流表功能对应的指令块;3)从其他指令块中,通过绝对跳转的方式,强制执行一指令块。
其中,对于第一种情况,待执行指令块是预先预定好的,无法更改的。对于第二种情况,待执行指令块的块号如上述实施例中所述,配置在流表的流表项中或者保存在流表的流表信息中。对于第三种情况,待执行指令块的块号可以保存在上一级指令块的相关参数中,例如,绝对跳转的指令可以为Abosulte Jump(insBlkID),其中insBlkID即为描述跳转目的地(即下一级指令块)的参数。
S202、软交换设备查找与待执行指令块的块号对应的动态指令块描述符。
软交换设备可以采用待执行指令块的块号,查找已保存的动态指令块描述符与指令块的块号之间的对应关系,获得与待执行指令块的块号对应的动态指令块描述符。
S203、软交换设备根据查找到的动态指令块描述符的指示,获取待执行指令块函数。
由于动态指令块描述符用于唯一标识动态链接指令块,并指向动态链接指令块的执行函数,因此软交换设备在获得动态指令块描述符后,便可以确定动态链接指令块的执行函数,即获得动态链接指令块的执行函数的指针。
S204、软交换设备将待转发报文的净荷和流表项中的表项内容作为输入参数,通过黑盒执行待执行指令块函数。
其中,待转发报文的报文数据即为报文的实际内容,流表项中的表项内容包含待执行指令块的相关参数,例如,setField的源,gotoTable的next Table ID(下一级需要执行指令块的ID)等。
本发明实施例提供的指令块加载方法,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
并且,软交换设备根据控制器下发指令块删除指示及时释放对应的动态链接指令块,并删除对应的动态指令块描述符,可以减少对软交换设备的内存占用。
实施例二
本发明实施例提供一种软交换设备,如图6所示,该软交换设备包括:接收单元31、转换单元32、编译单元33和加载单元34。
接收单元31,用于接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码。
转换单元32,用于将所述接收单元31接收的所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式。
编译单元33,用于将所述转换单元32转换得到的所述指令块代码编译成二进制机器码。
加载单元34,用于将所述编译单元33编译得到的所述二进制机器码加载至所述软交换设备的本地进程。
进一步的,如图7所示,所述加载单元34,包括:链接保存模块341和加载模块342。
链接保存模块341,用于将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码。
加载模块342,用于将所述链接保存模块341得到的所述动态链接指令块加载至所述软交换设备的本地进程。
进一步的,所述代码文件中还包含所述待加载指令块的块号。相应的,如图8所示,该软交换设备,还可以包括:生成单元35和保存单元36。
生成单元35,用于在所述加载单元34将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块。
保存单元36,用于保存所述生成单元35生成的所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
进一步的,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块函数的块号与所述动态链接指令块对应的块号。
相应的,如图9所示,该软交换设备,还可以包括:获取单元37、查找单元38和函数执行单元39。
获取单元37,用于在所述保存单元36保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号。
查找单元38,用于查找与所述获取单元37获取的所述待执行指令块的块号对应的动态指令块描述符。
所述获取单元37,还用于根据所述查找单元38查找到的动态指令块描述符的指示,获取所述待执行指令块函数。
函数执行单元,用于将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述获取单元获取的所述待执行指令块函数。
进一步的,该软交换设备,还可以包括:释放单元3a。
所述接收单元31,还用于接收所述控制器下发的指令块删除指示,所述指令块删除指示中携带有待删除指令块的块号。
所述查找单元38,还用于查找与所述待删除指令块的块号对应的动态指令块描述符。
释放单元3a,用于释放所述查找单元38查找到的动态指令块描述符所标识的动态链接指令块,并删除所述查找到的动态指令块描述符。
进一步的,所述转换单元32,具体用于:
将所述代码文件的函数名转换为所述软交换设备支持的函数名,所述代码文件的函数名为所述控制器提供的协议无感知转发POF指令库函数名;
将所述代码文件所对应的函数的输入参数转换为所述软交换设备的应用程序编程接口API支持的输入参数;
将所述源代码中的网络字节序转换为所述软交换设备的本地字节序;
由转换后的源代码生成所述指令块代码,所述指令块代码以文件格式存储或者以字符串格式存储。
进一步的,该软交换设备,还可以包括:检查单元和发送单元。
所述检查单元,用于在所述转换单元32将所述代码文件中的源代码转换成指令块代码之前,检查所述代码文件是否齐全。
所述发送单元,用于若所述代码文件不齐全,则向所述控制器反馈所述代码文件不齐全的指示消息,以获得齐全的代码文件。
所述转换单元32,用于若所述代码文件齐全,则将所述代码文件中的源代码转换成所述指令块代码。
需要说明的是,本发明实施例提供的软交换设备中部分功能模块的详细描述可以参考本发明方法实施例中的相关内容,本实施例这里不再赘述。
本发明实施例提供的软交换设备,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
实施例三
本发明实施例提供一种软交换设备,如图10所示,该软交换设备包括:接收器41、存储器42和处理器43。
接收器41,用于接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码。
存储器42,用于存储一组程序代码。
处理器43,用于根据所述存储器41存储的一组程序代码,执行如下操作:
将所述接收器41接收的所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;
将所述指令块代码编译成二进制机器码;
将所述二进制机器码加载至所述软交换设备的本地进程。
进一步的,所述处理器43,具体用于:
将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;
将所述动态链接指令块加载至所述软交换设备的本地进程。
进一步的,所述代码文件中还包含所述待加载指令块的块号。
所述处理器43,还用于在将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
进一步的,所述接收器41,还用于接收所述控制器下发的指令块删除指示,所述指令块删除指示中携带有待删除指令块的块号。
所述处理器43,还用于查找与所述待删除指令块的块号对应的动态指令块描述符;释放查找到的动态指令块描述符所标识的动态链接指令块,并删除所述查找到的动态指令块描述符。
进一步的,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块函数的块号与所述动态链接指令块对应的块号。
所述处理器43,还用于在保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;查找与所述待执行指令块的块号对应的动态指令块描述符;根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
进一步的,所述处理器43,具体用于:
将所述代码文件的函数名转换为所述软交换设备支持的函数名,所述代码文件的函数名为所述控制器提供的协议无感知转发POF指令库函数名;
将所述代码文件所对应的函数的输入参数转换为所述软交换设备的应用程序编程接口API支持的输入参数;
将所述源代码中的网络字节序转换为所述软交换设备的本地字节序;
由转换后的源代码生成所述指令块代码,所述指令块代码以文件格式存储或者以字符串格式存储。
进一步的,所述处理器43,还用于在将所述代码文件中的源代码转换成指令块代码之前,检查所述代码文件是否齐全。
如图11所示,所述软交换设备,还包括:发送器44。
发送器44,用于若所述处理器43检查到所述代码文件不齐全,则向所述控制器反馈所述代码文件不齐全的指示消息,以获得齐全的代码文件。
所述处理器43,具体用于若所述代码文件齐全,则将所述代码文件中的源代码转换成所述指令块代码。
需要说明的是,本发明实施例提供的软交换设备中部分功能模块的详细描述可以参考本发明方法实施例中的相关内容,本实施例这里不再赘述。
本发明实施例提供的软交换设备,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
实施例四
本发明实施例提供一种指令块加载系统,如图12所示,该指令块加载系统包括:控制器51和软交换设备52。
所述控制器51,用于向所述软交换设备52下发待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码。
所述软交换设备52,用于接收所述控制器51下发的所述代码文件,并将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的编译格式;将所述指令块代码编译成二进制机器码;将所述二进制机器码加载至所述软交换设备的本地进程。
进一步的,所述软交换设备52,还用于将所述述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;将所述动态链接指令块加载至所述软交换设备的本地进程。
进一步的,所述代码文件中还包含所述待加载指令块的块号。
所述软交换设备52,还用于在将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
进一步的,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块函数的块号与所述动态链接指令块对应的块号。
所述软交换设备52,还用于在保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;查找与所述待执行指令块的块号对应的动态指令块描述符;根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
进一步的,所述软交换设备52,还用于接收所述控制器下发的指令块删除指示,所述指令块删除指示中携带有待删除指令块的块号;查找与所述待删除指令块的块号对应的动态指令块描述符;释放查找到的动态指令块描述符所标识的动态链接指令块,并删除所述查找到的动态指令块描述符。
进一步的,所述软交换设备52,还用于将所述代码文件的函数名转换为所述软交换设备支持的函数名,所述代码文件的函数名为所述控制器提供的协议无感知转发POF指令库函数名;将所述代码文件所对应的函数的输入参数转换为所述软交换设备的应用程序编程接口API支持的输入参数;将所述源代码中的网络字节序转换为所述软交换设备的本地字节序;由转换后的源代码生成所述指令块代码,所述指令块代码以文件格式存储或者以字符串格式存储。
进一步的,所述软交换设备52,还用于在将所述代码文件中的源代码转换成指令块代码之前,检查所述代码文件是否齐全;若所述代码文件不齐全,则向所述控制器反馈所述代码文件不齐全的指示消息,以获得齐全的代码文件;若所述代码文件齐全,则将所述代码文件中的源代码转换成所述指令块代码。
需要说明的是,本发明实施例提供的指令块加载系统中软交换设备的详细描述可以参考本发明方法实施例中的相关内容,本实施例这里不再赘述。
本发明实施例提供的指令块加载系统,控制器在向软交换设备下发指令块之前,不需要对用户为指令块编写的源代码进行编译,而是直接将该源代码下发至软交换设备,由软交换设备将其转换成该软交换设备中的编译器可以直接编译的指令块代码,然后再将指令块代码编译成二进制机器码。通过本方案,控制器不需要对指令块进行编译,仅由软交换设备侧对指令块进行一次编译便可以获得软交换设备可以直接识别的二进制机器码,即可以节省指令块下发过程中的代码编译时间,使得软交换设备可以及时的加载指令块,从而提高了指令块的加载效率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种指令块加载方法,其特征在于,包括:
软交换设备接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
所述软交换设备将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的可被编译的格式;
所述软交换设备将所述指令块代码编译成二进制机器码;
所述软交换设备将所述二进制机器码加载至所述软交换设备的本地进程。
2.根据权利要求1所述的方法,其特征在于,所述软交换设备将所述二进制机器码加载至所述软交换设备的本地进程,包括:
所述软交换设备将所述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;
所述软交换设备将所述动态链接指令块加载至所述软交换设备的本地进程。
3.根据权利要求2所述的方法,其特征在于,所述代码文件中还包含所述待加载指令块的块号;
在所述软交换设备将所述动态链接指令块加载至所述软交换设备的本地进程之后,所述方法还包括:
所述软交换设备生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;
所述软交换设备保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述软交换设备接收所述控制器下发的指令块删除指示,所述指令块删除指示中携带有待删除指令块的块号;
所述软交换设备查找与所述待删除指令块的块号对应的动态指令块描述符;
所述软交换设备释放查找到的动态指令块描述符所标识的动态链接指令块,并删除所述查找到的动态指令块描述符。
5.根据权利要求3所述的方法,其特征在于,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
在所述软交换设备保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,所述方法还包括:
所述软交换设备确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;
所述软交换设备查找与所述待执行指令块的块号对应的动态指令块描述符;
所述软交换设备根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;
所述软交换设备将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
6.根据权利要求1所述的方法,其特征在于,所述软交换设备将所述代码文件中的源代码转换成指令块代码,包括:
所述软交换设备将所述代码文件的函数名转换为所述软交换设备支持的函数名,所述代码文件的函数名为所述控制器提供的协议无感知转发POF指令库函数名;
所述软交换设备将所述代码文件所对应的函数的输入参数转换为所述软交换设备的应用程序编程接口API支持的输入参数;
所述软交换设备将所述源代码中的网络字节序转换为所述软交换设备的本地字节序;
所述软交换设备由转换后的源代码生成所述指令块代码,所述指令块代码以文件格式存储或者以字符串格式存储。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述软交换设备将所述代码文件中的源代码转换成指令块代码之前,所述方法还包括:
所述软交换设备检查所述代码文件是否齐全;
若所述代码文件不齐全,所述软交换设备则向所述控制器反馈所述代码文件不齐全的指示消息,以获得齐全的代码文件;
若所述代码文件齐全,所述软交换设备则将所述代码文件中的源代码转换成所述指令块代码。
8.一种软交换设备,其特征在于,包括:
接收单元,用于接收控制器下发的待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
转换单元,用于将所述接收单元接收的所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的可被编译的格式;
编译单元,用于将所述转换单元转换得到的所述指令块代码编译成二进制机器码;
加载单元,用于将所述编译单元编译得到的所述二进制机器码加载至所述软交换设备的本地进程。
9.根据权利要求8所述的软交换设备,其特征在于,所述加载单元,包括:
链接保存模块,用于将所述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;
加载模块,用于将所述链接保存模块得到的所述动态链接指令块加载至所述软交换设备的本地进程。
10.根据权利要求9所述的软交换设备,其特征在于,所述代码文件中还包含所述待加载指令块的块号;
所述软交换设备,还包括:
生成单元,用于在所述加载单元将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;
保存单元,用于保存所述生成单元生成的所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
11.根据权利要求10所述的软交换设备,其特征在于,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
所述软交换设备,还包括:
获取单元,用于在所述保存单元保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;
查找单元,用于查找与所述获取单元获取的所述待执行指令块的块号对应的动态指令块描述符;
所述获取单元,还用于根据所述查找单元查找到的动态指令块描述符的指示,获取所述待执行指令块函数;
函数执行单元,用于将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述获取单元获取的所述待执行指令块函数。
12.一种指令块加载系统,其特征在于,包括:控制器和软交换设备;
所述控制器,用于向所述软交换设备下发待加载指令块的代码文件,所述代码文件中包含所述待加载指令块的源代码;
所述软交换设备,用于接收所述控制器下发的所述代码文件,并将所述源代码转换成指令块代码,所述指令块代码的格式为所述软交换设备支持的可被编译的格式;将所述指令块代码编译成二进制机器码;将所述二进制机器码加载至所述软交换设备的本地进程。
13.根据权利要求12所述的系统,其特征在于,所述软交换设备,还用于将所述二进制机器码以动态链接库的形式保存至所述软交换设备的本地存储空间,形成动态链接指令块,所述动态链接指令块中包含所述二进制机器码;将所述动态链接指令块加载至所述软交换设备的本地进程。
14.根据权利要求13所述的系统,其特征在于,所述代码文件中还包含所述待加载指令块的块号;
所述软交换设备,还用于在将所述动态链接指令块加载至所述软交换设备的本地进程之后,生成动态指令块描述符,所述动态指令块描述符用于唯一标识所述动态链接指令块;保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系。
15.根据权利要求14所述的系统,其特征在于,所述动态指令块描述符还用于指向待执行指令块函数,所述待执行指令块的块号与所述动态链接指令块对应的块号;
所述软交换设备,还用于在保存所述动态指令块描述符与所述待加载指令块的块号之间的对应关系之后,确定待转发报文对应的流表项,并从所述流表项中获取待执行指令块的块号;查找与所述待执行指令块的块号对应的动态指令块描述符;根据查找到的动态指令块描述符的指示,获取所述待执行指令块函数;将所述待转发报文的净荷和所述流表项中的表项内容作为输入参数,通过黑盒执行所述待执行指令块函数。
CN201510532479.8A 2015-08-26 2015-08-26 一种指令块加载方法、软交换设备及系统 Active CN106484375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510532479.8A CN106484375B (zh) 2015-08-26 2015-08-26 一种指令块加载方法、软交换设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510532479.8A CN106484375B (zh) 2015-08-26 2015-08-26 一种指令块加载方法、软交换设备及系统

Publications (2)

Publication Number Publication Date
CN106484375A CN106484375A (zh) 2017-03-08
CN106484375B true CN106484375B (zh) 2020-02-14

Family

ID=58234330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510532479.8A Active CN106484375B (zh) 2015-08-26 2015-08-26 一种指令块加载方法、软交换设备及系统

Country Status (1)

Country Link
CN (1) CN106484375B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857033A (zh) * 2020-08-07 2020-10-30 深圳市派姆智能机器有限公司 一种可编程控制器的编译系统
CN111770205B (zh) 2020-08-31 2020-12-04 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、系统和存储介质
CN113419777B (zh) * 2021-05-08 2023-07-18 中国科学院声学研究所 一种可编程交换机的指令块转换执行方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206967B1 (en) * 2004-02-09 2007-04-17 Altera Corporation Chip debugging using incremental recompilation and register insertion
CN103560957A (zh) * 2013-10-15 2014-02-05 华为技术有限公司 查表键值构造方法、微码下发方法、装置及系统
CN103731377A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 处理报文的方法与设备
CN103856356A (zh) * 2014-03-19 2014-06-11 北京工业大学 一种基于用户自管控的家庭网络实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206967B1 (en) * 2004-02-09 2007-04-17 Altera Corporation Chip debugging using incremental recompilation and register insertion
CN103560957A (zh) * 2013-10-15 2014-02-05 华为技术有限公司 查表键值构造方法、微码下发方法、装置及系统
CN103731377A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 处理报文的方法与设备
CN103856356A (zh) * 2014-03-19 2014-06-11 北京工业大学 一种基于用户自管控的家庭网络实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Forwarding Programming in Protocol-Oblivious;喻径舟 等;《2014 IEEE 22nd International Conference on Network Protocols》;20141211;全文 *

Also Published As

Publication number Publication date
CN106484375A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
US10740114B2 (en) Component invoking method and apparatus, and component data processing method and apparatus
CN112130837B (zh) 一种代码处理方法、装置及存储介质
US9892144B2 (en) Methods for in-place access of serialized data
US20140298318A1 (en) Computer-executable application packaging method, computer-executable device and storage media performing the same
CN111176717B (zh) 生成安装包的方法、装置及电子设备
US10268462B2 (en) Emulation device, emulation method, and recording medium storing emulation program
CN110908707B (zh) 一种资源打包方法、装置、服务器及存储介质
US20190034195A1 (en) Systems and methods for providing patchable rom firmware
US20100251227A1 (en) Binary resource format and compiler
CN110928548B (zh) 一种数据处理方法以及设备
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN108595187A (zh) 安卓安装包集成软件开发工具包的法、装置及存储介质
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
US8473504B2 (en) Stabilized binary differencing
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
US8887142B2 (en) Loop control flow diversion
US20220036206A1 (en) Containerized distributed rules engine
CN111414339B (zh) 一种文件的处理方法、系统、装置、设备及介质
CN111562929A (zh) 补丁文件的生成方法、装置、设备及存储介质
US9335990B2 (en) Method, a system, and a non-transitory computer-readable medium for supporting application development
CN113127430A (zh) 镜像信息处理方法、装置、计算机可读介质及电子设备
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
US9880612B2 (en) Execution control method and execution control apparatus
US9720660B2 (en) Binary interface instrumentation
CN107643892B (zh) 接口处理方法、装置、存储介质和处理器

Legal Events

Date Code Title Description
C06 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