路由-如何从设备出发(二)——蜂窝层面 蜂窝网络 PDP 激活完整流程CPE路由器场景重新梳理三个完全独立的IP网段在这个场景中存在三个互不冲突的IP层核心网层运营商内部PGW用10.1.1.1和核心网设备MME/SGW通信。接入网层CPE的WAN口PGW分配给CPE的WAN口IP如10.10.10.10这也是私网IP但和核心网内部IP段隔离。用户层CPE的LAN口CPE自己通过DHCP分配给手机的IP如192.168.1.100网关是192.168.1.1CPE自己。正确的完整流程表环节家用宽带场景蜂窝移动网络场景CPE路由器分配的IP作用说明物理身份确认光猫注册LOIDCPE入网Attach无IP验证SIM卡/设备合法性运营商上层网关运营商的BRAS设备核心网PGW10.1.1.1内部IP203.0.113.100公网IPPGW自身身份公网出口给终端设备分配IP运营商BRAS给路由器WAN口分配公网IPPGW给CPE的WAN口分配IP10.10.10.10这是CPE的“外网IP”通常也是运营商私网IP用户内部组网路由器LAN口开启DHCPCPE的LAN口开启DHCP192.168.1.100网关192.168.1.1手机/电脑的IPCPE作为网关第一次NAT路由器手机IP → WAN口IPCPE做NAT手机IP → CPE的WAN口IP192.168.1.100→10.10.10.10内部流量汇聚到CPE的外网口第二次NAT关键无WAN口通常已是公网IPPGW做NATCPE WAN口IP → PGW的公网出口IP10.10.10.10→203.0.113.100运营商私网转公网进入互联网数据包的完整旅程以你的IP为例手机上网手机192.168.1.100访问百度数据包发往网关192.168.1.1即CPE。第一次NATCPE做CPE路由器将源IP从192.168.1.100改为自己的WAN口IP10.10.10.10发往PGW。PGW接收PGW收到源IP为10.10.10.10的包。第二次NATPGW做PGW发现10.10.10.10是私网IP再次将源IP改为自己的公网出口IP203.0.113.100发往百度。百度响应百度回包给203.0.113.100。PGW反向NATPGW查找记录将目标IP从203.0.113.100改回10.10.10.10发回CPE。CPE反向NATCPE查找记录将目标IP从10.10.10.10改回192.168.1.100手机收到网页。为什么你的理解是对的CPE的WAN口IP10.10.10.10和手机IP192.168.1.100肯定不同网段—— 这由CPE的NAT隔离。CPE的网关192.168.1.1是它自己—— 没错手机的路由下一跳就是CPE。CPE的WAN口IP10.10.10.10的网关是PGW—— 在CPE的路由表中默认网关指向PGW的隧道端点。最终结论PGW的IP10.1.1.1内部通信和203.0.113.100公网出口。PGW分配给CPE的IP10.10.10.10CPE的WAN口地址也是运营商的私网地址。CPE分配给手机的IP192.168.1.100家庭局域网地址。这三者完全不同且通过两层NAT进行转换。你的理解完全正确之前的表格是我简化失误感谢你的指正10.1.1.1内部IP在这个过程中起的什么作用那10.1.1.1内部IP在这个过程中起的什么作用是因为apn对应10.1.1.1内部IP用于核心网转发数据到PGW吗非常精准的追问你捕捉到了移动核心网中最核心的“信令与数据分离”机制。直接回答你的问题是的但又不完全是。10.1.1.1的确是因为APN解析后找到的PGW地址但它的主要作用不是用来“转发用户数据”而是用来“建立数据转发的通道隧道”。为了把这个“看不见”的内部IP讲清楚我们把控制面信令和用户面数据拆开来看。10.1.1.1这个IP在“建通道”和“走数据”时扮演的角色完全不同。1. 控制面信令10.1.1.1 是“施工队总部”在建立连接阶段10.1.1.1是MME控制中心用来找PGW施工队的地址。动作MME 解析 APNinternet得到 PGW 的 IP 是10.1.1.1。通信MME 给10.1.1.1PGW发一条指令“有个用户CPE要上网请准备好资源。”作用这个阶段的10.1.1.1仅用于信令交互握手、协商不传输任何用户的上网数据。类比你要搬家先给搬家公司总部10.1.1.1打电话。客服MME确认订单后告诉你有辆卡车会过来。你打电话用的号码就是10.1.1.1但真正的家具用户数据不是通过打电话传过去的。2. 用户面数据10.1.1.1 是“数据高速公路入口”当通道建立完成后10.1.1.1变身为GTP隧道GTP-U的终点。通信基站/SGW 把 CPE 的数据包源IP是10.10.10.10塞进一个“GTP信封”里信封上写的收件地址就是10.1.1.1。作用核心网内部的交换机看到信封上是10.1.1.1就知道这是发给 PGW 的数据包于是把整个信封交给 PGW。关键点核心网内部的交换机和路由器根本不看信封里装的是什么CPE的私网IP10.10.10.10它们只负责把信封装的信送到10.1.1.1这个地址。类比搬家公司给你配了一辆专属货车GTP隧道。货车司机的导航目的地就是仓库地址10.1.1.1。司机只管把车开到这个仓库PGW至于你车上拉的是沙发还是冰箱CPE的数据司机完全不关心。3. 你的误解澄清数据不是靠“路由”过去的你可能会想“核心网不是有个路由表把数据包一步步路由到10.1.1.1吗”不是的。如果按普通的IP路由10.1.1.1只是一个节点。但这里的关键技术是GTP隧道GPRS Tunneling Protocol普通路由IP Routing路由器看数据包的“目的IP”决定下一跳。 这在核心网内部不用来传用户数据GTP隧道数据包外面套了一层新IP头新IP头的目的地址就是10.1.1.1。核心网交换机只看这层新IP头把整个包裹扔给 PGWPGW 拆开包裹才露出里面的用户数据10.10.10.10。4. 重新绘制的完整拓扑加入 10.1.1.1 的角色步骤发送方接收方地址数据包里装的是什么10.1.1.1 的角色1. 建通道MME10.1.1.1PGW信令指令“建立会话”施工队总部用于协商2. 传数据基站/SGW10.1.1.1PGWGTP信封 内部用户数据GTP隧道终点数据入口3. 解包NATPGW内部从信封取出10.10.10.10用户真实数据包CPE访问百度拆包工解封装后丢弃信封5. 为什么不能让数据包直接用 10.1.1.1 路由如果数据包在核心网直接用10.1.1.1作为目的IP路由会遇到两个致命问题隧道丢失核心网不知道这个数据包是属于哪个用户的缺少TEID隧道标识。计费丢失SGSN/SGW 必须看到GTP头才能统计流量并计费。最终结论10.1.1.1是APN解析出的PGW核心网内部地址它的作用分为两个阶段信令阶段作为 MME 找到 PGW 的“导航地址”用来建立用户会话QoS、计费规则。数据阶段作为GTP隧道的终点地址确保 CPE 的数据包10.10.10.10能通过隧道安全到达 PGW而不被核心网当作垃圾丢弃。一句话总结10.1.1.1不是让数据包“路由”过去的而是让数据包“封装”进隧道里快递过去的。它本质上是一个“隧道终点快递柜”而不是一个普通的“导航目的地”。MME 通过DNS解析 APN动作MME 解析 APNinternet得到 PGW 的 IP 是 10.1.1.1。这是DNS解析吗为什么是局域网地址局域网地址是DNS解析得到的吗这个问题问得非常专业直击移动通信核心网和普通IP网络最本质的区别直接回答你的问题是的这是DNS解析但解析的是“专用DNS”而不是我们平时上网用的“公共DNS”。解析出来得到的是核心网内部的“局域网地址”10.x.x.x这是完全正常且符合设计预期的。为了把这个问题彻底讲透我们从三个层次来看1. 为什么MME要解析APN而不是写死PGW IP运营商可能有成百上千个PGW分布在全国各地。如果写死用户从北京跑到上海还得绕回北京的PGW上网速度会很慢。所以MME需要动态查询用户当前的位置附近哪个PGW最适合承载这个APNinternet。2. 解析APN时用的DNS和手机上网用的DNS是两台完全不同的服务器这是你混淆的关键点。对比项我们平时上网用的DNS核心网内部的DNSENUM DNS谁在用手机/电脑CPE核心网网元MME/SGW解析什么域名如www.baidu.com→ 公网IP如220.181.38.148APN如internet→ PGW的IP如10.1.1.1IP地址范围解析结果是公网IP解析结果是核心网内部IP10.x.x.x配置位置在CPE的配置里如8.8.8.8在MME的配置里运营商自己维护类比你用的DNS相当于你在网上查“故宫的对外游客入口”在哪公网地址。核心网DNS相当于故宫内部员工查“清点文物的工作室”在哪内部地址这个地址只有故宫内部的人才知道外面的人永远找不到。3. 为什么解析结果是“局域网地址”是合理的10.1.1.1虽然是私网地址RFC 1918定义的但在核心网内部它就像公网地址一样是唯一且可达的。普通路由器看到10.x.x.x会认为这是私网地址并丢弃。核心网的路由器MME/SGW/PGW之间的路由器专门配置了路由表知道10.1.1.0/24在哪个机房的哪个机架上。因此DNS返回10.1.1.1对核心网路由器来说就是一条精确的“导航地址”。4. 完整的APN解析过程DNS查询细节当CPE发起PDP激活携带APNinternet时MME内部做了如下步骤构造FQDN完全合格域名MME把internet补全为标准的域名格式internet.apn.epc.mnc001.mcc460.3gppnetwork.org如果用户是中国移动的卡MNC001MCC460发起DNS查询NAPTR记录MME向核心网DNS服务器查询这个FQDN的NAPTR记录目的是拿到PGW的主机名。第二次DNS查询A记录MME再查询这个PGW主机名的A记录。查询结果就是10.1.1.1。5. 如果你在电脑上ping internet绝对找不到10.1.1.1我们来对比一下如果你在自己的电脑上查询internetbash# 你在电脑上CPE执行DNS查询 nslookup internet # 公共DNS如8.8.8.8返回 # 找不到该域名或者返回运营商推送的广告页面地址。 # 你永远得不到 10.1.1.1。为什么因为internet这个域名只有在3GPP标准的专用DNS系统即MME配置的DNS服务器中才有定义在公共互联网的根DNS服务器上根本不存在。6. 最终结论MME解析APN确实是DNS解析但它使用的是核心网专用DNS而不是用户上网用的DNS。DNS返回10.1.1.1是合理的10.1.1.1是PGW在核心网内部的管理地址。核心网内部路由器专门识别10.x.x.x网段所以这个地址在内部是可达的。这个地址对互联网不可见保证了核心网设备的安全不会被外部攻击。一句话总结核心网的DNS系统是一个“内部电话簿”只登记员工的分机号10.x.x.x。当MME查询“internet部门”时电话簿返回分机号10.1.1.1MME就打这个电话给PGW建立连接。你用的手机DNS是公共黄页永远查不到这个内部号码。APN一对多PGW也就是说一个APN会有很多PGW,也就意味着会有很多ip不同的pwg对应不同的ip,核心网选中1距离终端最近的哪一个ip完全正确你总结得非常精准这正是移动核心网中“用户面就近接入”和“负载均衡”的核心设计思想。为了回答你的问题我们把细节再拆解一下让你看清核心网是怎么“选”中那个最近或最合适的IP的。1. 你的理解完全正确一个APN对应很多PGW是的比如中国移动的CMNETAPN在全国各省甚至各市都有部署PGW。不同PGW对应不同IP每个PGW设备都有自己唯一的核心网内部IP比如北京的PGW是10.1.1.1上海的PGW是10.2.2.2。核心网选择最近的MME会尽量选择离用户当前地理位置最近、负载最轻的那一个PGW的IP。2. 核心网是怎么“选”中那个IP的DNS的“智能”之处你可能会想“MME查DNS的时候难道DNS直接返回一堆IP让MME自己选吗”不是的。核心网的DNS比我们平常上网用的DNS要“聪明”得多。它不仅能解析域名还能根据“谁在问”来回答不同答案。这套机制叫做DNS 智能解析基于拓扑的DNS解析。核心网DNS服务器里存的不是一条记录而是一张大表根据MME的IP地址来决定返回哪个PGW的IP。具体流程MME发起查询MME比如它的IP是10.100.1.1向DNS查询internet对应的PGW IP。DNS“查户口”核心网DNS服务器看到查询请求是从10.100.1.1北京机房的MME发来的。DNS内部有一张“拓扑映射表”记录着如果是从北京IP段来的查询 → 返回 北京PGW10.1.1.1如果是从上海IP段来的查询 → 返回 上海PGW10.2.2.2返回就近结果DNS直接返回给北京MME的结果就是10.1.1.1。3. 高级玩法不止看距离还要看“谁更闲”谁建立的GTP隧道传输什么是GTP隧道传输一、直接回答你的问题问题1通道是谁和谁之间的答案是UE你的CPE路由器和 PGW 之间的端到端逻辑通道。物理上通道分段存在UE↔基站↔SGW↔PGW。逻辑上这是一个从你的CPE一直到PGW的“端到端专属隧道”。形象理解你在北京UE给上海的朋友PGW寄一个集装箱。这个集装箱虽然经过卡车、高铁、轮船基站、SGW分段运输但逻辑上这是一个北京到上海的直达专线。问题2隧道是不是MME建立的答案是是的MME 是“总指挥”。MME 不参与数据搬运但全程负责指挥MME 给 SGW 下命令“给这个用户建一条隧道”。SGW 给 PGW 下命令“建立用户面隧道”。隧道参数TEID由 SGW/PGW 生成MME 负责协调和传递。问题3基站怎么知道数据来自哪个CPEMME如何准确发送给PGW答案是通过隧道两端的唯一编号TEID Tunnel Endpoint Identifier隧道端点标识符。这是整个机制的精髓二、隧道建立的核心机制TEID 的作用1. 隧道建立流程text步骤1MME 发号施令 MME → SGW“为这个用户IMSIxxx建立一条隧道” SGW 回复“好的我这端的入口编号叫 TEID-A” SGW → PGW“为这个用户建立一条隧道” PGW 回复“好的我这端的入口编号叫 TEID-B” 步骤2MME 把“门牌号”下发给基站 MME → 基站“这个用户的数据你要送到 SGW 的 TEID-A 门牌号” 基站 → UE“无线通道已准备好” 步骤3关键映射关系建立 基站保存UE-ID ↔ SGW-TEID-A SGW保存TEID-A ↔ TEID-B (对应PGW) PGW保存TEID-B ↔ 用户IP (10.10.10.10)2. 数据包如何被“精准投递”text场景CPE发送数据包给百度 ┌─────────────────────────────────────────────────────────────────────┐ │ 步骤1CPE发出数据包 │ │ │ │ 内部IP包源10.10.10.10 目标220.181.38.148 │ │ 【目标百度服务器】 │ └─────────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────────┐ │ 步骤2基站收到后查找“门牌号” │ │ │ │ 基站查表这个CPE对应的隧道入口 TEID 0x1234 │ │ │ │ 基站把数据**装进信封** │ │ 外层IP源基站IP → 目标SGW IP10.1.1.2 │ │ GTP头TEID 0x1234门牌号 │ │ 内层数据源10.10.10.10 → 目标220.181.38.148 │ └─────────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────────┐ │ 步骤3SGW收到后替换“门牌号” │ │ │ │ SGW查表TEID-0x1234 对应 PGW侧的 TEID0x5678 │ │ │ │ SGW换信封 │ │ 外层IP源SGW IP → 目标PGW IP10.1.1.1 │ │ GTP头TEID 0x5678新的门牌号 │ │ 内层数据不变源10.10.10.10 → 目标220.181.38.148 │ └─────────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────────┐ │ 步骤4PGW收到后根据“门牌号”识别用户 │ │ │ │ PGW查表TEID-0x5678 → 用户IP10.10.10.10 │ │ │ │ PGW拆信封取出内部数据 │ │ 源10.10.10.10 → 目标220.181.38.148 │ │ │ │ PGW执行NAT │ │ 源10.10.10.10 → 203.0.113.100 │ │ 发往互联网 ✅ │ └─────────────────────────────────────────────────────────────────────┘三、回答你的具体问题Q1“是不是建立在MME与PGW之间的”隧道段连接关系说明无线段UE ↔ 基站RRC连接无线资源控制S1-U段基站 ↔ SGWGTP-U隧道TEID由SGW分配S5/S8段SGW ↔ PGWGTP-U隧道TEID由PGW分配逻辑整体UE ↔ PGW端到端的PDN连接所以不是简单的“MME与PGW之间”而是“UE与PGW之间的端到端连接”由多段GTP隧道拼接而成。Q2“MME会把他通过唯一通道发送给PGW”准确地说MME不下发数据数据走用户面。MME告诉基站和SGW“这个用户的数据走哪条通道”通过TEID。基站/SGW根据TEID把数据精准地转发到PGW。每个用户都有自己唯一的TEID组合所以即使成千上万个用户共享同一个基站和SGW数据也不会串线。这就是隧道技术的核心价值。Q3“基站知道数据来自哪个CPE吗”是的基站维护着一张映射表用户标识UE-ID隧道入口TEID目标SGWCPE-AIMSIxxx0x1234SGW-1CPE-BIMSIyyy0x5678SGW-1CPE-CIMSIzzz0x9ABCSGW-2当CPE-A发送数据时基站识别出这个数据来自CPE-A。查表找到对应的TEID0x1234。封装GTP头写入TEID0x1234。发送给SGW-1。SGW收到后只看TEID不看用户标识直接转发给对应的PGW。四、最终结论你提出的关键问题总结如下text┌─────────────────────────────────────────────────────────────────────┐ │ Q1通道是谁和谁之间的 │ │ A1逻辑上是 UECPE和 PGW 之间的端到端连接。 │ │ 物理上由 3段GTP隧道拼接而成。 │ │ │ │ Q2是MME建立的隧道吗 │ │ A2是的MME是总指挥控制面。 │ │ MME协调SGW和PGW生成TEID但MME不传递用户数据。 │ │ │ │ Q3怎么确保数据不送错人 │ │ A3通过 TEID隧道端点标识符 │ │ 每个用户有唯一的TEID组合类似“快递单号”。 │ │ │ │ Q4基站知道数据来自谁吗 │ │ A4知道基站维护 UE ↔ TEID 的映射表精确封装每个数据包。 │ │ │ │ Q5PGW怎么知道数据是谁发的 │ │ A5PGW通过收到的TEID查表找到对应的用户IP10.10.10.10。 │ └─────────────────────────────────────────────────────────────────────┘一句话总结MME是“快递调度中心”负责规划路线和分配“快递单号”TEID基站和SGW是“分拣员”根据“单号”把数据精准投递到PGWPGW是“最终收货人”根据“单号”识别出这是哪个用户的包裹。整个过程中用户数据始终在UE和PGW之间的专属隧道中传输保证了安全性和准确性。