三层交换机和二层交换机怎样理解?
1.二层交换技术
二层交换机是数据链路层的设备,它能够读取数据包中的MAC地址信息并根据MAC地址来进行交换。交换机内部有一个地址表,这个地址表标明了MAC地址和交换机端口的对应关系。当交换机从某个端口收到一个数据包,它首先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的,它再去读取包头中的目的MAC地址,并在地址表中查找相应的端口,如果表中有与这目的MAC地址对应的端口,则把数据包直接复制到这端口上,如果在表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。二层交换机就是这样建立和维护它自己的地址表。由于二层交换机一般具有很宽的交换总线带宽,所以可以同时为很多端口进行数据交换。如果二层交换机有N个端口,每个端口的带宽是M,而它的交换机总线带宽超过N×M,那么这交换机就可以实现线速交换。二层交换机对广播包是不做限制的,把广播包复制到所有端口上。
二层交换机一般都含有专门用于处理数据包转发的ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。
2.路由技术
路由器是在OSI七层网络模型中的第三层——网络层操作的。路由器内部有一个路由表,这表标明了如果要去某个地方,下一步应该往哪走。路由器从某个端口收到一个数据包,它首先把链路层的包头去掉(拆包),读取目的IP地址,然后查找路由表,若能确定下一步往哪送,则再加上链路层的包头(打包),把该数据包转发出去;如果不能确定下一步的地址,则向源地址返回一个信息,并把这个数据包丢掉。
路由技术和二层交换看起来有点相似,其实路由和交换之间的主要区别就是交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层。这一区别决定了路由和交换在传送数据的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。
路由技术其实是由两项最基本的活动组成,即决定最优路径和传输数据包。其中,数据包的传输相对较为简单和直接,而路由的确定则更加复杂一些。路由算法在路由表中写入各种不同的信息,路由器会根据数据包所要到达的目的地选择最佳路径把数据包发送到可以到达该目的地的下一台路由器处。当下一台路由器接收到该数据包时,也会查看其目标地址,并使用合适的路径继续传送给后面的路由器。依次类推,直到数据包到达最终目的地。
路由器之间可以进行相互通讯,而且可以通过传送不同类型的信息维护各自的路由表。路由更新信息主是这样一种信息,一般是由部分或全部路由表组成。通过分析其它路由器发出的路由更新信息,路由器可以掌握整个网络的拓扑结构。链路状态广播是另外一种在路由器之间传递的信息,它可以把信息发送方的链路状态及进的通知给其它路由器。
3.三层交换技术
一个具有第三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单的把路由器设备的硬件及软件简单地叠加在局域网交换机上。
从硬件上看,第二层交换机的接口模块都是通过高速背板/总线(速率可高达几十Gbit/s)交换数据的,在第三层交换机中,与路由器有关的第三层路由硬件模块也插接在高速背板/总线上,这种方式使得路由模块可以与需要路由的其他模块间高速的交换数据,从而突破了传统的外接路由器接口速率的限制。在软件方面,第三层交换机也有重大的举措,它将传统的基于软件的路由器软件进行了界定,其做法是: 对于数据包的转发:如IP/IPX包的转发,这些规律的过程通过硬件得以高速实现。
对于第三层路由软件:如路由信息的更新、路由表维护、路由计算、路由的确定等功能,用优化、高效的软件实现。
如何评价今年的ilsvrc2014结果
第一次回答此类问题,有不准确的地方敬请见谅。关于ILSVRC的背景知识, Filestorm 有一篇很好的文章,值得一读,我就不再赘叙了,免得我的文笔相形见绌:
从Clarifai的估值聊聊深度学习 - 机器视觉x模式识别
今年我们在Google提交的结果与去年相比有了很大的提高,并且在classification和detection两个方向都获得了最好的结果。不过,话说回来,大家也应该都估计到了今年的结果会比去年好:)个人觉得,更有意思的是“how to get the number而不是“what the number is”。我从classification和detection两个track分别聊一下个人的拙见。
Classification:与Alex在2012年提出的AlexNet不同的一点是,我们这次的结果大大增加的网络的深度,并且去掉了最顶层的全连接层:因为全连接层(Fully Connected)几乎占据了CNN大概90%的参数,但是同时又可能带来过拟合(overfitting)的效果。这样的结果是,我们的模型比以前AlexNet的模型大大缩小,并且减轻了过拟合带来的副作用。另外,我们在每一个单独的卷积层上也作了一些工作(“with intuitions gained from the Hebbian principle”),使得在增加网络深度的情况下,依然可以控制参数的数量和计算量,这都是一些很有趣的方向。
Detection:个人觉得,在detection上最有意思的工作应该是ILSVRC2013以后,Jeff Donahue和Ross Girshick(和我在Berkeley同一个实验室的Phd学生和Postdoc)所发表的R-CNN方法。R-CNN的具体想法是,将detection分为寻找object(不管具体类别,只管“那儿好像有个东西”)和识别object(识别每个“东西”到底是狗还是猫)两个过程。在第一步,我们可以用很多底层特征,比如说图像中的色块,图像中的边界信息,等等。第二步就可以祭出CNN来做识别,网络越好,识别率也就越高。今年很多参与detection的组都借鉴了R-CNN的想法。
总的来说,CNN的效果还是很不错的,但是还是有一些不足的地方:比如说,Detection的正确率依然还没有很高,并且很多时候我们的分类器其实并不一定知道具体的object,它只是学习到了一些场景信息。比如下图:
标注信息是Jeep(吉普车),而我们模型的判断是Snowplow(铲雪车),究其原因,很可能是因为铲雪车的图片中有很多雪,而这张照片正好是雪天。所以,分析DNN的具体行为,具体了解这些网络中学习到的pattern,进一步纠正在学习过程中的偏差,并提出更加robust的算法,应该是接下去几年的方向。当然,从系统的角度说,如何更加迅速地学习这些模型(比如说GPU,大型的机群等等)也很有意思。
顺便也要纠正一下在提到CNN的时候经常出现的错误:“CNN的参数太多,造成学习困难。”
其实CNN相比较于以前的模型,参数并不见得多:在CNN之前,NEC Labs采用sparse SIFT+Pyramid Pooling的方法取得过ILSVRC的冠军,在这些模型中,最后线性SVM的输入特征在160K到260K不等。因为一共有1000类,所以SVM的总参数是160M-260M左右。Alex 2012年的模型只有60M参数,而我们今年的模型大概只有7M。(补充编辑:这些图像特征一般都是稀疏的,但是SVM的参数并不稀疏。)
所以,其实我们应该说的是,CNN的优化是一个非凸(non-convex)的问题,所以才比较困难 :)
同时也要做一下广告:一直以来我都很希望许多研究工作可以开放源代码(好多PhD应该都有同感吧,读完一篇paper然后痛苦地实现文中的方法。。。然后老板很奇怪为啥你花那么久),去年用Decaf/Caffe参加比赛,主要也在于推广一个开源的框架,方便大家做进一步的实验。R-CNN发表以后,我们在github上公布了完整的基于Caffe的实现,今年很多组都提到使用了Caffe或者R-CNN的研究成果,让我们在Berkeley的同事倍感欣慰。今后也希望看到Caffe能支持更新的研究工作。
在ECCV上我们应该会进一步讨论方法细节,所以如果各位参加ECCV的话,欢迎参加ImageNet的workshop以及Caffe的tutorial!很不幸,因为签证的缘故我没法去欧洲,痛失一次旅游的机会 :( 希望各位玩得痛快。