我正在尝试在 openvswitch 中为我的一个项目模拟 IPv6 ND 路由器广告数据包,但形成的数据包格式错误(在wireshark 中进行了分析)。以下是我创建的数据包转储,
ICPMV6 ND - Router Advertisement:
Mulicast dst-mac: 33:33:00:00:00:1
Router src-mac: 68:54:ed:00:00:06
00000000 33 33 00 00 00 01 68 54-ed 00 00 06 86 dd 60 00 |33....hT........|
00000010 00 00 40 00 3a dd fe 80-00 00 00 00 00 00 90 ff |..@.:...........|
00000020 02 25 fe 52 ef 00 ff 02-00 00 00 00 00 00 00 00 |.%.R............|
00000030 00 00 00 01 00 00 86 00-2a 7a ff 00 28 23 86 00 |........*z..(#..|
00000040 00 00 86 00 00 00 |...... |
如果我遗漏了什么,你们可以指出吗?感谢帮助。
答案1
我将你的十六进制转储导入到wireshark中(很酷 - 我刚刚了解了该功能)。这是我的wireshark 中的样子:
看起来您需要在 ICMPv6 标头中设置一些字段。对于 ND RA,根据RFC,ICMP 类型应为 134 (0x86),代码为 0。还需要正确计算校验和。
作为参考,这里是我使用以下命令导入到wireshark 1.99.1中的文本File
->Import from Hex Dump ...
菜单:
00000000 33 33 00 00 00 01 68 54 ed 00 00 06 86 dd 60 00 33....hT........
00000010 00 00 40 00 3a dd fe 80 00 00 00 00 00 00 90 ff ..@.:...........
00000020 02 25 fe 52 ef 00 ff 02 00 00 00 00 00 00 00 00 .%.R............
00000030 00 00 00 01 00 00 00 00 2a 7a ff 00 28 23 86 00 ........*z..(#..
00000040 00 00 86 00 00 00 ......
请注意-
第 7 个和第 8 个十六进制字节之间没有任何内容,并且|
周围没有 ASCII 字节。