写给互联网工程师的5G书 | 3. 基础架构

早就想写一个系列,给互联网行业的朋友介绍一下移动通信网络,特别是5G移动通信系统,但一直没想好怎么写。最近看到ONF发布的开源书《5G Mobile Networks:A Systems Approach》,其目标读者正是互联网从业者,因此打算将全书翻译为中文,希望能让有兴趣的朋友们能够了解移动通信网络的一些基本概念、网络架构和演进方向。原文:5G Mobile Networks: A Systems Approach[1]。中文版Github仓库:https://github.com/yuff100/5GSystemApproachCHN

3. 基础架构(Basic Architecture)

本章介绍移动接入网的主要架构组件,着重于4G和5G共同的组件,为理解后面章节中介绍的5G高级特性奠定基础。

本书主要是概要性的介绍3GPP中的术语,对于熟悉互联网的人来说,这些术语可能看起来很随意(例如,“eNB”是一个“基站”),但重要的是要记住,这个术语来自于3GPP标准化的过程,它始终关注电信领域,几乎完全与IETF和其他互联网相关组织没有联系。更让人困惑的是,3GPP的术语常常随着每一代的变化而变化(例如,在4G中一个基站被称为eNB,在5G中被称为gNB)。我们通过使用通用术语(例如基站)来解决这种问题,并仅在需要区分时引用特定的3GPP的对应术语。

延伸阅读
这个例子只是术语的冰山一角。关于5G术语的复杂性,请参阅Marcin Dryjanski 2018年7月的文章:《LTE和5G差异:系统复杂性(LTE and 5G Differences: System Complexity)》[2]

3.1. 主要组件

蜂窝网络为移动中的设备提供无线连接,这些设备被称为*UE(User Equipment,用户设备),传统上与智能手机和平板电脑相对应,但将越来越多地包括汽车、无人机、工农业机械、机器人、家用电器、医疗设备等。

图6. 蜂窝网络由无线接入网(RAN)和移动核心网组成。

如图6所示,蜂窝网络由两个主要的子系统组成:RAN(Radio Access Networks,无线接入网)移动核心网(Mobile Core)。RAN管理无线电频谱,确保其得到有效利用,并满足每个用户的服务质量要求,它体现为一组分布式的基站集合。如上所述,在4G中,这些节点被命名为eNodeB(或eNB),这是evolved Node B的缩写。在5G中,它们被称为gNB(g代表“下一代,next Generation”)。

移动核心网不是一个单独的设备,而是一组功能的集合,为多个目的服务:

  • 为数据和语音服务提供互联网(IP)连接。
  • 确保连接性满足承诺的QoS要求。
  • 跟踪用户移动性,确保服务不中断。
  • 跟踪用户的使用情况以进行计费和收费。

注意,移动核心网是另一个通用术语。在4G中被称为EPC(Evolved Packet Core,演进的分组核心网),在5G中被称为*NG-Core(Next Generation Core,下一代核心网,另一个更常用的术语是5GC)。

尽管其名称中有“核心”一词,但从互联网的角度来看,移动核心网仍然是接入网的一部分,作为一座高效的桥梁,将某个区域的RAN和更大的基于IP的互联网连接了起来。3GPP在移动核心网的部署位置方面提供了很大的灵活性,但对于我们的目的来说,可以假设每个移动核心网都服务于一个大的城市区,相应的RAN将包括几十个(甚至数百个)手机发射塔。

仔细看一下图6,我们可以看到一个回传网络(Backhaul Network)将基站与移动核心网连接起来。这个网络通常是有线的,可能有也可能没有图中所示的环形拓扑,通常是由其他商用组件构建。例如,实现光纤到户的PON(Passive Optical Network,无源光网络)是实现RAN回传的首选。回传网络显然是RAN的必要组成部分,但它只是实现选择之一,并不是3GPP标准所规定的。

尽管3GPP在一个开放标准中指定了实现RAN和移动核心网的所有要素(包括我们还没有引入的子层),但网络运营商在历史上习惯于从单个供应商手中购买每个子系统的专有实现。缺乏开源实现导致蜂窝网络普遍“不透明”,RAN尤其如此。虽然eNodeB的实现确实包含了在无线电频谱上调度传输的复杂算法(这些算法被认为是设备供应商的宝贵知识产权),但同时开放和解耦RAN和移动核心网的机会还是很大的。下面两个章节将依次介绍这两个部分。

在进入这些细节之前,图7重新绘制了图6中的组件,以突出两个重要的区别。首先,一个基站有一个模拟组件(由天线表示)和一个数字组件(由一对处理器表示)。其次,移动核心网被划分为控制面(Control Plane)用户面(User Plane),这类似于熟悉互联网的人所理解的控制/数据平面。(3GPP最近引入了一个对应的缩写——CUPS, Control and User Plane Separation——来表示这个想法。)在接下来的讨论中,我们将解释这两个区别的重要性。

图7. 移动核心网分为控制面和用户面,这是一个被称为CUPS的架构:控制和用户平面分离

3.2. 无线接入网(Radio Access Network)

接下来,我们通过介绍每个基站所扮演的角色来描述RAN。请记住,这有点像通过解释路由器的工作原理来描述互联网——这是一个合适的起点,但并没有完全覆盖端到端的所有场景。

首先,每个基站在用户的UE通电以后,或者说当UE处于活跃状态时,为其建立无线信道。如果UE在一段时间内保持空闲状态,此通道将被释放。在3GPP的术语里,这个无线信道提供承载服务(bearer service)。术语“承载(bearer)”历来被电信行业(包括早期的有线技术,如ISDN)用来表示数据通道,而不是承载信令信息的通道。

图8. 基站检测(并连接)活跃UE。

其次,每个基站在UE和对应的移动核心网控制面组件之间建立“3GPP控制面”连接,并在两者之间转发信令流量。该信令流量支持UE认证、注册和移动性跟踪。

图9. 基站在每个UE和移动核心网之间建立控制平面连接。

第三,对于每个活跃UE,基站在相应的移动核心网用户面组件之间建立一个或多个隧道。

图10. 基站在每个UE和移动核心网用户面之间建立一个或多个隧道。

第四,基站在移动核心网和UE之间转发控制和用户平面数据包。这些数据包分别通过SCTP/IP和GTP/UDP/IP进行隧道传输。SCTP(Stream Control Transport Protocol,流控制传输协议)是替代TCP的可靠传输协议,专门用于为电话服务传送信令(控制)信息。GTP(General Packet Radio Service Tunneling Protocol,通用分组无线电服务隧道协议)是3GPP定义的基于UDP的隧道协议。

另外,值得注意的是,RAN和移动核心网之间的连接是基于IP的。这是从3G到4G的主要变化之一。在4G之前,蜂窝网络的内部是基于电路传输的。这也很好理解,因为它最初就是一个电话网络。

图11. 基站到移动核心网(以及基站到基站)的控制面通过SCTP/IP隧道传输,用户面通过GTP/UDP/IP隧道传输。

第五,每个基站利用直连的站到站链路与相邻基站协调UE切换。和上图所示的基站到核心网的链接一样,这些链路用于传输控制面(SCTP over IP)和用户面(GTP over UDP/IP)数据包。

图12. 基站配合完成UE切换。

第六,基站协调从多个基站向一个UE进行无线多点传输,该流程也许是UE切换的一部分,也可能不是。

图13. 基站之间相互协作,实现到UE的多径传输(链路聚合)。

通过上面的介绍,我们可以看到,基站基本上可以被视为一个专门的转发器。在网络到UE的方向上,基站把即将发送的IP包封装为物理层分片,将其调度到可用的无线频谱上进行传输。在UE到网络的方向上,基站把物理层分片组装为IP包,通过GTP / UDP / IP隧道发送到的上游移动核心网用户面。此外,基站根据观测到的无线信道质量和用户策略,决定(a)直接将数据包转发给UE,还是(b)通过相邻基站间接转发给UE,或者(c)利用多径传输到达UE。第三种情况可以选择将物理负载分散到多个基站或者单个基站的多个载波频率(包括Wi-Fi)上。

请注意,正如第二章无线传输所述,调度是复杂的,需要考虑很多情况,甚至在做出只会影响到单个基站的决策时也是一样。 我们现在看到,还需要考虑全局因素,需要决策是否将流量转发到不同的(多个)基站,从而在更大的地理区域内有效利用频谱资源。

换句话说,RAN作为一个整体(即不仅仅是单个的基站),不仅支持切换(移动性的显著要求),而且还支持链接聚合( link aggregation)负载均衡(load balancing),这些机制对任何理解互联网的人来说都很熟悉。我们将在后面的章节中重新讨论如何利用SDN技术来做出这种RAN级别(全局)的决策。

3.3. 移动核心网(Mobile Core)

移动核心网的主要功能是向移动用户提供数据网络(即互联网)连接,同时确保验证用户身份,以及保证他们体验到的服务质量满足承诺的SLA。移动核心网通过追踪所有用户在基站粒度上的最后位置来管理用户的移动性,这是移动核心网的一个重要功能。事实上,为了追踪个人用户的移动(而这是互联网做不到的),使得移动核心网架构非常复杂。

当我们从4G迁移到5G时,总体功能基本保持不变,变化的是相关功能如何被虚拟化和以及解耦。5G移动核心网在很大程度上受到了云计算向微服务(云原生)架构演进的影响。由于向云原生的演进打开了定制化的大门,使得这种转变比最初看起来要深刻的多。5G移动核心网不仅支持语音和宽带连接,还可以发展到支持海量物联网。海量物联网具有完全不同的延迟需求和使用模式(即更多设备的间歇性连接),这就需要用一种会话管理方案适配多种业务模型。

4G移动核心网

4G移动核心网在3GPP的官方名称是EPC(Evolved Packet Core),由五个主要组件组成,前三个在控制面(CP)运行,后两个在用户面(UP)运行。

  • MME(Mobility Management Entity,移动性管理实体):在RAN中跟踪和管理终端的移动,包括记录终端何时停止活动。
  • HSS(Home Subscriber Server,归属用户服务器):包含所有注册用户相关信息的数据库。
  • PCRF(Policy & Charging Rules Function,策略与计费规则功能单元):跟踪和管理策略规则,记录用户流量的计费数据。
  • SGW(Serving Gateway,服务网关):负责转发与RAN之间的IP报文。将承载服务的移动核心网锚定到(可能是移动的)UE,涉及从一个基站到另一个基站的切换。
  • PGW(PDN(Packet Data Network) Gateway,PDN网关):本质上是一个IP路由器,将移动核心网连接到外部互联网。支持附加的访问相关功能,包括策略执行、流量整形和计费。

虽然面向RAN的SGW和面向互联网的PGW被定义为不同的组件,但在实践中,它们通常被组合在一个设备中,被称为S/PGW。最终结果如图14所示。

图14. 4G移动核心网(EPC)。

请注意,3GPP在如何部署移动核心网组件以服务于某个地理区域方面保持了灵活开放的态度。例如,一组MME/PGW可能为一个城市提供服务,SGW部署在遍布整个城市的大约10个边缘站点上,每个站点为大约100个基站提供服务。但是规范并没有限定部署配置,可以自行选择。

5G移动核心网

5G移动核心网(3GPP称之为NG-Core)采用了类似微服务的架构,之所以称之为“类似微服务”,是因为尽管3GPP规范分解了这一层次的功能,但实际上只是规定了一组功能模块,而不涉及实现。一组功能模块与设计一个基于微服务的系统的工程决策是完全不同的。换句话说,可以将图15中所示的组件集合视为一组微服务,这是一个不错的工作模型。

下面将功能模块组织为三组。第一组是控制面(CP)功能,在EPC中有对应模块。

  • AMF(Core Access and Mobility Management Function,接入和移动管理功能):负责连接和可达性管理、移动管理、接入认证和授权、位置服务,提供EPC中MME的移动性管理功能。
  • SMF(Session Management Function,会话管理功能):管理UE会话,包括IP地址分配、选择关联的UPF、QoS控制、UP路由控制,大致对应于EPC中MME的部分功能以及PGW的控制相关功能。
  • PCF(Policy Control Function,策略控制功能):管理其他控制面功能的策略规则,大致相当于EPC的PCRF。
  • UDM(Unified Data Management,统一数据管理功能):管理用户身份信息,生成鉴权证书,实现EPC中HSS的部分功能。
  • AUSF(Authentication Server Function,鉴权服务功能):本质上是一个鉴权服务器,实现EPC中HSS的部分功能。

第二组也是控制面(CP)功能,但在EPC中没有直接对应的模块:

  • SDSF(Structured Data Storage Network Function,结构化数据存储网络功能):用于存储结构化数据的辅助服务,可以通过在微服务系统中部署SQL数据库实现。
  • UDSF(Unstructured Data Storage Network Function,非结构化数据存储网络功能):用于存储非结构化数据的辅助服务,可以通过在微服务系统中部署“键/值存储”来实现。
  • NEF(Network Exposure Function,网络开放功能):向第三方服务开放指定功能,包括内外部数据的转换,可以在微服务系统中通过“API服务器”实现。
  • NRF(NF Repository Function,网络存储功能):用于发现可用服务,可以通过在微服务系统中部署“发现服务”来实现。
  • NSSF(Network Slicing Selector Function,网络切片选择功能):为服务特定UE选择服务的网络切片。切片是5G的一个关键特性,本质上是一种划分网络资源的方法,用以给不同的用户提供不同的服务,我们将在后面的章节中深入讨论。

第三组是用户面(UP)功能组件:

  • UPF(User Plane Function,用户面功能):转发RAN与互联网之间的流量,对应EPC中的S/PGW组合。除报文转发外,UPF还负责策略执行、合法监听、流量使用报告和QoS策略。

其中,第一组和第三组可以被看作是对4G EPC的直接重构,而第二组是3GPP将云原生解决方案作为移动核心网解决方案的路径。需要特别注意的是,引入不同的存储服务意味着所有其他服务都可以是无状态的,可以更容易的支持伸缩。还要注意,图15采用了在基于微服务的系统中常见的思想,即显示连接所有组件的消息总线(message bus),而不是一组组成对的连接,这相当于提供了一个易于理解的建议实现策略。

图15. 5G移动核心(NG-Core)。

撇开这些细节不谈,需要注意的是,我们可以将移动核心网定义为一组服务,被称为服务依赖图(Service Graph)服务链(Service Chain),后者在面向NFV的文档中更为普遍。还有另一个在云原生架构中有特殊含义的类似的专有名词,服务网格(Service Mesh),我们将避免重用这个术语。3GPP在特定的专有名词上没有倾向性,因为这被认为是一种实现选择,而不是规范的一部分。我们将在后面的章节中介绍我们的实现选择。

3.4. 安全性与移动性(Security and Mobility)

接下来我们将仔细考虑蜂窝网络的两个独特特性——对安全性和移动性的支持——这两个特性将蜂窝网络与WiFi区分了开来。下面提供了关于每个终端如何连接到网络的一些细节。

我们从安全体系架构开始,它基于两个信任假设。首先,每个基站都相信它通过一个安全的私有网络连接到移动核心网,在这个网络上它建立了如图11所示的隧道:一个到核心网用户面(Core-UP)的GTP/UDP/IP隧道和一个到核心网控制面(Core-CP)的SCTP/IP隧道。其次,每个UE都有一个运营商提供的SIM卡,它是用户的唯一标识(即电话号码),并确定与该运营商的基站通信所需的无线电参数(如频段)。SIM卡还包括一个密钥,终端用它来对自己进行认证。

图16. 建立安全的控制面/用户面通道的步骤。

以此为起点,图16显示了每个UE的连接步骤。当UE刚开机时,它通过临时(未认证的)无线电链路与附近的基站通信(步骤1)。基站通过现有隧道将请求转发给Core-CP,Core-CP(具体来说,是4G中的MME和5G中的AMF)根据协议对UE发起认证过程(步骤2)。3GPP定义了一组用于身份验证和加密的选项,具体使用哪种实际协议是一个实现选择。例如,AES(Advanced Encryption Standard,高级加密标准)是加密的选项之一。请注意,由于基站到UE的链路还不安全,因此这种身份验证交换最初是明文的。

一旦UE和Core-CP认可了彼此的身份,Core-CP将会把为该UE提供服务需要的参数发送给其他组件(步骤3)。包括:(a)指示Core-UP初始化用户面(例如,为UE分配一个IP地址并设置适当的QCI参数);(b)指示基站建立通往UE的加密通道;(c)给UE提供对称密钥,它需要用来与基站建立加密通道。对称密钥使用终端的公钥进行加密(因此只有终端可以使用其秘钥解密)。一旦完成,终端就可以通过Core-UP使用端到端用户面通道传输数据(步骤4)。

关于这个过程有三个额外的细节需要注意。首先,在步骤2中建立的UE和Core-CP之间的安全控制通道仍然可用,并由Core-CP用来在会话过程中向UE发送额外的控制信令。

第二,在步骤4中建立的用户面通道被称为默认承载服务(Default Bearer Service),还可以在UE和Core-UP之间建立额外的通道,每个通道都可以有不同的QCI值。不同的应用可能会有不同的值,例如,在移动核心网控制下对流量进行DPI(Deep Packet Inspection,深度包检测), 寻找需要特殊处理的流。

图17. 端到端用户面通道中涉及的逐跳隧道。

第三,虽然最终的用户面通道在逻辑上是端到端的,但每个通道实际上都是作为一系列逐跳隧道实现的,如图17所示(图中为4G移动核心网的SGW和PGW)。这意味着对于给定的UE来说,端到端路径上的每个组件都会通过一个本地标识符来终止下游隧道,并用第二个本地标识符来启动上游隧道。在实践中,每个流的通道通常被绑定到单个组件间的通道中,这就造成无法区分任何特定的端到端UE通道的服务级别。这是4G的一个限制,5G雄心勃勃的想要纠正这个限制。

对移动性的支持可以理解为当UE在RAN中移动时,重新执行图16中所示的一个或多个步骤的过程。由(1)表示的未经认证的链路允许UE被覆盖范围内的所有基站所发现。(在后面的章节中,我们将这些链接称为潜在链接(potential links)。)各基站之间直接通信,并根据测量到的信号CQI做出切换决策。一旦做出决定,该决定将被发送给移动核心网,重新触发(3)所示的设置功能,进而重建如图17所示的基站和SGW之间(或5G中基站和UPF之间)的用户面隧道。蜂窝网络最独特的特点之一是,移动核心网的用户面(如5G中的UPF)在切换过渡期间将会缓存数据,以避免丢包和随后的端到端重传。

换句话说,在UE移动的时候,蜂窝网络会保持UE会话(UE session)(对应于图16的步骤2和步骤4),但只有在移动核心网没有变化的时候才能做到这一点(即只有基站的切换)。这通常是在城市内移动的UE的情况,而跨城市的移动(移动核心网需要切换)与UE重启没有什么区别。UE会被分配一个新的IP地址,并且不会试图缓存并在随后再次发送传输中的数据。另外,和移动性无关,但与本讨论相关的是,任何在一段时间内处于非活动状态的终端的会话也会丢失,只有当终端再次处于活动状态时,才会建立新的会话并分配新的IP地址。

注意,这种基于会话的方法可以追溯到蜂窝网络的源头,即面向连接的网络。一个有趣的思考实验是,移动核心网是否会继续发展,以便更好的匹配运行在其上的,通常会假设为无连接状态的互联网协议。

3.5. 部署选项(Deployment Options)

随着移动网络已经部署了4G RAN/EPC,在部署新的5G RAN/NG-Core的过程中,我们不能忽视从4G向5G过渡的问题(IP世界已经为这个问题努力了20年)。3GPP正式发布了多个部署选项,可以总结如下:

  • 独立4G /独立5G
  • 基于4G EPC的非独立(4G+5G RAN)部署
  • 基于5G NG-Core的非独立(4G+5G RAN)部署

三种选项中的第二种,通常被称为“NSA”,涉及在给定的地理区域内,在现有4G基站的基础上部署5G基站,以提升速率和容量。在NSA中,用户设备与4G移动核心网之间的控制面流量利用(即通过)4G基站进行转发,而5G基站仅用于承载用户流量。最终,运营商将部署NG Core,并将5G基站连接到NG Core以实现独立(SA)运营,从而完成向5G的迁移。图18展示了NSA和SA操作。

图18. NSA和SA 5G部署选项。

我们需要注意这个分阶段演进问题的一个原因是,在接下来的章节中我们将面临类似的挑战。为了在下面的讨论中接近实现的细节,我们必须更具体地说明是在使用4G组件还是5G组件。作为一般规则,我们将使用4G移动核心网组件,因为我们有可用的开源代码。不过我们相信读者可以做出适当的替代,而不丧失其通用性。和其他行业一样,开源社区也在逐步进行将4G代码库演进为5G兼容版本代码库的工作。

延伸阅读
要了解更多关于4G到5G演进策略的信息,请参阅GSMA 2018年4月发布的报告:《迈向5G之路:介绍和演进》[3]

Reference:
[1] https://5g.systemsapproach.org/index.html
[2] https://www.grandmetric.com/blog/2018/07/14/lte-and-5g-differences-system-complexity/
[3] https://www.gsma.com/futurenetworks/wp-content/uploads/2018/04/Road-to-5G-Introduction-and-Migration_FINAL.pdf

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术总监,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容