当ofp应用启动后,可以在bash里运行如下命令
1 | telnet 127.0.0.1 2345 |
来实时查看网络情况。交互输入help或route help之类。
refer to: https://github.com/OpenFastPath/ofp/blob/master/docs/ofp-user-guide.adoc
人,技术,生活。
当ofp应用启动后,可以在bash里运行如下命令
1 | telnet 127.0.0.1 2345 |
来实时查看网络情况。交互输入help或route help之类。
refer to: https://github.com/OpenFastPath/ofp/blob/master/docs/ofp-user-guide.adoc
1. 创建线程不要直接用pthread_create,而要用odph_odpthreads_create。
2. 每个线程函数的开始处都要调用ofp_init_local初始化。
3. 之前调用系统socket和epoll之类的函数都要替换成ofp定义的,包括宏和结构体。如
1 2 | // sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sock = ofp_socket(OFP_AF_INET, OFP_SOCK_STREAM, OFP_IPPROTO_TCP); |
默认编译OpenFastPath时慢平面是启用的,慢平面的功能之一是通过netlink方式向内核查询路由表,这是用内核公开的接口,不需要另开发内核驱动。
慢平面的一个局限,比方电脑只有一张网卡,而这块网卡已被dpdk绑定,网络包就不会在内核中被解析,此时慢平面的路由功能也就无效,所以干脆通过
1 | ./configure ... --enable-sp=no |
将慢平面功能去掉。
而此时我们跑在ofp上的应用就没有路由表了么?
不是的。首先应用的本机ip地址是通过
1 | myApp -i 0 -f ofp.cli |
中的ofp.cli配置的。如
1 2 3 | debug 0 loglevel set debug ifconfig fp0 192.168.56.33/24 |
中的192.168.56.33就是本机地址。
而通过arp协议获取其它机器ip与mac关系的路由表是由
1 | ofp_start_cli_thread(instance, app_init_params.linux_core_id, params.cli_file); |
这个线程在dpdk绑定的网卡上进行解析维护。
一个很好的例子就是ofp/example/webserver。
ofp和dpdk都可完全编译成静态库运行,不要为了LD_PRELOAD的那一点便利一门心思去编译出动态库。在自已的源码中加一层宏翻译,静态库与epoll api兼容性也很好。
github上的odp与dpdk-odp的区别是前者现在只包含了odp-linux,一种对linux系统api的包装,后者是对dpdk的包装,所以高性能选后者。原话见
doc/users-guide/users-guide.adoc
refer to:
https://github.com/OpenFastPath/ofp
https://github.com/OpenDataPlane/odp-dpdk
https://my.oschina.net/u/4361425/blog/3269917
1 2 3 4 5 6 7 8 9 10 11 12 13 | odp_init_t init_param; odp_init_param_init(&init_param); init_param.not_used.feat.ipsec = 1; init_param.not_used.feat.crypto = 1; init_param.not_used.feat.compress = 1; init_param.not_used.feat.tm = 1; if (0 != odp_init_global(&instance, &init_param, NULL)) { DBG(("init odp global failed.\n")); return 0; } |
EPS中的PDN连接(搜不到原贴地址)
https://www.txrjy.com/thread-1134059-1-1.html
LTE基础知识概述
https://max.book118.com/html/2016/0706/47457520.shtm
MR数据应用
https://www.txrjy.com/thread-926805-1-1.html
LTEMR分析经验共享
https://www.docin.com/p-1543277673.html
FDD LTE无线网PCI和TA的设计
https://wenku.baidu.com/view/3a6903712e3f5727a5e96299.html
5G系统——5G QoS
https://blog.csdn.net/u010178611/article/details/81746532
5G边缘计算之会话及业务连续性(SSC)介绍
https://blog.csdn.net/openinfra/article/details/109812315
https://www.toutiao.com/article/7098596919232102949
Terms,
1 2 3 | Turbo码 LDPC码 Polar code极化码,Erdal Arıkan |
mat的遍历方法
refer to: https://blog.csdn.net/koibiki/article/details/85954121
如何使用opencv给视频添加水印并保存
refer to: https://blog.csdn.net/weixin_44903147/article/details/102969715
bool solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags=ITERATIVE )
objectPoints为特征点的世界坐标,特征点通常为4个,坐标值需为float型,不能为double型,可以输入mat类型,也可以直接输入vector
imagePoints为特征点在图像中的坐标,需要与前面的输入一一对应。同样可以输入mat类型,也可以直接输入vector
cameraMatrix为相机内参数矩阵,大小为3×3。事先通过OpenCV自带例程求出相机标定参数。
distCoeffs输入为相机的畸变参数,为1×5的矩阵。事先通过OpenCV自带例程求出相机标定参数。
rvec输出解得的旋转向量。
tvec输出平移向量。
useExtrinsicGuess为true后似乎会对输出进行优化。
flags:
CV_ITERATIVE,默认值,它通过迭代求出重投影误差最小的解作为问题的最优解。
CV_P3P则是使用非常经典的Gao的P3P问题求解算法。
CV_EPNP使用文章《EPnP: Efficient Perspective-n-Point Camera Pose Estimation》中的方法求解。
//最小二乘法,解A*X=B中的X bool cv::solve(InputArray A, InputArray B, OutputArray X, int flags = DECOMP_LU)
refer to:
https://www.cnblogs.com/singlex/p/pose_estimation_1.html
https://www.csdn.net/tags/NtTakgysNTA0NDQtYmxvZwO0O0OO0O0O.html
1 2 3 | sudo dnf install open-vm-tools-desktop umount /mnt/hgfs sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022 |
如果还不行,比如更新内核后,就要重新安装open-vm-tools。
refer to:
https://blog.csdn.net/xcyja/article/details/117328301