WoT 的成年仪式-通讯协定技术变革
WoT 成为成熟市场前,势必经历通讯协定技术变革的过程。物联网的发展,进入到衔接 web(over HTTP)的阶段后,典型的通讯协定堆叠(Protocol Stacks)开始产生变化。更进一步的话,物联网在 2015 年开始,进入通讯协定技术变革的时代。过去使用的通讯协定技术,开始有了改良版本。几个知名的例子:Google 提倡的 SPDY 协定、专为 Constrained Device 所设计的 CoAP,以及 QUIC 改良传统的 UDP。
未来,当 IoT 装置大量布署后,届时网路上将有十亿,甚致百亿计的 IoT 装置,这个总数,绝对比纯 web 时代时的 web server 还要更多。
上述所提的例子,最终都想针对 HTTP 协定进行改造。HTTP 是应用层通讯协定(Application Layer Protocol),现在的 IoT 架构,发展重心就是使用 HTTP(Web)来交连(interoperate),这个 IoT + Web 的架构,称为 WoT(Web of Things)。不只是 WoT 架构,从通讯协定的角度来看,物联网正进入应用层通讯协定技术变革的时代。
TCP/IP Stacks 是网路协定的基础,其中有一层称为传输层(Transport Layer),传输层包含 TCP 与 UDP 二个协定。UDP 协定比 TCP 更轻量化,但因为 TCP 的可靠性佳高,因此,知名的应用层协定“HTTP”,就基于 TCP 协定来发展。基于 TCP 的 HTTP(或称为 HTTP over TCP)的特色就是 Client/Server 间会进行资料传输的确认(ACK),因此可靠度高。然而,这个确认的动作对物联网装置来说,可能会形成一个问题。这个问题在于,确认的动作需要花费较多的硬体资源(运算能力、记忆体等),对硬体资源较缺乏的装置(称为 Constrained Device),这个 TCP 的确认过程,就成为一个很大的负担。
HTTP(Hypertext Transfer Protocol)是一种 request-response 形式的协定。就像我们所知道的,它已经完全融入我们的生活之中。HTTP 在 PC 时代,已经改变人们接收资讯的方式与习惯,到了 Mobile 的时代,HTTP 更再次影响与改变人类的社会文化。到了物联网时代,HTTP 将继续影响与改变人类的生活习惯,物联网已经开始受到 HTTP 的影响,这就是 Web of Things。HTTP 属于 application-level 的协定,HTTP 的传输层就是使用 TCP。
一个开放式且符合 Web of Things 设计原则的 IoT Cloud 架构,应该以 application-level 的协定为主,因此 HTTP 成为自然当选人。但物联网硬体本身,有它的局限性,例如:低功耗、运算频率较低、主记忆体较少等,当软体在这样受局限的硬体环境上运作时,就需要一个比 HTTP 更适合的应用层协定-CoAP(Contrained Application Protocol)就因应而生。
CoAP 并不是要取代 HTTP,它是针对 Constrained Device 的 HTTP 需求。CoAP(Constrained Application Protocol)是更简单且轻量化的 HTTP 技术,简单的意思是,CoAP 简化了 HTTP 的内容,轻量化的意思是,CoAP 采用 UDP 进行传输。简单来说,CoAP 可以看做是一个 HTTP over UDP 的技术。CoAP 是物联网的重要技术,它让 Constrained Device 都能具备 HTTP 的能力。大部份的 MCU 装置都是 Constrained Device,因此,就也像是 MCU + HTTP。
从实作的角度来看,CoAP 并非直接采用 HTTP 标准,而是透过转换(translate)的方式将讯息对应成标准的 HTTP。CoAP 采纳了 REST 架构,并且也是采取 request/response 的模式。因此,要将 CoAP 转换为 HTTP,或是将 HTTP 转换为 CoAP,其实是非常容易的。实际上,CoAP 只对 request/response 的部份做转换,也就是 CoAP 的 request 都能转换为 HTTP request headers;response 的部份亦同。
除了 CoAP 外,HTTP/2.0 未来也可能在物联网应用上,扮演重要角色。HTTP over TCP 的 ACK 会造成的一些负担,因此如果让 HTTP over UDP 的话,就可以解决这个问题。Google 所提出的 QUIC(Quick UDP Internet Connection)就是这样的技术。QUIC 可以让 HTTP 基于 UDP 传输层,就是 HTTP + QUIC + UDP。
解决了传输层的问题,再回到应用层来看 HTTP。因为 HTTP request/response headers 设计上的一些缺点,让 HTTP 的网路传输效能无法提升。为解决这些问题,Google 便提出了 SPDY 协定。SPDY 协定后来成为 HTTP/2(HTTP 2.0)的基础。IETF 在 2015 年 5 月正式发布 HTTP/2 标准(RFC 7540)。HTTP/2 是基于 TCP 协定,因此要让物联网装置使用 HTTP over UDP 的话,目前仍必须使用 HTTP + QUIC + UDP 的堆叠。
因为 HTTP/2 标准就是 SPDY 的内容,如果有意在物联网装置上使用 HTTP/2 的特性,就要采用 HTTP + SPDY + QUIC + UDP 的堆叠。不过,Google 未来有意将 HTTP/2 over QUIC 提交给 IETF,到时就能舍弃 HTTP + SPDY + QUIC + UDP 的做法,毕竟这只是过渡时期的解决方案。
从 IoT 装置的角度来看,在一个硬体很受限的环境里,HTTP over TCP 的过程不但消耗硬体资源,也考验硬体的运算能力。同时,这个过程因为 handshake 的过程繁复,也可能造成“response time”过长。CoAP、HTTP over UDP 或是 HTTP/2 over QUIC 则是修改了 handshake 的过程,解决了包含 response time 在内的各种问题。
未来,当 IoT 装置大量布署后,届时网路上将有十亿,甚致百亿计的 IoT 装置,这个总数,绝对比纯 web 时代时的 web server 还要更多。当这些 IoT 装置彼此间,发出大量且频繁的 HTTP request/response 时,这些 TCP 连线就会累积出非常可怕的“连线负载”。未来迎接 IoT 的时代,降低 ACK 封包,并设计更适合的通讯协定,就成了重要的基础研究。或许,在通讯协定技术完成技术变革后,WoT 才会真正成为成熟市场。