PLAN语言(Programming Language of Active Network)是宾夕法尼亚大学研究的一种用于主动网路的程式语言,它是一种高级语言,可用来在数据包中描述用户程式功能,并可以调用低层的功能模组。
基本介绍
- 中文名:PLAN语言
- 外文名:Programming Language of Active Network
- 性质:一种用于主动网路的程式语言
- 开发单位:宾夕法尼亚大学
- 特点:表达能力受限等
- 涉及领域:软体工程
相关概念
主动网路:主动网路(active network)是一种可程式的网路,将用户定义的计算引入到路由器/交换机。传统的路由器/交换机只对经过的包做存储、转发,对包内的数据不做分析、理解,而主动路由器/交换机除对经过的主动报文做存储、转发外,还将对主动报文内的数据进行处理甚至执行报文内携带的程式。所以,整个网路是分散式的计算体系,网路的行为可通过编程控制。通过主动网路,用户可以控制网路的某些运行特徵,远程动态修改网路配置,从而加速了网路套用和网路服务的更新。主动网路潜在的优点是快速动态定製、配置新的服务,实验新的网路体系结构和协定,可以加速网路服务的革新步伐,提高网路的性能,使网路系统更具灵活性、可扩展性。
数据包:TCP/IP协定通信传输中的数据单位,一般也称“包”。在包交换网路里,单个讯息被划分为多个数据块,这些数据块称为包,它包含传送者和接收者的地址信息。这些包然后沿着不同的路径在一个或多个网路中传输,并且在目的地重新组合。
提出背景
Intemet上传送的数据包是由包含控制信息的包头和包含数据信息的有效负载构成。包头可以看成是由包格式的规範说明所定义的程式语言编写的简单程式。如果需要添加新的功能到协定当中,那幺包格式和它的语义必须被改变,也就是程式语言和它的规範必须被改变。对于一个被广泛使用的协定,例如:IP协定,包格式的改变必须是谨慎的,并且一定要遵循某些标準。因此,在这个层次上,引入新的网路服务将是一个非常缓慢的过程。
主动网路可以在IP层获得更大的灵活性,因为它可以编程网路的基础结构。如果抽象层次可以从IP包的“位”提高到更加通用的“程式语言”,那幺网路的演变可能会跟着技术发展的步伐大步前进,因为这种改变只是发生在程式级而不是程式语言级。因此要实现这个想法,首先解决的问题就是:一个什幺样的程式语言能满足这一需求。让我们首先考虑一下现有的程式语言。由于用该语言编写的程式是用来代替传统的数据包头的,因此它应该是简单的、安全的。就这一点而言,大多数通用语言都不能满足要求。另一方面,由于需要这种语言适合于主动网路领域,那幺现有的专用语言也是不适合的。因此,就需要一种全新的语言来实现我们的目标。
PLAN(Programming Languagefor Active Networks)是一种新的程式语言,用它所编写的程式构成了主动网路的数据包,这些程式替代了传统网路的数据包头。因此,PLAN的表达能力是受到限制的,它允许主动节点在无需认证的情况下执行PLAN程式;PLAN程式是函式风格的,并且保证终止。为了弥补它有限的表达能力,PLAN程式可以调用节点驻留的服务,这些服务提供对信息(例如:时间,网路接口的个数等等)和强有力功能(例如,分段,可靠性,软状态等等)的访问。
PLAN程式结构
每个PLAN程式包括一个顶层的“代码块”(code hunk),或者叫chunk。Chunk是PLAN中的编程结构。Chunk有三个部分:PLAN代码,代码内的一个入口点函式和函式参数的捆绑。当一个PLAN包到达它的目的节点时,它的入口点函式用给定的参数被调用。
Chunk是第一类的数据值,意思是它可以被用作函式的参数,从函式中返回和存储在数据结构中。PLAN的语法——|f| (exprl,…,exprn),是一个类型chunk的表达式,它产生一个新的Chunk。直观上,“|”表明表达式部分(指函式调用本身)的计算将被延迟。明确地说就是,所产生的chunk是由和目前执行的相同代码、一个入口点函式f和通过计算exprl,…,exprn所获得的参数值的捆绑构成的。这样,chunk可以被处理,複製或者作为参数传递;最特别的是,它甚至可以作为参数捆绑出现在其它chunk中。
特点
PLAN语言具有强的类型和静态类型检查来提供安全,注入PLAN程式到网路中去,PLAN语言被设计为通过限制其行为来保证节点的安全性,即PLAN程式不能操纵节点的状态。为了弥补这个缺陷,PLAN程式能够调用主动扩展。
PLAN语言仅支持很简单的数据和控制结构,因此容易被编译或解释。此外,PLAN语言不改变路由器的状态,它允许没有经过认证而在其上面执行。PLAN语苦有很强的类型检查,所以类型错误不会威胁路由器状态的完整性。
PLAN语言表达能力是受限的,因此防止了CPU和存储器的服务拒绝攻击。例如,所有的PLAN程式都保证终止,因为PLAN不提供表达无固定长度的叠代和递归的方式。除此之外,PLAN程式是彼此独立的,因为它们之间没有直接通信的方式,还由于语言的强类型和垃圾收集也阻止了非直接的方式(例如,由于指针的混乱或者缓冲区溢出而引起的通信)。PLAN的上述特点给主动网路带来了灵活性,增强了安全性,并且提高了性能。