Re: 如何快速切换路由
Posted: Fri May 13, 2022 8:22 am
那这种情况下,我能否保存密钥,恢复密钥,加快切换路由的时间是的,802.11kv 需要路由器支持。
第一次连接后保存了密钥信息,后面重连时候省略了计算时间,所以连接快。
连接新的 路由器,需要重新计算密钥,所以连接时间又变长了。
因为在一些场景中, 就只在固定的几个路由器之间切换,
那这种情况下,我能否保存密钥,恢复密钥,加快切换路由的时间是的,802.11kv 需要路由器支持。
第一次连接后保存了密钥信息,后面重连时候省略了计算时间,所以连接快。
连接新的 路由器,需要重新计算密钥,所以连接时间又变长了。
底层会自动保存和恢复的,最多可以保存 5 个路由器密钥,你可以测试确认一下。那这种情况下,我能否保存密钥,恢复密钥,加快切换路由的时间是的,802.11kv 需要路由器支持。
第一次连接后保存了密钥信息,后面重连时候省略了计算时间,所以连接快。
连接新的 路由器,需要重新计算密钥,所以连接时间又变长了。
因为在一些场景中, 就只在固定的几个路由器之间切换,
路由器都是加密还是不加密的?两个路由器名称一样吗?我找不到刚才发的那帖子回复了,
我测试过了, 我吧信道和BSSID都设置好了,设置为静态IP
我先连接路由A(大概不到1秒时间),
然后断开,在连接路由B(也是大概不到1秒时间),
再断开,在连接路由A(还是大概不到1秒时间)
第2个场景
如果我连接路由A(大概1秒时间)
断开,再连接路由A(不到100MS)
这应该是没有保存了5个副本啊,如果有这个保存副本的功能保存能否让应用层做,毕竟5个太少了
保存了5个副本是以前的代码设计。最新的代码我测试了一下,和你的情况一致,切到另一个路由之后需要重新计算密钥。这部分功能是底层代码支持的,稍后我们内部确认一下。路由器都是加密还是不加密的?两个路由器名称一样吗?我找不到刚才发的那帖子回复了,
我测试过了, 我吧信道和BSSID都设置好了,设置为静态IP
我先连接路由A(大概不到1秒时间),
然后断开,在连接路由B(也是大概不到1秒时间),
再断开,在连接路由A(还是大概不到1秒时间)
第2个场景
如果我连接路由A(大概1秒时间)
断开,再连接路由A(不到100MS)
这应该是没有保存了5个副本啊,如果有这个保存副本的功能保存能否让应用层做,毕竟5个太少了
确认了底层只保存一个路由器信息。可以自己修改 wpa_set_passphrase() 代码来保存多个路由器的 ssid 和 password 到 flash。路由器都是加密还是不加密的?两个路由器名称一样吗?我找不到刚才发的那帖子回复了,
我测试过了, 我吧信道和BSSID都设置好了,设置为静态IP
我先连接路由A(大概不到1秒时间),
然后断开,在连接路由B(也是大概不到1秒时间),
再断开,在连接路由A(还是大概不到1秒时间)
第2个场景
如果我连接路由A(大概1秒时间)
断开,再连接路由A(不到100MS)
这应该是没有保存了5个副本啊,如果有这个保存副本的功能保存能否让应用层做,毕竟5个太少了
纠正一下,PMK 保存在 esp_wifi_sta_get_ap_info_prof_pmk_internal() ,不是 esp_wifi_sta_get_prof_password_internal()。谢谢,我看了你说的那段代码,PMK应该是保存在一个esp_wifi_sta_get_prof_password_internal()的HEX字符串里,我在修改SSID和PASSWORD的时候修改这个缓冲区就OK了
但是这段代码还是有些不解的地方
1,if (esp_wifi_sta_get_reset_param_internal() != 0) {
esp_wifi_sta_get_reset_param_internal()是在什么时候为0,是没有重新设置SSID和PASSWORD的时候为0吗?
2,if (strlen((char *)esp_wifi_sta_get_prof_password_internal()) == 64) {
这句判断不是会一直正确吗?因为PMK我看都是32字节,这里不就是64吗,是在设置SSID和PASSWORD的时候这里会清空吗?
==> 对的1,if (esp_wifi_sta_get_reset_param_internal() != 0) {
esp_wifi_sta_get_reset_param_internal()是在什么时候为0,是没有重新设置SSID和PASSWORD的时候为0吗?
==> 这里是针对 password 是 64 位的情况,这种情况下也不会执行 pbkdf2_sha1。2,if (strlen((char *)esp_wifi_sta_get_prof_password_internal()) == 64) {
这句判断不是会一直正确吗?因为PMK我看都是32字节,这里不就是64吗,是在设置SSID和PASSWORD的时候这里会清空吗?