ONOS Mini Summit:ONOS技术指南(上)

大家好。我叫李建,我来自韩国。我现在专注于ONOS的研究与开发。我今天很荣幸能跟大家介绍ONOS,我在ONOS主要担任项目经理,希望大家有机会跟我联系。我今天从以下几方面里讲ONOS:第一,ONOS整体的概述,包括ONOS的核心,还有ONOS的北向接口,ONOS南向接口,ONOS的一些应用。第二,ONOS的发布历史和ONOS未来和前途。刚才Aseem Parikh已经给大家讲了一些。第三,讲一下怎么贡献ONOS的开源项目,最后介绍一下即将到来的ONOS EVENTS。ONOS是起初由OFF研发,2013年开发了一个第一个PUC版本,在这个版本主要专注于扩展性和可可用性。如果看第一版本的话有一个问题,就是性能不怎么好。第一个版本用的是开源软件。第二个版本开始提高ONOS的性能,基于第二个版本2014年12月5日公开了所有的代码,ONOS成为了第一个分布式软件定义网络的项目。它主要支持网络运营商构建自己实际的SDN和解决方案。ONOS设计理念有:第一,代码的模块化。第二,高可见性和灵活性。它架构分为:最上层是应用层,第二层是核心层,核心层主要做分布式处理,最底层是网络层。通过各层设计,开发的时候就不需要知道其他各层具体的实现方式,可以更专注于自己业务的开发。第四,是协议层,ONOS的开发不需要具体懂底层的通信协议用的是哪个实现的。运营以下几种网络:第一,WAN网,第二,Metro网,第三,Cellular Access网,第四,无线网。从网络运营商观点来讲,SDN控制器必须支持多达10万以上的网络设备,一台控制器不能满足所有的需求,所以我们开始考虑怎样来开发分布式的SDN控制器。除此以外还需要满足:第一,高吞吐量。一般在网络运营商每秒产生500万-100万的流量,在同样的环境下执行的网络状态操作量过达300-600万。第二,高网络流量。一般来讲SDN控制器的流量传输高达500GB-1TB/秒,并且整个设置必须高可用性的。为了满足网络运营商这些严格的要求,ONOS采用了分布式架构来设计核心。ONOS是由五层构成:应用层、北向接口、分布式核心、南向接口、协议层。

ONOS提供两大功能:一,高可用性,简称HA;二,负载均衡,简称LB。除此之外,ONOS分布式控制,可以实现负载均衡,同时支持大量的Switch,从而保持它的可扩展性。ONOS的架构可以由很多子系统构成,它通过特殊的接口跟其他的开源项目集成。我们可以利用在跑起来的情况下安装和启动和关闭的应用,不需要重启整个ONOS,也可以升级自己的应用。

Subsystems分五种:一个是PPT上显示的灰色部分。第二,网络核心的,是由红色标注。第三,ONOS自带的一个,如果启动ONOS以后,它会自动的安装,可以选择启动某个程序。这个都是现在子系统所支持的一些北向接口。最后一个不是ONOS自己的接口,如果运营商自己有的话可以通过这个跟ONOS通信。子系统还可以进一步分三个部件,如图所示。位置在最低端的是应用交换机,管理组件和提供商交换机。中间端是管理交换机,这个主要是接听网络的事件。我们每个子系统都有自己的Store。最低端的部件是传播用户的命令到管理交换机。

下面我想讲述ONOS怎样实现分布式核心的。这个是一个很重要的概念,子系统跟其他开源控制器相比是一个差异点,就是说其他的开源软件一般都不支持分布式,但是ONOS、ODL都支持。它有三个特点:第一,统一连接搭一个控制器。这个是在不同的机器上运作,但是分享着共同的拓扑信息。每个ONOS控制器都会运行同样的软件,并且保存同样的网络设置。ONOS支持Fault-tolerant。在这个图上可以看到第一个交换机被第一个控制器所管理。第一个控制器出现了问题,这样的话第二个控制器就成为了第一个交换机的管理。这样网络延时大大降低,甚至很少会发生宕机,即便发生的话时间也特别短。即使在网络运行的控制器出现了一些问题也可以通过这种方式解决这样的异常问题。

ONOS是怎样实现网络信息的共享呢?一般来说每个ONOS会管理一个以上的交换机。各ONOS控制器通过通过信息来搜集交换机的信息。通过一个算法把搜集到的信息保存起来。相反,如果某一个控制器想读取信息的话,它可以直接访问来获取信息。如果想实现很严谨信息传播的话就用Distributed primitives。还有就是不严谨的,比如有些信息不需要立即传送到其他的集群上。

下面我讲一下ONOS如何实现信息同步化,如果想同步到五个地方,最简单的方法是把信息分成五等分,把每等分复制到三个控制器里,为什么三个?因为其中一个宕机了,还有其他控制器备份。

下面我讲述一下ONOS都有哪些北向接口,它有三种接口。另外,还会提供面向用户的接口。ONOS提供一个很漂亮的界面,这个基于single-page开发的,可以在这里访问所有的内容,不需要刷新界面,在底层实现前台和后台的通信,然后同步化。如果在后台更新信息的化都会反馈到前台,不需要刷新界面。除此以外还使用这些开源软件,这是用三个ONOS控制器来搭建的控制平台。

除了用户界面,ONOS还提供用CLI。访问CLI两种方法:第一,根据安装ONOS使用其中一种方法来访问ONOS。可以根据本地或远程安装的差别,决定如何访问ONOS。如果说网络运营商,很多情况下拥有自己的网络管理系统,想把ONOS放到自己的网络系统,可以通过ONOS提供的REST API实现系统的整合。目前ONOS提供两套APC接口:一个是基于JSON HTTP/1.1,这种技术在业界很广泛使用,可以说是业界的一个标准。使用这个最重要的是接口的标准和描述接口的文本。REST API缺点是速度慢,它是基于JSON的格式,还有基于HTTP1.1,这个不支持异步通信。为了解决这个问题Google开发了一套新的RPC系统,简称gRPC,gRPC使用了一个protobuf bodel,它将传输的数据都编译成2进制,因此传输量会降低很多,所以可以很快的传一些信息,这使得gRPC短时间可以传输大量的数据。下面的图表示了这些性能差异。像一般情况下gRPC比Rest API传输速度高六倍。Network Graph是抽象网络的链接等等的。Network Graph用来抽象化分布在网络上的网络设备和链接的架构。它是把通信协议特定网络映射到与通信协议无关的协议上,把这个无关的协议我们叫做Model objects。目前提供的这个主要是基于open flow。Model也可以用在其他的抽象协议。

下面我们再来讲一下Flow objective怎么实现设备抽象的。根据不同的交换机使用差异,针对每个交换机开发独立的应用程序,这不是我们希望看到的。为了解决这个问题研发了一个方法,就叫Flow objective。通过这个提供的API可以不需要知道具体的交换机硬件怎么构成的可以直接编程这个程序。这个设计主要基于Driver,不管用多少交换机,一旦开发者用这个开发的应用,这个应用可以用于实现Pack1。向在windows开发某种应用的时候不需要知道主机在哪个硬件,因为抽象系统会帮你抽取所有的硬件。Flow objective内部也是使用驱动,这个驱动会对应厂商的。开发者定义这个object,通过这个来转换专用的特定服务。Flow objective现在提供三个类型的接口:第一,Filtering object,forwarding object Nect object。时间关系我就不细说了,会后可以找我,或者我给你们链接。

接下来看叫Intent Framewor,这个只需要指定两个Host,可以点一个Cast链接,这样所有细节都可以,就是Host会自动生成。一旦控制器受到指令的话,它会到唯一的一个ID。我们生成path intent可以安装好,为了让两台通信,我们经过三个交换机可以做一个链接,这个就自动生成了。

这个编程方式分三种:一种是基于并不抽象化的方式,这是最底层的开发方法。第二,基于Flow objective。第三,基于Enterprise Campus。这个PPT总结了现在ONOS提供的三种方法:第一,通过Network Configuration搜集网络。第二,基于Device Configuration 。第三,基于Dynamic Configuration。

现在讲一下南向接口。它有三个接口:一个,Protocol,第二,Provider,第三,Driver。目前ONOS支持大多数的开源协议,像大家熟悉的Openflow,ONOS现在最稳定的版本是OpenFlow 1.3。从ONOS下一个版本开始,ONF打算支持Openflow1.5。为了能够让ONOS管理更多厂商的设备,ONOS支持NETCONF协议,还支持标准通信协议,包括LISP等等。ONOS不仅支持现在大多数的通信,还支持最新的通信协议,还有gRPC。在最底层开展使用开源软件来实现控制,比如Openflow由第三方开发了,我们来调用这个来执行。目前ONOS支持的版本是4.1,可以说是支持最新的。通常同一个设备存在多个提供商,像提供商检测到一个设备,像这种功能在提供商里都可以看到的。如果核心层想调用的话它要知道调用哪个提供商,为了这个机制我们内部是使用一个识别号。如果向开发另一个北接口是基于你的平台,你可以加自己的识别号来用的。

下面我讲一下Application,应用程序根据提供的接口可以分三种。目前ONOS支持超过80个应用,支持12个南向接口,通过添加相关的驱动可以支持现有大部分网络设备。ONOS在其他开源项目还有很多项目,ONOS做出了很多贡献,Aseem Parikh讲到了这个。

更多会议直播信息,请访问:https://www.sdnlab.com/2017-sdnfv-conference/


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19661.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于17-08-02
0