DARPA互联网协议的设计(三)
<接上文>
第2层目标中的其他目标
上述3个目标是重要的,它们是:
1)面对网路设备故障时候的可靠性
2)对上支持不同类型的应用层服务
3)对下支持不同类型的网络架构
除此之外,还有其他几个较低优先级的目标,其中有的基本实现,有的还没有完全达到。
对于分布式管理这个要求来说,基本算是达到了。比如互联网上所有的网关(现在都被称作路由器,后同)不是被同一个代理机构管理。不同管理中心管理不同的子网设备。其中提到了一种路由算法,允许不同机构的网关设备可以交换路由信息,即使它们之间不互相信任。这里应该指的是EGP协议,也就是外部网关协议。同时一个管理机构之内使用各种各样的私有路由算法,而这就是IGP协议。综上所述,网络设备的管理是分布的,类似于地球上的人属于不同的国家分别自治一样。这种结构允许局部有充分的自治权,又提供了全局网络的连通性,同时隔离了不同网络之间的影响。
虽然网络是分布式管理,但是手动配置还占据很大的比重。在2013年作者回顾的时候也感叹:直到现在这种模式还没有多少改变,是不是因为最初网络设计的缺陷导致这种进步很缓慢,还是因为这个任务本身的内在困难程度。作者说,我们理解“管理一个网络盒子”,但是我们没有接受从系统的角度去管理。在最近几年,SDN领域的发展是对这种全局管理的一种探索,将设备功能简化,将管理功能上提,可能是一个可行的思路。
对于资源有效利用来说,互联网做的似乎并不好。比如IP+TCP的报文头是20+20=40字节,如果只发送1个字节的数据,也需要带40个字节的头部开销,效率很低,而这对于远程登录应用是很常见的。不过对于网络协议族来说,解决这个问题本身就是很难的,因为很难获得合理的效率。比如从另一个极端说,如果文件传输需要发送1000个字节,也需要40个自己的头部开销,而这只引入4%的额外开销。固定报文头的设计简化了中间网络设备的实现,代价是小包传输效率低。这种设计在IPV6上有了一定的改进,因为IPV6使用了扩展头,简化了固定头长度,当然TCP报文头长度是没有改变的。
另一个可能的效率降低是报文重传场景。因为网络层不负责丢包的重传,如果发生了网络丢包,则需要更上层重传报文,而这会导致全局的报文传送时间变长,如果是网络层支持重传,则传送时长会变短。这种现象是由于网络设计之初的原则导致的,即可靠性是通过端到端保证的,而不是网络层保证的。结果是网络层接口非常简单,整体效率降低。不过如果重传的比率非常低,比如1%,则这个所谓的低效也是可以接受的。实际看来目前的网络重传比率并比高,因此1%的丢包率是合理的。但是如果网络的丢包率是10%,那么就需要对网络本身进行优化了。这里我们可以想一想,对于无线网络来说,比如WIFI,5G,整体丢包率是多少,重传效率又是多少。Google提出的QUIC协议对于无线网络的传输质量有多大的提升?
在2013年作者回顾的时候说,目前网络头开销和报文重传似乎都被我们接受了。但是IPV6,QUCI协议又有了新的改进,因此网络观点和技术不是一成不变的,而是不断进化和迭代的。
对于降低连接网络主机的复杂理性目标来说,事实上对主机的要求比其他网络架构更复杂。这是因为提供不同种类的网络服务,确认和重传策略,都必须在主机上实现而不是网络上。开始的时候,由于编程人员对于网络协议不熟悉,因此实现这种复杂协议很困难。他们还想将传输层的复杂实现推动到前端服务层,但是这又带来了服务层的复杂性,问题并没有解决。随着编程人员对于网络的熟悉,这种实现焦虑越来越低,直到后来很多类型的主机都支持了这种网络协议,甚至具有很少资源的机器都可以。说到这里需要提到两个网络实现,一个是BSD socket,一个是lwip,这就是刚才说的两种代表性网络实现。目前很多嵌入式操作系统使用的就是lwip网络协议栈。
主机实现的复杂性带来了一个问题,那就是如果主机实现的网络协议不够健壮,那么不仅主机受影响,网络也同样受影响。随着网络被使用的越来越多,这个问题体现的越来越严重。而对于网络健壮性的要求,最终会导致主机带来的不健壮性。从实际上来看,各种网络漏洞,网络病毒,就是对于整个网络健壮性和安全性的挑战。
最后一个网络目标是审计,而这个目标现在已经变得不是那么重要了。这是因为互联网已经从军事网络拓展到商用网络,而商业网络用户关心的是理解和监控网络资源。
<未完待续>