自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 srsLTE 源码分析 UE_012 随机接入之 MSG3发送

UE侧MSG3处理思维导图MSG3的关键几个问题点代码部分可以根据导图的流程来阅读代码,主要的关键流程再导图中已经标识的比较详细了,下面主要来介绍下以下的几个关键问题:MSG3的上行资源在哪发送?MSG3的内容是怎么来的?基站如何知道给MSG3分多少的资源?MSG3有重传吗?重传次数怎么定?发射功率怎么计算?MSG3的上行资源在哪发送?在之前的文章上也提到过,MSG3是上行第一个上行数据,由于UE还没有接入成功,因此基站无法通过DCI0调度MSG3,MSG3的资源是在RAR(MSG2

2022-05-23 11:37:45 1351 1

原创 srsLTE 源码分析 UE_011 随机接入之 RAR处理

前面一篇文章用了思维导图的方式,发现思维导图对代码流程的展现的确比较清晰,后续将继续延续思维导图的方式,由于图片较长,读者可以保存下来细细琢磨。LTE的系统还是一个比较大的系统,由于写文章的时间不多,更新会比较慢。如果项目中有用到srsLTE的代码或者希望得到相关培训的读者,可以私信作者。码字不易,请喜欢本系列文章的读者 点赞+收藏+关注!

2022-04-28 15:25:47 1250

原创 srsLTE 源码分析 UE_010 下行代码流程 思维导图

BCCH - SIB1 - SIB2 - SIB3 - SIB13CCCH: - SRB0:最终由RRC处理,由于SRB0没有加密和完保,因此不需要进过PDCP层DCCH: - SRB1:最终由RRC处理 - SRB2:最终由NAS层处理 这两种信令承载是需要经过PDCP的解密和完整性校验DRB: - UM RLC的UM模式处理之后,经过PDCP的解密和完整性校验,最终发给GW - AMRLC的AM模式处理之后,经过PDCP的解密和完整性校验,最终发给GW

2022-04-27 14:59:08 888 4

原创 ringbuffer 消息队列 内存池 性能优化利器

本文是结合笔者的实际项目经验,介绍了ringbuffer在协议栈软件开发中的一些应用和技巧,主要是ringbuffer单生产/单消费的模式的无锁特性在内存池内存释放和消息队列中的应用技巧。如果读者也有类似的性能方面的系统需求,可以不妨试试 ringbuffer,性能超乎你的想象,且没有特别复杂的算法和CPU指令集的限制。也欢迎评论区讨论,喜欢本文的读者可以关注加收藏。

2022-04-25 16:22:15 2323

原创 srsLTE 源码分析 UE_09 随机接入 之PRACH发送

先整体介绍下过程大致的流程: - RRC层发送rrc connection request信令; - RRC通过RLC的write_pdu接口写到RB_ID_SRB0承载上; - MAC层BSR过程检测到RLC有新数据到达会触发常规BSR; - MAC层的常规BSR会触发SR; - 由于UE还未接入,PUCCH没有配置SR资源; - SR进一步发起随机接入过程; - 随机接入过程选择preamble,并通知物理层接口,通知物理层发送PRACH; - 物理层会在指定的位置发送PRACH序列。

2022-04-22 09:41:11 775

原创 srsLTE 源码分析 UE_08 随机接入 之开启前的准备

非竞争的随机接入涉及的场景较为复杂,主要差别体现在MSG3的内容上面,但是从MAC层的角度来看,都是上行有数据到达,但是发现上行失步。竞争随机接入的流程大致分为4个步骤:1、UE选择preamble index,发起PRACH,也就是MSG1;2、基站回复RAR,MSG2;3、UE在RAR的指定的时频资源上发送MSG3;4、基站回复MSG4,UE完成竞争解决。

2022-04-21 11:30:33 808

原创 srsLTE 源码分析 UE_07 PLMN选择

之前的文章介绍PLMN是如何被搜索到的,在搜索到PLMN全部搜索之后,UE会选择其中的一个PLMN进行驻留。这个过程相对前面的内容来讲比较简单,本文来分析下srsLTE的代码是如何选择PLMN的。

2022-04-20 11:21:25 879 1

原创 LTE RRC 定时器汇总

LTE RRC 定时器总结

2022-04-14 11:30:25 1582

原创 srsLTE 源码分析 UE_06 PLMN选择之SIB1

前沿SIB1和MIB不同,它是在PDSCH上传输,它的解调需要了解以下几点:1、DCI在公共搜索空间,使用SI-RNTI加工;2、SIB1在每个系统帧的子帧5上发送;3、需要在PDCCH里面先解DCI1A,再解PDSCH;4、SIB1采用ASN.1的编码,UE的RRC需要调用ASN.1的解码库进行解码;5、SIB1解出来之后,才知道其他的SI的周期和偏移,才能解其他的SI;...

2022-04-14 10:30:45 717

原创 srsLTE 源码分析 UE_05 PLMN选择之小区选择

在上一篇文章中,介绍了小区搜索的代码流程,从ue.switch_on()流程开始,最终是如何让物理层去搜索PSS、SSS以及MIB信息。这一章节,我们接着分析下小区选择的代码。这里的小区选择指的是初始小区选择要注意和普通的小区选择的区别:终端在进行初始小区选择会在每个可用频点上都去进行;每个频点终端只关注最强的小区信号,而且要和小区进行同步;在解到SIB1之后,获取PLMN信息之后,不会进行小区驻留。...

2022-04-09 14:27:01 765 2

原创 srsLTE 源码分析 UE_04 PLMN选择之小区搜索

PLMN选择LTE的第一个流程,但是由于PLMN涉及的代码量较大,放在一篇文章中,内容过多,因此,这一篇主要先针对小区搜索的流程进行代码梳理。小区搜索主要是PSS、SSS、MIB的解码。UE通过PSS、SSS的解调可以得到以下信息: - 小区的 PCI; - 小区特定的参考信号及其时频位置与 PCI是对应的,因此也就知道了该小区的下行小区特定的参考信号及其时频位置; - 子帧号(SF) - FDD or TDD - 循环前缀配置 UE通过MIB的解调,可以得到以下信息: - 小区的下行

2022-04-06 17:34:42 1441 3

原创 开源代码实现pppoe over l2tp方案

整个框架主要包含四个部分:rp-pppoe、rp-xl2tpd、l2tp-relay、内核转发模块,rp-pppoe进程主要负责管理pppoe连接的整个过程;当rp-pppoe进程收到PADR报文之后,rp-pppoe会调用l2tp-relay进程,l2tp-relay进程会向rp-xl2tpd进程发送建立l2tp session的指令,同时将信息写入内核转发表;rp-xl2tpd进程建立成功l2tp session之后,会将l2tp信息写入内核转发表,内核通过netlink机制将事件通知给rp-pppoe

2022-04-06 11:54:19 4650

原创 linux iptables 防火墙高级应用案例分享

iptables 防火墙 案例分享 同时上网 DNS代理 用户URL跟踪 portal推送 等

2022-04-05 11:43:59 3763

原创 srsLTE源码分析 UE_03 代码中的接口

笔者近些年在做了一些LTE相关的项目,很多知识都是从LTE理论开始一点点看起,也在网络上找了很多的资料,目前在网络上对LTE协议,5G相关的协议介绍资料比较多,但是对于协议栈实现的部分内容较少,这对于开发人员,很多内容理解的不是太直观。为了能对自己的学习的知识作一个总结,同时也希望对相关的开发人员提供一些帮助,不要再走一些弯路。因此,笔者选择了srsLTE的开源代码作为LTE学习的切入点,来分析LTE协议栈的详细实现过程。具体的srsLTE代码读者可以自行到github上下载,由于能力和理解有限,文中可能会

2022-04-05 10:05:35 1576 7

原创 srsLTE源码分析 UE_02 代码中的类

笔者近些年在做了一些LTE相关的项目,很多知识都是从LTE理论开始一点点看起,也在网络上找了很多的资料,目前在网络上对LTE协议,5G相关的协议介绍资料比较多,但是对于协议栈实现的部分内容较少,这对于开发人员,很多内容理解的不是太直观。为了能对自己的学习的知识作一个总结,同时也希望对相关的开发人员提供一些帮助,不要再走一些弯路。因此,笔者选择了srsLTE的开源代码作为LTE学习的切入点,来分析LTE协议栈的详细实现过程。具体的srsLTE代码读者可以自行到github上下载,由于能力和理解有限,文中可能会

2022-04-04 10:22:25 3413 1

原创 srsLTE 源码分析 – UE_01

作为整个UE系列的第一篇文章,前面的几篇,我们先从宏观的角度去理解代码,比如:有哪些线程?线程之间是怎么协调共工作的?协议栈是如何工作起来的?数据流程是怎么走的?文档将近尽可能的先将这些整体的框架先做一些介绍。后续,再结合协议内容,分析一些具体的协议和模块:调度、PHR、BSR、功控、HARQ、MUX、逻辑信道、SR、随机接入、attach流程等;文章也会按照协议,如NAS、RRC、PDCP、RLC、MAC等协议代码详细讲解。

2022-04-02 14:40:15 5669 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除