16.TCP Control Block Bebug 1


随着代码量增加和逻辑的复杂度提高,需要专门debug一下,很难一次就写对。 编译 Makefile # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2010-2014 Intel Corporation # binary name AP

17.TCP Server Status Transmission


组织tcp数据包 /* * 函数名称: ln_tcp_encode * 作 者: 黄彦杰 Lenn * 设计日期: 2024-08-02 * 功能描述: 组织tcp数据包 * 返 回 值: 0 */ static int ln_tcp_encode(uint8_t* pktbuf,

18.TCP Control Block Debug 2


上午调了很久,下午发现core dump不是必现的,说明内存泄漏的地方暂时可以不找,但是可以从抓包上来看我们tcp connect的流程是有问题的。 从上图中可以看出,这个ACK有问题,说我们没有设置ACK。所以我们按照这个思路排查 问题解决

19.TCP Transmission


完成tcp的状态,消息收发。 每次调试代码都很痛苦啊,即使是一次一次地迭代。调试了一天,解决了下面的几个问题。 这里编译器设置的问题,需要给case后的语句加上大括号。这里昨天写的时候也遇到了。 这里是连接

20.TCP Posix API 1


和udp一样,我们需要实现和系统调用一样的接口来实现我们的tcp server。先来看看我们之前写的unix_tcp使用了哪些接口,这边我加上两个系统调用,分别是接收数据和发送数据。 #include <stdio.h> #include <arpa/inet.h> #include <sys/so

21.TCP Posix API 2


tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) { ssize_t length = 0; void* ho

22.Debug&重构分发协议


debug 如果能找到bug就调试好,找不到就先推进,因为暂时不影响。 我把代码调整到一个文件中,先出1.0版,这样可以避免一些全局的变量问题。 重构分发协议 整合到KNI里面

23.KNI


kni KNI(Kernel Network Interface)是一种在Linux内核中实现的网络编程接口,它提供了一种高效的方式来处理网络数据包。KNI的原理是将用户空间和内核空间之间的数据传输最小化,以降低网络处理的延迟和开销。 KNI允许用户空间应用程序直接访问内核网络协议栈,从而可以更灵活

1.开发环境搭建


VMware虚拟机 Ubuntu镜像 这里使用Ubuntu20.04.6-server-amd的镜像,因为目前Jetson Orin也是这个版本的系统不过是Arm架构的。 镜像下载地址

25.网络开发


在之前的协议栈中,无论是tcp还是udp,都只能是单连接,无法并发地接收数据。想要解决这个问题,有以下几个方案: 开多个线程 IO多路复用 下面我会分别实现一下Linux环境下上面三种做法,最后选择在REPStack中我们选择哪一种。这里直接用我以前写的代码了。 多线程做法 #define BUFF