在Android

时间:2017-03-06 00:19:20

标签: android jailbreak wifi-direct android-kernel mesh-network

我正在使用Wifi Direct和Wifi构建Android设备网格。

我的基本方案如下:

1)每个节点使用WifiP2pManager.createGroup()方法构建Wifi直接组所有者(GO)接入点。然后它通过WifiP2pManager.addLocalService()进行广告宣传。

2)每个节点还按WifiP2pManager.discoverServices()扫描其他节点。当它找到另一个节点时,它使用常规的旧Wifi连接到该节点:wifiManager.disconnect()wifiManager.enableNetwork()wifiManager.reconnect()

3)更新路由表和ipTables以允许流量转发到正确的目的地。这需要root权限。

此技术的问题在于WifiP2p为每个组所有者分配192.168.49.1的相同地址,并使用DHCP中的192.168.49.0/24池向加入群组所有者的设备发出地址。 因此,网格将无法在多跳上路由流量,因为所有链路都具有相同的IP空间。已经提出了一些技术来克服网络之间的这种切换(使用存储转发)移动包),使用IP广播一次发送多个链接,并修改WifiP2p以发出不同的地址。我正在研究修改WifiP2p实现的最后一个选项。

什么库将IP块192.168.49.1分配给Android中的Wifi Direct群组所有者?

在Android 4.0中,它在WifiP2pService.java第155和156行直接分配:

155 | private static final String[] DHCP_RANGE = {"192.168.49.2", "192.168.49.254"};
156 | private static final String SERVER_ADDRESS = "192.168.49.1";

从Android 5.0开始,该库已被弃用。我已经跟踪了当前的实现,直到它离开Java并开始执行C库。 这是我需要您帮助了解要查看哪个C库的地方。

免责声明:据我所知,我将使用定制内核并使用root设备。我已经根据我的测试床设备了解并了解风险。我也明白Android不是为了做到这一点而构建的。我也知道Wifi 802.11s引入了网状网络(未编入Android)。我希望使用Wifi Direct(副蓝牙等),因为它利用了wifi基础设施模式(节能,加密等)的许多好处。汉斯问了一个very similar question here,但并不想根植设备,我希望能够使设备生根。

0 个答案:

没有答案