关于网络模块的一些笔记

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));

猜你喜欢

转载自blog.csdn.net/jin615567975/article/details/78951797