第二届全球未来网络发展峰会

创新·引领·未来

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

大规模网络混合建模与仿真技术

编辑: 共浏览:874次

非常感谢谢老师,我特别感谢会议的筹办人员的邀请,非常荣幸参加这次会议,我学了好多东西,特别是我想感谢黄涛老师和刘江老师在安排上给予了很大帮助。今天我想讲的内容和其他的讨论不太相同,我用很长时间想讲什么东西?我自己本身做了很多网络的仿真,积攒了15年、20年的经验,所以我想通过这次简略地讲讲,怎么样进行仿真和模拟、建模。我们做的大型网络都比较复杂,而且都是大规模的,刚才有一些讨论都说过用一些人工智能的时候,需要一些网络的仿真,或者其他的工具,来进行测试。那么我先说一下今天要讲的内容,首先我就先简简单单说一下建模仿真。

一开始先讲一下,建模仿真和模拟,我想讲一下怎么样实现大规模的仿真,大规模的对网络进行测试。我稍微总结了一下,就是说自己在之前做的一些东西,基本上有四种方法,其实有更多种的方法,那我先讲一下四种方法在以前研究的时候用的方法。

首先,我现做一个简短地回顾一下,你做Experiment有什么样的方法,最简单的方法当然就是你建这个网络,你建(英文)。这我举了一些例子,美国的各种做云计算的,真实的(英文)显然是要真实的系统。现在可以(英文)多层用户,而且说(英文)。它的(英文)就是说相对来说比较小,就是这么多用户用少数的(英文),然后(英文)并不是很好。另一种方法是Emulation,这个大家都不陌生,它可以(英文)。但是相对来说也是比较(英文),相对来说并不是很(英文)。

另一种方法就是模拟,模拟来说就是软件系统,NS-2,NS-3等等,对于(英文)来说,相对来说比较Slmulation。然后你可以(英文)很大,这个原因是现在有很多技术,比如说并行模拟,可以把你的模拟技术放到HPC上,这样可以用很大的模型。在这个方法我做了一些关于怎么样去大型建模。

我就不多讲了,现在就是说为什么要进行混合的模拟仿真,首先说一下如果做(英文)Simulation,它当然是很好你可以放在大型机上运用,它可以(英文),也可以很具体的做(英文)。另一个它的问题就是说,它没有一个特别的(英文),它并不是很真实,所以一些情况下,如果你的上层的(英文)需要一些真实性,那你这时候需要一些仿真的支持,现在的想法是能不能把这两种结合起来?当然结合起来不是很新了,我说的东西大概十年前比较流行的。

我在这方面做了一些研究,就是比较具体的研究,就是怎么样把模拟和方面结合起来,就是说模拟的软件在(英文)。所以你必须支持(英文),然后让它们互相交互,模拟软件和仿真软件进行交互。

在这方面我做了两个比较成功的例子一个是(英文),当时大概是2005年、2006年样子做的很早以前,就是做(英文),后来在一个美国的(英文)的时候,把这个(英文)的(英文)放到了(英文)上面。这样的话可以实现(英文)。

这张图基本上说明就是说在(英文)有不同的软件,还有不同的软件,然后把它(英文),这样可以连接成一个大型的实验,这个就是大概在2010年左右做的东西,然后我们在这方面做了好多(英文)。比如说BGP,比如说TCP,我们当时也做了很多,用这种方法。

这是一种方法,干脆把(英文),让你和实时系统互相联,这样达到了混合建模的方法。

第二种方法是在一些情况下,就是simulation模拟的东西力度比较低的话或者高的话,它就需要很多的支持实时的模拟,这个时候就是说你必须是考虑到你的系统有可能不能支持实时,因为它的(英文)很大。在这种条件下,你可以用一些其他的Models(音),我举这个Models,大概在2004年、2005年的样子,它们实现了一个用(英文)去(英文)。这个相对来说,我不讲具体系统,主要是这个Models一个包一包的,它用这个不同的就是把它变成(英文)层面,然后用(英文)进行(英文)。我们在这个技术上说,能不能(英文)等于(英文),你要是用到(英文),如果你想用仿真的角度出发的话,仿真是真实的软件,你必须想办法把这个真实的包和流量,进行交互。然后我们就是建立一个(英文),就是在(英文)里面怎么样用(英文)当前的特性影响(英文),然后用(英文)去增进(英文)的(英文)。所以当时我们做了这么一个东西,因为(英文)你有大概是将近1000倍的速度的提升,所以说你如果把两种的不同的模型交互起来使用的话,你可以在不同的程度上,就是说使你的实时交互能力增强。另一方面就是说(英文),就是说做包的东西想实现的东西,想证明的东西,这是我们作为前景的(英文)。然后(英文),你的背景的(英文),我们就用(英文)。所以在这方面我们做了这个,做了这个以后,我们突然发觉你可以用实时的软件,真实的软件做测试,但是你用(英文)你会发现(英文)的东西其实可以放到GPU上我说这个混合,你突然发现混合可以是CPU和GPU的混合。比如刚才说的真实测试软件造成的流量,你要是去看这些(英文)的话,你会发现它的(英文)是非常复杂的,只能在CPU上运用。你发现(英文)的那个呢,它是(英文),正好GPU可以在这方面使用,让GPU实现背景这个流量的(英文)。然后用CPU实现互相交互的方面,我在这个方面(英文)谁都知道用(英文)。然后我们做了简单的(英文),但是在这里面我就不说具体的东西,我们发现会有很多的(英文)。

应该是我们现在要实时流量交互,你有实时应用程序出现的包然后我们有背景的(英文),你怎么样让它交互?去实施?怎么样让利用他们的(英文),让他们(英文)可以同时进行。

现在我想说的第四个方法,现在就是比较新的方法,就是在大概是前面三年,我们突然发现了一个方法,就是在实时的模拟和仿真交互的时候,我们发现了一个问题,现在我用这个图来说明这个问题。首先我们说现在有一个(英文),这个(英文)可以是(英文),然后现在我们在这个里面,我们要有一些机器要去运用实时的运用程序,在运用里面我们要求用真实的机器去运行这些应用程序。假如说我们有(英文),在这个实时的状态下,这个时候发生了什么?它(英文)都必须是送到模拟层,送到上面这个模拟层进行计算。当计算出来以后,然后它的(英文)然后放到真实层。这样导致混合系统的(英文)非常不好,所以我想了一个方法,我们现在能不能用一些(英文),就是很简单的我们确实是把实时、真实的数据包,还是放在Emulation。但是我们让(英文)把这些(英文)传到(英文),在这个时候,我们用这个(英文)本身对包进行延迟和(英文),然后当然那些(英文)会变化一些,互相交互。我们后来想用这种方法,具体的方法我就不说了,基本上来说,就是说在(英文),我们去做一些(英文),然后这些(英文)的值放到了(英文)去控制它流量的变化。然后这些流量的变化,就使得真实的数据包进行(英文)和延迟。

我们把这个叫做(英文),我们把(英文)模拟和方面区分开来,但实际上的真正作用并不是简简单单(英文)起来,就是说我们可以简简单单做一个仿真的系统。比如说我举的例子Mininet,这个Mininet好处是就是用(英文)但是问题出现在如果你对于大型的(英文)进行方针的话,你会出现一个问题,你本身机器(英文)不能到那个地步,你必须用多台机器,现在就是用两台机器,左边一部分、右边一部分,然后那剪子剪开,所有的机器都变成真正的(英文)。你可以这么做,这样会造成很多的问题,造成延迟的问题,我们可以用这个刚才的方法。用这张图来说,有三个颜色的(英文),我们简简单单把三个(英文)放在不同的(英文),用简单的(英文)在中间,然后对(英文)进行(英文)。你可以把(英文)之间的(英文),这样的话这些(英文)并不需要(英文)。这样相对来说你的开销就少多的,这样就可以达到高效。

我们做了一些实验发现,这个确实是精度很好,而且我们做了一些研究,(英文)就是说对(英文)比较不好,然后我们发现如果是简简单单用原来的(英文),原来的图会看得很不好,会有一些问题,而利用刚才我说的(英文)会发现可以有比较好的结果。

我做一个简简单单的(英文),刚刚我说的测试环境来说是非常重要的,对现在来说更加重要,这个(英文)就是说当你真正实现大型的网络模拟仿真建模的时候,你会发现你必须权衡不同的利弊,你的Promisieg会有很大的(英文)。用这种方法基本总结了四种,这种不同的将模拟和仿真放在一起的方法,用实时的模拟,用不同的混合(英文),或者CPU和GPU和最后说的(英文)的方法。可以实现这些方法,我做了很多研究,我本身是做(英文)的,我在HPC方面做了一些东西,这个是简单的介绍,我在做什么。

谢谢大家。