Linux之 网卡发包、接包 error 、droped 情况

1、 查看各个网卡发送、接受包情况
oracle@hbdw2:/oratmp2$netstat -ni
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
Ibond0 1500 0 328233758 0 0 0 331426557 0 0 0 BMmRU
ebond0 1500 0 926492731 0 0 0 1822546664 0 0 0 BMmRU
ebond0:1 1500 0 - no statistics available - BMmRU
ebond0:3 1500 0 - no statistics available - BMmRU
ebond1 1500 0 9095336643 0 0 0 9497066959 0 0 0 BMmRU
ebond1:1 1500 0 - no statistics available - BMmRU
eth0 1500 0 925316283 0 0 0 1822592394 0 0 0 BMsRU
eth1 1500 0 9082511424 0 0 0 9497365650 0 0 0 BMsRU
eth2 1500 0 13003043 0 0 0 8 0 0 0 BMsRU
eth3 1500 0 1179049 0 0 0 0 0 0 0 BMsRU
ib0 1500 0 328232222 0 0 0 331434671 0 0 0 BMsRU
ib3 1500 0 4955 0 0 0 0 0 0 0 BMsRU
lo 65536 0 563542270 0 0 0 563542270 0 0 0 LRU

Iface :网络接口名称
MTU:Maximum Trasmission Unit 最大传输单元
Met: Metric,度量值 , 供某些操作系统用,用于计算一条路由的成本
RX-OK :接收时,正确的数据包数。
RX-ERR :接收时,产生错误的数据包数。
RX-DRP :接收时,丢弃的数据包数。
RX-OVR :接收时,由于过速(在数据传输中,由于接收设备不能接收按照发送速率传送来的数据而使数据丢失)而丢失的数据包数。
TX-OK :发送时,正确的数据包数。
TX-ERR :发送时,产生错误的数据包数。
TX-DRP :发送时,丢弃的数据包数。
TX-OVR :发送时,由于过速而丢失的数据包数。
Flg :标志。

-- 详细补充:
Flg: 标志种类
B 已经设置了一个广播地址。
L 该接口是一个回送设备。
M 接收所有数据包(混乱模式)。
N 避免跟踪。
O 在该接口上,禁用ARP。
P 这是一个点到点链接。
R 接口正在运行。
U 接口处于“活动”状态。

MTU 最大传输单元:链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

2、 查看指定网卡发送接受包情况
oracle@hbdw2:/oratmp2$ifconfig ebond0
ebond0 Link encap:Ethernet HWaddr A0:A3:3B:D0:C7:DC 
inet addr:136.142.55.2 Bcast:136.142.55.127 Mask:255.255.255.128
inet6 addr: fe80::a2a3:3bff:fed0:c7dc/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:926533235 errors:0 dropped:0 overruns:0 frame:0
TX packets:1825953502 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:3331627908495 (3.0 TiB) TX bytes:1033757568200 (962.7 GiB)

Link encap :接口的概要描述。
HWaddr :网卡的硬件地址。
inet addr :网卡的IP地址。
Bcast :广播地址。
Mask :网络掩码。
UP:表示“接口已启用”。
BROADCAST :表示“主机支持广播”。
RUNNING:表示“接口在工作中”。
MULTICAST:表示“主机支持多播”。
MTU :最大传输单元
Metric 见上上表。(同“Met”)
RX packets 接收时,正确的数据包数。
RX errors 接收时,产生错误的数据包数。
RX dropped 接收时,丢弃的数据包数。
RX overruns 接收时,由于过速而丢失的数据包数。
RX frame 接收时,发生frame错误而丢失的数据包数。
(以太网是一种共享媒体(shared medium),所以必须要有机制来决定由谁来使用传输媒体,在以太网中所采用的是CSMA/CD(Carrier Sense Multiple Access with Collision Detection)方式,步骤如下:
1 将要传输的数据切割成Frame,作为传输单位。
2 要传输时先侦测电缆上是否有设备送Frame(Carrier Sense)。
3 若沒有设备使用,才准备发送Frame,并侦测是否有另外的设备发送Frame(Collision Detection)。
4 若发生碰撞,则各自等待一段随机的时间,再重试( Backoff Algorithm)。
TX packets 发送时,正确的数据包数。
TX errors 发送时,产生错误的数据包数。
TX dropped 发送时,丢弃的数据包数。
TX overruns 发送时,由于过速而丢失的数据包数。
TX carrier 发送时,发生carrier错误而丢失的数据包数。 
collisions 冲突信息包的数目。 
txqueuelen 发送队列的大小。 
RX bytes 接收的数据量。
TX bytes 发送的数据量。

### 解决方案 在用户提供的代码中,报错信息表明 `CNN` 对象不存在 `'relu'` 属性。这通常是由于使用了不兼容的库版本或错误的模块导入方式导致的。以下是详细的分析和解决方案: #### 问题原因 1. **Keras 和 TensorFlow 的版本冲突**: - 在较新的 TensorFlow 版本中,Keras 已经被集成到 TensorFlow 中。如果同时使用 `keras` 和 `tensorflow.keras`,可能会导致模块之间的冲突[^2]。 - 用户代码中可能混合使用了 `keras.layers` 和 `tensorflow.keras.layers`,从而引发属性找不到的问题。 2. **模块导入错误**: - 如果导入的是旧版 Keras 模块(如 `from keras.layers import Conv1D`),而实际运行环境依赖于 TensorFlow 内置的 Keras(如 `tensorflow.keras.layers.Conv1D`),则可能导致某些属性不可用。 3. **激活函数的定义问题**: - 激活函数 `'relu'` 可能未正确指定。例如,`Conv1D` 的 `activation` 参数需要明确指向正确的激活函数实现。 --- #### 解决方法 以下是推荐的解决方法: 1. **统一使用 `tensorflow.keras` 模块**: - 确保所有层均来自 `tensorflow.keras.layers`,以避免版本冲突。 - 修改代码中的导入部分如下: ```python from tensorflow.keras.layers import Input, Embedding, Conv1D, MaxPooling1D, Concatenate, Flatten, Dropout, Dense from tensorflow.keras.models import Model from tensorflow.keras import backend as K ``` 2. **检查激活函数的实现**: - 确保激活函数 `'relu'` 被正确识别。可以尝试将激活函数从层中分离出来,显式地添加一个 `Activation` 层: ```python cnn = Conv1D(num_filters, fs, padding='valid', strides=1)(emb) cnn = Activation('relu')(cnn) # 显式添加激活函数 ``` 3. **完整修正后的代码示例**: 以下是修正后的代码片段,确保所有模块一致且激活函数正确实现: ```python from tensorflow.keras.layers import Input, Embedding, Conv1D, MaxPooling1D, Concatenate, Flatten, Dropout, Dense, Activation from tensorflow.keras.models import Model from tensorflow.keras import backend as K def CNN_clf(): title_input = Input(shape=(title_maxlen,), name='title_input') content_input = Input(shape=(content_maxlen,), name='content_input') title_emb = Embedding(vocab_size, embedding_dim, input_length=title_maxlen)(title_input) content_emb = Embedding(vocab_size, embedding_dim, input_length=content_maxlen)(content_input) K_weights = 0.5 # 假设权重为常量 emb = K.concatenate([title_emb, K_weights * content_emb], axis=1) feature_maps = [] for fs in filter_sizes: cnn = Conv1D(num_filters, fs, padding='valid', strides=1)(emb) cnn = Activation('relu')(cnn) # 显式添加激活函数 maxpool = MaxPooling1D()(cnn) feature_maps.append(maxpool) feature_all = Concatenate()(feature_maps) flat = Flatten()(feature_all) droped_flat = Dropout(0.5)(flat) output = Dense(num_classes, activation='sigmoid')(droped_flat) m = Model(inputs=[title_input, content_input], outputs=output) return m ``` 4. **验证环境配置**: - 确保安装的 TensorFlow 和 Keras 版本兼容。例如,TensorFlow 2.x 默认包含 Keras,无需单独安装 Keras。 - 使用以下命令检查版本: ```bash pip show tensorflow keras ``` --- ### 注意事项 - 如果仍然出现类似问题,请检查是否遗漏了某些必要参数,例如 `embedding_dim`、`vocab_size`、`filter_sizes`、`num_filters` 和 `num_classes` 的定义。 - 如果运行环境中存在多个 Keras 或 TensorFlow 安装版本,建议创建独立的虚拟环境以避免冲突。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值