STP模块调试小结(整理)

2020-03-03 01:07:50 来源:范文大全收藏下载本文

数据事业部软件开发二部 孙蓓 2005-9-21

完成STP代码后,开始进行功能自测,在这个过程中遇到很多问题,随着问题的解决,感觉学到很多,现总结如下,希望能对大家,特别是像我一样的新员工有一些借鉴和帮助。

星期六下午:STP模块中绑定VLAN到实例、删除实例和设置实例端口状态功能都调试成功了,还剩下BPDU的透传功能没有测试,不知道为什么自己没有一丝轻松的感觉,隐约有些担心,透传在写代码时就遇到了一些问题,56504芯片的设置相比其它芯片有了改动,向FAE请教的一些问题回答不是很明确。带着一些忐忑,星期一上午开始调试,结果没有出人意料,透传果真出现了问题。

STP模块调试小结

问题一:

56504透传设置主要在L2_USER_ENTRY中,发现在写L2_USER_ENTRY时,总是写不进去。

问题分析:

L2_USER_ENTRY用于BPDU有6个entry,我一直不明白为什么要设置6个,对于自己用哪个index有效也不明确,向FAE询问时,他也没有说出原因,只是很肯定的说index设为-1,就会写入还没有使用的表项中,于是我在写代码时就设置了-1,现在出了问题,第一个就是怀疑它,跟代码后果然不出所料,写表时它先会检查是否有相同的表项写入,且只检查了mac地址、mask位和vlan位,这几位恰好我都没有修改,于是它认为是相同的表项,根本不再写表,这种情况下,设置index=-1是不对的。

问题解决:

仔细再阅读有关对L2_USER_ENTRY所有操作,原来它在初始化时就将0-5的表项写好了,用于BPDU的0-5,我决定将他们全部都设置一下,index改为0-5,结果成功写表。(后来证明不需要全部都写,只要将优先级最高的index=0写入就可以了)

问题总结:

1、对FAE不能盲目相信,一定要对所有操作仔细的跟到低,要深入看代码。

成功写表了,按照自己的设置在透传时将L2_USER_ENTRY中的cpu设为0,将bpdu设为0,不透传时将cpu设为1,将bpdu设为1,结果发现还是不透传,还有什么问题呢?难道关于BPDU透传控制还有其他设置?

问题二:

设置透传后,写表成功,但还是不透传。

问题解决:

透传时L2_USER_ENTRY的bpdu位不应该设置成0,应该设置为1。这是在看芯片资料时发现的。这里要感谢韩俊杰,他在看到有关的设置时,提醒了我。

问题总结:

那么我在写代码时为什么要设为0呢?回想起来,是自己的不对。自己刚开始没有在芯片资料中找到关于这位的说明,在FAE来的时候,就向他们询问,FAE的回答是在透传时要将bpdu位设置为0,于是自己就没有再继续查找资料,就直接将bpdu位设置为了0。

问题一和问题二的错误是自己不应该犯的,在以后的工作中一定要注意:对自己设置的任何操作都要自己找到依据,不能盲目相信FAE。

也许现在应该没有问题了吧,表写成功了,bpdu设置正确了,可是测试的结果还是不能透传。检查写入的表,写的是正确的,再查看芯片资料,也没有什么问题,那为什么设置透传后,没有在vlan内广播,cpu还是能够收到包?难道真的还有其他关于透传的设置,自己没有找到?我开始怀疑自己,是不是透传只对L2_USER_ENTRY设置是不行的。 问题三:

设置透传后,CPU还是能收到包,却还是没有向vlan内广播。

问题解决:

一次又一次写表,再将表down出来,设置是正确,那为什么cpu还能收到包?这时突然间想到会不会cpu端口和收bpdu包的端口设置在同一vlan里面,自己在测试的时候没有同时检查cpu收包情况和端口收包情况,如果是在同一vlan,那设置透传后,cpu自然会收到包了!向陈遗保借了根线,连到主机,看见端口的灯在闪!好开心!端口收到包了!用sniffer抓包看,果然是bpdu包,看来向vlan广播了,那cpu可能就设置在了同一个vlan里面,于是向张作富请教,他说缺省的情况下cpu端口没有配在同一个vlan里面,是吗?那怎么会出现既向cpu发包又向vlan广播的情况,太奇怪了,决定还是将vlan表down出来看一下,果然cpu端口和收包端口在同一共vlan里面!原来自己的版本太老了,没有将新的vlan模块合进来!

问题总结:

1要注意自己的模块不是孤立的,大家的模块都是一个紧密联系的整体,在查找问题的时候,要想想会不会是这方面的问题。 2 测试的环境要正确,如果自己同时检测cpu收包情况和端口收包情况,那应该早就发现问题了。

长舒了一口气,看来问题解决了,很放心的睡了一个午觉,想着只要下午将新的版本合 上就可以了,问题解决了。然而生活并不总是如你所想象,它只是真实的展现它的本来面目!下午:配命令,spanning tree disable ,查cpu发现收不到包!再配透传,发现没有抓到包!怎么仅仅过了一个中午,情况就变了,我的程序并没有改啊!仔细想想唯一不同的地方在于这时是用平台的命令配的,上午是自己调的函数,于是封掉平台的入口,自己调,透传成功!问题出在平台调用函数方面,那到底是怎么回事?正在自己一筹莫展的时候,范力涵来了。有了科长在旁边,自己镇定多了。

问题四:

自己调函数设置透传成功,在平台配命令不成功!

问题解决:

范力涵了解了基本情况后,很肯定的指出问题在于平台调用函数上面,应该将各个函数入口控制住,他用了四个外部变量,在封住设置端口状态函数后,用平台配透传成功!原来问题出在这里,show出状态后发现平台在spanning tree disable命令后将所有端口状态都设为了disable,所有包都被丢掉,cpu当然收不到包!找平台修改了配置,终于调试成功。

问题总结:

1 自己在这时没有很好的整理一下解决问题的思路,这时应该仔细的跟函数,看平台调了哪些函数,参数是怎么设置的,这样应该能很快的发现问题。 2 自己很缺乏调试的方法,比如用外部变量控制函数的入口,或者封住平台调函数的入口等。

写到这里,看看自己所遇到的问题,觉得这些都是可以避免的,自己在深入理解驱动和平台的配合,在阅读代码,跟函数,调试的方法,遇到问题解决的思路这些方面都有问题。希望在以后的工作中,多多学习,勤加思考,积累经验!

同时要感谢范力涵、陈遗保、蒋建锋、韩俊杰、张作富,从编码到调试完成,他们给我很大的帮助,也教会我很多东西。

项目调试小结

IEC104规约调试小结

无限极STP

STP分析

STP战略

STP报告

数码相机STP报告

STP理论简介

STP分析报告

STP生成树

《STP模块调试小结(整理).doc》
STP模块调试小结(整理)
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文