ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

3GPP Rel-15/16/17规范下载全攻略:官网入口、FTP目录与版本选择

3GPP Rel-15/16/17规范下载全攻略:官网入口、FTP目录与版本选择 干通信这行的几乎每天都要跟3GPP的规范打交道。Rel-15、Rel-16、Rel-17这三个版本可以说是最近几年所有5G相关项目的“地基”从物理层算法到协议栈代码从终端一致性测试到核心网流程设计全得靠这些文档说话。可最基础的一件事——下载对应Release版本的规范我见过不少同行在这个环节卡壳要么找不到官网的下载入口要么在FTP目录里被一堆文件名搞晕要么下载回来的版本和手里的代码对不上号。这篇文章就把3GPP各Release版本重点讲Rel-15、Rel-16、Rel-17的下载地址、规范编号体系和实操方法一次讲清楚适合刚入行的协议开发、测试工程师也适合需要经常查规范做方案选型的系统工程师。1. 先把Rel-15、Rel-16、Rel-17的底细摸清楚1.1 3GPP的Release机制是怎么运作的3GPP第三代合作伙伴项目虽然名字里带“第三代”但它早就不是只做3G的组织了。它由多个区域标准组织共同组成负责从GSM到5G乃至未来6G的移动通信系统规范制定。这里的Release并不是软件行业那种“每年发个大版本”的概念而是一整套经过严谨流程协商、冻结、维护的规范集合。每个Release从启动到冻结大致要经历这么几个阶段先立项讨论可行性Study Item确认技术方向后转为具体的工作课题Work Item然后各个工作组开始起草和修改对应的TS技术规范和TR技术报告。到了功能设计完成后还要经历功能冻结Functional Freeze、ASN.1冻结对协议栈代码生成至关重要的节点尤其是RRC、NAS这类用ASN.1描述的消息、协议冻结Protocol Freeze等关口。冻结之后规范并不是就不动了维护期还会有大量的Change RequestCR持续修改所以同一个Release编号下的规范会不断冒出15.1.0、15.2.0、16.3.1这样的小版本。这个机制对开发者来说意味着什么意味着你下载规范时光说“我要Rel-15”不够精准还得落到具体的版本号因为CR可能修正了某个字段的长度、调整了某个定时器的单位甚至改变了某个流程的状态迁移条件。我见过有同事拿Rel-15初版15.0.0的代码去对接别人基于15.7.0的实现结果RRC信令里一个IE解析不过去最后排查半天发现是两个小版本的差异。所以别嫌麻烦版本号必须精确到小数点后两位最好把三位都记全。1.2 三个版本的核心差异和适用场景Rel-15、Rel-16、Rel-17这三个版本代表了5G从“能用”到“好用”再到“拓展边界”的演进路径。Rel-15是5G的第一版2017年12月冻结了NSA非独立组网2018年6月冻结了SA独立组网。它定义了全新的NR空口、5G核心网5GC以及eMBB场景下的基础能力。如果你做的是手机主通路、基站RRU/BBU的基础配置、NSA/SA双模流程Rel-15是绕不开的起点。Rel-16在2019年12月开始陆续冻结RAN侧主要工作在2020年完成。这一版被称为“完整的5G”重点引入了eURLLC增强、NR V2X车联网、工业物联网(IIoT)、NR-U非授权频谱、定位增强、网络切片增强、5G LAN等功能。做车路协同、工业控制、专网项目的基本都要切换到Rel-16。Rel-17的RAN冻结时间是2022年6月它虽然还叫5G但已经是在为5G-Advanced铺路。这版最抢眼的特性包括RedCapNR Light轻量化终端、NTN非地面网络也就是卫星接入5G、MBS多播广播、Sidelink中继、进一步节能增强等。智能手表、电力表计、卫星物联网这类低成本或广覆盖场景就得看Rel-17了。特性领域Rel-15Rel-16Rel-17空口基础第一版NRNR增强NR继续增强典型新增能力eMBB、NSA/SA、5GCURLLC、V2X、IIoT、NR-URedCap、NTN、MBS对标场景手机、基础基站工业、车联、专网物联、卫星、广播冻结时间2017.12(NSA)/2018.06(SA)2019.12起分批冻结2022.06(RAN)搞清楚了版本差异下载的时候才不会拿错文件。下面进入正题把下载渠道一条条理顺。2. 官方下载地址与渠道盘点2.1 3GPP官网从上到下的规范入口3GPP的官方网站是 www.3gpp.org。很多人第一次上这个网站会被导航搞晕因为内容实在太多。实际上规范下载就两个核心入口。第一个是“Specifications by Series”按系列列出规范地址是https://www.3gpp.org/specifications-technologies/specifications-by-series这个页面按规范系列号列出了所有规范比如25系列UMTS、36系列LTE、38系列NR、23系列核心网架构、33系列安全等。页面上每一行就是一个规范能看到规范标题、最新版本、更新日期非常直观。想找某个规范的最新技术状态这是最方便的。第二个是“Releases”页面地址是https://www.3gpp.org/specifications-technologies/releases/这个页面从R99一直到未来版本都有每个Release点进去能看到该版本的总体介绍、关键特性和一部分重要规范的链接。比如你点开Release-16页面上会详细写明这个版本引入了哪些技术课题每个课题归哪个工作组管。除了这两个页面官网右上角的搜索框也挺好用直接输入“38.211”或“23.501”这类规范号就能快速跳到对应规范的详情页。详情页里通常会有当前最新版本的预览和下载按钮也会列出历史版本。不过官网页面的访问体验受网络环境影响比较大页面偶尔转半天还加载不全这时候可以试试我下面要讲的FTP目录。2.2 FTP archive目录最直接的下载路径如果要说“哪个下载地址最硬核”那肯定是3GPP的FTP服务器。公开的规范文件都存在这个FTP上而且可以通过HTTP方式直接用浏览器访问。根地址是https://www.3gpp.org/ftp/Specs/archive/这个archive目录下文件夹按规范系列划分比如36_series、38_series、23_series等。进入某个系列文件夹后能看到以规范编号命名的一堆子文件夹比如38_series下面会有38.211、38.212、38.213、38.300、38.331等。每个子文件夹里放的就是该规范所有历史发布版本的zip压缩包。举个例子你要找TS 38.211NR物理信道和调制的历史版本直接访问https://www.3gpp.org/ftp/Specs/archive/38_series/38.211/这里的zip文件就是官方发布的终极版本形态网页上那些预览、阅读功能都是从这个文件池里抽数据渲染的。下载之后解压里面是Word格式的规范正文也就是实际开发和测试依据的原文。2.3 html-info页面核对版本状态的神器FTP目录里文件名实在是太多了有时候你看着一堆带字母数字后缀的zip说不上哪个是最新、哪个已经作废。这时候要用到另一个入口——html-info版本状态页。https://www.3gpp.org/ftp/Specs/html-info/在这个页面下输入规范编号比如加上“38211.htm”也就是访问https://www.3gpp.org/ftp/Specs/html-info/38211.htm打开后会看到一张版本状态表每一行包含版本号、状态、下载链接等信息。状态通常有Approved、Standstill等Standstill表示该版本协议已冻结、不再有后续改动这是最稳定的参考版本。通过这张表你能准确知道每个Release下有哪些小版本以及哪个才是当前有效版本。渠道地址/入口适用场景官网系列页specifications-by-series查规范标题、最新版本、快速浏览Release页specifications-technologies/releases看某个Release的整体特性FTP archiveftp/Specs/archive/下载任意历史版本的zip原文html-info页ftp/Specs/html-info/{编号}.htm核对版本状态确定该下哪个文件ETSI官网etsi.org搜索3GPP TS官网访问不稳定时的备用下载渠道这里多说一句ETSI。ETSI是3GPP的七个标准组织成员之一它自己的官网上也会同步公开3GPP的TS和TR规范。当3GPP官网抽风或者加载特别慢时去ETSI的Standards页面搜“3GPP TS 38.211”同样能拿到开放的规范文档。作为备用渠道这个很实用。3. 实操从零开始下载一份目标版本规范3.1 第一步明确你要下载什么别笑这一步看起来简单但真的有人在这一步就栽了。下载之前先问自己三个问题我需要哪个规范系列我需要哪个Release我需要这个Release下的哪一版以NR物理层为例如果做的是物理层算法验证通常要下载38.211物理信道调制、38.212信道编码复用、38.213物理层控制流程、38.214物理层数据流程这几本。如果做的是协议栈L2/L3则要下载38.331RRC、38.321MAC、38.322RLC、38.323PDCP。如果关注的是核心网又要换成23系列和24系列的规范。需求越具体后面找文件的过程就越快。3.2 第二步通过Release页面或搜索锁定规范的详情页假设我现在在做一个Rel-16的NR物理层项目需要下TS 38.211。我习惯的做法是先打开官网的“Specifications by Series”页面找到38系列下的38.211点进去后能看到规范的基本信息和当前最新版本。在这个详情页里通常会有版本下拉框或者“Previous Versions”的历史列表里面按Release从小到大排列了所有历史版本。如果你想下载Rel-16某个特定小版本直接在这里就能找到。但如果你想要的是更全的zip文件或者是某个已经不在网页列表里的维护版本那就去FTP目录。3.3 第三步在FTP archive目录里按版本号找zip进入刚才说的38.211目录https://www.3gpp.org/ftp/Specs/archive/38_series/38.211/你会看到一堆类似“38211-f30.zip”“38211-g40.zip”“38211-h20.zip”这样的文件名。这里有个3GPP文件命名的规则规范编号一个字母数字再加个.zip后缀。字母代表大版本A到E分别对应10到14F对应Rel-15G对应Rel-16H对应Rel-17。所以38211-f30.zip 表示TS 38.211的15.3.0版本38211-g40.zip 表示TS 38.211的16.4.0版本38211-h20.zip 表示TS 38.211的17.2.0版本数字部分基本上就是版本号去掉点号后的形式。如果版本号到了16.10.0这种两位数的小版本命名会稍微复杂一点但整体的“字母代表Release”的规律不会变。要是实在没有把握就回头对照html-info页面里的版本状态表那张表会把每个版本的zip文件名列得清清楚楚。下载的时候还有一个小细节如果你在一个Release下面看到很多小版本比如Rel-16有16.0.0、16.1.0、16.2.0一直到16.5.0建议选数字最大的那个因为它包含了前面所有小版本通过CR累积下来的修订。在冻结后的维护期规范的小版本只会越来越多内容只会越来越完善没必要死守着最初发布那一版。3.4 第四步解压、核对封面、存档zip文件下载下来之后建议优先用7-Zip解压。Windows自带的解压工具处理老式zip有时会报“格式不支持”虽然不常见但遇上了挺耽误事。解压后里面通常是一个.doc文件用Microsoft Word或者WPS都能打开。打开规范后第一件事不是看正文而是翻到封面页核对三样东西规范编号、Release版本、具体版本号。封面页上会明确写着“TS 38.211 V16.4.0”之类。这一步是防止下错文件的最后一道保险因为FTP目录里文件名相似度太高偶尔也会手滑点错。存档时我强烈建议不要随手丢防到桌面或者下载文件夹就完事。做通信协议开发规范文件是要反复查的本地目录最好建一个固定的结构比如3GPP/ Rel-15/ 38_series/ 38.211/ 38.300/ Rel-16/ 38_series/ 38.211/ Rel-17/ 38_series/ 38.211/这样后面项目换版本、做代码回溯时找文档效率会高很多。3.5 批量下载的小技巧如果一个项目涉及几十本规范一本一本在FTP目录里点zip太痛苦了。我一般用浏览器自带的下载管理器其实也能撑但一旦规范多就得上批量下载工具。支持HTTP批量抓取的工具比如IDM、Free Download Manager都可以直接从FTP目录的网页里把文件列表抓下来批量下载。配置的时候把文件过滤器设置成“*.zip”再根据版本关键字把不是目标Release的文件排除掉就行。命令行熟悉的朋友也可以直接用wgetwget -r -np -nH -A zip https://www.3gpp.org/ftp/Specs/archive/38_series/38.211/不过要注意3GPP的服务器对爬虫和批量抓取是有一定访问限制的如果目录文件很多速度会被限得很保守甚至可能断连。稳妥的做法还是用下载工具并且别开过高的并发线程通常8到16个并发就差不多了。3.6 把版本管理做进项目下载规范只能解决“有文档可用”的问题真正的高手还会把版本管理做进项目里。我见过不少团队代码分支、依赖库、SDK都管得很好唯独没人记录规范版本号出了问题整个会议室的人对着屏幕猜“你们用的是哪版协议”这种场面实在太伤了。建议在每个项目的根目录放一个RELEASE.md或者VERSION.md写清楚当前实现基于哪个3GPP Release、哪个具体版本号以及每个规范文件的SHA哈希。代码文件的开头注释里也尽量标注“Based on TS 38.331 V16.3.0”这样后续接手的人能直接对齐基线。4. 常见问题与避坑手册4.1 官网打不开或者下载速度慢3GPP的服务器在欧洲国内直接访问时页面加载慢、下载中断都是常有的事。遇到这种情况我试过几个有效的办法第一切换公共DNS。有些本地运营商DNS解析3gpp.org会解析到很远的节点换成国内公共DNS比如223.5.5.5或者通用公共DNS有时候速度会有明显改观。第二换个访问时间。欧洲的工作日下午是他们的访问高峰也是国内访问最卡的时候。我一般选择在北京时间上午或者傍晚去下载成功率会高不少。第三直接走ETSI。ETSI的下载服务器比3GPP官网稳定得多而且同样提供历史版本。在ETSI官网上搜索目标规范号找到对应版本下载体验通常更顺滑。另外提醒一句千万不要为了“加速”去尝试某些不正规的代理工具一方面安全问题不可控另一方面也没必要ETSI和错峰下载基本就能解决问题。4.2 规范编号下有一堆版本到底选哪个这个问题几乎每周都有人问。判断标准其实就两条先看Release再找同Release下的最新小版本。“Release决定特性集合小版本决定修正程度”。比如你要用URLLC增强那就找Rel-16的38.300确定之后再在38.300的目录里找16.x.x里数字最大的zip。中间那些16.1.0、16.2.0不是不能用但既然CR已经把已知问题修掉了犯不着拿旧版给自己挖坑。用html-info页面时状态列写着Standstill的版本是最稳妥的选择。如果某个版本状态显示的是Withdrawn或者Superseded就说明它已经被后续版本取代或者干脆作废了别去用。状态值含义建议Approved已批准正常有效可用Standstill已冻结不再变更优先选用Superseded已被后续版本取代不建议用Withdrawn已撤回存在缺陷不要用4.3 下载下来的doc打开乱码3GPP的规范doc文件通常是用Microsoft Word排版的老式文档用WPS或者LibreOffice打开时偶尔会出现目录错位、表格变形、公式显示异常的情况。这不是文件坏了而是兼容性问题。最省事的办法是用Microsoft Word打开。如果电脑上确实没有Word用WPS也能看碰到公式乱码的情况就尝试用“打开并修复”功能。还有一点值得注意3GPP的规范文档里大量的字段长度、比特位描述用到了特殊字体和嵌入式对象在线预览工具比如浏览器直接打开往往会漏掉细节最终还是要以doc里的排版为准。4.4 下载的文件和对应Release对不上有同行遇到过这种情况在FTP目录里看着文件名是g开头的下载下来打开一看内容却是Rel-15的。这种问题多半不是3GPP的问题而是浏览器缓存或者本地下载工具的URL重命名搞的鬼。遇到类似情况先强制刷新页面CtrlF5清掉浏览器缓存再重新访问。用下载工具的话看看是不是下载规则里带了自动重命名把原始文件名给改了。最后无论如何都以打开文档后封面页上的版本号为准不要相信文件名、不要相信网页显示、不要相信下载工具的记录只信封面。4.5 开发环境里的“release”问题其实也是版本管理问题这个节外生枝但值得提醒一下。很多做协议栈开发的同事除了3GPP规范还得折腾依赖库、开发工具链经常搜到“Maven artifact release无法解析”“Linux仓库提示没有release文件”这类报错。这些报错里的release指的是软件仓库的发布版本跟3GPP的Release完全是两个概念。但这两件事背后有个共同的教训版本管理上的懒最后都会以加班的形式还回来。3GPP规范版本号不写清代码和协议对不上依赖库的release版本不固定构建环境换一台机器就崩。下载规范时养成的记录版本习惯放到整个开发环境里同样适用。5. 写在最后的个人经验做协议栈和算法验证这些年我最大的感受是下载3GPP规范从来不是技术活而是细心活。官网路径、FTP目录、字母版本号这些搞清楚了之后剩下的就是机械操作。真正能让工作变顺的是下载之后那套版本管理流程——建好目录、写清版本、核对封面每一步都在给未来的自己省时间。最后分享一个我一直在用的小习惯把html-info页面里目标规范的版本状态表定期截图存档。规范版本在维护期会持续变动这张截图相当于一个时间快照哪天开会争论“这个IE什么时候引入的”翻出截图一看谁用哪个版本一目了然。希望这篇文章能帮各位同行把找文档的时间省下来多留点精力放到真正难啃的协议分析和代码实现上。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进