第三届未来网络发展大会

网络全球 决胜未来

当前位置:嘉宾致词> > 分论坛十一

基于机器学习的智能路由AIR

编辑: 共浏览:733次

各位专家、各位老师上午好!

下面我给大家汇报一下关于机器学习在路由领域的应用研究的情况。汇报分成这么几个部分,首先简单介绍一下背景,然后介绍一下路由相关的三个方面,一个是流分类,第二个是流预测,第三个是路由计算。

我们知道网络,计算机网络是我们计算机学科和通信学科的一个交叉融合的学科,在这里面呢,摩尔定律和通信里面,传输里面的光纤定律,应该是支撑这个领域发展的两个飞快的轮子。但是最近这几年的研究发现,可能摩尔定律增长遇到了一些瓶颈,这个图显示了摩尔定律在最近几年里面增长速度放缓,甚至有停滞的趋势,就说明CPU性能增长遇到了一个天花板,遇到了一个工程上的天花板。

在传输里面,我们光传输,还有像无线通信,这些年发展非常迅速,但是最近几年的研究最新研究成果也表明,相同极限已经被逼近,这样两个现实的问题,这样两个工程天花板和理论天花板,对我们网络的发展提出了一个严峻的考验,在以前,我们可能做一个网络,开发一个协议,做一个设备的时候,只要把功能做得正确,兼容性做好,性能的事情可以交给CPU、带宽、通信增长就可以了,过上两三年,三五年,就可以更新换代。

现在CPU和通信接口增长速度遇到了瓶颈,网络怎么进一步发展,这其实就是给我们提出了挑战。我们现在链路用率还是比较保守比较低的,大概30%到50%的区间,传统上我们运营商也是超过了50%就要考虑到升级换代,要换设备了。现在在CPU和接口带宽增长放缓的情况下,我们可能需要在路由控制方面做更多的文章。

从另外一个方面来讲呢,网络分层结构,这里面应该说网络上是起到一个核心承上启下的作用,网络层里面三个核心要素,一个是传送模式,第二个是转发方式,第三个是路由控制。传送格式,我们知道从1969年开始,到现在主要格式一个是IPV4,一个是IPV6,没有太大的变化,转发方式就是增普交换,真正推动发展的是路由控制方法,最早这些都是在路由控制方面对网络做的控制,使得网络能够充分利用带宽资源,满足用户需求。从网络体系结构角度来看,那么我们要解决的一个挑战性问题就是在传送格式和转发方式相对稳定情况下,如何来去调整路由控制,使得它能够满足用户的需求,能够充分利用网络的资源,使网络最后达到一个最优,这是我们不断要解决的问题。

目前我们网络路由情况是什么样子,传统路由我们都知道,像OSPF,都还是基于一种拓扑的变化,虽然是一个动态的,动态的适应,自学习的网络,但是主要考虑的是一个拓扑变化,传统网络里面,如果把流量的变化考虑进来的话,可能会导致路由不稳定振荡。贷款资源,流量的信息,以及其他一些约束条件,也会在路由计算中考虑。更多是网络规划利用的,这样的一种方法,对于我们动态实时运行的网络来讲,其实是远远不够的,因为它只能做一些和当前状况有关的,不能考虑过去和未来,而且要计算的信息量很大,路由决策、路由优化,求解难度非常大,不能实时。这是我们目前面临的挑战,虽然在过去,比如说20年前,我做QS路由的,最后并没有很好解决这个问题。

今天在计算机,以及通信里面,我们人工智能这些年发展非常迅速,特别是机器学习,在像人脸识别,语言处理等等方面,取得了非常惊人的效果,机器学习的特点,是比较适合于网络来做的,训练好的模型,决策速度还是比较快的。特别是像路由器、交换机,对包括决策的时候要求的速度还是非常高的。另外优势就是,可以发现潜在的规律,可以避免我们传统的数学公式来做优化这种方式,可以简化处理,另外也具有一定的预测能力,资源分配等等的领域里面都有研究。

这个图就是把机器学习,有监督学习、无监督学习和强化学习,可以看到在网络比较经典的研究领域里面都是有使用。在这里面呢重点来看一下,在路由控制方面利用机器学习的应用进展情况,我们所讲的智能路由是一个研究的概念,主要指的就是用机器学习的方法直接完成路由计算,这里面有一个基本架构的图,这个输出可能是一个路由节奏,直接可以用于后面数据包的转发,也可以是一个辅助性的信息,可以判断一下是一个大流还是小流,还是某一种具体应用,是fttp还是ftp,根据流的特点来做一个决策。

下面我说一下流分类的情况,对到来的流,根据它的一些属性,来判断一下是属于哪一种类型的流,是哪一种应用类型的,还是根据网络层的特性来去做的判别的,基本工作模型就是把流的一些特征,放到一个机器学习训练好之后的模型,最后能够得到这个流具体的应用层的类别。

我们如果能够知道这个流属于哪一个应用,后面就可以做很多的工程,包括做路由计算和流量整形,和攻击检测等等。也有一些挑战性问题,我们从网络层获取的信息特征维度比较低,给最后的学习带来一定的挑战,另外数据带标签,带标签数据获取也比较困难,还有在实际流量里面,可能不同类型的数据分布是不均匀的,不太常用的小比例类别的特征,学习起来可能比较难一点。

最近这些年,这方面的研究也是不少,可以看到从2005年就有一篇论文来做这方面的研究,一直到像最近几年的2012年的TON等等,用的学习方法都是比较基本的,比如说用SVM、决策树等等。我们可以看一下按照有监督、无监督分类的话,有监督学习里面。仅仅就使用数据流里面少量数据包的信息,就可以来去判断这个流,准确率还是比较高的。但是由于是有限度学习,只能将已知的流进行分类,无监督学习像K—means,可以发现新的流,也还是很高的。特点就是说分类之后,需要进一步人工来对进行一个交互给出一个类别的标识。

这样的流分类之后,其实就为我们后面的路由计算提供了一个非常好的条件,一个基础。比如说这个流到来之后,经过一个模型识别你了之后,可以判断出它是某一种应用类型的,FTP,这个时候我们就可以判断出它可能是对延迟不一定那么敏感,但是对贷款也许可以要求更大一点,我们可以选择一个高吞吐的路径来处理。对于整个网络流量的平衡,以及用户需求的满足,可以做得比较好一点。在线获取特征信息,这是需要挑战的问题。

另外我们由于得到可能是基于流,或者是流聚类的识别,在传统的基于目的地转发的数据层面的操作上,就需要做一些改变,可能要变成一个基于流转发的,这个时候路由表或者转发表维数会变大,由一维变成二维或者很多维,在路由转发层面要做一些改变。

第二个问题,在流预测方面机器学习,也会发挥作用,可以根据目前到来的一段时间里流的情况,来对未来一段时间里面的某一个流或者若干流的集合,W的队列,里面的历史数据放到训练好的模型里面,最后可以预测出,下一个时刻的预测结果。它的分类就是两种,一种是一个单独的流它的预测,这个我们可以预测流的大小,以及流的分布,大概是什么样的分布模型。如果是一个流量矩阵的话就要复杂一点,基本上只能得到一个流的大小,这方面的工作其实还是比较初步的,效果没有那么理想。

预测的用途也是可以用于路由优化,异常检测,优势控制资源分配等等。挑战就是这个流具有一定的偶然性,还有其他一些背景流噪声,这些可能会对我们流预测做出影响,会限制流预测的力度和频率。另外就是原始数据你需要做一些预处理,另外预测的越多,希望得到信息越多,需要的数据,需要的信息维度就要越高,训练起来就比较难,需要花的时间开销就比较大,对于网络的实时处理难度比较大。

这方面也有很多的研究,从2014年NPC就有预测,在网络的会议和人工智能会议里面都有这方面的工作,用的方法就是像RNN、DNN的方法,预测包括独立流预测,也有流量矩阵的预测。我们看一下,用的比较多的是有监督的机器学习,这里面如果是一个流量的矩阵预测的话,那么它用的主要方法是DNN和DBN,特点就是输入输出流都比较高,预测的结果误差比较大,效果不是特别好。但是在基于链路或者流级别预测方面效果还是不错的,RNN或者是GPR这样的方式,可以比较准确地来预测一个流,这方面对后面的路由应该是有很大的帮助。

数据中心网络里面做了比较多的研究,根据到来包的情况,可以判断出这个流是一个大流还是小流,相应地可以选择不同的路径,来对这个流进行处理。

小结一下,在智能路由里面,流级别的预测,对于提升用户体验是非常有帮助的,整个流量预测,也可以用于提升网络的性能。这个流预测,也是对在线采集数据,以及数据预处理提出了比较高的要求。然后在整个流量矩阵预测方面,目前的研究效果并不是特别好,但是在一些网络流量动态性比较低的场景下面,也可以用机器学习做流量矩阵的预测。

下面再来看一下在智能路由计算方面,做路由决策的时候的情况。这个主要是可以根据网络的状态信息,来做路由决策,以便满足整个网络,特定用户需求的网络要求,基本上工作要求,前面也给出来了,把网络信息、流量信息放在一个训练好的模型里面,然后直接就可以给出,一些预先选择好的几个路径,在几个路径里面可以做一个流量的分配。

在这个领域里面也是有不少文章,特别是最近几年比较好的会议里面,这方面文章也不少。比如说2017年的nips人工智能领域的会议。智能路由里面监督学习、强化学习,这方面工作做得还是不少的,强化学习里面,用传统的强化学习的话,用基于model—based,比较适合于我们分布式路由器,分布式路由协议,路由计算这样一个传统的模型,和解性也比较强。

另外一种是深度强化学习,用DDPG的研究方法,可以支持更高维度的输入和输出,比较适合集中式的训练,这个就是我们用什么SDN的模型比较好,但是它的问题是可解读性不是那么强。但是相对于其他的一些方向来讲,网络对于可解释性要求没有那么高,我们只要通过一个比较好的控制,让它目标太离谱的话,可解释性就没有那么高了。

在有监督学习里面,监督网络,GNN比较适合于分布式在路由器里面,用CNN、DBN可以用在集中式的进行部署,在智能路由计算方面场景还是比较多的,目前可以看到像无线网络、广域网、数据中心网络、承载性网络里面都有这方面的工作,这方面都是可以去做的。

但是不同的方法,他们特点不一样,最后应用场景获客方式也不一样,可以直接部署在传统路由器的控制层面,如果是开销比较大的,就要放在集中的控制器上面,比如说SDN的场景下面,然后有一些方案,基于决策树的方案,可能把路由控制和包的转发结合起来了,包在转发过程中,就可以同时进行控制,所以可以介入像现在比较流行的图片交换机,在数据层面,把控制结合进去,这也是现在尝试性的方式。

目前这种分布式的方式,应该说是比较适合于我们现在网络的实际的需求,但是目前这些方案大多还没有考虑到像故障的情况,发生故障,或者发生异常的情况下,这些方面还是有很大得空间可以去做。

最后我再来举一个例子,我们把网络路由控制里面很经典的问题,流量工程拿出来给大家看,用机器学习怎么样去做改善。流量工程,我们都知道其实就是把网络里面的流,比较合理地分散到网络里面链路上面,最后我们希望能够让这个链路利用率比较均衡,也能够提升用户的体验,满足他们的一些需求。

但是我们传统的流量的方法,虽然我们有像MPS,包括VPN的工具,这样一些协议,但是从它的路由控制角度来讲,更多的其实还是靠一些比较静态的,靠人来事先求解一些数据模型,来去做一些优化,这种方式来去做,问题就是我们测量需要的开销比较大,而且不实时,不能根据网络的实际情况来去动态调整。另外建模也比较复杂,求解难度也是比较大。

现在我们试图可以通过机器学习的方式,来去改善这样一个状况,使得它能够快速适应网络的变化,并且能够负载比较均衡。

在这里我们用了一种分布式的,比较容易部署的强化学习的方式来解决这个问题,在网络里面,我们把这样一个方案部署在网络的边缘上,我们只要在边缘上做一个控制就可以了。是跟传统的陆游相结合,我们可以通过传统的,比如上像SOF,可以事先选择好端到端的路径,现在我们可以让它选择多条。实践表明,可能有三条就已经对流量的均衡,可以起到一个非常好的效果,端到端,有2到3条路径,到来的流,在路径上会进行分配,在这个例子里面,上下这两个路径各用50%的流量进行分配。

可以根据网络里面链路的使用的情况,去通过OSDF收集链路利用率的情况,获取目前链路的延迟利用情况,来调整不同路径上的分流点,要用比较努力实现的方式对流量进行一个控制。

系统的基本架构就是,在这里面我们用了一个集中式的学习,在一个SDN控制器或者网管服务器上面对数据进行收集和学习,经过处理之后进行训练得到一个模型,下发到一些边缘路由器上,边缘路由器根据到来的情况,以及链路目前的使用情况,来做出一个路由决策。

基本的一个流程就是首先要去预处理一下流量矩阵,在一个模拟的数值环境里面进行训练,然后得到一些模型,下发到各个边缘路由器上,大概根据网络里面收集到的流量信息来做出路由决策,这是一个基本的结构和流程。我们这个决策是一个本地的决策,如何实现全局的协作和优化,传统的路由里面是通过像分布式的路由算法,来去把路由信息传递过去,SBF还是一个全局的计算,现在我们在分布式本地决策上面来实现一个全局的最优,这个是一个挑战性问题。基本的解决方法就是通过一个设计合理的强化学习的模型,来去与环境进行交互。比如输入里面输入是链路利用率的情况,输出是候选分流比,最重要就是函数设计,要把全局目标和全目标结合起来,这样的话可以通过一种反馈的方式来去调整流量的分配。通过博弈论,可以证明该系统设计存在均衡点,并且均衡点也是最优的。

第二个挑战是如何快速有效训练agents,是在一个数据虚拟环境里面进行快速训练,对数据也要做相应的预处理,可以加快运行的速度。相比其他的机器学习方法,以及像ECMP的方法,最大链路利用率可以得到比较好的降低,分别降低到百分之十几到二十几的情况。在80%的情况下,可以以教育网络的数据为例的话,链路最大的利用率是小于0.44,小于44%。

最后做一个总结,刚才要求解的问题就是流量工程的问题里面,用数值仿真环境训练,在真实环境里面来去运行来去工作,利用链路利用率作为输入,然后能够快速对流量进行一个识别和流量的分配,最后的结果也还是不错的。

最后对报告做一个总结,智能路由目前研究主要还是侧重在网络的控制层面,还是在路由流量的识别和路由计算和决策方面。刚才也看到了,路由决策的形式,可以是直接输出,路由直接决策结果,也可以是输出流量的特征,这种决策形式不同,可能会导致数据平面也会发生一些变化。比如说可以用传统的直接插表方式进行转发,也可以用交换机,边做决策边做转发的这种方式。第二是机器学习算法,可能是输出一些辅助的信息帮助路由决策,另外是不同的路由智能方案,在控制层面扮演不同的决策,有些直接替换到了路由协议,有些可能还是作为一个辅助,来去配合现有的OSBF这样的协议。

还有一些要解决的关键问题,控制层面的关键问题,需要去解决怎么样获取更准确获取特征,减少测量开销,以及机器学习的算法,如何和真正的路由器物理的配置环境相匹配,再有就是路由决策要能够简化,适合于模型的收敛,数据层面主要是解决一个多维流表压缩的问题。未来要做的高效、可扩展的智能路由,以及面向需求的智能路由,真正在路由器里面把机器学习用在里面。目前研究,比如说做到千兆或者是万兆这方面有一些验证,但是真正我们核心路由器100个G,甚至400个G,能不能用机器学习来做转发,还是非常重要的。

我就介绍到这儿,谢谢大家!