NAT、SDN、移动IP

NAT、SDN、移动IP

NAT

在解释NAT之前不妨介绍与其相关的VPN:这两者都是为了解决本地网相关的问题提出的技术。

首先我们知道,ABC类地址都有相当一部分被留给了本地自用。这部分地址,可以被每个公司用来随意划分,以进行公司内部组网的设计;而如果每个公司都购买一块很大的IP(比如,一个C类地址),这是很不划算的;再加上现在互联网已经不再安排新的IPv4地址了,本地自用地址的转化俨然成了一个亟待解决的问题。

假如,一个公司的两个部门位于地理上比较遥远的位置,但是两个公司想要虚拟地共享一个局域网,这个时候就要用到VPN技术。由于这部分内容不在大纲中,我们只需要知道,VPN技术采用了IP in IP的隧道思想,将局域网内部的IP报文包装在VPN协议的IP报文中,通过一个实际的链路(当然,在VPN协议和两个部门看来是一条逻辑链路,两个部门当然什么都不知道,以为它们处于了同一个局域网中),实现了逻辑上的局域网互联。当前的远程办公技术,即,公司员工在家中登陆VPN的账号和口令后获取一个公司的内网IP并进行那些只能在公司接入网中才能进行的操作,就是VPN技术的一个目前很大的应用。

在有了VPN的基础上解释NAT就很简单了。NAT实际上解决的就是一个内网接入到互联网的IP分配问题。NAT分为三种:

多对多

这种方式中,n个路由条目最多可以保证n台计算机同时接入互联网。更多的接入需求需要路由器进行轮流指派——毕竟,两台计算机不可能(在这个多对多的语境下)同时共享一个IP地址访问互联网。

一对多

多对多方式的弊端,如我们刚才讨论的,它不能满足大量接入主机的同时访问需求。这时一对多的协议出现了:它将接入的许多主机的数据包封装到不同的IP端口中,也即,每一台主机对应到路由器的一个IP端口中,每个主机就相当于是路由器的一个应用进程了。

这种方式,让互联网的本就耦合(为什么耦合,我们下一节叙述)的层次结构更加模糊了。

静态NAT

在静态NAT中,路由器指定某一个公网IP和内网中的某一个IP固定配对。这样,外网就可以通过这个IP地址唯一地访问内网计算机了。

SDN

软件定义网络是近些年新兴的一个网络概念。SDN的一个成功的例子是Google的B4网,这个网络是谷歌的内容分发网络,可想而知其流量应该是巨大的。通过软件定义网络的改造,结果表明,B4网络的稳定性、流量控制都是极为成功的。

SDN网络致力于对网络进行以下三种改造:解耦、抽象、可编程。我们在解释这三个词语前现在看一下SDN网络的结构。

在一个SDN网络中,网络被分为了大体的两部分:控制层面和数据层面。

数据层面,在SDN网络中只包括路由器和它的转发功能。

与数据层面透过OpenFlow协议相连接,也即通过OpenFlow控制“转发表”的是,控制层面的控制逻辑。这部分连接,被称作南桥

而控制层面的控制逻辑,被设计为一个个可编程的API接口。用户可以接入各种排序函数等等,来对这些路由数据进行操作。这些接口叫做北桥

下一个问题就是,这些路由数据是什么?在OpenFlow协议中,路由数据被组织成所谓"流"的结构。这里的流用来代指那些原地址、目的地址都相同的一簇数据报。

一个流的例子是,流被分为三部分:报头、计数器和下一跳。

报头整合了过去网络各种协议的首部。

计数器用于负载均衡,它会根据某个流向的网络情况动态地从不同端口分发数据报。

下一跳不再是传统的IP地址,而是它的数据端口号。

需要指出以下几点:SDN不等同于OpenFlow,SDN更像是一个体系结构,它开始把计算机网络过去的、软件和硬件强相关的状况转换成像是计算机目前体系结构的开源的、共享的软件生态,互联网不再是那些传统厂家的一言堂。而OpenFlow则是SDN实现过程中的一个协议,就好比TCP/IP架构是目前计算机网络的一个架构而已,如果你未来的公司想要更好的保密性,那么完全可能让你的公司运行在一个异构网络上,但是想要接入互联网就需要功能更强大的路由器了。

再解释一下什么叫解耦,可编程和抽象相信读者已经不陌生了,就是把以前的各种功能抽象成一个个可编程的API接口,如同Intel/Linux这些计算机体系结构中推波助澜的厂家/个体所做的那样。

而解耦,就是解除耦合,想要尽可能地改造当前计算机网络中的耦合性。在当前的互联网中,控制层面和数据层面是搅在一团、“耦合在一起”的。这种强耦合性、低模块化的做法,从小的层面来说不利于开发人员的代码复用、从大的层面来说为互联网的维护,甚至于发展都设置了障碍。

移动IP

移动IP指的是移动接入设备在空间中移动的过程中如何保持TCP/IP连接的问题。

先介绍几个概念。我们设,一个移动的接入端A,在它在郊外移动的过程中,第一次有效地接入的互联网,叫做永久代理站。在这个接入网中,移动端获得了一个有效的IP地址,我们称作永久IP地址;这个接入网的网关我们设为默认路由。

下面这个接入端跑到了另外一个网络中。我们设这个网络叫做代理网络,这个网络的默认网关叫做代理路由。

移动IP讨论的是其他设备将如何去寻找这个已经离开的移动设备。为了简化叙述,我们把移动的设备称作A,固定的设备称作B。

最初版本的移动IP是这样的定义的,当设备B想要发起和A的数据通信时:

  1. B首先通过永久IP访问A的永久代理站(也就是第一次接入互联网的那个网络)。
  2. 永久代理站网络的默认路由截获了这个IP数据报后,会根据A是否还在这个网络中执行不同的操作。如果A还在这个网络中,那么路由器当然直接把数据交给A;但是如果不在这个网络中,默认路由就会通过一个新的通信IP将这个数据报转发给代理网络的代理路由了。这个转发过程使用IP隧道技术,在IP数据报外面再套一层移动IP协议的头部。
  3. 代理路由收到这个转发来的IP数据报后,解封IP数据报,并且转发给当前在代理网络中的移动主机A。

其中的通信IP是A在抵达这个代理网络后和这个网络的代理路由通信后、代理路由和永久路由进行交涉后获得的IP地址。

后来的移动IP地址为了解决移动IP地址引发的在网络中转发跳数太多的问题,出现了通信者代理的技术,也就是,由默认路由进行的转发交给了通信代理执行。

我们通过以下的例子解释在通信者代理技术出现后,转发过程的改变,以及多跳转发是如何实现的。

对于之前定义的名词这里进行一些改动:

默认路由和永久地址仍不改变;

第一个接入网络的路由器设为锚(anchor)外地代理

由锚接入网络转入的下一个网络我们设为P网络。

和A进行通信的通信者依然是B,但是此时进行通信的操作的是通信者代理了。

  1. B的通信者代理首先通过永久IP访问A的永久代理站(也就是第一次接入互联网的那个网络),把数据报发给永久代理站。
  2. 永久代理站网络的默认路由截获了这个IP数据报后,如果不在A这个网络中,默认路由就会向B的通信者代理返回锚外地代理的信息。
  3. B的通信者代理再对数据报进行封装后发送给锚外地代理(是否通过刚才的那个隧道IP?不知道。书中没说)
  4. 锚外地代理拆除数据后看A目前还在我的网络中吗?不在,重新封装,转发给下一跳的代理路由。

在使用了通信者代理服务之后,只不过是把默认路由的转发移交给了通信者代理进行执行;后面的每一跳转发还是依旧。

最后我们指出,移动IP技术必须增加以下部分:

  1. 移动站A到外地代理的协议。
  2. 外地代理到默认代理的协议。
  3. 隧道中数据报的封装协议。
  4. 外地代理的拆封协议。

分别对应两个部分:移动IP的来去登记、数据报文的结构定义以及转发规则。

移动IP的实现是在过于复杂。并且上述讨论假定了移动设备A含有一个永久地址。但是实践中这个问题依然没有得到解决。

下一个问题是移动IP对于上层协议的影响。

TCP的拥塞控制并不知道是网络拥塞了、还是数据链路信噪比高了、甚至是移动站更换网络了。这个时候减少拥塞窗口对于整个网络来说没有什么意义。以下三种实践中的方法有利于改善情况:

  1. 类似于SR协议的滑动窗口——哪里出现了数据错误就在哪里纠正
  2. 让TCP协议知道哪部分是无线网络
  3. 将逻辑链路分为无线和有线两个部分,并且两个部分并不采用相同的协议。这是实践中使用的比较好的解决方案。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部