蜂窝网络
为什么要学习蜂窝网络?
无线移动连接是现代的标准。你的手机能够在行驶的汽车中连接到互联网。
传统的互联网网络无法支持这一点。你或许能从卧室走到厨房仍保持互联网连接,这种情况下,你处于家用无线路由器的覆盖范围内,而路由器通过有线连接到互联网的其他部分。然而,传统互联网无法在广阔距离内提供无缝连接(例如在汽车中移动时)。
实现无线移动连接的方式有很多,但蜂窝网络是当今主导的接入技术。如今超过一半的网络流量来自蜂窝设备!
蜂窝网络只是众多能提供无线移动连接的技术之一。其他技术如卫星或自由空间光通信也存在,但蜂窝网络仍是当今的主流方式。
未来,需要无线移动技术的高性能应用,如自动驾驶汽车或虚拟现实,可能会带来更多创新。随着我们试图扩展当前的蜂窝网络以支持未来应用,其成本可能会高到令人望而却步。此外,像 AT&T 和 Verizon 这样的蜂窝网络运营商并不以快速创新著称。普遍共识是,这一领域在不久的将来充满了变革的可能,也是一个活跃的研究领域。

蜂窝网络简史
蜂窝技术源于旧的电话系统。蜂窝网络最初开发的目的是让用户能够无线拨打电话,而不是通过有线座机。第一部手机于 1983 年售出,售价 4000 美元(经通胀调整后,现在价格更高)。

由于蜂窝技术源自电话网络(而非互联网),许多设计选择与传统互联网不同。多年来,蜂窝技术(例如用于语音通话的智能手机出现前的手机)和互联网并行发展,各自有着不同的架构选择。
例如,蜂窝网络使用资源预留,而现代互联网使用分组交换。蜂窝网络通常从单个用户的角度考虑问题,而互联网大多从单个流或分组的角度考虑。蜂窝网络的商业模式(例如按分钟向用户收费)与互联网不同,互联网通常不那么注重记录使用情况。
近年来,蜂窝网络已变得与传统互联网更兼容。如今,你可以将蜂窝网络视为一种专门的第二层本地网络,能够与传统 TCP/IP 互联网的其他部分进行交互。
蜂窝网络标准
在传统互联网中,我们看到标准组织帮助我们标准化 TCP 和 IP 等协议。蜂窝网络也有许多标准组织合作制定标准。
在某些方面,蜂窝网络标准组织比互联网标准组织面临更多现实中的政治复杂性。为了实现互操作性,所有手机制造商和所有网络运营商(例如建设 cell 塔的 Verizon)都需要在协议上达成一致,甚至包括物理层。
蜂窝领域的主要标准组织是 3GPP(第三代合作伙伴计划)。大型设备供应商和电信公司都参与这个组织。3GPP 提出标准,然后提交给 ITU(国际电信联盟)。ITU 是联合国的一部分,每个国家都有一票,因此标准制定中也涉及一些政治因素。(有趣的事实:每个国家一票,因此美国可能会被欧盟否决。)
通常,每 10 年就会推出一代新的技术。现在你知道 2G、3G、4G 和 5G 中的数字代表什么了(蜂窝技术的代际)。5G 网络大约在 2020 年定义,运营商仍在努力部署这项技术。6G 标准的规划将在未来几年(2020 年代末)开始。
每一代都试图在多个维度上改进上一代,包括理论峰值数据速率、用户体验的平均数据速率、移动性(用户高速移动时的连接)、连接密度(特定区域内的设备数量)等等。通常,每一代在所有这些维度上都比上一代好大约 10 倍。

除了性能改进,架构设计也随着代际发展而演变,从电话网络设计转向互联网设计。1G 手机纯粹是模拟的,专为语音通话设计。2G/3G 仍主要是电路交换,重点是语音流量(有一点短信功能,几乎没有互联网流量)。从 4G 开始,我们转向了分组交换架构,语音现在只是网络上运行的众多应用之一。
蜂窝网络规范长达数千页,包含数百份文档,几乎没有人会完整阅读。这些标准的一个不便之处是,当我们从一代转向下一代时,所有东西都会重命名。例如,蜂窝塔被称为 “基站”、“NodeB”、“演进型 NodeB(eNodeB)” 和 “下一代 Node B(gNB)”,但它们的意思都是一样的。在本课程中,我们会创造自己的术语,使名称更直观。如果你查阅教科书或规范,可能会看到不同的名称,但我们将讨论的概念与教科书和规范中的概念在总体上是一致的。
关键挑战:移动性
使蜂窝网络变得复杂的关键挑战是移动性。记住,移动性可以想象成你的手机在高速公路上行驶时播放视频(不过开车时不要看视频)。我们将研究四个基本挑战:
-
发现:当我移动时,如何知道该连接哪个蜂窝塔?
-
认证:AT&T 的塔可能只愿意为自己的客户提供连接,而不是其他客户。蜂窝塔如何实现这一点?
-
无缝通信:如果我移出一个塔的覆盖范围,进入另一个不同蜂窝塔的覆盖范围,我的连接应该是无缝的,没有中断。
-
计费与限额管理:如果客户只支付了 6GB 的数据费用,那么在客户超出限额后,网络应该停止为该客户提供连接(或提供更差的连接)。这一要求源于旧的蜂窝网络(按语音通话分钟收费),并且由于蜂窝网络中的资源稀缺而仍然存在。
基础设施组件:无线电塔
蜂窝网络的组件有哪些?首先是无线电塔。
无线电塔有一个天线。塔内有一个无线电收发器,用于将数字比特转换为通过空中接口发送的模拟信号。
塔内还有一个无线电控制器,负责决定如何分配无线电资源。

你可以把控制器想象成运行调度程序的 CPU。控制器根据需求和商业模式(例如客户支付的费用)为不同客户分配不同的频率和时间段。这实际上是一个相当困难的调度问题,不过我们在这里不做进一步讨论。
这是无线电控制器分配资源的简化模型。每个彩色矩形表示一个用户(用颜色表示)可以在特定时间使用特定频率。

每个垂直截面代表一个时隙,显示在该截面中频率如何分配给用户。例如,在第一个时隙中,蓝色用户获得 3 个频率槽,橙色用户获得 5 个频率槽,灰色用户获得 4 个频率槽。
每个水平截面代表一个频率,显示该特定频率在不同时间如何分配给用户。例如,最上面一行显示一个频率先分配给灰色用户,然后是绿色用户,接着是蓝色用户,再是红色用户,依此类推。
请注意,这个模型是通过预留来共享资源,而不是尽力而为。用户只能在控制器分配给他们的频率和时间发送数据。
传统上,无线电控制器安装在塔内或塔附近,但如今,已经有将控制器移至云端以便于维护和管理的相关工作。
每个运营商运营着许多蜂窝塔,这些塔遍布全国,以便用户无论在哪里都能连接到塔。其结果就是无线接入网(RAN)。

通常,每个塔都有自己可以使用的一组频率,并且频率的分配方式是让相邻的塔使用不同的频率范围。这确保相邻的塔不会使用相同的频率而相互干扰。在这张图中,每种颜色对应一组频率。两个塔可能都使用蓝色的那组频率,但它们不相邻,因此不会相互干扰。任何相邻的塔都使用不重叠的频率。请注意,频率通常根据需求分配,因此旧金山市中心的蜂窝塔比偏远地区的蜂窝塔获得更多的频率。
基础设施组件:蜂窝核心网
移动用户现在可以向蜂窝塔发送数据。蜂窝塔现在需要将这些数据发送到互联网的其他部分。
每个蜂窝塔都通过有线连接到蜂窝核心网。你可以将蜂窝核心网视为蜂窝网络的后端基础设施(非用户可见)。

蜂窝核心网包含一些数据平面组件。你可以把它们想象成典型的路由器和交换机,在用户(通过塔)和网络的其他部分之间转发分组。我们将重点关注蜂窝核心网中的两种特殊类型的路由器。
无线电网关是 RAN(蜂窝塔)和蜂窝核心网之间的边界。蜂窝塔将其数据转发到这些无线电网关之一。在核心网的另一端,分组网关是蜂窝网络和互联网其他部分之间的边界。用户的数据最终到达分组网关,并作为标准的 TCP/IP 分组发送到互联网。
蜂窝核心网还包含一些控制平面组件。传统互联网中没有这些组件。用户流量不会到达这些组件。我们将重点关注两个控制平面组件。
数据库存储关于客户的信息,例如:客户拥有哪些设备?客户有什么样的数据计划?客户的设备现在在哪里(例如,它连接到哪个塔)?
移动性管理器是一个控制器(可以想象成 CPU),用于管理网络功能。该管理器帮助我们对用户进行认证(例如,检查他们是否真的是 Verizon 的客户)。管理器还帮助我们在用户移动时更新配置。
总结一下基础设施:用户设备向 RAN 中的蜂窝塔发送数据。蜂窝塔将数据转发到无线电网关(进入核心网)。数据最终到达分组网关,并被转发到互联网(离开核心网)。核心网中还有控制组件(移动性管理器、数据库)来存储和管理关于客户的信息。
蜂窝网络操作的高级步骤
步骤 0:注册。用户注册蜂窝服务。例如,你走进 Verizon 商店,购买数据计划并签订合同。运营商现在将关于你和你的服务计划的信息存储在数据库中。

步骤 1:发现。用户在偏远地区打开手机。他们的手机必须发现附近有哪些可用的塔,并且必须选择一个塔来使用。

步骤 2:附着。选择塔后,用户的设备告诉该塔它想要连接。塔必须询问移动性管理器是否允许连接(例如,检查用户是否已超出配额)。

如果认证通过,那么移动性管理器会配置塔和路由器,以建立从用户到互联网的路径(通过塔和路由器)。

步骤 3:数据交换。用户现在可以沿着配置好的路径发送和接收数据。

步骤 4:切换。当用户移动时,他们可能会离开原来的塔,靠近新的塔(在同一运营商的 RAN 中)。旧塔、新塔和用户的设备共同决定用户是否应该切换塔。

如果各方都同意用户应该切换塔,他们会通知移动性管理器,移动性管理器会重新配置塔和路由器,以建立从用户到互联网的新路径(现在使用新塔,可能还有不同的路由器)。这种切换必须是无缝的,这意味着用户在整个过程中都可以发送和接收数据,不会受到干扰。实现这种无缝切换需要网络不断地 “照看” 用户设备。

随着用户移动,最佳使用的路由器不断变化,步骤 3 和步骤 4 可能会重复。

我们需要实现的最后一个功能是漫游。如果用户去了像德国这样的其他国家,他们的运营商(例如美国的 Verizon)可能在德国没有覆盖。但是,Verizon 可能与德国电信(德国的一家运营商)签订合同,允许 Verizon 的客户使用德国电信的基础设施。这意味着德国电信可能不仅需要支持自己的用户,还需要支持来自 Verizon 等其他网络的用户。

在访问网络中(漫游时)的连接过程(发现、附着、切换)通常与在归属网络中连接非常相似,不同之处在于访问网络和归属网络中的移动性管理器必须相互协调(例如,德国电信向 Verizon 确认用户是否支付了漫游费用)。
步骤 0:注册
当你注册数据计划时,你会收到一个 IMSI(国际移动用户识别码),这是与你的订阅相关联的唯一标识符。这个号码被安全地存储在 SIM 卡的硬件中。
注意:这就是为什么像 Verizon 这样的运营商会给你一张 SIM 卡插入手机。如果你换了手机,但仍使用同一个计划,你只需要将 SIM 卡转移到新手机中,现在你的新手机就与同一个 IMSI 号码相关联了。或者,如果你换了计划,但使用同一个手机,你在手机中放入新的 SIM 卡,现在该手机就与新的 IMSI 号码相关联了。
IMSI 的前 3 位是移动国家代码,用于识别国家。接下来的 2-3 位是移动网络代码,代表你的服务提供商(例如 Verizon、AT&T)。其余的数字是移动用户识别号码,用于在该服务提供商中识别特定用户。IMSI 总共不能超过 15 位。

请注意,IMSI 与 IP 地址不同。如果你支付了一年的数据计划费用,你全年都保持相同的 IMSI。但是,每次你附着并连接到网络时,你可能会得到不同的 IP 地址。
蜂窝网络中还使用另外两种标识符。它们与 IMSI 不同,我们不会详细介绍。IMEI(国际移动设备识别码)唯一地识别物理设备。IMEI 编码了设备制造商和型号(“这是一部 iPhone 13”),即使你更换数据计划,它也保持不变。或者,如果你有两部手机使用同一个数据计划,你会有两个 IMEI 号码,但只有一个 IMSI。
另一个标识符是你的电话号码。同样,它与 IMSI 或 IMEI 不同,数字代表不同的东西(例如你的区号)。电话网络需要将你的电话号码与特定的 IMSI 相关联,以确定你的电话计划。
注册并收到 IMSI 后,运营商(例如 Verizon)将你的 IMSI 和关于你的计划的信息存储在数据库中。

在注册过程中,用户的设备(SIM 卡)和运营商(数据库)还会协商一个共享密钥。这在我们进行附着时会很有用。
步骤 1:发现
用户设备如何发现范围内有哪些塔,以及哪些塔属于用户的运营商?
每个塔定期发送信标(hello 消息),告诉范围内的所有设备该塔存在。信标消息还包括网络运营商(例如,你好,我是 Verizon 的塔),运营商由 2-3 位的移动网络代码标识。记住,设备的 IMSI(在 SIM 卡上)也有一个移动网络代码,因此设备可以检查:我的 SIM 卡显示我在网络 220 中,而这个塔的信标显示它在网络 220 中,所以我可以使用这个塔。
信标在特定的频率(称为控制信道)上传输,这样信标就不会干扰数据传输。每个频率范围都有其相关联的控制信道。回想一下,相邻的塔有不重叠的频率范围,这也意味着它们有不同的控制信道(避免干扰)。
用户的设备可能会收到许多信标。用户测量到不同塔的信号强度,并选择(属于其运营商的)信号最好的塔。

我们需要解决一个问题。用户的设备如何知道要监听哪个控制信道?设备需要调谐到控制信道才能接收到信标。这就有一个引导问题。
有几种解决这个问题的方法。设备可以扫描并尝试多个频率(速度慢,但有时是唯一的选择)。运营商可能在注册期间给设备一个预配置的控制信道列表。设备也可以缓存以前使用过的信道。
请注意,发现后不需要再扫描后续的塔。在切换过程中,旧塔会确切地告诉用户在新塔上使用哪个数据频率。这就是为什么切换(约 0.01-0.1 秒)比发现期间的扫描(约 10-100 秒)快得多的原因。
步骤 2:附着
-
一旦用户发现了一个塔,就向该塔发送附着请求。用户在请求中包含其 IMSI(用户 ID)。
-
然后,塔必须将请求发送给实际处理请求的移动性管理器。
-
管理器在数据库中查找 IMSI,以了解用户服务计划的详细信息。管理器还使用设备和管理器(在其数据库中)已知的密钥进行认证(加密细节省略)。
如果认证成功,我们就知道用户确实是他们所说的那个人。如果数据库查找还显示用户有资格获得服务,那么管理器就会批准附着请求。

- 附着请求被批准后,移动性管理器现在必须配置数据平面,为用户提供连接。首先,管理器为设备分配一个 IP 地址。然后,管理器配置塔,告诉塔的无线电控制器为该用户分配多少资源。管理器还配置塔和路由器,以创建设备和互联网之间的路径。最后,管理器初始化计数器和整形器,以跟踪设备的互联网使用情况。
在设置好用户的连接后,管理器最后会在数据库中记录用户的位置信息。具体来说,数据库将用户的 IMSI 映射到其 IP 地址和所使用的路径(哪个塔、哪个网关)。

请注意,整个附着过程是通过控制信道进行的。我们还没有为用户分配任何频率,因此用户必须使用专用的控制信道进行通信。

步骤 3:数据交换
此时,网络已配置好,设备可以使用其 IP 地址发送和接收消息。

蜂窝网络(塔、无线电网关、塔网关)如何知道如何转发分组?用户在不断移动,因此如果我们运行像距离矢量这样的传统路由算法,路由永远不会收敛。
相反,管理器将使用隧道在设备和互联网之间创建路径。记住,分组的路径是从设备到塔,再到无线电网关,然后到分组网关。
从概念上讲,为了实现隧道,我们会告诉塔:如果你收到来自用户的分组,按这种方式发送(进入蓝色隧道)。在有线链路的另一端,分组将离开蓝色隧道并到达无线电网关。然后我们会告诉无线电网关:如果你收到从隧道出来的分组,按这种方式发送(进入绿色隧道)。分组然后通过绿色隧道传输并到达分组网关,分组网关可以将分组转发到互联网。

传入的分组也通过隧道传输。我们告诉分组网关:如果你收到发往用户 A 的分组,将其发送到绿色隧道(朝向无线电网关)。我们还告诉无线电网关:如果你收到从绿色隧道出来的分组,将其发送到蓝色隧道(朝向塔)。
请注意,没有任何网络组件运行路由协议来查找路径。相反,管理器告诉路由器如何转发分组。每个用户需要自己的一组隧道,因此网络存储着每个用户的状态(例如,每个连接的用户有一个表项)。
我们实际上如何实现这些规则?例如,无线电网关如何知道传入的分组是从蓝色隧道出来的?我们可以使用封装。进入隧道时,我们可以添加一个新的头部,指示该分组正在通过该隧道传输(例如,“这个分组正在通过蓝色隧道传输”)。在另一端,当分组离开隧道时,网关查看额外的头部,就知道该分组来自哪个隧道。然后网关可以使用此信息决定下一步将分组转发到哪里。

请注意,通过隧道和封装,路由器从不根据用户的 IP 进行转发。用户一直在移动,因此我们不能使用他们的 IP 来确定他们的位置。相反,我们必须使用这些预先配置的隧道来决定将分组转发到哪里。
步骤 4:切换
如果用户从一个塔移动到另一个塔,会发生什么?让我们看一个(稍微简化的)协议。我们将这两个塔称为旧塔和新塔,用户从旧塔移动到新塔。

-
你的设备不断测量其到旧塔的信号强度,并向旧塔报告该强度。在某个时刻,旧塔会说:你的信号强度太低了。这里有一些附近的塔(属于同一运营商)及其相应的控制信道频率。你能测量一下到这些附近塔的信号强度吗?
-
你的设备测量到附近塔的信号强度,并将这些值报告给旧塔。旧塔将根据运营商的任何政策选择最佳的新塔。
-
旧塔告诉新塔:用户要过来了。这会导致新塔为用户分配一些频率资源。
-
新塔告诉旧塔已分配了哪些频率资源。
-
旧塔告诉用户:使用这些频率连接到新塔。
-
新塔向移动性管理器报告:我是该用户的新塔。管理器在其数据库中更新用户的新位置。管理器还更新隧道,以创建用户和互联网之间的新路径(通过新塔,也可能通过新的无线电网关和分组网关)。
-
最后,新塔告诉旧塔切换完成。
为什么切换过程如此复杂?记住,我们希望为用户提供无缝通信,在他们在塔之间移动时不中断。这需要用户、旧塔和新塔、移动性管理器以及网关之间的协作。
无缝通信很困难,因为切换过程不是原子性的。用户在切换进行时仍在发送和接收数据。例如,回复用户的外部服务器可能已经向旧塔发送了一堆传入的分组。在切换期间,旧塔继续缓冲它收到的该用户的任何数据。切换后,旧塔可以将缓冲的数据发送到新塔,新塔再将这些数据转发给用户。请注意,传统的 TCP/IP 网络不需要这样缓冲数据。这种缓冲是为用户移动时的无缝切换而添加的新功能。
请注意,切换过程中的决策始终由运营商做出。设备不能选择下一个要使用的塔。这种设计的好处是,它给了运营商更多的控制权。例如,如果一个塔过载,运营商可以进行负载均衡,将用户发送到另一个塔。或者,如果某些用户比其他用户有更高的优先级,运营商可以将优先级较低的用户发送到较差的塔。这种设计的缺点是,它有点慢,需要更多的往返和更复杂的操作。
请注意,在切换过程中,用户的 IP 地址保持不变。我们只是更新了隧道,以便发往用户 IP 的分组通过不同的路径传输。
切换很复杂,需要更新网络中的每个用户状态。如果用户数量增加,或者用户移动速度非常快,这个协议会遇到扩展挑战。然而,现代蜂窝网络在规模上运行得相当好,因为已经有大量工作投入到优化这些协议中。这就是为什么标准规范通常长达数千页的原因!
漫游
回想一下,如果用户在另一个国家(或其自己的运营商没有覆盖的任何地方)访问,他们可以漫游并连接到不同的网络。
在访问网络中的连接过程(发现、附着、切换)通常与在归属网络中连接非常相似。主要区别在于,访问网络中的移动性管理器必须与归属网络中的移动性管理器进行通信。
例如,访问方需要向归属方请求帮助来认证用户(检查用户是否已支付漫游费用)。此外,访问方需要向归属网络发送跟踪数据,以便归属网络知道用户的位置。
访问方如何知道归属网络在哪里?记住,在附着期间,设备会提供其 IMSI,而 IMSI 包含识别用户运营商的移动网络代码。
有两种不同的方法来建立用户和互联网之间的隧道。
在归属路由方法中,流量通过归属网络的分组网关进行隧道传输。这意味着所有分组必须从访问网络传输回归属网络,然后才能转发到更广泛的互联网。这很有利,因为它允许归属网络的分组网关跟踪用户。一个缺点是,如果你是美国用户,在德国漫游,并且想要访问德国的网站,你的分组必须从德国传输回美国网关,然后再回到德国。

在本地 breakout 方法中,流量通过访问网络的分组网关进行隧道传输。这可以缩短用户和互联网之间的路径,因为分组不必首先传输到归属网络。然而,这会使用户使用情况的计费变得更加复杂,因为漫游网络现在必须进行计费并将数据发送回归属网络。

其他操作
我们已经看到了蜂窝网络中的一些关键操作,但还存在其他操作。
合法拦截是所有蜂窝运营商的法律要求。这允许持有搜查令的政府监听你的连接并查看你发送的分组。
被盗手机登记处允许用户报告他们的手机被盗。然后,如果小偷试图将你被盗的手机连接到网络,运营商(管理器和数据库)会注意到该手机被盗,并可以尝试追踪该手机。在这里,运营商使用 IMEI(硬编码到你手机中的 ID 号)来识别特定手机(无论 IMSI,即用户 ID 如何)。设备在连接时需要报告其 IMEI,以便运营商检查该手机是否被盗。
这些额外的操作之所以成为可能,是因为运营商拥有集中控制权,跟踪所有用户及其位置。
蜂窝网络设计思考
正如我们前面所指出的,与传统互联网相比,蜂窝网络有不同的基本目标和设计选择。例如,我们看到认证和计费是蜂窝网络的核心目标,尽管这些不是传统互联网的目标。我们还看到,分配是基于预留的,网络维护着动态变化的每个用户的状态。
使用有状态的基于预留的网络增加了网络的复杂性。各种组件必须随着用户的移动不断重新配置隧道。
让我们思考一些可能的替代设计。回想一下,切换很复杂,因为我们希望用户在移动时保持相同的 IP 地址。如果我们在每次切换时更改用户的 IP 地址会怎样?现在,IP 地址实际上反映了用户的位置,我们可以再次使用传统的路由协议。然而,像 TCP 和 HTTP 这样的高层协议将会崩溃。记住,TCP 依赖于两个连接的用户保持相同的 IP 地址。
使用相同的 IP 地址会增加复杂性,但更改 IP 地址会破坏 TCP。一种可能的解决方案是使用允许更改 IP 地址的不同传输层协议,例如 QUIC(由谷歌开发)。然后,即使 IP 地址在变化,我们也可以使用 IPv6 头部中的流标签字段来标记流中的所有分组。
(注:文档部分内容可能由 AI 生成)