1.测试网络的吞吐量
挂载:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 IP:/mnt/sda2/kh/nfs /tmp/remote
然后文件while读写.
2.ifconfig 查看网络信息
udhcpc --- 终端设备作为DHCP客户端
udhcpd --- 终端设备作为DHCP服务器, busybox中自带一个udhcpd,是一个精简的dhcpd
3.查看串口号
demsg | grep tty
3.关闭Linux 防火墙
ip6tables -P INPUT ACCEPT
iptables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
iptables -P FORWARD ACCEPT
IPtables -L 查看规则
4.
HSIC: High-speed Inter-chip USB Electrical Specification(smsc9730)
SGMII: Serial gigabit media independent interface(AR8033)
5.
MAC: 太网媒体接入控制器(链路层)
PHY: 物理接口收发器(物理层), 其芯片寄存器都是通用的,用 mdio 接口去读取。
MII: 媒体独立接口
GMII(Gigabit MII)
RGMII:即Reduced GMII,是GMII的简化版本,将接口信号线数量从24根减少到14根,时钟频率仍旧为125MHz
SGMII:即Serial GMII,是PHY与MAC之间的接口,时钟频率625MHz,收发各一对差分信号线
MAC 和PHY,一个是数据链路层,一个是物理层;两者通过MII传送数据
6.
系统里装有一个硬件网卡,Linux 会在系统里为其生成一个网络设备实例,如 eth0,用户需要对 eth0 发出命令以配置或使用它了
Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似
当一个设备被 attach 到 Bridge 上时,那个设备的 IP 会变的无效,Linux 不再使用那个 IP 在三层接受数据??
7.用 iperf 测吞吐量
Sever:
iperf -s -i 2 ----- 以 2秒 为单位显示报告间隔
Client:
iperf -c 192.168.225.6 -i 2 -t 10 ---- 测试时间为 10秒, server 地址为 192.168.225.43
8.
169.254 地址段也属私有保留地址,一般开启了dhcp服务的设备但又无法获取到dhcp的会随机使用这个网段的ip。
出现此IP地址段,一般表示互联网无法通信,表示网络连接问题(网线问题,DHCP服务器问题等)
9.RJ45 相关知识
左绿灯:不亮代表10M / 绿色代表100M / 黄色代表1000M
右黄灯:长亮 代表无数据收发; 闪烁 代表有数据收发
1000 RJ45引脚(CAT5E超五类)
1. BI DA+
2. BI DA-
3. BI DB+
4. BI DC+
5. BI DC-
6. BI DB-
7. BI DD+
8. BI DD-
10. ethtool 命令
./ethtool -s eth0 speed 100 duplex full autoneg off
./ethtool -A <eth> autoneg off rx on tx on
下载源码:git clone git://git.kernel.org/pub/scm/network/ethtool/ethtool.git
编译: ./autogen.sh 然后 ./configure,这样就生成了 Makefile, 把Makefile 中 CC 换成自己工程的交叉编译工具,make 即生成了 ethtool 工具。
11. phyreg
网上找到 phyreg.c ,直接读取 phy 寄存器,这个工具比较好用。
12. tcpdump
用 Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
实际使用 tcpdump -i eth0 -v 就够了。
13. strace 命令
14. traceroute IP
15. 关闭 winPC 节能以太网:
802.3az 节能标准: EEE(Energy Efficient Ethernet)-高效节能以太网
网卡没有流量时自动降低功耗,只有网络使用率较高时,才会发挥最大功耗
Green feature 类似
“配置”>"高级">“节能乙太网路"对应值选择“关闭”
16.SGMII 硬件连通性测试
通过 socket建立 UDP连接:
skfd = socket(AF_INET, SOCK_DGRAM,0)
通过ioctl 去读 全局唯一标识符:
*mii = (struct mii_data *)&ifr.ifr_data;
mii->reg_num = location; ---- 寄存器1 或者2
ioctl(skfd, SIOCGMIIREG, &ifr)
kernel :include/uapi/linux/sockios.h:82:#define SIOCGMIIREG 0x8948 有 SIOCGMIIREG设置。
这样通过MDIO 可以判断 MDIO_CLK/MDIO_DATA 这两个引脚连通性。
还有 SGMII_RX_P/SGMII_TX_P/SGMII_RX_M/SGMII_TX_M这些引脚呢?
发现当DUT 用 iperf 做client 端时,在100M 情况下,上述引脚有断开,吞吐量差异很大,如此问题解决。
其实也想过用硬件回环测试,就不用这么复杂了,但是问了芯片厂商,未能找到方法。
sprintf(iperf_command, "iperf -c %s -i 2 -t 10", req.ip_address);
popen(iperf_command, "r");
while (fgets(tmp_buf, 256, fd));
pos = strstr(tmp_buf, "MBytes");
strncpy(throughput, pos, strlen((char *)pos));