BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #6490同步于 2009/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[求助]arm板可以ping6通pc机,pc机ping6不通arm板,为什么?

jennymasar
2009/11/12镜像同步13 回复
arm,pc机上都装了linux,已加载ipv6模块。 arm,pc都开好机后,如果pc机先ping6 arm,不通;arm ping6 pc机,通的;arm ping6 pc机,然后再执行pc机 ping6 arm,通,但是隔上几分钟又ping6不通了。 为什么? ipv4,arm和pc机间一直都可以ping通。 现在需要用到udp socket,如果arm做client,pc做server,正常;arm做server,pc做client,pc机给arm发信息,也是有时候行有时候不行。 能帮我分析下原因吗?谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ArmStrong机器人#1 · 2009/11/12
socket上pc与arm板通信做过,确实没有lz的问题,建议先想办法定位吧,看看到底是哪 部分出问题 【 在 jennymasar (holy shit) 的大作中提到: 】 : arm,pc机上都装了linux,已加载ipv6模块。 : arm,pc都开好机后,如果pc机先ping6 arm,不通;arm ping6 pc机,通的;arm ping6 pc机,然后再执行pc机 ping6 arm,通,但是隔上几分钟又ping6不通了。 : 为什么? : ...................
jennymasar机器人#2 · 2009/11/16
好好分析了下,找到一些问题,贴出来吧。问题还是没有最终解决 server端先发起的ping6(或udp、tcp),server的邻居表中没有arm ipv6地址与mac地址的映射关系,因此会先发送邻居请求,neighbor solicitation,按理说,arm应该会回应邻居公告,neighbor advertisement,报告自己的mac地址。但是我的arm板并没有进行这一步,目前观察到的是,邻居请求包并没有进入到arm的网卡驱动接收程序中,原因没有查明。 若arm发起ping6,同样的过程,pc server能够正确发出邻居公告,并且会将arm的mac地址与v6地址映射关系加入邻居表中,此时这一映射关系在邻居表中的状态为REACHABLE。因此,若此时server ping6 arm,不用再发邻居请求,直接从邻居表中找映射关系,完成v6通信。邻居表项有存活期,很短的时间内,状态由变为STALE,再过一段时间这一表项会被删除。对应的观察到的现象就是,过一段时间再由server ping6 arm,又不通了。 可以这样来暂时解决问题: 在邻居表中添加arm v6地址与mac地址的映射关系,并设置这一表项的状态为permanent,邻居表中将永远存在这一表项。 最彻底的解决当然还是要找出sever发出的邻居请求包为什么没有进入到网卡驱动接收处理程序中。 大家遇到过这类问题吗?
hobby机器人#3 · 2009/11/16
邻居表更新的相关分析很细致,很不错! 关于进一步的调试,有些建议,不知是否符合情况 1、pc和arm两边最好确定帧已经发出并收到了(即使明确知道是OS丢弃了也行)。具体的:ifconfig看看能不能检测到,不行的话pc这边可以装sniffer,或者用集线器再连接一个pc抓包看看。另外,看看包的细节,比如比较一下两个pc对ping时候包的各个字段,省的arm不认识。 2、可以翻翻内核代码或者ipv6的软件包,找找这个报文的处理流程,如果有时间的话,加些调试语句重编内核。这个比较费时,不过应该对理解此部分运作机制有很大的好处。 说的比较泛,也不知道有没有用 期待lz的进一步发现哦~ 【 在 jennymasar (holy shit) 的大作中提到: 】 : 好好分析了下,找到一些问题,贴出来吧。问题还是没有最终解决 : server端先发起的ping6(或udp、tcp),server的邻居表中没有arm ipv6地址与mac地址的映射关系,因此会先发送邻居请求,neighbor solicitation,按理说,arm应该会回应邻居公告,neighbor advertisement,报告自己的mac地址。但是我的arm板并没有进行这一步,目前观察到 : 若arm发起ping6,同样的过程,pc server能够正确发出邻居公告,并且会将arm的mac地址与v6地址映射关系加入邻居表中,此时这一映射关系在邻居表中的状态为REACHABLE。因此,若此时server ping6 arm,不要再查发邻居请求,直接从邻居表中找映射关系,完成v6通信。邻居表项 : ...................
dunwin机器人#4 · 2009/11/24
期待····· 见识了··
haov000机器人#5 · 2010/5/25
请问一下这个问题解决了没,我最近也在搞ipv6,也是遇到了这个问题,情况跟你的一样,不知大虾知道答案了没,还请回复一下,谢谢!
jennymasar机器人#6 · 2010/6/2
后来就没去弄这个问题了 【 在 haov000 的大作中提到: 】 : 请问一下这个问题解决了没,我最近也在搞ipv6,也是遇到了这个问题,情况跟你的一样,不知大虾知道答案了没,还请回复一下,谢谢! : --
ssailing机器人#7 · 2010/6/7
好帖! 你是如何观察到ARP请求包没有进入ARM的网卡驱动程序中的呢?在驱动程序中解析报文打印log? PC有几个网卡呢 PC机和ARM板在物理上是怎么连接的呢? PC机和ARM的IP是怎么设置的呢 在一个局域网网段中么 PC机上是否有默认的路由到ARM板呢 先确定ARM板是否收到了PC机的ARP请求报文 如果收到了再看ARM板的内核对V6是怎么处理的 是否被丢弃了
haov000机器人#8 · 2010/6/7
能告诉我你用的硬件平台和linux内核吗,我用的是杭州脉冲科技的at91sam9260,内核是2.6.20
haov000机器人#9 · 2010/6/8
物理连接,路由设置应该是正确的,ipv6只要在同一个链路层就可以吧。后来可以ping6通,只是在pc机第一次ping6 arm板的时候,arm板不响应pc的邻居请求,而pc机可以响应arm板的邻居请求,arm板存下pc的mac地址后就可以正常通信了 【 在 ssailing 的大作中提到: 】 : 好帖! : 你是如何观察到ARP请求包没有进入ARM的网卡驱动程序中的呢?在驱动程序中解析报文打印log? : PC有几个网卡呢 : ...................