LTE物理层总结
ubuntu 16.04使用rssh配置rsync服务通过ssh同步
-
安装配置
RSSH
为数据同步进行准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
$ sudo apt-get install rsync # ubuntu 16.04/18.04默认源中都存在rssh ,但是 ubuntu 20.04开始,已经没办法从系统源中安装了。 # 原因在于 rssh 存在安全漏洞,并且长时间没有修复,并且已经没人维护了,需要使用 rrsync 替代。 $ sudo apt-get install rssh $ export RSH_RSYNC_USER=rsh_backup $ export RSH_RSYNC_USER_PASSWORD=rsh_password # 如果需要备份/var/log 目录,建议把用户组设置成 adm 用户组,否则很多日志没办法读取 # sudo useradd -s /usr/bin/rssh $RSH_RSYNC_USER -g users -G adm # 后期也可以通过 sudo usermod -g users -G adm $RSH_RSYNC_USER 更改用户组 $ sudo useradd -s /usr/bin/rssh $RSH_RSYNC_USER $ echo $RSH_RSYNC_USER:$RSH_RSYNC_USER_PASSWORD | sudo chpasswd # 配置文件中的umask可以限制用户是否只读,是否有可执行权限 # 许可用户执行rsync操作 $ sudo sed -i "s/^#allowrsync$/allowrsync/g" /etc/rssh.conf # 增加许可的用户操作 $ sudo sed -i '$a\user = \"'$RSH_RSYNC_USER':011:100000:\"' /etc/rssh.conf # 在ubuntu 16.04上 通过 setfacl 给予同步用户某些特殊目录读取权限的方式,目前测试来看会出现很多问题 # 如果是自建的目录,这个操作是没问题的,但是对于系统目录,比如/var/log/ 这个工具会导致 # mysql,tomcat等软件工作异常。 # 我需要备份日志,因此需要给予日志目录读取权限,注意,我们需要给予执行权限, # 否则没办法同步,尽管我们只需要读取数据 # 如果我们只给予 r 权限 会导致报告如下错误 # rsync: readlink_stat("/data/log/denyhosts.3.gz") failed: Permission denied (13) # 我们的 /data/log 实际上上/var/log目录的一个软连接,内部文件权限复杂,因此需要特殊处理 # ubuntu 16.04 不要使用 # sudo apt-get install acl && sudo setfacl -m u:$RSH_RSYNC_USER:r-x -R -L /data/log/ # 这个工具存在 BUG,可能设置的时候正常,过一段时间,就出现问题了。 # 还是老的 chmod 工作稳定,rsync 需要读取+执行权限,才能同步文件, # 因此设置为 755 设置为 645的时候 mysql/tomcat8工作不正常 $ sudo chmod -R 755 /data/log |
-
客户端同步,测试是否正常工作
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ export RSH_RSYNC_USER=rsh_backup $ export RSH_RSYNC_USER_PASSWORD=rsh_password $ export RSH_RSYNC_PORT=22 $ export REMOTE_SERVER=www.mobibrw.com $ export SYNC_DIR=/var/www # 测试是否可以正常工作,另一个方面是许可ssh的登录key否则我们后续没办法使用sshpass # 可以使用 --exclude 参数忽略指定的目录,相对路径,不是绝对路径 $ sudo rsync -avzP --delete -e 'ssh -p $RSH_RSYNC_PORT' $RSH_RSYNC_USER@$REMOTE_SERVER:$SYNC_DIR $SYNC_DIR |
-
转化为定时任务,自动同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 安装密码自动填写软件 $ sudo apt-get install sshpass $ cd ~ $ touch backup_rsync.sh $ chmod +x backup_rsync.sh $ echo -e '#!'"/bin/bash\n" >> backup_rsync.sh $ sed -i '$a\export RSH_RSYNC_USER=rsh_backup' backup_rsync.sh $ sed -i '$a\export RSH_RSYNC_USER_PASSWORD=rsh_password' backup_rsync.sh $ sed -i '$a\export RSH_RSYNC_PORT=22' backup_rsync.sh $ sed -i '$a\export REMOTE_SERVER=www.mobibrw.com' backup_rsync.sh # 此处注意最后的分隔符/如果没有这个分隔符,会导致目标目录多一个名为www的父目录 $ sed -i '$a\export SYNC_DIR=/var/www/' backup_rsync.sh # 可以使用 --exclude 参数忽略指定的目录,相对路径,不是绝对路径 $ sed -i '$a\sshpass -p $RSH_RSYNC_USER_PASSWORD rsync -avzP --delete -e \"ssh -p $RSH_RSYNC_PORT\" $RSH_RSYNC_USER@$REMOTE_SERVER:$SYNC_DIR $SYNC_DIR' backup_rsync.sh # 打开计划任务的日志,默认不开 $ sudo sed -i -r "s/#cron\.\*[ \t]*\/var\/log\/cron.log/cron.* \/var\/log\/cron.log/g" /etc/rsyslog.d/50-default.conf #write out current crontab $ sudo crontab -l > addcron #echo new cron into cron file ,每隔30分钟我们调度一次任务,前面是文件锁,防止并发冲突 #如果需要每小时执行一次,则修改为 "* */1 * * * flock ...." #如果需要凌晨2点执行,则修改为 "* 2 * * * flock ...." $ echo "30 * * * * flock -x -w 10 /dev/shm/backup_rsync_corn.lock -c \"bash `echo ~`/backup_rsync.sh\"" >> addcron #install new cron file $ sudo crontab addcron $ rm addcron $ sudo service cron restart |
目前我的阿里云,腾讯云服务器之间的同步脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash export RSH_RSYNC_USER=user export RSH_RSYNC_USER_PASSWORD=password export RSH_RSYNC_PORT=22 export REMOTE_SERVER=121.199.27.227 export SYNC_WWW_DIR=/var/www/ sshpass -p $RSH_RSYNC_USER_PASSWORD rsync -avzP --delete -e "ssh -p $RSH_RSYNC_PORT" $RSH_RSYNC_USER@$REMOTE_SERVER:$SYNC_WWW_DIR $SYNC_WWW_DIR --exclude "wordpress/wp-content/cache/" --exclude "wordpress/wp-content/plugins/crayon-syntax-highlighter/log.txt" export SYNC_DATA_DIR=/data/ # 此处注意,如果使用 --exclude "/root/" 则忽略最顶部的root目录 # 如果使用 --exclude "root/" 则忽略所有路径中包含 root 的目录 # 主要 rsync 的 top-directroty 部分的规则 sshpass -p $RSH_RSYNC_USER_PASSWORD rsync -avzP --delete -e "ssh -p $RSH_RSYNC_PORT" $RSH_RSYNC_USER@$REMOTE_SERVER:$SYNC_DATA_DIR $RSYNC_DATA_DIR --exclude "/root/" |
参考链接
- CentOS:ssh限制ip和用户访问的设置
- Linux Restricted Shells: rssh and scponly
- rssh homepage
- 通过ssh执行rsync来完成同步文件的命令总结
- Linux使用笔记3-crontab添加定时任务
- 配置 rsync+ssh+密码登录
- setfacl命令基本用法
- Linux ACL权限设置(setfacl和getfacl)
- Linux中限制用户访问权限的3种方法
- Linux之setfacl权限配置
- setfacl to provide user access to /var/log does not work
- Linux的用户和用户组管理
- What is the "adm" group?
- Linux - 查看系统group
- 用rsync在copy时实现过滤
- rssh
- ubuntu 20.04配置rsync服务通过ssh同步
OpenAirInterface使用LimeSDR代码分析PHY层流程
参考ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境建立完成的环境。
代码为当时的代码,不是最新的代码。
数据接收流向
int trx_lms_read(openair0_device *device, openair0_timestamp *ptimestamp, void **buff, int nsamps, int antenna_id)-> targets/RT/USER/lte-enb.c
void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) (eNB->rfdevice.trx_read_func)
->
targets/RT/USER/lte-enb.c
static void* eNB_thread_FH( void* param ) (eNB->rx_fh)
接收完成后,触发信号,通知后续线程,也就是后面的发送接收线程。
eNB收发处理线程
targets/RT/USER/lte-enb.c
static void* eNB_thread_rxtx( void* param )
->
targets/RT/USER/lte-enb.c
static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_name) (eNB->proc_uespec_rx(eNB, proc, no_relay ))
->
openair1/SCHED/phy_procedures_lte_eNb.c
void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type)
->
openair1/SCHED/phy_procedures_lte_eNb.c
void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_pid,uint8_t do_srs)
->
此处实际的解码,涉及到相位信息,这部分是PUCCH部分的数据,主要是通信控制数据,比如信噪比等,不包含实际的通信数据,比如TCP,UDP协议等等
openair1/PHY/LTE_TRANSPORT/pucch.c
uint32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
PUCCH_FMT_t fmt,
uint8_t UE_id,
uint16_t n1_pucch,
uint16_t n2_pucch,
uint8_t shortened_format,
uint8_t *payload,
int frame,
uint8_t subframe,
uint8_t pucch1_thres)
->
此处实际的解码,涉及到相位信息,实际的通信数据,比如TCP,UDP协议等等
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
uint8_t UE_id,
uint8_t control_only_flag,
uint8_t Nbundled,
uint8_t llr8_flag) ( eNB->td)
->
此处解析数据段,TCP,IP相关部分了
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
解码后的数据通过rx_sdu函数上报到MAC层。
IQ信号
当前的数字射频芯片,无一例外的用到了I/Q信号,就算是RFID芯片,内部也用到了I/Q信号,然而绝大部分射频人员,对于IQ的了解除了名字之外,基本上一无所知。I/Q信号一般是模拟的。也有数字的比如方波。基带内处理的一般是数字信号,在出口处都要进行D/A(数—>模)转换,每个基带的结构图里都有,可以仔细看。
网上有大量关于IQ信号的资料,但都是公式一大堆,什么四相图,八相图之类的,最后还是不明白,除了知道这两个名次解释:
I:in-phase 表示同相
Q:quadrature 表示正交,与I相位差90度。
hosts.allow、hosts.deny配置不生效的解决方法
通过配置hosts.allow、hosts.deny,控制SSH限制固定IP登陆
按照以往的方法,分别在hosts.allow、hosts.deny加入以下配置
1 2 3 4 5 6 7 |
# more /etc/hosts.allow sshd:192.168.x.x # more /etc/hosts.deny sshd:all |
保存后测试,发现配置无效,其他IP还是可以登陆成功。
解决方法如下:
hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。
查看某服务(如ssh)是否应用了libwrapped库文件的方法是:
1 |
$ ldd /usr/sbin/sshd |grep libwrap.so.0 |
没有显示,表示此服务器上安装的SSH没有应用libwrapped库文件,也就不能用tcp_Wrappers防火墙控制访问策略。(一般情况下服务器默认安装的SSH都是支持libwrapped库文件,这台服务器不清楚为什么不支持)
最终解决方法是重新安装SSH。
1 2 3 4 5 |
$ yum -y remove openssh $ yum -y install openssh $ yum -y install openssh-server |
安装完成后再次查看是否应用了libwrapped库文件,显示支持。
1 2 |
$ ldd /usr/sbin/sshd |grep libwrap.so.0 libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f195feb4000) |
再测试SSH登陆,配置生效。
参考链接
无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解
先从IQ调制说起:
相位偏移调制
解决ubuntu 16.04系统上2017.06版本之后的LimeSDR V1.4驱动不能正常运行OpenAirInterface搭建的LTE实验环境的问题
参考ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境搭建实验环境的时候,只能使用LimeSDR v17.06.0
的驱动,更新版本的的驱动,运行之后,手机设备不能正确的连接到建立的基站。
继续阅读解决ubuntu 16.04系统上2017.06版本之后的LimeSDR V1.4驱动不能正常运行OpenAirInterface搭建的LTE实验环境的问题
LTE中的传输模式
1) TM1,单天线端口传输:主要应用于单天线传输的场合。
2) TM2,发送分集模式:适合于小区边缘信道情况比较复杂,干扰较大的情况,有时候也用于高速的情况,分集能够提供分集增益。
3) TM3,开环空间分集:合适于终端(UE)高速移动的情况。
4) TM4,闭环空间分集:适合于信道条件较好的场合,用于提供高的数据率传输。
5) TM5,MU-MIMO传输模式:主要用来提高小区的容量。
6) TM6,Rank1的传输:主要适合于小区边缘的情况。
7) TM7,Port5的单流Beamforming模式:主要也是小区边缘,能够有效对抗干扰。
8) TM8,双流Beamforming模式:可以用于小区边缘也可以应用于其他场景。
9) TM9,传输模式9是LTE-A中新增加的一种模式,可以支持最大到8层的传输,主要为了提升数据传输速率。
TDD 配比2下的TM9,在0 1 5 6子帧调度最大是88RB,3 4 8 9子帧调度最大100RB。
开环”,即发射端无法获得信道信息的条件下使用
空间复用是为了提高传输数据数量; 传输分级是为了提高传输数据质量;
TM3与TM4的区别:
对于TM3,预编码不依赖于UE上报的建议使用的预编码矩阵(即UE不上报PMI),eNodeB和UE使用相同的方式从一个预先定义的集合中选择一个预编码矩阵。
注:
1、《技术规范》P.38页中的“发送分集”,即是《系统设计》P.158中的“传输分集”,二者是一个意思。
2、传输模式即是《技术规范》P.38页中的“MIMO模式”。
原文链接
最低成本解决招商银行香港网银账户长时间不交易被冻结的问题
最近收到招商银行香港银行的短信:
1 |
尊敬的客户,您的香港一卡通已超过18个月无主动交易,请于xx年xx月xx日前办理一笔交易以保持账户活动。 |
查询了一下,根据香港的规定,"账户连续两年内没有任何主动交易,则账户自动转为冻结状态,成为“睡眠户”,该类账户不允许进行出款交易。若您需要重新恢复该账户的使用,需要您填妥解除睡眠户表格寄送给香港分行审批,审批通过后,香港分行会主动联系您,核实后可以解除。"
以前总是傻傻的进行一次国内的转账操作,每次都被收高昂的手续费。今天终于想明白了,只要进行交易都算,那么干脆做一笔最小的活期转定期的存款,比如100
块美金的一周定期,就搞定了。
最近(2021/03),上述的办法已经不行了,最近会收到如下信息:
1 |
您的相关一卡通长期未有网银转账,请您于xx月xx日前通过香港专业版完成一笔转出交易,避免限额清零,详情可咨询95555 |
比较简单的方式是找同事要一下账号,同行转出1分钱即可,也可以给慈善机构捐款,还是转账一分钱最简单。
另外,若网银每日限额已经被清零,可能收到如下短信通知:
1 |
您的香港一卡通长期未有网银转账,现香港专业版限额已被清零,您可于一个月内通过香港专业版-其他功能-限额管理复原,详情可咨询95555 |
可以登录香港专业版,可以使用“复原网银限额”复原到最近一次的网银限额;只有一个月内复原,才有效果。