本站已运行

攻城狮论坛

作者: 非常CCNA
查看: 1958|回复: 9

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

[资料] CCNP Route学习笔记-EIGRP下篇

[复制链接]
非常CCNA [VIP@钻石] 发表于 2013-2-24 18:00:13 | 显示全部楼层 |阅读模式
查看: 1958|回复: 9
开通VIP 免金币+免回帖+批量下载+无广告
前面我们说到了后继(successor)与可行后继(feasible successor)。既然你叫后继与可行后继,那么当然你要知道它们是谁的继承者,这个后继与可行后继是相对于目标网络而言的,目标网络就好比是一皇帝,后继与可行后继都是他的皇子,后继是那些最适合做他几班人的那些皇子,而可行后继就是假设那些最适合做他几班人的皇子都挂了,也是有资格做他几班人的皇子。这里有一点需要强调的是,思科的设备在默认情况下,一般最多为4条路径做等价负载平衡,但也可以通过修改使其最多在16条前往同一目的地的路由间做负载平衡。(这是书上给出的说法,萌爷说这个跟IOS的版本有关,有点可以支持更多,不过这个到无所谓,大家只需要记得思科的设备默认负载平衡是开着的就行,国内一些厂商都是关着的。)既然是4条,那么假如现在一台路由器收到了超过4条等值路径,他会将哪几条假如到路由表中去呢?答案是不知道,这个无从查起,不过我个人认为应该会将先收到的加入到路由表中。另外一点就是,路由器在得出最优的路径将其作为后继之后,并不是在其他的路径中选出一条次优的作为可行后继,而是将所有满足可行后继条件的路径都作为可行后继放在路由表中。那么满足什么样的条件才能成为可行后继呢?这是个问题,因为后继你好想,你总不是选择开销最小的,既然是最小的,这个就没可能是路由环路的一部分;但次优路径就不好讲了,你怎么能保证这条次优路径没走你呢,假如你是最优的路径,而次优路径是通过走你得来的,那么你挂了之后,他告诉你他有路那不就环了。如下图:
111137pi7ur3vwzsvy3cuu.jpg
假设R1到目标网络A去走R2的metric是100,R2到目标网络A去的metric是70;R1到目标网络A去走R3metric是15,R2到目标网络A去的metric是120。那么R1走R3到目标网络A去就满足不了FS的条件,因为R3本身到目标网络A去metric120要大于R1通过R2到目标网络A去的metric,如果R3把这个120告诉给了R1,R1就会怀疑R3是不是可能通过走R1到目标网络去的,所以就不会把通过R3到目标网络A去的这条路作为FS而加入到拓扑表中去。假如我们把上面的100称为FD1,70称为AD1,150称为FD2,120称为AD2,那么成为FS的条件就是要满足AD2<FD1,虽然我们从数学的角度看,当AD2=FD1时也可以成为FS,但是EIGRP规定不行,所以,这里只能是小于。[ backcolor]
有了successor之后为什么还要选个FS呢?这是为了当successor都垮掉的时候,可以做链路的快速切换,successor垮掉之后,路由器会首先查自己有没有FS,如果有就直接拿来用,这样可以做到本地收敛,而避免查询的扩散,这也是EIGRP快的一个原因。拓扑表中的路由处于两种状态之一:主动(active)和被动(passive)。路由器没有重新计算时,路由处于passive状态,被重新计算(即寻找新的后继站)时,路由处于active状态。也就是说,拓扑表中用来作为S的路由会被置为passive,当S不可用时,如果有FS,就会将FS切换成S,但该路由器到目标网络这条路相当于还存在,所以这条路由还是passive的,只不过现在的开销会大点,但这并不影响他的路由功能,如果拓扑表中一直存在FS,那么路由器将不可能进入active,也就不会重新计算。但是当successor挂掉,也没有FS,那么路由器会将该路由置为active,并向外发送查询,这一查,如果别人也是走你到目标网络去的,并且他有到该网络的FS,那么他并不会将它的路由置为active,而是将FS直接切换成S,并且他会告诉你他有路,至于你用不用,那就是你自己去比较决定了,如果他也没有FS的话,他也会将它的该路由置为active,然后向外发查询,后面跟着一样。这里还得注意的一点是大家不要将路由的passive状态跟接口的passive搞混了,接口的passive我在后面会讲到的。
那么路由器的查询又是个什么情况呢?如下:
124933qgqmu2fg1b1w2qju.jpg
现在R3、R4、R5三台路由器的拓扑情况如下
R3:
143106b8zbq3qx4btkftxq.jpg
R4:
143116ykubjqpqqtbudz8d.jpg
R5:
1431249b764lj49iixe6bl.jpg
现在假设R2和R4之间的链路出现了故障。
在R4上,由于他没有FS,所以R4将发生下列动作:他将via R2 3 1 S 标记为不可用
1450046lb1tqldld1b1yvv.jpg
将目标网络C1的FD改为-1,Topology改为active。然后,他向邻接路由器R3和R5发送查询,询问前往目标网络C1的替代路径,R4将R3和R5标记为未应答查询(query):
14424968kpknn7026z28q7.jpg
在R5上,R5将经由R4前往目标网络C1的路径标记为不可用,在R3上,R3经由R4前往目标网络C1的路径标记为不可用:
145428i2i51jzi5jixiz22.jpg
145438ijewzy7j1qnccm1c.jpg
接下来,在R4上:DUAL收到R3的应答,指出前往目标网络C1的路径没变,DUAL删除R3的查询未应答标记,DUAL保持前往目标网络C1的主动状态,等待R5的应答:
150343kvv45taw7toz57k6.jpg
在R5上,由于R3的AD(3)不小于原来的FD(3),因此没有前往目标网络C1的FS,DUAL向R3发送查询,将R3标记为查询未应答(query):
151015dcciie63hbisdzx4.jpg
在R3上,DUAL将经由R5前往目标网络C1的路径标记为不可用:
151644veyoj94ydvv2nnn4.jpg
在R4上,前往C1的路由仍处于active,等待R5的响应:

在R5上,DUAL收到R3的应答,指出前往C1的路由没变,删除R3的查询未应答标记,计算新的FD,并将新的Successor加入到拓扑表中,将前往C1的路由从active改为passive,R5收敛完毕:
152817w880jja88v8dj20f.jpg
接下来在R4上,DUAL收到R5的应答,删除R5的查询未应答标记,计算心的FD,将新的Successor加入到拓扑表中,有两条路由(分别via R3和R5)的FD相同,它们都被标记为Successor,将前往C1的路由从active改为passive,R4收敛完毕:
1536584q1azpvzmmx7yhe4.jpg
R3也收敛完毕:
154345pp586qvb3xafpmfz.jpg
路由的查询过程大概就是这么个情况。
上面我说到了接口的passive,这个要从EIGRP的network这条命令说起。network是用来指定哪些接口该参与到该EIGRP的进程中来,但是network后面跟的是prefix,即子网。因此,在该子网下的接口都会参与到EIGRP的进程中来,也就是说这些接口即接收EIGRP的分组,又发送分组。但是有些情况下我们并不想这些接口参与EIGRP进程,比如说有些接口下面连接的是服务器,你跟这些设备进行交互他根本就看不懂你的信息,发了也是白发,所以需要把这些接口给passive掉。这样可以通过passive-interface来设置这些接口。命令passive-interface的作用是:一、禁止通过被动接口建立邻接关系;二、禁止通过被动接口接收或发送路由更新;三、让EIGRP进程通过被动接口连接的子网。第一点好理解,在EIGRP中使用passive-interface命令时,将不再通过指定接口向外发送Hello了。路由器与通过该接口可前往的其他路由器不再建立邻接关系(因为Hello协议用于验证路由器之间的双向通信),因为在接口上没有发现邻居,所以也不会通过该接口发送其他EIGRP数据流。第二点是说EIGRP的passive-interface跟RIP还是不太一样。RIP接口被passive掉之后是只收不发,而EIGRP是既不收也不发。第三点有点难以理解,既然你都passive了,为什么还要把自己连接的子网通告出去呢?前面说过,network命令定义了如下内容:将尝试通过哪些接口建立邻接关系;将把哪些网络通告给EIGRP邻居。将接口设置为被动的只是禁止建立邻接关系,路由器仍会将接口连接的网络通告给EIGRP邻居。
比如: 161936mjvtqvzgj6ttg8gt.jpg
假如R2的f0/0被设置为passive-interface,而R1和R2之间的邻居关系已经建立起来了,如果R2的network中包含R2的f0/0号口所在的网段,那么R2还是会把R2的f0/0所连的网络通告给R1,但是R2并不会通过f0/0跟R3建立邻居。
在配置的时候,建议的做法是全局模式下passive-interface default,就是先把所有的接口都passive掉,然后在接口模式下no passive-interface {type number}将该起的的接口给起起来,这样避免忘了passive那些该passive的接口。
下面讲一讲EIGRP的汇总。我们都知道RIP也可以支持汇总,但是RIP只支持主类汇总,但EIGRP不一样,他可以在网络的任意地方进行任意汇总。也就是说EIGRP除了能在网络边界进行汇总,还能在网络内进行,除了能为汇成主类,还能汇成超网或者主类的子网。直到汇总路由中最后一条具体路由消失,汇总路由就才会被删除。汇总路由会用具体路由中的最小的metric作为自己 metric,并且汇总路由的管理距离是5,优先级高于EIGRP的具体路由条目90。但汇总也会带来一个问题,假如R1连着192.168.1.1/30,192.168.1.2/30,192.168.1.3/30,通过汇总R1向R2通告了一条192.168.1.0/28的路由,现在R2要访问192.168.1.4/30,R2查表,表里有一条192.168.1.0/28的条目,于是他就将信息丢给R1,R1一看是到1.4/30去的,我有一条汇总路由,下一跳指向跟R2相连的接口,于是又把数据丢给R2,这样就环了。为了避免这种情况的发生,R1上应该将汇总路由的下一跳指向空接口null0,空接口在软件意义上是个直连接口,但并不存在。把汇总路由的下一跳指向null0可以让R1把到1.4/30去的包给丢掉,这样就不会环了。在RIP的汇总中这一条指向空接口的汇总路由需要手工配,而EIGRP会总动的为汇总路由生成一条这样的路由。虽然EIGRP的汇总可以做在网络的任何地方,但一般我们还是推荐做在网络的边界,而且是在通告出去之前就做好,而不是让别人收到后别人再做,这样的话别人拿到的都是汇总,别人在查路由的时候也方便。另外,做了汇总之后,还能减少扩散的查询。如图:
180526hffvz6iymg6xrhyh.jpg
假如R2拿到的是R1给过来的汇总,那么当R1没路了他查R2,R2直接回replay说自己没路,R2会再去查R3,因为没得查,他拿到的都是汇总的他怎么查,R2本来就是通过R1到目标网络去的,下一跳指向R1,现在R1说没路了,那我肯定也没路了,所以直接回R1说我没路了。
现在我在R1上起了三个环回口1、2、3,地址分别是192.168.1.1/32、1.2/32、1.3/32,R1跟R2之间192.168.12.1/24和12.2/24,R2和R3之间是192.168.23.2/24和23.3/24,R1上我没关他的自动汇总,然后我在R1上network 192.168.1.0
在R2上network192.168.12.0和23.0,R3上我network23.0
R1:
interface Loopback1
ip address 192.168.1.1 255.255.255.255
no keepalive
!
interface Loopback2
ip address 192.168.1.2 255.255.255.255
no keepalive
!
interface Loopback3
ip address 192.168.1.3 255.255.255.255
no keepalive
interface Serial0/0
ip address 192.168.12.1 255.255.255.0
no keepalive
clock rate 2000000
router eigrp 100
network 192.168.1.0
network 192.168.12.0
auto-summary

no cdp run
R2:
interface Serial0/0
ip address 192.168.12.2 255.255.255.0
no keepalive
clock rate 2000000
interface Serial0/1
ip address 192.168.23.2 255.255.255.0
no keepalive
clock rate 2000000
router eigrp 100
network 192.168.12.0
network 192.168.23.0
auto-summary

no cdp run
R3:
interface Serial0/1
ip address 192.168.23.3 255.255.255.0
no keepalive
clock rate 2000000
router eigrp 100
network 192.168.23.0
auto-summary

no cdp run
然后我在R1上将loopback 1给shutdown
在R1和R2之间的抓包显示为:
182114imy4uisqfjuutjmm.jpg
R2和R3之间的抓包显示为:
182136nt77thb11781d86w.jpg
EIGRP还有个特性就是可以配置stub。被配置为末节路由器之后,路由器会通过Hello分组告诉所有的邻接路由器:自己是一条末节路由器。邻居收到指示末节路由器后,将不会向末节路由器查询任何路由。因此,路由器不会向末节邻居查询。
还是上面那个实验,只不过我现在把三台路由器的自动汇总都关了,然后将R3做成stub。然后我再去shutdownR1的loopback1。R1和R2之间:
1847544vu5gqot406z5rtt.jpg
R2和R3之间:
184820cc2rx5z2zxenalgp.jpg
通过报文,可以看见R1首先向R2发送query问R2有没有到192.168.1.1/24去的路,R2回acknowledge确认这个query(后面就忽略acknowledge,因为作用都是一样的)然后R2也向R1发送了一个query,这个query的作用大概相当于R2反问R1,你真的没有到192.168.1.1/32去的路了吗?然后R1给R2回Replay说他真的没了,R2再给R1回Replay说我也没了,然后R2给R1发了个Update好像对R1说不行你看的路由表,我是真没了,然后R1现在才认为知道通过R2没有去往1.1的路了。而R2和R3之间,R2先给R3发了个Update说通过自己去往1.1的路不能用了,然后R3向R2发送query问他还有没别的路可以走,R2给R1回自己没了,于是R3知道通过R2到1.1去没路了。有些同学可能会看到书上说这样一句话:末节路由器不会被查询,与末节路由器相连的中央路由器将代表末节路由器对查询做出应答。(《学习指南》P141第5段最后一句话)于是有人会想,R2既然会代R3查询做出应答,那么R2会不会代R3做出查询呢,因为通过R2与R3之间的抓包确实有R3想R2发出的查询。另外,大家会想:R1都想R2发送查询了,那么R1当然是没有去往1.1的路了,R2怎么还傻乎乎的想R1发查询问R1有没有路?(其实最早我看见老李抓的包时我也是这么认为的)这样想是因为我们忽略了一点,R2上只有通过R1去往1.1的路,对于R1到底有多少条途径到达1.1R2是不知道的,既然R2不知道R2当然会问R1有没有去往1.1的路啦,因为假如这时R1通过他自己的其他的邻居又得到一条去往1.1的路呢?所以R2当然要向R1发送查询,问他到底还有没有路去1.1,而不是替R3问的R1有没有路去往R1。口说无凭,咱们还是来分析抓的包。
首先看R1向R2发送的查询(第17个包)
193731l8l05ol50853llon.jpg
大家可以看到这个包的sequence是11,也就是说这时R1发起的第17个特殊包(包括查询,更新,回复),因为前面在正常起邻居时用到了这些包,所以EIGRP会记住上一次的值,在每次发送一个新的特殊包时都会在上一次的基础上加1,所以这里才从11开始。接着大家看R2相R1发送的query(第19个包)
194155igftz2gmtvtme2t9.jpg
里面的acknowledge是11也就是说R2的这个query还是对于R1的query的做出的响应,大家再看R2发给R3的Update里的acknowledge是多少
194443a9awhd0yj6e90xjm.jpg
是12,也就是说R2发给R3的Update要在R2发给R1的query之前,所以排除了R2代替R3发送query的可能。而R1发给R2的sequence为12是在第23个包,就是R1对于R2的query的replay
1944576b99cp9kcyggga63.jpg
说到这份上应该是自圆其说了。
那么stub真的就这么好用吗,有没有什么缺点呢?还是上面那个实验,现在我们仅仅只是在R1上开启自动汇总的功能。大家再看抓包的情况。R1到R2之间的抓包:
20001970szsesnsimu0zl5.jpg
再看看R2和R3之间的抓包:
200033926o8g2aor9o02o9.jpg
哇,现象太明显了,R1一个查询过来R2直接给回复说没有,因为R2拿到是汇总,R2才不管R1到1.1的路垮没垮,反正R2拿的是汇总,只要我自己去往1.0网段还在我就不管,到时去往1.0的路我都直接丢给R1就好了。而R2和R3之间更high,压根一点反应都没有,因为R2通告给R3的也是汇总1.0/24,R2自己到1.0/24的还在,所以当然也没必要告诉他到1.1去不了,其实他自己也不知道去不了,因为他手上拿的也是汇总。
好啦,通过上面的对比大家可以发现即使配了stub也只是不让别人查你,但你没路了你还是得查别人有没有。所以stub对于查询的控制并不是那么明显,王道的做法是汇总加stub。
EIGRP一个别的协议做不了的特性就是他能够做非等价的负载平衡。他在保证冗余的同时提高了利用率。通过命令variance后面更一个数值来调整,这个数值是比例系数,是用successor的metric除以FS的metric得到的,一般来说相除是个小数,但是配置时必须设置为整数。彪哥曾说如果小数点后第一位大于5就直接进1,如果小数点后第一位小于5那么就得分别使用进1和不进1进行试,不过由于我自己没做过实验来验证,这点我不敢说,大家还是去查查文档这块怎么说的,查到后顺便告诉大家一声。另外就是这条命令必须两边都得配,因为他只具有本地意义,你改了对面并不知道你改了,所以两边都要配。还有需要注意的就是负载均衡这个特性只针对经过路由器的数据流,对于路由器始发的数据做不了。另外一点就是路由器并不是严格按照1:1的关系在两条等值路径上做负载平衡,还是有些差距的,只不过比例接近1:1,至于为什么不是严格的1:1我也讲不清楚,但我个人观点是,假如R1有通过R2或R3到目标网络去的两条等值路径,现在在R2和R3之间做负载均衡,由于R2和R3给R1的分别是他们自己到目标网络去的链路情况(带宽、延迟、负载、可行度、MTU)所以这两条路都是R1自己计算出来的,但是R2和R3也将自己到目标网络去的metric告诉给了R1(AD),所以这里是不是也于这个有关,就是R1在尽量满足1:1的情况下尽量会给AD小的多发点,当然,这只是我自己的猜测,没找到文档作为考据。另外就是假设R2和R3给他的AD都相同好像也不是严格1:1(没试验过),可能还跟其他一些因素有关。具体情况,大家自己找文档,去问各种总,然后求分享。不过,有一点我倒是看到一个说法,就是:采用进程交换方式转发分组时,将基于每个分组做出等开销路径的负载均衡;采用快速交换方式转发分组时,将基于目的地来做出等开销路径上的负载均衡。(《学习指南》P112最后一段)他后面还有个注释说:测试负载均衡时,不要在有带有快速交换接口的路由器上执行ping命令,也不要ping这样的路由器,因为当前路由器生成的分组将以进程交换而不是快速交换方式被转发,这可能导致令人迷惑的结果。
下面要讲的就是EIGRP over WAN。有两点特别值得我们注意的地方:一是水平分割;而是带宽。这也是大多数路由协议都要考虑的两点。
首先说说水平分割:由于是广域网,你搞不清楚WAN中到底是个什么环境。如果你关闭水平分割的话,所以就有可能出现你发出去一条路由,然后又从这个接口收到这条路由。但是如果你打开了水平分割的话,就有可能出现一方收到了路由,而通过该接口相连的另外一邻居收不到路由,比如帧中继。所以你就面临着关还是不关的问题。由于帧中继默认水平分割是关的,因为他要保证所有人都能收到路由,但是若使用的是EIGRP作为路由协议,由于EIGRP的水平分割是开启的,且他的水平分割要超越接口的水平分割而存在所以,他还是有可能有些人收不到路由,所以要手工去关闭,使用命令no ip split-horrizon eigrp 加上as-number。
再说说带宽。用户跟运营商进行连接,本地的带宽是由你自己的接口来决定的,但链路的带宽是由运营商决定的,假如你的接口带宽是T1,而运营商给你提供的是100K,那么你发出去的数据会在链路上产生拥塞。所以,你要改你的接口带宽,串口的话在接口模式下通过命令bandwidth 后面跟一数值(单位为K)来修改,根据他提供给你的CIR(承诺接口速率)来改后面的数值(其实这个改带宽不是真正的带宽,而是队列深度,具体情况我也不太懂,自己查文档去)。另外就是假如接口带宽是100M但运行路由协议后他不一定按照100M来发数据,EIGRP在默认情况下是按照50%的速率来发,可通过命令ip bandwidth-percent eigrp 跟一个as-number再跟一个数值来改,数值是多少就按照多少的百分比来发。OSPF默认是100%。环回口带宽不用改,以太口的话取决于他的speed,tunnel口在思科设备上默认带宽是9k。
最后就是EIGRP的验证,这个没什么要讲的,跟RIP一样,只不过他只支持MD5的验证,这一部分大家一看书都懂,我就不啰嗦了。
上午10:30起来弄这帖子,弄到晚上10:00多,这个太耗时间了,晚饭都还没吃,关键是画图和插入东西挺麻烦的,下周开始快考试了,以后可能没这么多时间写帖子了,再怎么不能挂科呀。我一直认为有萌爷精彩的讲解,我的帖子只是多此一举,我写出来算是自己做的笔记吧,放出来可以大家帮我纠错,所以才放出来了。好啦,泡面去了,希望不吝赐教,给予指正,我将不胜感激!

stubR1toR2.rar

6.52 KB, 下载次数: 6, 下载积分: 金币 -2

stubR2toR3.rar

7.03 KB, 下载次数: 6, 下载积分: 金币 -2

CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

芯蕊111 [Lv8 技术精悍] 发表于 2013-8-11 21:15:20 来自手机 | 显示全部楼层
路过占楼而已
回复 支持 反对

使用道具 举报

黑猪王 [VIP@钻石] 发表于 2013-10-12 19:54:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

清风一缕 [Lv8 技术精悍] 发表于 2013-10-12 21:25:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

csking104 [Lv8 技术精悍] 发表于 2013-10-29 09:16:40 | 显示全部楼层
我是个凑数的。。。
回复 支持 反对

使用道具 举报

海皇CHICBOY [Lv8 技术精悍] 发表于 2013-11-5 22:43:56 | 显示全部楼层
小手一抖,金币到手!
回复 支持 反对

使用道具 举报

acc1577 [Lv8 技术精悍] 发表于 2013-11-6 09:51:14 | 显示全部楼层
小手一抖,金币到手!
回复 支持 反对

使用道具 举报

dfgh [Lv8 技术精悍] 发表于 2013-11-7 19:39:53 | 显示全部楼层
学习了,不错,讲的太有道理了
回复 支持 反对

使用道具 举报

lily111 [Lv8 技术精悍] 发表于 2013-11-10 09:45:31 | 显示全部楼层
过来看看的,感谢攻城狮论坛
回复 支持 反对

使用道具 举报

bgbg [Lv8 技术精悍] 发表于 2013-11-10 10:30:16 | 显示全部楼层
不错不错,楼主您辛苦了。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-6-18 09:22 , Processed in 0.115605 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn