TOM猫的家在东北
有一种Tom猫来自东北~~
精读TRILL协议
精读TRILL协议 **4.4 TRILL-Hello协议 **http://donge.org/?page_id=9231 **4.5 分发树 **http://donge.org/?page_id=9250
[亲笔]安装开源路由平台QUAGGA记
周末闲来无聊,准备学习一下Linux知识,索性想起了开源的路由系统Quagga,Quagga是为数不多的开源路由系统,源自Zebra(Zebra是斑马,Quagga是野驴,猜想也是一路的),Zebra大家可能还有人用过,不过早在N年前就没人维护了,Quagga支持主流的路由协议包括RIP, OSPF, ISIS, BGP等等,支持TE,支持IPv6,对于学习路由完全足够了,命令行界面克隆Cisco。当前Quagga最新版本是0.99.18。可以前往http://www.quagga.net/获得。
- 安装编译运行系统 由于电脑是Windows,所以需要安装一个Linux编译环境,选择了DeepinLinux,一款国产优秀的面向桌面的Linux发行版,Ubuntu分支,轻量级界面还很漂亮。可以前往http://www.deepinlinux.com获得。由于平时无法脱离Windows,所以安装到虚拟机中,VMWare, VisualBox, WMLite随你选了,废话不说,这个过程略了。
- 配置Linux环境 GCC编译环境,make,autoconf,essential-lib,git都不能少啊,我不是Linux铁粉,所以都用apt-get搞定,少什么加什么,不行就google。当然在Windows使用Linux,可以配置好SSH,在Windows下访问,Linux虚拟机后台运行命令行即可。
- 获得Quagga代码分支 可以从网站下载源码包,当然如果有网络的话,可以直接git。 git clone git://code.quagga.net/quagga.git 下载到本地后,看一下说明文件。
- 安装Quagga 第一步使用bootstrap.sh检查一下编译环境。 缺少那些工具或者lib都会有提示,按照提示配置完成。 第二步configure编译选项,这个步骤自动的,可以加参数配置,手册中说明很详细。 configure也用于修改软件的功能,如支持IPv6,关闭某个协议等等。 第三步make, make install,编译安装,OK。 5.运行Quagga 运行文件还是Zebra,不是Quagga,不要弄错了。有几个会出错的问题。 a. 如果遇到说zebra静态库找不到问题,可以将/usr/local/lib中的静态库cp到系统库中/lib快速解决,或者建立软链接,或者修改系统环境变量。 b.如果遇到说配置文件找不到(privs_init: could not lookup user quagga)。可以按如下操作,cp一个样例配置到配置中,再添加一下用户。 cp -Rf /usr/local/etc/zebra.conf.sample /usr/local/etc/zebra.conf zebra -d -u root -g root 然后再zebra就作为守护进程启动了。
- 进入Quagga Zebra默认端口号2601,可以在/etc/services中修改,可以用telnet登陆,登陆密码是zebra。登陆后就可以使用了,如果你用过Cisco IOS,就不用我多说了,哈哈~~ root@donge:~/quagga# telnet localhost 2601 Trying 127.0.0.1… Connected to localhost. Escape character is ‘^]’. Hello, this is Quagga (version 0.
[ZT]对下一代高端通信系统设计的七个展望
转一篇陈首席的文章,慢慢理解一下~~ 高端通信系统设计从来就是一个困难的话题。一个优秀的系统设计往往决定了其竞争力和相应的生命周期。 本文试图阐述笔者对下一代高端通信系统设计的一些展望。抛豆腐引砖块,其目的是通过读者的评论,使得美军,共军,国军,伪军等的知识和经验可以共享。使得Open Source的精神发扬光大。 1。 LDF Rule(Legacy Decides Future) 系统都是演变的,而非设计的。一个好的系统设计必须首先满足对历史系统,历史代码的演进路标。否则,就是在做Science,而非Engineering。这方面最大的挑战就是在哪个release去掉哪些历史遗留问题。改良的代价一定是小于革命。 在这个第一重要的法则里,要求的是系统设计师必须了解细节。需要能进能出[想歪了的同学请自己惩罚一下自己邪恶的心灵]。要的是能bottom up。然后在bottom up的基础上,进行top down的设计。缺一不可。只能bottom inside,是一个单纯的工程师;只能top through就是一个玩胶片的大忽悠。 2。 CDMD Convergence Rule (Control Plane,Data Plane,Management Plane and Debug Plane Convergence) 这个rule类似与我大宋气功中的一句经典法则:人身无处不丹田。啥意思呢? 控制平面,数据平面,管理平面,调试平面都将是一个逻辑的概念,而非一个物理的实体,例如控制平面卡,数据平面卡。。。 上述的各个Plane都是你中有我,我中有你。[想歪了的同学请自己惩罚一下自己邪恶的心灵]。 在任何一个环节都需要有相应的逻辑部分。整体系统的任何一个平面是通过分布在系统各个环节中的子平面来共同构成的。 这方面最大的挑战是:系统架构师必须对分布式系统的设计非常过敏,sorry,敏感。 在分布式系统设计中,一个最重要的理论悖论是: 在分布式系统中,在任何时刻,在任何一个节点上,是无法知道当时的全局状态的。 这是啥意思呢? 就是,除了上帝,你在一个时刻点Ti,是不可能知道Ti时刻系统其他信息的。你能知道的信息只能是T(i+Delta)。这个Delta就是通信开销所带来的。 大白话就是,杨小姐(杨贵妃),从理论上,Y从来就没有吃过新鲜的荔枝,no matter驿道上的马儿跑的有多快。 在这个分布式天生的死穴问题上,带来的问题是最多的。 作为系统架构师,必须对时序逻辑(Temporal Logic)有所掌握。Otherwise, 系统设计一定是漏洞十出。 另外,分布式系统的nature决定了任何全局算法的优化一定不是最优的,而是次优的。 在CDMD Convergence的设计基础上,一个很大的演变就是:C,D,M,D的计算资源的自适应(Adaptive)的调配。而非静态的划分。 要充分利用计算池的模型,Processing on Demand。 3。CTP(Close To Port) Rule 计算或者存储能力一定要离端口(Port)近。越远,越歇火。 当官是要离党中央近。做系统是要离Traffic近。 这里的一个设计Case study 是:要充分利用系统中线卡,处理卡,I/O卡上的计算能力。这些计算能力是离端口最近的,对Traffic而言,是Local Bus的距离,而非Interconnect的长途跋涉。 计算是分布的。分布计算的集合就是系统的总体计算和(或)处理能力。 4。 CCNUMA Adoption Rule CCNUMA一定会被广泛的用在将来的高端通信系统中。 只有CCNUMA的应用,才能达到分布式技术的同时,又能支持历史系统,CDMD的融合和Close to Port的法则。 在CCNUMA系统设计中,必须对Memory的分布非常敏感。跨Interconnect,例如QPI,的过分存取,一定是带来硬伤。 系统架构师必须对Cache,L1,L2,和L3和ccNUMA-Interconnect,例如QPI等一些知识有足够的积累和实战能力。否则,很难把握CCNUMA系统。
人生五十年,如梦又似幻。有生方有死,壮士何所憾。
连续奋战了10天的《信长之野望13:天道》,终于统一了日本,顺便连续强度测试了一下新的笔记本。 虽然是快30的人了,每每遇到光荣出的新游戏,都会从头到尾玩一遍。虽然每款游戏不一定经典于世,但作为光荣的粉丝,每款都爱。回想上初中13岁时,从《太阁立志传一》一直玩到现在的NB13,都一直有着同样的激情,令人难忘~~ 太阁立志传一,经典中的经典,不知陪我度过了多少日夜,每当想起,还是激动不已啊~~ 附一个下载链接:http://www.downg.com/soft/6641.html 又赠歌一首:《人间五十年》 又名《敦盛》 人生五十年,与天地长久相较,如梦又似幻;一度得生者,岂有不灭者乎? 人间五十年,与天地相比,不过渺小一物 看世事,梦幻似水 任人生一度,入灭随即当前 此即为菩提之种,懊恼之情,满怀于心胸 汝此刻即上京都,若见敦盛卿之首级 放眼天下,海天之内,岂有长生不灭者? 该词盛名于桶狭间会战 1560年,拥有三河,远江,骏河三国的东海道大名今川义元在和武田,北条结成三家同盟后,开始上洛,“上京都,号令天下”,参与京畿的争霸。 挡在他面前的首先就是刚刚统一尾张的织田信长。今川义元根本没把织田放在眼里,而织田家当时的实力也的确很难对抗今川家。当时今川家一开始上洛,织田家守备鸣海的谱代之臣山口教继便背叛织田,投降了今川家。织田信长为此大为恼火,下令把这个家伙暗杀了。 今川的大军数万(3万),前锋是朝比奈泰朝和松平元康(以前的松平千竹代和后来的德川家康),轻而易举地攻下了织田家的丸根和鹫津两个支城。 得知攻下了丸根和鹫津后,今川义元得意洋洋,便移阵桶狭间,摆宴庆功(这个今川义元据说很胖,穿盔甲都困难,马也没法骑,所以是坐在轿子里,让人抬着他去上洛。) 织田方面一得知今川大军上洛,赶紧召开紧急军事会议。可是大家争来吵去,丸根和鹫津都失陷了,还没拿出个方案。这时天已经黑了,织田信长便提前退席了,会议也就不了了之。 退席回到家里的织田信长,得知今川义元移阵桶狭间,马上下令备马(另外一说是织田信长率军杀出去后才侦察到今川的阵地所在),自己就偷闲跳起了平敦盛教殉死舞,唱到∶ “人间五十年,与天相比,不过渺小一物 看世事,梦幻似水 任人生一度,入灭随即当前 此即为菩提之种,懊恼之情,满怀于心胸 汝此刻即上京都,若见敦盛卿之首级….” 然后织田信长率领亲信数百人,杀出城去。得知织田信长杀出城去后,家臣们赶紧纷纷率军跟上,后来聚集了数千人。 织田信长突然出现在桶狭间,令今川军阵脚大乱。桶狭间是个低洼地,加上当时正在下雨,今川军正好是顶风作战,织田军完全是顺势而下,今川军完全处于劣势。 战斗中,织田信长的侍卫毛利新助等人围攻今川义元,终于砍下了这个准备坐着轿子上洛的“东海道第一武将”的脑袋。于是织田信长获得了桶狭间会战的胜利,名扬天下。 这一战后,织田信长的地位完全稳固了,而今川家则开始衰败,后来被武田和德川灭亡。 1562年 1月11日,脱离今川家在三河自立的德川家康来到清州,和自己幼年的朋友织田信长会盟,这就是日本历史上有名的“清州会盟”。这也是日本战国时代坚持得最好的盟约,一直坚持到织田信长在本能寺自焚。 这首和歌本是平敦盛所创,因幼年同伴义经成为死敌,而感慨世事无常。 但因织田信长对其的推崇与喜爱,却被作为织田信长的辞世歌而广泛流传,其中一句“人间五十年”比原名“敦盛”更为人所熟知。 而织田信长被属下围困而自杀于本能寺时,正值49岁。
HELLO WORLD ONCE MORE!
Hi, I’m back again. 在这个神奇的国家里,个人网站也需要工信部备案,民主和自由不说,就是日常生活也很不方便嘛。 什么Fackbook, Twitter都是浮云,连Google App Engine也用不了,这个是纯技术的东西也影响政治么,唉。 发现每次开篇都是抱怨这个,虽然我爱我的国家,但请不要再过分了。 申请了一个空间,不用GAE的micolog,开始用WordPress了,虽然自己不是Web领域,但对Web主流技术还是相当痴迷的。 另外我脚的是不是每个程序员都有自己的home page,这并不是技术,这就是生活,就好像有一台电脑一样。 我司里拿着高薪的精英们,连系统都不会装,HTC是干什米的都不知道,让我都不好意思了。 东冬の博客开篇语 2011.6.4 ———-以下文章是从GAE中导入到WP的,我是分界线———-
回顾暴雪的20年
一口气看完了,暴雪的20年,梦想和奋斗,创业励志片。
FW: 对程序员最具影响的书
http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read?tab=votes#tab-top 国外知名网站 stackoverflow 上有一个问题调查: 哪本书是对程序员最有影响、每个程序员都该阅读的书?, 这个调查已历时两年,目前为止吸引了 153,432 人访问,读者共推荐出了 478 本书(还在增加),其中最火的一本书《Code Complete》被顶了 1333 次。 如果你是个程序员,你一定有兴趣看看这些书里你都看过几本,如果你一本没看过的话,我也不好说什么,也许你是个天 才,但我相信大多数人都知道,你在学校里根本学不到什么真正的工作中需要的知识,我们毕业后能帮助我们在公司中胜任工作的老师就是这些优秀的书籍,一本好 书可以改变一个人的一生。 下面是这个调查中排名靠前的书的一个简单的清单: 第一名:1333票《Code Complete (2nd Ed) by Steve McConnell》,中文版《代码大全(第二版)》,两届Software Jolt Award震撼大奖得主! 第二名:1181票 《The Pragmatic Programmer》,中文版《程序员修炼之道》 第三名:701票 《Structure and Interpretation of Computer Programs》,中文版《计算机程序的构造和解释》 第四名:572票 《The C Programming Language》,中文版《C程序设计语言》 第五名:481票 《Introduction to algorithms》,中文版《算法导论》 第六名:478票 《Refactoring: Improving the Design of Existing Code》,中文版《重构:改善既有代码的设计》 第七名:447票 《The Mythical Man-Month》,中文版《人月神话》 第八名:440票 《Design Patterns》,中文版《设计模式》 第九名:394票 《The Art of Computer Programming(First Volume Hardcover)》,中文版《计算机程序设计艺术第 (第一卷)》
FW: OSPF NSSA白皮书
NSSA原理简介 众所周知,OSPF路由协议是目前因特网中应用最为广泛一种IGP,而NSSA则是在该协议发展过程中产生的一种新的属性,她的英文全称是"not-so-stubby" area,一个充满了幽默味道的名字。要想了解该属性的特征,我们先从路由协议的发展历程讲起。 1.2 从D-V算法到链路状态算法 RIP作为最古老的动态路由协议,使用D-V算法来计算路由。由于当时的网络环境非常简单,所以RIP协议的设计思想也是简洁为本,只求完成最基本的功能。这样在RIP应用于大型拓扑复杂的网络时,就会出现效率不高、收敛慢、路由自环等问题。其中尤以路由自环的危害最大。此时必须有新的路由协议来适应日益复杂的网络,而且新的路由协议必须要解决RIP遇到的所有问题。由于D-V算法对网络的理解是基于“平面的”——在运行RIP协议的路由器眼中,网络仅仅是由一个个直连的邻居和一条条由邻居通告的路由组成。这样在网络拓扑变化时难免会导致计算错误,产生自环。为了彻底解决这个问题,一种全新的算法——链路状态算法应运而生。该算法从“立体”的角度来看待网络,每一台路由器都理解全局网络的拓扑结构,并依据此来计算路由,由于每台路由器对网络的整体情况“一切尽在掌握”,所以自环的问题被这彻底的解决。 1.3 OSPF协议与区域 基于链路状态算法的OSPF协议虽然彻底的解决了路由自环问题,但这种算法本身也有很多固有的缺陷: 耗费更多内存资源:每台路由器都必须保存整个网络的拓扑结构(以LSDB的形态) 耗费更多CPU资源:该算法的路由计算使用SPF算法,较D-V算法要复杂的多。 计算更为频繁:只要网络中有任何一台路由器的拓扑发生变化,就会导致网络中所有的路由器进行SPF计算,而且每台路由器都是将SPF算法重新执行一遍,以便找出变化的路由。 而且,无论是D-V算法还是链路状态的路由协议都存在如下缺陷: 没有从协议本身反映出网络的层次结构。因为实际应用中的一个网络是由各种级别的路由器组成的,有核心层的骨干路由器、汇聚层的高端路由器、接入层的低端路由器。这些路由器承担的任务不同,处理性能也不一样。但在路由协议中,所有的路由器都要完成几乎是相同的工作:发送已知的路由给邻居路由器,根据从邻居路由器获得的路由信息计算本地路由表。虽然每台路由器的接口数量不同,但最终计算得来的路由表的规模基本是一样的。 为了彻底解决上述问题,OSPF提出了区域的概念(AREA),区域是将所有运行OSPF 的路由器人为的分成不同的组,以区域ID来标示。在区域内路由计算的方法不变,由于划分区域之后,每个区域内的路由器不会很多,所有上述缺陷表现得并不严重,带来的后果可以忽略不计。而在区域之间计算路由时采用D-V算法,这样三个缺点就被成功的规避了。实际上区域概念的提出意义远不只这些,在划分为区域之后: 网络的拓扑结构就与路由协议之间存在了一种对应关系,核心和高端的路由器由于处理能力强,可以规划在骨干区域之中。因为骨干区域的路由器要承担更多的路由计算任务。 每个单独的区域实际上就是一个独立于网络中其他区域的系统,可以在不同的区域中试行不同的路由策略,使组网规划更为灵活方便。 实际上OSPF 协议在当今的网络中广为流行,不是因为她使用了无环路的链路状态算法,而是因为她提出了区域的概念! 1.4 STUB区域 STUB区域就是一个对区域概念的最典型的应用。STUB区域的设计思想在于:在划分了区域之后,非骨干区域中的路由器对于区域外的路由,一定要通过ABR(区域边界路由器)来转发,或者说对于区域内的路由器来说ABR是一个通往外部世界的必经之路。既然如此,对于区域内的路由器来说,就没有必要知道通往外部世界的详细的路由了,代之以由ABR向该区域发布一条缺省路由来指导报文的发送。这样在区域内的路由器中就只有为数不多的区域内路由和一条指向ABR的缺省路由。而且无论区域外的路由如何变化,都不会影响到区域内路由器的路由表。由于区域内的路由器通常是由一些处理能力有限的低端路由器组成,所以处于STUB区域内的这些低端设备既不需要保存庞大的路由表,也不需要经常性的进行路由计算。有了STUB属性之后,网络的规划更符合实际的设备特点。 以上描述的只是STUB区域的设计思想,在协议文本中,对STUB区域的精确定义是:STUB区域一定是非骨干区域和非转换区域(可以配置虚连接的区域),并且在该区域中不可传递Type 5类型的LSA。 因为协议的设计者认为路由表中的绝大部分路由均是来自自治系统外部的引入的路由。(由于OSPF是链路状态算法的路由协议,LSA就是用来描述网络拓扑结构的一种数据结构。在OSPF 中将LSA分为5类:type1、2两种用来描述区域内的路由信息;type3用来描述区域间的路由信息;type4、5用来描述自治系统外部的路由信息。)OSPF链路状态公布LSA类型5定义了到达外部网络的路由,它并不泛洪到STUB区域。连接到STUB区域的ABR为外部网络发送一个缺省路由(0.0.0.0)到STUB区域。这允许STUB区域 内部的某个路由器将报文转发到一个目的网络,而该网络并没有出现在s t u b区域路由器的路由表中。对于那些在自己的路由表中没有找到的网络报文, s t u b区域路由器将其转发到ABR路由器,而该ABR路由器已发送0.0.0.0 LSA 需要注意的是定义中对于过滤TYPE5类型的LSA使用的描述语言是“不可传递”,这就意味着不仅区域外的ASE(自治系统外部)路由无法传递到STUB 区域中,同时STUB区域内部的ASE路由也无法传递到本区域之外。换一句更通俗的话来描述:STUB区域内的路由器都不可引入任何外部的路由(包括静态路由)。 这样的定义未免太过严厉了。因为在实际的组网中,并不是所有的设备都会运行OSPF协议。例如:用户拨号上网时使用的接入服务器就需要连接路由器上因特网,但通常接入服务器上并不支持(也不需要)OSPF协议,而是通过配置静态路由实现路由功能。很多时候ISP为了保密或易于管理的需要,在连接用户侧的路由器时使用静态路由。总之:在一个网络中所有的路由器上都配置OSPF,而不使用静态路由的情况几乎是不存在的。——也就是说STUB区域的适用条件也是不存在的。 1.5 NSSA区域 STUB区域虽然为合理的规划网络描绘了美好的前景,但她在实际的组网中又不具备可操作性,未免遗憾。但此时的OSPF协议已经基本成型,不可能再做大的修改。为了弥补缺陷,协议设计者提出了一种新的概念NSSA,并且作为OSPF协议的一种扩展属性单独在RFC 1587中描述。 NSSA需要完成如下任务: 自治系统外的ASE路由不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE路由可以在NSSA中传播并发送到区域之外。即:取消了STUB关于ASE的双向传播的限制(区域外的进不来,区域里的也出不去),改为单向限制(区域外的进不来,区域里的能出去)。 由于是作为OSPF标准协议的一种扩展属性,应尽量减少与不支持该属性的路由器协调工作时的冲突和兼容性问题。 为了解决ASE单向传递的问题,NSSA中重新定义了一种LSA——Type 7类型的LSA,作为区域内的路由器引入外部路由时使用,该类型的LSA除了类型标识与Type 5不相同之外,其它内容基本一样。这样区域内的路由器就可以通过LSA的类型来判断是否该路由来自本区域内。但由于Type 7类的LSA是新定义的,对于不支持NSSA属性的路由器无法识别,所以协议规定:在NSSA的ABR上将NSSA内部产生的Type 7类型的LSA转化为Type 5类型的LSA再发布出去,并同时更改LSA的发布者为ABR自己。这样NSSA区域外的路由器就可以完全不用支持该属性。 从上述描述可以看出:在NSSA区域内的所有路由器必须支持该属性(包括NSSA的ABR),而自治系统中的其他路由器则不需要。 由于NSSA是由STUB区域的概念改进得来,所以她的名字叫做: “not-so-stubby” area ,本意是:不是那么STUB的区域。 第2章 NSSA相关配置 NSSA的原理不复杂,配置更简单,相关命令只有一条: [Router-ospf] area area-id nssa [ default-route-advertise ] [ no-import-route ] [ no-summary ]