开发者社区> 行者武松> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SDN编程自动化:抽象、工具与实现

简介:
+关注继续查看

2016年6月2日,“2016全球SDNFV技术大会”进入了第二天。作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN /NFV的实践应用与部署,从SDN/NFV在运营商网络、企业网、云数据中心、测试解决方案等多个场景的应用出发,深入解析产业部署现状及面临的挑战与发展趋势。

SDN编程自动化:抽象、工具与实现

耶鲁大学终身教授,同济-耶鲁系统网络实验室主任 杨阳

广度与深度兼备的全球SDNFV技术大会可谓是行业里的旗帜性会议。大会邀请了数十位海内外权威专家、运营商高层、厂商高层及用户单位代表进行高峰对话。在今日会议的下午,耶鲁大学终身教授,同济-耶鲁系统网络实验室主任杨阳发表了题为“SDN编程自动化:抽象、工具与实现”的演讲,站在学术的角度为大家解读了SDN编程自动化的内容。

杨阳是耶鲁大学计算机科学和电气工程教授,创立并领导网络系统实验室,其研究得到了美国政府机构和产业的资助。杨阳的团队主要做两件事情,第一要引入最最简单的一种抽象,有了抽象之后,第二要做的就是实现这个抽象。接下来我们就一起听听杨阳的实践之路。

以下为演讲实录:(以下内容根据现场速记整理,未经发言嘉宾确认,仅供参考,谢绝转载。)

杨阳:大家好。我本来我应该是4点40开始,现在已经是5点45。已经很晚了,在这儿从昨天开始,首先非常高兴有这样一个机会能够跟大家交流一下关于我的团队,关于SDN编程自动化的交流,非常高兴有这样一个机会,同时我发现好像7个小时,今天开始已经有7个小时了。所以来说可能大家都很累了。首先感谢大家,还能够在这么累的情况下还能坚持到现在,同时我的演讲可能和其他的演讲主题不一样,因为我来自学术界。首先给两个,我觉得对于这次来说整体talk,我觉得有两点让我领会比较深。第一点就是David,他提到一点,SDN是看底下的技术,现在可能更加倾向往高层走。我今天要谈的关于编程自动化是偏向于高层,他其实应该是高层的东西。

第二点,SDN或者是开放网络比较重要的一点是什么呢?是社区,我要讲的东西还没有真正的开源,所以还没有真正的社区,确实我有一个小小的私有社区,所有参与我今天要讲的一些工具的一些核心人员,大家如果看到会发现这里面其实很多特别多的咱们中国的年轻人。当然一开始启动的时候是我的一个美国学生,包括美国合作者,后来所有的东西,都会来自于中国大陆的年轻人,而且其实有很多人就在座,有一个刚刚工作第一年的一个年轻教师,一个刚刚工作一年的一个我们的一个(英),还有三个研究生,还有一个大三的学生,我们这个团队非常年轻,非常好的一点,前面看到,很多咱们中国基金在中国落地。现在看到越来越多的中国人开始加入到核心技术的开发,我觉得这一点本身是非常好的事情。这个团队,刚才介绍一下大的宏观的一些架构,我们把它跳掉。你提供可能最长期的就是可以提供(英)。我们这个团队主要做的是什么呢?做两件事情,第一要引入最最简单的一种抽象,有了抽象之后,我们要(英)来实现这个抽象,大概说两点,为什么要做这两件事情,这还是很重要的,第一点,为什么要做exrtemely呢?所有的学生都要记住这两句话,基于模块化的抽象,恐怕是解题之道,这样的话非常重要,所以要引入抽象,这是第一点,为什么要引入抽象。

第二点,为什么要引入非常有用的工具。这一点,咱们中国人老说的话,叫工欲善其事必先利其器,当你做事情的时候,你应该是要给别人猎枪,而不是猎物,因为猎物总有使用掉的一天。一开始这样可以的,但是从长远上来说我们应该提供的是猎枪,提供这样的更好的工具,有了更好的工具他们才能真正发挥SDN的优势,这是整个的出发点,为什么做这件事情。

特别宏观的说法,下面让我来具体一点,到底我们正在做哪些抽象,以及我们有哪些好的工具,希望跟大家共享。为了提到这个抽象,现在让我先说一点当前已有的抽象,这个是当前opendaylight。这个是它的核心抽象,有了这个核心抽象之后,你去问opendaylight,如果来说最核心的是什么?就是我的(英)以及我提供的工具,工具是什么呢?你有一个描述的数据,我可以自动的用一个(英)帮你生成,来解析这些数据的东西,大家来看这个数据的东西,更像猎物还是更像猎枪,恐怕更倾向于是,按整个分类来说还是在猎物的这一边来看,这是第二点大的系统,这个系统非常的好,它也有一些非常有意思的Idea。它比较有意思的一点,是(英),在昨天和今天都提到一点,(英)分为两类,一类是你要什么,所以这样,我问大家一个问题,这样来说,你要什么,和你怎么要,你要什么来说,是猎物还是猎枪?恐怕还是猎物。意思是什么呢?当前两个系统来说,总体倾向于他们提供的主要是猎物,而不是倾向于提供猎枪,如果你看整个大的架构来看是什么呢?我这两天听到很多的应用,我一直很好奇,我问你们需要几天的时间,我们需要几天,为什么这么简单的东西需要这么大的程序,为什么要这么大的工作量,这么复杂?主要一点,我们现在有了很多猎物的东西了,其实可以搜集数据。可以配置各种(英)也是猎物,右边来说你有网络的设备这很好。总体来说我们的猎枪在哪里呢?应该是(英),真正的猎枪,现在还没有比较好的猎枪,我们现在主要做的东西提供这样一个工具,来给大家,有这样的一个好处。

    当我提到这儿,让我来引入,如果我要有这个编程的最好的工具,我只要给大家提供的抽象是什么,我们团队考虑了很久很久这个问题,到底我们给用户的抽象是什么?SDN提供了一个抽象,到底是  什么?换句话来说,把这个问题深入的档次更高一些,咱们做网络的人和其他做计算机的人到底有什么区别?咱们这个行业到底特殊在哪里?想来想去,恐怕没有。我们其实其实就是计算机行业中间的一员,如果从这个角度考虑问题,我们抽象是什么呢?我们怎么样给用户最最简单的抽象呢?很简单,我们认为网络就是一个大的服务器,什么服务器呢?外部服务器,什么样的服务器都可以。这个抽象是什么呢?网络就是服务器,是外部服务器或者是whatever。这是我们的抽象,我们这么想,越简化越好,有了这样的一个抽象之后,用户变成怎么做呢?你就用(英)来写这个程序,来控制你的整个网络。

    有了这个之后,你告诉用户,从逻辑上来说,每一个请求都会发给你的控制器,你可以处理它。简单不简单?有了这个之后,这太简单了,这个控制器可以做所有的事情,可惜这个控制器有一件事情做不到,他没法做物理转移,他从一点进来,他从另外一点进去,你可以想象,从理论上来说所有的东西都是在控制器去运算,但是有一件事情他做不到,他必须把他的包从一个点走到另外一个点去,这一点必须网络上来做这事情,相当于我们物理上的限制,怎么做呢?网络控制做什么呢?这个包到底怎么从原点到他的终点去,非常简单。有了这个之后,给大家举一个简单的例子,这个就是一个程序,如果假设是这样的一个模型来说,每一个包过来都会发给控制器,这个控制器非常的简单,我这儿有一个(英),有多条链。如果是要22个端口来说,你就从最便宜的到最贵的链路上去找。把他恢复回去。这个就应该是这个样子,为什么这么多复杂的SDN,要写的那么复杂,你完全可以写成这个样子,这个是更加复杂的程序。这个程序怎么做呢?

    第一行,你要做MAC Location,我受的程序来说,应该是到什么地步呢?大一的学生刚出来就可以编程程序。第二层,可能有(英)都没关系。然后怎么走呢?让我查一个表,他在哪个位置上,把他的原地址查出来,目的地查出来(英),用一个(英)的算法,这些东西你都可以调一个库,程序就这样子。为什么大家讨论这么多的程序,咱不说是6个月,或者一年,SDN变成几周或者几天,这个程序应该是几个小时几分钟写出来的,我们可不可以做到这样一件事情,这是我们想做到的,达到的目标。当我提到这一点之后,大家来看,这样的一种编程模型,这样来控制,这样来做,他确实是非常非常的简单,非常非常灵活。你会碰到一个问题,对于你的控制器来说,会成为你的(英),他不工作。所有的包发给他,他要处理,这怎么办?这时候,咱们做网络的人,这么多年的贡献,对整个计算机行业的贡献在哪里呢?咱们其实就有一个贡献,我们学会了怎么样去做(英),所有的计算有两类表达式,一类表达式是用计算用指令,一类是存储,小孩子刚刚学算术不知道怎么办,三乘5就是3+3等于6,后来不行,太慢,怎么办?那就背99表,3乘以3等于9。咱们做的是什么?就是缓存,就是加速,就是做缓存和加速。

    那我们这个团队主要做的是什么?把缓存和加速完全自动化。这是我们这团队做的事情,非常非常简单,用户来说,你写的程序和南向接口完全没有关系,所有的缓存加速我们来做,这是我们做的事情。这个主意大概是两年,三年前提出来的,提出来之后,所有的反应,(  英),让我给大家说一点点,为什么他(英),我给大家先说我们制造的第一个工具,这个工具叫做(英),每天比如说你运行商你写了这样一个程序,这个程序随便写,写完了之后唯一的要求,你用一个库来(英)所有的(英)有了之后来说,你用那个库,一是用户方便,第二我们是缓存哪些流表,自动的,完全自动的,大家比较抽象来说,他整个流程是什么呢?一开始来了一个包,你通过一个表,查询来说,你都有哪些(英),你来了三个包,我有三个存储,把你的结果缓存起来,我建立一个东西,叫做树,有了树之后,我就可以自动的生成所有的流表数据平面,完全自动。真的可能吗?特别简单的例子,这是一个程序,中间完全和南向接口无关。你来了第一个包,来了以后,一步一步的运行,端口22,我运行我的程序,我通过你的库,我就知道什么东西,我给你存下来,我把你的接口给你存下来了,这时候我存在我的树中间了,你又来了第二个包,也很简单,第二个包运行,这样我就有了一个树,我就真的生成我的流表,怎么生成?很简单,这是我的树,怎么声称流表,所谓的南向加速都是一个一个的东西,怎么生成流表呢?我把所有的加快程序变成一个树,太简单了,每个流表说白了,不是你要做一个查询呢,不是查询一个条件吗,我就找到条件。当然有些复杂性,因为所有的,你运行的时候,你要有比较简单的一些个底下的南向接口,你中间没有逻辑的分,怎么办呢?没关系,我这儿给你加一个(英),我也可以生成,整个来说这个包怎么生成呢?一步,两步三步生成。这个可以说是一个大力气,或者说是非常好的工具。

    这是我们一年多前做出来的第一个工具,我们在过去一年,刚才不好的地方,它其实是一个(英),而且有时候有延时,现在来说,openflow1.3,1.4,你能不能自动的有工具,自动的生成所有的东西有没有这个能耐?我们有这个能耐,这是怎么做的呢?还是同样的一些想法,我们基本思路是什么呢?我们说白了,绝大部分是计算机行业出身,每一个程序,就是一个指令级每一个指令级不就是一个流表吗?一个指令级,一个指令过来,有输入,有输出,不就是流表。怎么做呢?这是GBP,大家很熟悉,opendaylight中间非常简单的一个GBP,一共有三条指令,先查原地址,再查目的地址,看你是否允许通过,允许通过的话。每一行其实就是一个流表啊。第二是列表,把这两行的结果送到下一个列表,你立马就有三个流表,所以这就是我们在过去一年做的事情,我们有这样的一个新的工具,这个工具叫(英),它可以自动的,你写成一个(英),我帮你设计你的流表的(英)是什么,我自动的帮你生成所有的流表的内容,这是我们另外最近提供的一个新的工具。总结我们最近提供了哪些新的工具?

    用户怎么写程序呢,就是刚才说到的最最抽象的,最最简单的模型,来了之后,我们有这样的一个编译工具,帮你生成流表,有了这个流表之后,你自动我们帮你把流表的内容加进去,因为底层的计算模型不完整,所以有些必须在时时来做,我们就有了第三个工具,自动的帮你加上来了,有了这个之后,所有的都(英)很多的数据,你应该怎么做呢?我们开发了一个新的工具,自动的去(英),我们都知道,可以帮你重新运行,有了这个东西。为什么网络的人要特殊化?我们完完全全就是计算机行业的一部分,我们可以完完全全的把它合在一起,最好的网络技术帮我们做东西,你可以加新的模块,可以做网络状态抽象加进去,都是模块。我们可以自动来运行,这个是另外一个新的Tools,总结一下。我们现在有了哪些更好的新的工具?和变化无关的模型,因为所谓编排,编程会变得容易多的很多。第二我们提供了这样的一个很好的工具,可以自动,你任何一个程序过来,我来给你做程序分析,相当于是一个编译体,你编译出来你的流表是什么。Runtime来帮你生成这样的东西,(英)也是一个非常好的工具。

    最后在数据增加function store。因为时间所限,所以我讲的比较快,如果大家感兴趣,我们最近录制了非常有意思的dome,编程我们非常简单,也在寻求来开发和部署我们这套系统,如果大家有兴趣可以跟我的邮件地址联系。好,我就说这么多,谢谢大家! 


原文发布时间为:2016年06月02日

本文作者:杨昀煦

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
行者武松
杀人者,打虎武松也。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
多租户Kubernetes实践:从容器运行时到SDN
立即下载
阿里云SDN/NFV技术揭秘
立即下载
蚂蚁金服玉伯:我们是如何从前端技术进化到体验科技的?
立即下载