1.8 连接IPv6网络到因特网
正如在本书的介绍章节所说的,网络通信是物联网的四个基本元素指引。我们已经知道,IPv6使为我们能想到的所有物体分配一个IP地址成为了可能,使便捷地配置设备的网络参数成为了可能。
一旦我们将所有的物体使用IPv6连接后,这些物体就可以在它们本地之间通信,或者与其它连接到IPv6网络中的物体通信。在本节,我们将注意力放在物体的因特网侧的通信。
正如我们将在本书中看到的那样,连接我们的设备到因特网的能力提供了新的发展潜力和服务。比如,我们可以将无线传感器网络连接到一个集中的资源库,该资源库负责将接收到的所有信息进行处理并存储历史记录,而这些历史记录可以用于揭露潜在的模型和预测将来的事件。这个基本思想就是我们今天所说的“大数据”,拥有一整套概念和技术的大数据。
图1.18. IPv6的连通性
返回到网络连通领域,我们的目标是使用IPv6连接IoT设备到因特网,使其可与其他IoT设备、采集服务器甚至与人进行通信。
与IPv6连接到因特网相关的一个重要思想是:IoT设备和IPv6因特网的通信是双向的。这是非常重要的,因为在IPv4中,客户端和服务端的连接总是单方向的。IPv6在这一点做了改进。
IoT设备的双向通行进制提供了有用的发展潜力,因为不仅这些设备可以发送信息到因特网中的某个地方,而且因特网中的任何点都能发送信息、请求或命令到IoT设备。这可以用于几个不同的场景:
- 管理:用于管理IoT设备执行一些状态测试,通过远程更新默写参数、配置、固件,提供对硬件平台更好的、更有效的控制使用,提升基础设施的安全性。
- 控制:发送命令和控制执行器给IoT设备,让其执行一定的动作。
- 通信:通过一些接口发送信息到IoT设备。
IPv6也被部署在组成因特网的所有不同网络中,这意味着当我们连接自己的网络到IPv6网络时,有多重场景供我们选择。下面是按照优先级顺序列举的三种常见场景,其中原始IPv6连接是最好的选择。
- 原始IPv6连接:这种场景应用于既有ISP提供的连接到因特网的服务,又有在网络中有支持IPv6的路由器和网络设备。原始IPv6是指包在从源到目的地路径中的任何地方流动时都没有被改变或者被隧道化。双栈网络是很常见的——在相同的接口/设备、相同的时间,原始IPv6和原始IPv4都被使用。本地IPv6场景包括这两部分:只有IPv6和双栈。
图1.19. 原始IPv6
从图片可以看到,路由器R2与IoT设备云相连,路由器R1与IPv6因特网相连。R1通过发送前面所说的RA为LAN1中的设备自动配置IPv6地址(包括R2)。
- 没有IPv6连接:在这种场景,我们面临着当前最常见的一个问题——缺少来自ISP支持的IPv6连接。尽管我们的IPv6已经在路由器上被支持,但是ISP只支持IPv4.对应的解决方案是使用一个叫做IPv6转换装置的设备。这种情形下,最简单、最有用的是6in4隧道——基于最点对点隧道,将IPv6包封装到IPv4内部。
图1.20. IPv4隧道化IPv6
上图展示了这个解决方案,从R1挖一条隧道连接到“远程隧道结束点”——IPv4与IPv6因特网的交接点。这由一个既可以连接IPv4又可以连接IPv6的路由器实现。原始IPv6数据从我们的网络(LAN1和LAN2)流出到达R1,R1将IPv6的包(包括数据)放到一个新的IPv4包里面。IPv4包中包含与隧道终点相对应的IPv4目的地址。隧道终点路由器将提取IPv6的包,并将其以原始IPv6包的形式传递给IPv6网络。
- 没有IPv6连接且没有IPv6路由器:这种场景指IPv6网络既没有ISP的支持,又没有能够连接网络到IPv6因特网的路由器支持。前面已经说了,可以通过6in4隧道解决meiyouISP支持的问题,但是在这个场景,我们也必须面临没有不支持IPv6的路由器,这导致不能创建隧道。对应的解决方案是添加一个机支持IPv4又支持IPv6的路由器,然后创建一个从这个路由器到IPv4因特网中某处隧道终点路由器的6in4隧道。
图1.21. 本地路由器不支持IPv6
在这种场景中,新增了一个路由器R3。R3用于创建一个朝向隧道终点路由去的6in4隧道,同时也用于给我们的网络提供IPv6网关服务——发送RA到LAN1中的IPv6自动配置设备。封装/解封装处理过程与前面的场景完全一样。这里主要的不同点是6in4隧道需要一个公用的IPv4地址,因此R3除了需要IPv6地址外还需要一个公共IPv4地址。如果该路由器被连接到支持ISP的网络中,这是很容易办到的。但是在我们的网络中,我们通常只有使用NAT的私有地址。
上面描述的场景都基于一个比较好的基础架构——至少2个路由器和2个LAN。这三种场景都可以被简化为下图中只有一个路由器的场景。
图1.22. 简化的场景
需要注意到,这与先前的情形一样,缺乏支持IPv6的ISP和路由器(或者后者可以用一个支持IPv6的路由器代替)。
最后的案例是最常见的,因为IoT和WSN不能被部署到任何地方(包括一些通过无线技术连接的远程网络)。在这种情形下,设备数量、电源消耗都受到严重的限制。例如,一个传感器的云可能被部署到乡村,用于检测温度和湿度,而这些所有的传感器仅仅通过一个使用IPv6移动手机网络(GRPR,3G或者LTE)的路由器连接到一起。