内容是徐老师写的,我整理一下,记录在这里备忘。
网络桥接配置框图如图 1所示,两块MPC8548E板通过同步口方式(以太网口亦适用)进行连接,将同步口驱成网络设备,工作方式与以太网口等同。假设同步口网络设备接口为eth4,以太网设备接口为eth0。
图 1:桥接方式配置示意图
桥接方式配置如下:
(1)MPC8548E板1(图 1中左)
#/usr/sbin/brctl addbr br0
#/usr/sbin/brctl stp br0 off(若brctl为busybox的符号连接,则off替换为0)
#/usr/sbin/brctl addif br0 eth0
#/usr/sbin/brctl addif br0 eth1
# /sbin/ifconfig eth0 0.0.0.0.0up
# /sbin/ifconfig eth4 0.0.0.0up
# /sbin/ifconfig br0 192.168.1.3 netmask255.255.255.0 up
(1)MPC8548E板2(图 1中右)
# /usr/sbin/brctl addbr br0
# /usr/sbin/brctl stp br0 off(若brctl为busybox的符号连接,则off替换为0)
# /usr/sbin/brctl addif br0 eth0
# /usr/sbin/brctl addif br0 eth1
# /sbin/ifconfig eth0 0.0.0.0.0up
# /sbin/ifconfig eth4 0.0.0.0up
# /sbin/ifconfig br0 192.168.1.5 netmask255.255.255.0 up
测试方式与路由方式类同。
桥接方式下同步口驱动中构造伪以太网帧MAC头以便能够递交给协议栈上层。
初步设想的构造方式:
在收到同步定长帧,并把同步定长帧放入到新构造的sk_buff结构体后,利用skb_push和memcpy函数向skb中增加一个14字节的伪MAC头。其中MAC头中源MAC地址(6字节)可任意填,只要符合MAC地址要求,目的MAC地址(6字节)填充本同步口的MAC地址,协议字段(2字节)取同步定长帧中协议字段(同步定长帧的第18、19字节)的值。
判断struct net_device结构体中br_port字段的值,若br_port非空说明同步口eth4被加入到虚拟的桥接设备中,说明处于桥接模式下,否则可认定处于路由模式下。
网络配置框图如图 1所示,两块MPC8548E板通过同步口方式(以太网口亦适用)进行连接,将同步口驱成网络设备,工作方式与以太网口等同。假设同步口网络设备接口为eth0,以太网设备接口为eth1。
图2:路由配置示意图
网络地址规划为三个网段:192.168.1.0/24,192.168.2.0/24,192.168.3.0/24。其中,同步口所处的网段为192.168.2.0/24,地址分别为192.168.2.3/24和192.168.2.5/24。
两端通信的LAN的网段分别为192.168.1.0/24和192.168.2.0/24,MPC8548E板的以太网接口eth1的地址分别为192.168.1.3/24和192.168.3.5/24。
简单静态单一路由配置如下:
(1)MPC8548E板1(图 2中左)
# /sbin/ifconfig eth1 192.168.1.3 netmask255.255.255.0 up
# /sbin/ifconfig eth0 192.168.2.3 netmask255.255.255.0 up
# /sbin/route add –net 192.168.3.0 netmask255.255.255.0 gw 192.168.2.5
# echo 1 > /proc/sys/net/ipv4/ip_forward
(1)MPC8548E板2(图 2中右)
# /sbin/ifconfig eth1 192.168.3.5 netmask255.255.255.0 up
# /sbin/ifconfig eth0 192.168.2.5 netmask255.255.255.0 up
# /sbin/route add –net 192.168.1.0 netmask255.255.255.0 gw 192.168.2.3
# echo 1 > /proc/sys/net/ipv4/ip_forward
图3:iperf收发数据包测试示意图
测试时,LAN可在终端上采用iperf软件模拟IP数据包的收发过程。调试和测试过程中可用iperf收发TCP和UDP数据包,iperf工作模式为C/S方式。
1、以从192.168.1.200向192.168.3.200发送TCP数据包为例阐述,192.168.3.200为服务器端,192.168.1.200为客户端。
(1)首先开启服务器端
iperf -s -i 1 -f m -p 5000
备注:-s选项表示以服务器模式运行,-i参数表示统计报告显示的时间间隔,单位为秒,-f参数表示统计报告显示的格式,m表示Mbits,k表示Kbits,M表示Mbytes,K表示Kbytes。参数-p指定监听的端口为5000。
(2)然后开启客户端
iperf -c 192.168.3.200 -i 1 -f m -p 5000 -t 90 -l1024
备注:参数-c表明以客户端模式运行,并连接到服务器端192.168.3.200,参数-t表示发送数据包的时间长度,单位为秒,参数-l表示数据包的长度,单位为字节。
(3)在服务器端查看数据包收发的统计信息,包括数据速率,丢包率等
2、以从192.168.1.200向192.168.3.200发送UDP数据包为例阐述,192.168.3.200为服务器端,192.168.1.200为客户端。
(1)首先开启服务器端
iperf -s -u -i 1 -f m -p 5000
(2)然后开启客户端
iperf -c 192.168.3.200 -u -i 1 -f m -p 5000 -t 90-b 100m
备注:选项-u指定收发UDP数据包,默认若不指定,为收发TCP数据包, 参数-b指定带宽,本示例中为100Mbps。
(3)在服务器端查看数据包收发的统计信息,包括数据速率,丢包率等
(3)在服务器端查看数据包收发的统计信息,包括数据速率,丢包率等
使用arp -s 配置的静态地址映射表就是永久的,除非手动删除,否则就永久存在(不然我们干嘛还说它是为静态的呢?)。
TCP/IP协议栈系统中的arp地址映射表缓存中存在的项一般默认存在15分钟。