RT-Thread中如何使用IPv6

要使用IPv6,需使用lwip-head版本的协议栈,需要在相应的BSP包中的rtconfig.h文件中添加“#define RT_USING_LWIP_HEAD”。

使用IPv4/v6双栈

要在RT-Thread中使用IPv4/v6双栈,需在相应的BSP包中的rtconfig.h文件添加“#define RT_LWIP_IPV6”,这样当网络初始化后就会为网卡创建link-local address,用于局域网内的通信。当然也可以为网卡创建全球单播地址,这里提供了两种方式:

1)无状态地址自动配置,只要在rtconfig.h中添加“#define RT_LWIP_IPV6_AUTOCONFIG”,这样将开发板接入支持IPv6的路由器时(如极路由和其他支持openwrt系统的路由器)即可完成IPv6地址的自动配置。

2)手动配置,在你的应用程序中完成了网络的初始化后,可调用“void setif6(char netifname, char ip6_addr)” 函数设置网络地址,如你想要为网卡“e0”设置“2001::1”的地址,则调用set_if6("e0", "2001::1")即可。

仅使用IPv4

在lwip-head中网络层仅使用IPv4协议栈,只要不在相应的BSP包中的rtconfig.h文件添加“#define RT_LWIP_IPV6”即可,RT-Thread不会将IPv6相关的源文件、头文件编译进去。IPv4中仍然支持使用DHCP协议与静态IP地址配置。

对开发板进行Ping测试

要了解PC和开发板之间的网络连接状态时,需使用Ping的测试方法。

首先,要在串口调试工具中输入list_if()获取开发板的IPv4/IPv6地址。如下图所示:

IP_Information

IPv4地址为192.168.199.134,IPv6的link-local地址为fe80::200:eff:fe12:3456,IPv6地址为4006:e024:680:c6e:200:eff:fe12:3456。

需注意的是,测试前,要通过使用路由器或者静态IP的方法使得PC与开发板处于同一网段,这里为简单起见使用路由器。

  • IPv4 ping测试

IPv4的ping测试十分简单,只需打开命令提示符输入ping 192.168.199.134 -t即可

ping4

  • IPv6 link-local address ping测试

首先需在命令提示符中输入ipconfig,获得以下信息:

Scope ID

之后在命令行提示符中输入ping fe80::200:eff:fe12:3456%12 -t

Link-local Address

  • IPv6地址的测试

在命令提示符中输入ping 4006:e024:680:c6e:200:eff:fe12:3456 -t

ping6

至此你已进入IPv6的世界了。