网络编程语言Frenetic和Pyretic如何简化OpenFlow SDN编程(下)

日期: 2013-12-08 作者:David Jacobs翻译:曾少宁 来源:TechTarget中国 英文

网络编程语言可以简化OpenFlow Frenetic和Pyretic是普林斯顿和康奈尔大学教师和学生正在研究的编程语言。这两种语言都是高级语言,它们的目标是隐藏SDN编程的复杂性和减少出错概率。这两个语言的研发都在Frenetic Project的整体框架中进行。 Frenetic包含了基于Ocaml编程语言的编程语法和运行时刻。

它主要设计用来操作开源NOX控制器的。Pyretic基于Python,可以操作POX控制器。 这两种语言将数量庞大的OpenFlow命令替换为少数高级命令,从而可以加快网络策略的开发。此外,它们也能够简化策略的创建过程。

使用底层OpenFlow命令指定多个交换机操……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

网络编程语言可以简化OpenFlow

Frenetic和Pyretic是普林斯顿和康奈尔大学教师和学生正在研究的编程语言。这两种语言都是高级语言,它们的目标是隐藏SDN编程的复杂性和减少出错概率。这两个语言的研发都在Frenetic Project的整体框架中进行。

Frenetic包含了基于Ocaml编程语言的编程语法和运行时刻。它主要设计用来操作开源NOX控制器的。Pyretic基于Python,可以操作POX控制器。

这两种语言将数量庞大的OpenFlow命令替换为少数高级命令,从而可以加快网络策略的开发。此外,它们也能够简化策略的创建过程。

使用底层OpenFlow命令指定多个交换机操作是有难度且容易出错的。每一个操作的语句必须按顺序发出,才能保证命令按正确顺序执行。例如,配置一个交换机同时转发数据包并进行计数,需要将OpenFlow命令组合到一系列命令中。写入一个策略模块,由它配置一个设备基于当前链路负载、数据包优先级和安全来转发数据包,同时完成数据包计数,这是一个非常有难度的任务。

通过使用语言接口,程序员就可以为每一个操作或条件指定一个策略。然后,他们可以使用Frenetic或Pyretic将每一个策略组件写为一个独立模块。这些语言的运行时刻可以通过组合策略来创建OpenFlow命令,实现所有的条件并将它们按正确顺序排列。这样就可以防止执行一个策略的命令时与其它策略的命令发生冲突。

此外,语言和运行时刻也可以避免出现一些常见编程错误,如无法处理可能出现的竞争条件。在新数据包流的第一个数据包出现时,就经常发生这种情况。在控制器将新规则下发到这个设备之前,第二个数据包可能已经到达了路径中的下一个设备。

第二个数据包可能也会被发送到控制器上,从而产生不必要的计算时间,或者由于所部署的通配符规则而出现错误转发。运行时有一些规则可以防止出现这个情况。此外,运行时还可以在策略更新期间消除设备之间的不一致性。它们可以保证所有的数据包全部都按旧策略或新策略进行转发。

Frenetic和Pyretic采用了不同的方法

Frenetic和Pyretic采用了不同的策略模块解析方法。Frenetic提供了一个并行模型。在程序员看来,进入控制器的每一个数据包都由一个对应的策略模块处理,也就是说模块是并行执行的。支持多个条件的策略看起来也是并行执行的,如基于链路转发同时计算数据包数量。

Pyretic也支持并行执行,但是它也支持顺序执行。例如,Pyretic程序员可以规定一个访问控制模块在负载均衡模块之前执行。此外,程序员也可以让策略随时间推移而变化。

监控网络状态是一个重要功能。控制器必须快速知道各个链路的负载或链路出现的问题。这些语言包含了一些命令,运行时可以通过解析这些命令来创建一组OpenFlow命令,检测网络事件、记录计数和组合统计信息,从而提供关于网络运行状况的总体视图。

Frenetic和Pyretic继续向前发展

这两个语言的研发工作仍在继续。Pyretic团队增加了一些特性,如支持服务质量,正在开发RADIUS和DHCP服务器等应用。其他研究人员也开始关注它们。佐治亚理工学院的教师与学生还使用Pyretic重新实现了它的Resonance控制器。所有工作在一天内就完成了,完成的代码行数减少了六倍。Frenetic团队正在改进其编译器的效率,同时也在验证所生成代码的正确性。

在研究机构推出这些语言并应用到商业领域之后,它们将会大大加快SDN的应用速度。

请阅读网络编程语言Frenetic和Pyretic如何简化OpenFlow SDN编程(上

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐