网络子系统
SylixOS使用的网络协议栈是?
Q:SylixOS使用的网络协议栈是? SylixOS使用的网络协议栈是 lwip 版本为 v2.1.0。 /** X.x.x: Major version of the stack */ #define LWIP_VERSION_MAJOR 2 /** x.X.x: Minor version of the stack */ #define LWIP_VERSION_MINOR 1 /** x.x.X: Revision of the stack */ #define ...
网卡iperf测试工程笔记
1. 适用范围 本文档适用使用iperf工具进行网卡性能测试。 2. 原理概述 使用iperf工具来进行网络性能测试(TCP、UDP),通过观察终端打印板卡发送和接收的TCP带宽值,带宽值在允许范围内,且不存在严重丢包、抖动。 3. 准备工作 测试用例:bsp_performance Win64系统:iperf3.exe 4. 技术实现 4.1 步骤一 测试内容 TCP千兆发送 测试案例 iperf 前置条件 参数配置:LW_CFG_LWIP_TCP_WND 65535 网络协议:TCP ...
网络数据包过滤问题
Q: 为什么我设置了网络数据包过滤器规则, 还是能够接收到本应该被过滤掉的数据包? 网卡默认的驱动程序是不经过 Net Packet Filter 层,直接将数据送入协议栈的,必须显示的调用 inetNpfAttach() 函数将 Net Packet Filter 层绑定到网卡上;此时,网络数据包过滤器规则才对绑定的网络接口生效. 更多扩展知识见: 详见《SylixOS shell用户手册》第 5 章 第 5.2.19节 “查看网络包数据过滤状态” 相关内容。 公开链接:SylixOS ...
SylixOS NFS server&client 配置操作说明
Q:SylixOS NFS server&client 配置操作说明 SylixOS端作为服务器: 1. NFS 服务器(sylixos 目标机)端配置: 1)服务器端SylixOS需上传base相关库和文件,base包含unfsd中间件编译; 2)配置本地网络IP及掩码,保证客户端ip同服务器端ip在同一网段; 3)通过命令配置 NFS 相关参数: vi /etc/exports [/media] ipnet=10.4.0.0/255.255.0.0 opt=rw 参数说明: /media ...
如何使用代码添加额外 IP,并获得额外 IP 对应网卡接口名称
Q:如何使用代码添加额外 IP,并获得额外 IP 对应网卡接口名称? 使用 ifmip 命令给指定网卡添加 IP 地址后,会生成 "mi" 开头的虚拟网卡。同样也可以使用 API 来添加网卡。 这里只进行代码分析和思路的展示,示例代码可见附件。 添加额外 IP,主要使用的是 netdev_mipif_add 函数。该函数原型为: int netdev_mipif_add( netdev_t *netdev, const ip4_addr_t *ip4, ...
如何配置网卡的默认网关到附加的 IP 地址上
Q:如何配置网卡的默认网关到附加的 IP 地址上? 使用 ifmip 命令给指定网卡添加 IP 地址后,会生成 "mi" 开头的虚拟网卡。若只用 ifconfig 配置 "mi" 网卡的网关地址, SylixOS 是无法通过配置的网关,访问外部 IP 地址的。需要再进行路由表配置,将默认网关切换至 "mi" 网卡。 这里进行设置的举例: ifmip en1 add 192.168.1.101 255.255.255.0 该步骤在 en1 网卡上添加额外 IP ...
网卡驱动中如何添加自定义 ioctl 命令
Q:网卡驱动中如何添加自定义 ioctl 命令? SylixOS 中支持最多 16 个网卡的自定义 ioctl 命令。 要支持网卡自定义的 ioctl 命令,驱动中可以参考附件中的 driver_custom_ioctl.c Q:应用程序中又该如何调用自定义的 ioctl 命令? 应用程序可参考附件中的 app_custom_ioctl.c
SylixOS TCP 数据段发送流程简述
Q:SylixOS TCP 数据段发送流程简述 1、在 LwIP 协议栈中使用 TCP 控制块结构 struct tcp_pcb 管理 TCP 连接,使用 TCP 段结构 struct tcp_seg 描述 TCP 段。在 TCP 控制块中有两个队列 unsent 与 unacked 表示所有未发送的 TCP 数据段和发送了还未收到确认的 TCP 数据段。如下图所示。 2、TCP 连接发送数据由应用层发起,数据段构建后首先被缓存在 TCP 控制块的 unsent ...
SylixOS TCP 数据段接收流程简述
Q:SylixOS TCP 数据段接收流程简述 1、数据包最初由网卡驱动中断接收,通过调用 tcpip_input() 送入 LwIP 协议栈; 2、在 tcpip_inpkt() 中将 ip_input() 通过 mbox (本质为消息队列) 投递至线程 “t_netproto”,并在线程中执行 ip_input(); 3、在 ip_input() 中针对 IPv4 报文调用 ip4_input() 进行处理。针对 TCP 报文,tcp_input() 处理了基本的协议规则; ...
设备上 2 个 GMAC 网卡直连,相互通讯会有丢包原因
Q:设备上 2 个 GMAC 网卡直连,相互之间通讯会有丢包,是什么原因? 通常需要调整 rx_clk_delay 和 tx_clk_delay。由于 PCB 布线阻抗等原因,会导致传输时序不稳定,需要重新设置这两个参数。
UDP 套接字收不到数据的分析与解决方法
一、复现场景 这个问题是做 SIL 维护软件时遇到的。一个板卡给另外一个板卡发送 UDP 报文。发送端板卡和接收端板卡都有三个 UDP 套接字。此时都能正常收发,但是当接收端板卡有两个套接字不 recvfrom 接收数据,导致另外一个套接字也收不到数据。用 tcpdump 抓包能抓到数据。 二、分析流程 ...
关于以太网巨帧收发问题的注意事项
问:关于以太网巨帧收发问题的注意事项: 答: 1. 通常情况下我们的网卡驱动是标准802.3结构,大家默认MTU都是1500 2. 目前客户在某些平台(如T3)使用AF_PACKET进行收发,以太网帧大于1514则失败 3. 需要修改的地方: 1). af_packt_eth.c : __packetEthDgramSendto(), __packetEthRawSendto() 取消大小限制的代码(后续内核会修正此问题) 2). ...
SylixOS 对 AF_UNIX 支持情况
Q: SylixOS 对 AF_UNIX 支持情况是怎样的? SylixOS 的 AF_UNIX 用于同一计算机系统上的两个进程之间进行通信,提供流(SOCK_STREAM)、数据报(SOCK_DGRAM)和连续数据报(SOCK_SEQPACKET)三种接口。 UNIX 域数据报服务是可靠的,既不会丢失报文也不会传递出错。 UNIX 域套接字就像是套接字和管道的混合,可以使用它们面向网络的域套接字接口或者使用 socketpair 函数来创建一对无命名的、相互连接的 UNIX 域套接字。 ...
SylixOS 中冗余网卡主从模式等具体绑定操作步骤
1. 适用范围 适用于需要进行冗余网卡绑定的操作,例如需要配置双网卡绑定主从模式的情况。 2. 原理概述 网卡 bond 是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术。 网卡冗余:冗余含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通 信系统当中有着较为广泛的应用。 3. 准备工作 硬件:支持安装 SylixOS 并拥有两个以上网卡设备机或板卡; 软件:SylixOS 系统镜像。 ...
冗余网卡使用笔记
1. 适用范围 本文档适用对象(SylixOS 驱动、应用工程师或用户等),适用对象应该具备 SylixOS 驱动、应用方面的知识,本文档用于调试网卡冗余工程。 2. 原理概述 2.1 网卡冗余 冗余含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。 3. 准备工作 3.1 环境准备 硬件:支持安装 SylixOS 并拥有两个以上网卡设备机或板卡。 软件:SylixOS。 ...
网络双冗余 netboding 如何配置?
问:SylixOS 中网络双冗余 netboding 如何配置? 答:在 SylixOS Shell 命令行执行以下命令可完成网口冗余设置: netbonding addbd bond0 ab -t 10 30 netbonding addif bond0 en3 netbonding addif bond0 en4 ifconfig bd7 inet 192.168.2.93 netmask 255.255.255.0 gateway 192.168.2.1 注:en3、en4 ...
【网络攻击】阿基里斯测试仪测试导致协议栈崩溃解决办法
问:【网络攻击】阿基里斯测试仪测试导致协议栈崩溃解决办法 测试方法: 发送 ip fragment 报文,10M 流量,测试报文一直没有最后一片的标志,就是相当于无限分片。 这些报文先把协议栈 pbuf 全部占满了,一直没有释放,在等最后一片或者超时。 所以在测试过程中,协议栈资源一直是满的,无法提供服务。 分析: ( 由源码可知,协议栈针对这个的超时时间应该是 15s ),如果支持无限分片,资源迟早会消耗光 答:修改IP分片
SylixOS 网卡初始化配置参数设置
Q:如何配置 SylixOS 网卡的初始化参数? ifconfig 命令对 ip 地址的修改仅仅是一个临时修改,当系统掉电重启后,设备ip地址还是由相应 bsp 文件来配置的,但是系统每次启动都会读取 ifparam.ini 文件,该文件存储着系统网络方面的配置信息且掉电不丢失。 ifparam.ini 文件存储在根目录 etc 文件夹下(可自行创建),文件内容如: [dw_0] // 网卡型号,可以在系统下通过 ...
SylixOS广播收发demo
SylixOS的广播使用注意事项: 1. SylixOS网卡的掩码为:255.255.255.0; 2.SylixOS广播接收程序需要设置SO_BROADCAST(请参考例程)。 SylixOS广播参考例程: 广播接收端: #include <stdio.h> #include <arpa/inet.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> int main(int argc,char ...
SylixOS 的 socket 属性设置
SylixOS 主要支持以下socket属性 协议族 Level(级别) optname(选项名) Get Set 说明 标志 数据类型 AF_PACKET SOL_PACKET PACKET_ADD_MEMBERSHIP * 加入多播组 PACKET_DROP_MEMBERSHIP * 离开多播组 PACKET_RECV_OUTPUT * 接收链路层数据包 PACKET_RX_RING * PACKET_VERSION * ...
SylixOS 的 QoS 实现原理和使用方法
1 QoS简介 QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS ...
SylixOS 零拷贝详解
SylixOS 1.4.5已经开始支持网络接收零拷贝,主要实现代码位于内核源码lwip里的netdev文件中。介绍零拷贝技术主要从两部分入手,一个是lwip内存的管理以及pbuf内存相关的知识,另一个就是当前网络报文接收流程。 1、lwip内存的管理 (1)内存的类型: lwip有两种方式的内存,heap和pool,即动态内存堆和动态内存池。 ...
SylixOS 如何配置 IP 地址?
(1) 使用 ifconfig 命令进行配置(临时配置,重启无效) 可手动创建 shell 脚本 /etc/startup.sh,并写入 ifconfig 配置(脚本生效,重启有效) ifconfig [ifname] [{inet | netmask | gateway}] [address] eg: ifconfig en1 inet 192.168.0.3 ifconfig en1 netmask 255.255.255.0 ifconfig en1 gateway 192.168.0.1 ...
SylixOS 协议栈学习(一)网络接口结构
1) netif 的结构体来描述一个硬件网络接口的。 struct netif { struct netif *next; // 指向下一个 netif 结构的指针 struct ip_addr ip_addr; // IP 地址相关配置 struct ip_addr netmask; struct ...
SylixOS 协议栈学习(二)以太网网卡接口部分初始化
在《SylixOS_协议栈学习(一)网络接口结构》中,介绍了netif 结构体和netdev结构体。 下面举个例子来看一个以太网网卡接口结构是怎样被初始化,还有数据包是如何接收和发送的。 static struct netdev_funcs net_drv = { ① .init = __enetCoreInit, .transmit = __enetCoreTx, ...
SylixOS 协议栈学习(三)ICMP 处理
ICMP(Internet control message protocol)是网络控制报文协议,用于在IP主机跟路由器之间传输控制信息的。 控制信息指网络不通、主机是否可达、路由是否有用等。 之前在将ip4_input时,涉及到三次ICMP的东西: 1、在转发过程中,如果TTL变为0,则要用icmp_time_exceeded函数向源主机发送一份超时ICMP信息。 2、会通过ip报头,判断是否是ICMP报文,如果是,则调用icmp_input函数。 ...
SylixOS 协议栈学习(四)ping 工作流程
Ping工作流程: 1、涉及协议介绍 运行ping程序时,会用到以下协议: ICMP(因特网控制报文协议):用于IP主机、路由器直接传递控制消息(一般是差错信息,如TCP/UDP传输失败,会构建ICMP报文返回)。 IP协议:一种不可靠、无连接的传输协议(目的是为了更好的提供传输服务)。(对于TCP传输,已十分可靠,不需要在IP层再链接;UDP本身就是不可靠、无连接的协议,使用IP协议能更快传输)。 ...