gns3是一个开源的网络模拟器,类似PacketTracer。它支持很多种设备,可以把Docker container、Virtual box、VMware以及思科各种系列(除了Nexus系列)的交换机和路由器导入到模拟器中,进行网络组网测试。目前有很多家公司都在用它来进行网络模拟。它也可以用于CCNA考试里的网络模拟。

安装

gns3可以安装在多个操作系统中,支持Windows,Linux,OSX等,具体安装文档参见这里。它分为两部分,一部分是模拟器的核心部分,另外一部分是Gui作为客户端,是用Qt写的。直接安装的话就是安装它的all-in-one的版本,将两个部分安装到一起。

当然,这两个部分也可以分别安装。我比较推荐的是将模拟器核心安装到虚拟机中,官方提供了VirtualBox和VMware的Ovf文件,可以直接作为模板导入到虚拟机中。安装时不推荐安装到VMware player中,一定要安装在Vmware Workstation里面,因为Player的网络功能太差,很多东西功能后面没法用。可以直接到这里下载对应版本的客户端和服务器。它对Ubuntu系列的支持比较好,Redhat系列支持不太好,很多包都还是不可用,不推荐在CentOS下安装。
它同时还可以将服务器部分部署到ESXi中,具体我没试过,如果主机是Doker的话,在ESXi中应该很方便。但是如果主机是VirtualBox或者Vmware的话,ESXi可能便利性可能没那么高。

安装完成之后就可以按照文档提示导入相关的镜像和主机即可,所有的配置都在GNS3 preferences中完成。

如果你觉得思科的交换机用的不爽,有一些高级功能没有的话,你可以试试EXOS的交换机镜像。安装方法在这里。这个文档总结了Gns3常用的安装方法,可以看看。

在配置Docker时,如果是在虚拟机里面,则需要去虚拟机里面安装Docker images。EXOS包含很多高级功能,如LLDP,DCBX。

more>>

关于我: 目前就读于北京邮电大学硕士研三。 在红帽Redhat QE组和Insight组实习过 目前在京东搜索组实习,年后入职京东。 GPG key: $ gpg --fingerprint sqh@sqh.me pub 4096R/80A5E59B 2016-10-04 Key fingerprint = 5E80 7BA8 8E11 DDE8 053C AC50 06EF A496 80A5 E59B uid qhsong <sqh@sqh.me> 在社交媒体上找到我: Twitter Github

more>>

前几天一直说要把我的博客实现https化,一直没空。后来昨天被ichon一说,鼓动了一下,就把博客实现了https化。使用的是startssl SSL证书,把所有的http请求全部换成了https请求,妈妈再也不用担心我被劫持了。 然后是由于用的多说插件,多说评论的头像获取并不是https,导致文章页面浏览器显示的不是绿色,强迫症看了略蛋疼。凑合用用吧,等我的go语言版本的博客上线了,就干掉多说。 感谢ichon。

more>>

最近一直在用OpenVPN通过IPv6将连接到我的linode服务器进行科学上网和免流量。然后要上图书馆查文献的时候又需要关了OpenVPN,倍感麻烦。一开始是在自己电脑上加路由表,但是觉得这样也不方便,不同网络环境还要写不同脚本。然后自己校内还有一堆可以面流量的服务器,于是就像自己做一个PPTP的网关,我通过PPTP连接到校内的服务器,然后校内的服务器作为网关再智能选择走国内学校自带的线路还是走OpenVPN连接到外网。这个拓扑图大概是这样:

user<--PPTP 192.168.8.0/24--->校内服务器<----正常上网 10.*.*.*---->Internet
					^
					|
			      OpenVPN
				   IPv6
			   192.168.5.0/24
				 	|
					|
					v
				国外服务器

more>>

最近关注了一些技术大牛的公众账号,看他们推送的文章,还在知乎受到了“温兆轮”的洗脑,现在还在听ipn.li的播客,IT公论和内核恐慌也是不错的两档节目。通过这个节目了解到了不错的东西,Oculus Rift、hololens这些国外的VR和AR的东西。然后很巧合的是在北邮的大创展览上居然试用到了Oculus,然后就震惊了。穷学生什么都买不起啊。。受到内核恐慌的影响,自己折腾起了i3wm,然后觉得Ubuntu下面的i3wm不好用,又跳到了Arch,然后又喜欢上了这个系统。自己闲暇时候还去折腾折腾Docker,还觉得蛮有意思的。 反思是必要的,受知乎的影响,看了看邹欣的《构建之法——现代软件工程》这本书,里面有很多的观点是值得去学习的,也是我以前没有想明白的事情。果然多读书是有用的。 先说说我之前的一个思想吧,之前的思想是,自己要学的好,才能准备好去在职场中打拼。可是,什么是学的好,好到什么地步?这个是值得定义的,一直要说的是搞懂计算机的底层,可是我发现到现在什么都好像什么都搞不明白,很多时候还有一种抵触情绪,去抵触这些东西。有些时候甚至怀疑自己真的能不能搞定计算机这种事情,甚至想弃坑了,换一门其他的手艺(我现在还能换什么手艺?修电脑。。。)。现在看来学会了再干活这种想法是有问题的,我自己其实更倾向于是用项目来驱动技术的。可以自己接手的项目不多,前段时间接手了一个微信公众账号的东西,写出来的代码质量也很低。 从根源上想想,自己的并不是想要逃避工作,而是自己内心还是不够强大,老是觉得自己做的不够好。这样就一直导致自己陷入了一种循环当中,无尽的恐惧和恐慌。然后对自己的定位不明确,再加上自己手里并没有能拿得出来的项目,所以有现在的情绪。偶尔这样的焦虑让我搞得有点失眠,再加上花了很多时间在看书,自己身体上没有花太多心思,运动也是有一天每一天的。 想起自己本科的生活,想来也是有得有失。自己直到大四下学期才确定了自己的主要的技术方向,Linux网络服务器端。自己的研究生生涯也是奔着这个去的。到现在为止,研究生生活已经过半了,前半年一直在上课,接下来的这个学期开始进了实验室。一开始先去研究网络劫持了,国内某流量倒卖商拍脑袋想搞一套性能更好的网络劫持设备,现有的一套劫持系统并不能满足他们自己的要求,然后自己一个人就去研究怎么做网络劫持去了。我自己对我现在做的事情很不齿的,居然自己对路由器去搞破坏去了。先去研究PF_RING,然后到现在的DPDK,自己就天天去研究英文文档,也是痛苦。直到有一天,我发现我们学校的网络居然也被部署了网络劫持设备,那时候我正好把技术实施方案做出来。然后我们把这个事情向网络中心的老师反应。然后,几天之后,校园网的劫持的现象消失了,然后我这个项目也不做了。这个项目没做了之后,我还在看抓包的这些东西,然后开始看起了《Linux内核设计与实现》、《Linux设备驱动编程》。直到最近总结的时候,才发现这一切和我自己想要做的事情偏离了太多,再加上自己看书喜欢死磕,然后就成了陷在这个样子。自己沿袭了以前太多的思维,老觉得掌握C/C++才是王道,受以前毒害太深。什么事情都喜欢自己手写,明明有现成的东西不用。我自己这样的想法也是有问题的,明明有好用的不用。其实应该是搞懂了怎么用,然后是去搞懂原理。这样的生活就没有自己以前那么复杂了。怪不得自己陷在的头发掉的越来越多,在这样下去,还没毕业就要秃顶了。 做完抓包的项目之后,老师有几个windows的小应用要写,然后又翻出了C#,然后觉得C#果然是windows下开发的大杀器。还记得本科的时候CreateWindows,自己一点点写Windows C。毕业的时候也用C#做了个客户端,但是没想到C#那么好用,然后就差点动了写WP app的心思了。要不然手里的Lumia 920又浪费了。微软越来越开放了,坐等WinPhone 10 发布。 看了陈皓的程序员技术练级攻略,老觉得自己的很多东西是反着的,导致自己就很痛苦。 说了那么多,首先是要把自己从现在的想法中解放出来,自己还是太封闭太保守,要多参加一些交流活动,多看看人家是怎么用怎么实现的。老师最近没项目,然后又让我搞起了NDN,这东西也是虚无缥缈的东西,学术界气味很浓的作品。然后又要我自己一个人搞。头上还有小论文压着,然后马上9月份到了之后我们就要论文开题了,在这之前怎么也要把小论文给发表了,要不然这座大山还是压着人喘不过气来。假期看看能不能实现一个课题,然后9月份提交一篇小论文出来。不想太粗制滥造,还是想自己好好的写点东西的。 最近想抽空学习一门脚本语言,所以打算先看看golang(把golang归为脚本语言,不知道对不对,把自己从C/C++的泥沼中解救出来。还是要继续看服务器相关的东西。经典书籍固然要读,同时也要看着现在的发展潮流,不要做一个过时的程序员。 就这样,花了2个半小时梳理了这些东西。自己觉得挺值的。向Chon学长学习。 写完才想起来,还忘了一个点,无论如何,要做一个满足用户需求的程序员,不要把自己搞得学术气氛太重,毕竟我TM不读博。。。

more>>

最近在研究Dash,一直在做DPDK,最近在看API文档的时候发现DPDK的API文档优化做的不太好(也有可能是我不会用),然后心血来潮的打算自己制作一个文本放到Dash中。 在制作Dash中有一个步骤是要生成Index文件,手动生成明显不现实,所有就用golang写了一个脚本来生成index文件。写了大概两天,还好。 地址是https://github.com/qhsong/DoxygenToDash 在写的时候这个脚本考虑的是可以使用多线程,尝试了使用golang中的一些新特性,chan、go、select,感觉go性能不错。也有可能是我换了SSD的原因,SSD果然是提升体验的神器。 如果你觉得速度不够快,可以修改代码,多生成几个goroutine就行了。刚刚把DPDK的文档提交到github上,等作者审核。 最近计划更新博客的外观,一直没有很好的博客模板。学习一下Hugo,老感觉Hugo在生成预览的时候还是有点问题的,仔细研究一下。

more>>

单元测试 单元测试应该在最低功能和参数上验证程序的正确性 单元测试必须由最熟悉代码的人来写(程序作者) 单元测试过后,机器状态不变 单元测试要快 单元测试应该产生可重复一直的结果(不要用随机数) 独立性,单元测试不依赖别的测试 单元测试应该覆盖所有代码路径 单元测试英国集成到自动化测试框架中 单元测试必须和产品代码一起保存发布和维护 效能分析 效能测试->分析->改进->再进行效能测试 不要未经分析过早的进行效能提高 个人开发流程 PSP2.1 工程师在接到任务时,应该怎么做? 不依赖于某种技术 不依赖于考试 小型团队无法找到高质量项目需求 PSP依赖数据 PSP目的纪录工程师如何实现需求的效率

more>>