RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux網(wǎng)卡收包流程

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-12-05 16:21 ? 次閱讀

Linux 網(wǎng)卡收包流程如下

網(wǎng)卡收到數(shù)據(jù)包

將數(shù)據(jù)包從網(wǎng)卡硬件緩存移動到服務(wù)器內(nèi)存中(DMA方式,不經(jīng)過CPU)

通過硬中斷通知CPU處理

CPU通過軟中斷通知內(nèi)核處理

經(jīng)過TCP/IP協(xié)議棧處理

應(yīng)用程序通過read()從socket buffer讀取數(shù)據(jù)

9860dcb4-af11-11ef-93f3-92fbcf53809c.png

網(wǎng)卡丟包
我們先看下ifconfig的輸出:

# ifconfig eth0
eth0: flags=4163  mtu 1500
        inet 10.5.224.27  netmask 255.255.255.0  broadcast 10.5.224.255
        inet6 fe80::5054fea4:44ae  prefixlen 64  scopeid 0x20
        ether 52:54:00:a4:44:ae  txqueuelen 1000  (Ethernet)
        RX packets 9525661556  bytes 10963926751740 (9.9 TiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8801210220  bytes 12331600148587 (11.2 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0Copy

登錄系統(tǒng)底層,檢查管理網(wǎng)網(wǎng)卡收發(fā)是否存在持續(xù)增長的errors包,使用命令:

# watch -n 1 "ifconfig eth0"
# watch -n 1 ip -s link show eth0
說明:watch可以將命令的輸出結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備,多用于周期性執(zhí)行命令/定時執(zhí)行命令,-n或-interval來指定間隔的時間,缺省每2秒運行一下程序;eth1為網(wǎng)卡名稱。

正常的

987770b4-af11-11ef-93f3-92fbcf53809c.png

異常的

9883d2dc-af11-11ef-93f3-92fbcf53809c.png

RX(receive) 代表接收報文, TX(transmit) 表示發(fā)送報文。

RX errors: 表示總的收包的錯誤數(shù)量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。

RX dropped: 表示數(shù)據(jù)包已經(jīng)進(jìn)入了 Ring Buffer,但是由于內(nèi)存不夠等系統(tǒng)原因,導(dǎo)致在拷貝到內(nèi)存的過程中被丟棄。

RX overruns: 表示 fifo 的 overruns,由于 Ring Buffer(aka Driver Queue) 傳輸?shù)?IO 大于 kernel 能夠處理的 IO 導(dǎo)致的,而 Ring Buffer 則是指在發(fā)起 IRQ 請求之前的那塊 buffer。很明顯,overruns 的增大意味著數(shù)據(jù)包沒到 Ring Buffer 就被網(wǎng)卡物理層給丟棄了,CPU 無法及時的處理中斷是造成 Ring Buffer 滿的原因之一,可能原因是因為 interruprs 分布的不均勻,沒有做 affinity 而造成的丟包。

RX frame: 表示 misaligned 的 frames。

dropped 與 overruns 的區(qū)別:

dropped,表示這個數(shù)據(jù)包已經(jīng)進(jìn)入到網(wǎng)卡的接收緩存 fifo 隊列,并且開始被系統(tǒng)中斷處理準(zhǔn)備進(jìn)行數(shù)據(jù)包拷貝(從網(wǎng)卡緩存 fifo 隊列拷貝到系統(tǒng)內(nèi)存),但由于此時的系統(tǒng)原因(比如內(nèi)存不夠等)導(dǎo)致這個數(shù)據(jù)包被丟掉,即這個數(shù)據(jù)包被 Linux 系統(tǒng)丟掉。

overruns,表示這個數(shù)據(jù)包還沒有被進(jìn)入到網(wǎng)卡的接收緩存 fifo 隊列就被丟掉,因此此時網(wǎng)卡的 fifo 是滿的。為什么 fifo 會是滿的?因為系統(tǒng)繁忙,來不及響應(yīng)網(wǎng)卡中斷,導(dǎo)致網(wǎng)卡里的數(shù)據(jù)包沒有及時的拷貝到系統(tǒng)內(nèi)存, fifo 是滿的就導(dǎo)致后面的數(shù)據(jù)包進(jìn)不來,即這個數(shù)據(jù)包被網(wǎng)卡硬件丟掉。所以,如果遇到 overruns 非0,需要檢測cpu負(fù)載與cpu中斷情況。

環(huán)形隊列Ring Buffer溢出
當(dāng)網(wǎng)卡的緩存區(qū)(ring buffer)設(shè)置的太小。網(wǎng)絡(luò)數(shù)據(jù)包到達(dá)(生產(chǎn))的速率快于內(nèi)核處理(消費)的速率時, Ring Buffer 很快會被填滿,新來的數(shù)據(jù)包將被丟棄。
通過 ethtool 或 /proc/net/dev 可以查看因Ring Buffer滿而丟棄的包統(tǒng)計

[root@xxx ~]# ethtool -S ens2 | grep fifo
     rx_fifo_errors: 0
     tx_fifo_errors: 0
[root@xxx ~]# cat /proc/net/dev | grep ens2
  ens2:  659229    8107    0    0    0     0          0         0   249827    2833    0    0    0     0       0          0

可以通過ethtool 設(shè)置ring buffer 的緩沖區(qū)大小

# 修改網(wǎng)卡eth0接收與發(fā)送硬件緩存區(qū)大小
$ ethtool -G eth0 rx 4096 tx 4096
Pre-set maximums:
RX:     4096   
RX Mini:    0
RX Jumbo:   0
TX:     4096   
Current hardware settings:
RX:     4096   
RX Mini:    0
RX Jumbo:   0
TX:     4096

中斷過程中的問題

什么是中斷
中斷有兩種:一種硬中斷;一種軟中斷。硬中斷是由硬件產(chǎn)生的,比如,像磁盤,網(wǎng)卡,鍵盤;軟中斷是由當(dāng)前正在運行的進(jìn)程所產(chǎn)生的。

硬中斷,是一種由硬件產(chǎn)生的電信號直接發(fā)送到中斷控制器上,然后由中斷控制器向 CPU 發(fā)送信號,CPU 檢測到該信號后,會中斷當(dāng)前的工作轉(zhuǎn)而去處理中斷。然后,處理器會通知內(nèi)核已經(jīng)產(chǎn)生中斷,這樣內(nèi)核就會對這個中斷進(jìn)行適當(dāng)?shù)奶幚怼?/p>

當(dāng)網(wǎng)卡收到數(shù)據(jù)包時會產(chǎn)生中斷請求(硬中斷)通知到 CPU,CPU 會中斷當(dāng)前正在運行的任務(wù),然后通知內(nèi)核有新數(shù)據(jù)包,內(nèi)核調(diào)用中斷處理程序(軟中斷)進(jìn)行響應(yīng),把數(shù)據(jù)包從網(wǎng)卡緩存及時拷貝到內(nèi)存,否則會因為緩存溢出被丟棄。剩下的處理和操作數(shù)據(jù)包的工作就會交給軟中斷。

什么是多隊列網(wǎng)卡
當(dāng)網(wǎng)卡不斷的接收數(shù)據(jù)包,就會產(chǎn)生很多中斷,一個中斷請求只能被一個CPU處理, 而現(xiàn)在的機(jī)器都是用多個CPU,同時只有一個 CPU 去處理 Ring Buffer 數(shù)據(jù)會很低效,這個時候就產(chǎn)生了叫做 Receive Side Scaling(RSS) 或者叫做 multiqueue 的機(jī)制來處理這個問題, 這就是為啥需要多隊列的原因。

RSS(Receive Side Scaling)是網(wǎng)卡的硬件特性,實現(xiàn)了多隊列。通過多隊列網(wǎng)卡驅(qū)動加載,獲取網(wǎng)卡型號,得到網(wǎng)卡的硬件 queue 的數(shù)量,并結(jié)合 CPU 核的數(shù)量,最終通過 Sum=Min(網(wǎng)卡 queue,CPU core)得出所要激活的網(wǎng)卡 queue 數(shù)量。

NIC 收到 Frame 的時候能通過 Hash Function 來決定 Frame 該放在哪個 Ring Buffer 上,觸發(fā)的 IRQ 也可以通過操作系統(tǒng)或者手動配置 IRQ affinity 將 IRQ 分配到多個 CPU 上。這樣 IRQ 能被不同的 CPU 處理,從而做到 Ring Buffer 上的數(shù)據(jù)也能被不同的 CPU 處理,從而提高數(shù)據(jù)的并行處理能力。

RSS 除了會影響到 NIC 將 IRQ 發(fā)到哪個 CPU 之外,不會影響別的邏輯。

什么是RPS
Receive Packet Steering(RPS) 是在 NIC 不支持 RSS 時候在軟件中實現(xiàn) RSS 類似功能的機(jī)制。其好處就是對 NIC 沒有要求,任何 NIC 都能支持 RPS,但缺點是 NIC 收到數(shù)據(jù)后 DMA 將數(shù)據(jù)存入的還是一個 Ring Buffer,NIC 觸發(fā) IRQ 還是發(fā)到一個 CPU,還是由這一個 CPU 調(diào)用 driver 的 poll 來將 Ring Buffer 的數(shù)據(jù)取出來。RPS 是在單個 CPU 將數(shù)據(jù)從 Ring Buffer 取出來之后才開始起作用,它會為每個 Packet 計算 Hash 之后將 Packet 發(fā)到對應(yīng) CPU 的 backlog 中,并通過 Inter-processor Interrupt(IPI) 告知目標(biāo) CPU 來處理 backlog。后續(xù) Packet 的處理流程就由這個目標(biāo) CPU 來完成。從而實現(xiàn)將負(fù)載分到多個 CPU 的目的。通常如果開啟了RPS會加重所有 CPU 的負(fù)擔(dān).

IRQ 中斷請求 親和綁定
/proc/interrupts 文件中可以看到各個 CPU 上的中斷情況。

/proc/irq/[irq_num]/smp_affinity_list 可以查看指定中斷當(dāng)前綁定的 CPU。

可以通過配置 IRQ affinity 指定 IRQ 由哪個 CPU 來處理中斷, 先通過 /proc/interrupts 找到 IRQ 號之后,將希望綁定的 CPU 號寫入 /proc/irq/IRQ_NUMBER/smp_affinity,寫入的是 16 進(jìn)制的 bit mask。比如看到隊列 rx_0 對應(yīng)的中斷號是 41 那就執(zhí)行:

echo 6 > /proc/irq/41/smp_affinity
6 表示的是 CPU2 和 CPU1

0 號 CPU 的掩碼是 0x1 (0001),1 號 CPU 掩碼是 0x2 (0010),2 號 CPU 掩碼是 0x4 (0100),3 號 CPU 掩碼是 0x8 (1000) 依此類推。

softirq 數(shù)統(tǒng)計
通過 /proc/softirqs 能看到每個 CPU 上 softirq 數(shù)量統(tǒng)計:

cat /proc/softirqs
                    CPU0       CPU1       
          HI:          1          0
       TIMER: 1650579324 3521734270
      NET_TX:   10282064   10655064
      NET_RX: 3618725935       2446
       BLOCK:          0          0
BLOCK_IOPOLL:          0          0
     TASKLET:      47013      41496
       SCHED: 1706483540 1003457088
     HRTIMER:    1698047   11604871
         RCU: 4218377992 3049934909

NET_RX 表示網(wǎng)卡收到包時候觸發(fā)的 softirq,一般看這個統(tǒng)計是為了看看 softirq 在每個 CPU 上分布是否均勻,不均勻的話可能就需要做一些調(diào)整。比如上面看到 CPU0 和 CPU1 兩個差距很大,原因是這個機(jī)器的 NIC 不支持 RSS,沒有多個 Ring Buffer。開啟 RPS 后就均勻多了。

如何開啟RPS
RPS 默認(rèn)是關(guān)閉的,當(dāng)機(jī)器有多個 CPU 并且通過 softirqs 的統(tǒng)計 /proc/softirqs 發(fā)現(xiàn) NET_RX 在 CPU 上分布不均勻或者發(fā)現(xiàn)網(wǎng)卡不支持 mutiqueue 時,就可以考慮開啟 RPS。

開啟 RPS 需要調(diào)整 /sys/class/net/DEVICE_NAME/queues/QUEUE/rps_cpus 的值。比如執(zhí)行:

echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
表示的含義是處理網(wǎng)卡 eth0 的 rx-0 隊列的 CPU 數(shù)設(shè)置為 f 。即設(shè)置有 15 個 CPU 來處理 rx-0 這個隊列的數(shù)據(jù),如果你的 CPU 數(shù)沒有這么多就會默認(rèn)使用所有 CPU 。

netdev_max_backlog調(diào)優(yōu)
netdev_max_backlog 是內(nèi)核從 NIC 收到包后,交由協(xié)議棧(如 IP、TCP )處理之前的緩沖隊列, 通過softnet_stat可以確定是否發(fā)生了netdev backlog隊列溢出

[root@xxx ~]# cat /proc/net/softnet_stat
000000bf 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000028 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000c7 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000031 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000021d8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000929 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

C#復(fù)制全屏

每一行代表每個 CPU 核的狀態(tài)統(tǒng)計,從 CPU0 依次往下。 每一列代表一個 CPU 核的各項統(tǒng)計:第一列代表中斷處理程序收到的包總數(shù);第二列即代表由于 netdev_max_backlog 隊列溢出而被丟棄的包總數(shù)。 第3列表示軟中斷一次取走netdev_budget個數(shù)據(jù)包,或取數(shù)據(jù)包時間超過2ms的次數(shù)。 第4~8列固定為0,沒有意義。 第9列表示發(fā)送數(shù)據(jù)包時,對應(yīng)的隊列被鎖住的次數(shù)。

netdev_max_backlog 的默認(rèn)值是 1000,我們可以修改內(nèi)核參數(shù)來調(diào)優(yōu):

sysctl -w net.core.netdev_max_backlog=2000

鏈接:https://www.cnblogs.com/OpenSourceSite/p/18121680

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • 網(wǎng)卡
    +關(guān)注

    關(guān)注

    4

    文章

    307

    瀏覽量

    27374

原文標(biāo)題:Linux之網(wǎng)絡(luò)排錯

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RZ T2H PCIe裸機(jī)程序開發(fā)和Linux下的配置介紹

    ,還提供2個PCIe Gen3通道等高速外設(shè)。本文主要介紹PCIe外設(shè)的功能、裸機(jī)下EP模式的程序開發(fā)、以及在Linux下,如何編譯網(wǎng)卡流程。
    的頭像 發(fā)表于 12-18 11:14 ?408次閱讀
    RZ T2H PCIe裸機(jī)程序開發(fā)和<b class='flag-5'>Linux</b>下的配置介紹

    linux網(wǎng)卡配置文件

    網(wǎng)卡配置文件 ? ? 網(wǎng)卡目錄[root@localhost opt]# ls /etc/sysconfig/network-scripts/網(wǎng)卡文件名字,和我們ifconfig看到的一樣
    的頭像 發(fā)表于 12-10 10:09 ?197次閱讀

    網(wǎng)卡的演進(jìn)和應(yīng)用

    隨著云計算和虛擬化技術(shù)的發(fā)展,網(wǎng)卡在功能和硬件結(jié)構(gòu)方面也經(jīng)歷了四個階段,即網(wǎng)卡、智能網(wǎng)卡、基于FPGA的DPU和DPU SoC網(wǎng)卡。本文將重點介紹這些不同類型的網(wǎng)絡(luò)適配器和處理器,在硬
    的頭像 發(fā)表于 10-24 16:45 ?312次閱讀
    <b class='flag-5'>網(wǎng)卡</b>的演進(jìn)和應(yīng)用

    服務(wù)器網(wǎng)卡和普通網(wǎng)卡區(qū)別

    處理能力 服務(wù)器網(wǎng)卡具有更強(qiáng)的處理能力,可以處理更復(fù)雜的網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)。普通網(wǎng)卡的處理能力相對較弱。 1.3 延遲 服務(wù)器網(wǎng)卡的延遲通常較低,這對于需要快速響應(yīng)的應(yīng)用程序非常重要。
    的頭像 發(fā)表于 10-10 16:37 ?413次閱讀

    Linux網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)

    請求并與底層的網(wǎng)絡(luò)硬件進(jìn)行交互。本文將深入探討 Linux 網(wǎng)絡(luò)協(xié)議棧的架構(gòu)與實現(xiàn),涵蓋數(shù)據(jù)處理流程、關(guān)鍵模塊、協(xié)議棧層次以及性能優(yōu)化等方面。
    的頭像 發(fā)表于 09-10 09:51 ?298次閱讀
    <b class='flag-5'>Linux</b>網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)

    Linux啟動流程基本分析

    Linux啟動流程總的來說可以分成三個階段 Linux啟動流程圖 ? 第一步:上電 ?在 x86 系統(tǒng)中,將 1M 空間最上面的 0xF0000 到 0xFFFFF 這 64K 映射給
    的頭像 發(fā)表于 05-11 08:49 ?662次閱讀
    <b class='flag-5'>Linux</b>啟動<b class='flag-5'>流程</b>基本分析

    電池生產(chǎn)的工藝流程

    電池,又稱為聚合物鋰離子電池,其生產(chǎn)工藝流程相對復(fù)雜,涉及到多個精細(xì)的步驟。
    的頭像 發(fā)表于 05-07 11:19 ?2605次閱讀

    門禁物聯(lián)網(wǎng)卡的使用與管理

    門禁物聯(lián)網(wǎng)卡,作為現(xiàn)代門禁系統(tǒng)的重要組件,它使得門禁系統(tǒng)能夠與網(wǎng)絡(luò)相連,從而實現(xiàn)遠(yuǎn)程監(jiān)控、數(shù)據(jù)記錄、智能控制等多種功能。那么,門禁物聯(lián)網(wǎng)卡究竟如何使用呢?本文將詳細(xì)解析門禁物聯(lián)網(wǎng)卡的使用步驟
    的頭像 發(fā)表于 04-11 16:51 ?576次閱讀
    門禁物聯(lián)<b class='flag-5'>網(wǎng)卡</b>的使用與管理

    網(wǎng)卡揭秘:如何選擇適合您需求的網(wǎng)卡

    網(wǎng)卡(Network Interface Card,NIC),也稱網(wǎng)絡(luò)適配器,是連接計算機(jī)與網(wǎng)絡(luò)的硬件設(shè)備。在光通信系統(tǒng)中,網(wǎng)卡特指光纖網(wǎng)卡,它通過光纖接口與外部網(wǎng)絡(luò)通信,傳輸數(shù)據(jù)。早期的網(wǎng)卡
    的頭像 發(fā)表于 04-10 10:04 ?697次閱讀
    光<b class='flag-5'>網(wǎng)卡</b>揭秘:如何選擇適合您需求的<b class='flag-5'>網(wǎng)卡</b>

    Linux常用網(wǎng)絡(luò)命令介紹

    默認(rèn)使用該命令會一直發(fā)送ICMP直到用戶手動中止,可以使用-c命令指定發(fā)送數(shù)據(jù)的個數(shù),使用-W指定最長等待時間,如果有多張網(wǎng)卡,還可以通過-I指定發(fā)送
    發(fā)表于 03-25 14:45 ?458次閱讀
    <b class='flag-5'>Linux</b>常用網(wǎng)絡(luò)命令介紹

    linux怎么查看網(wǎng)卡光功率?

    linux怎么查看網(wǎng)卡光功率? 在Linux系統(tǒng)中,可以使用一些命令和工具來查看網(wǎng)卡光功
    的頭像 發(fā)表于 01-31 14:24 ?3580次閱讀

    RZ/G驗證的Linux軟件V2.1.20-RT 修補(bǔ)程序應(yīng)用指南

    電子發(fā)燒友網(wǎng)站提供《RZ/G驗證的Linux軟件V2.1.20-RT 修補(bǔ)程序應(yīng)用指南.pdf》資料免費下載
    發(fā)表于 01-03 14:12 ?0次下載
    RZ/G驗證的<b class='flag-5'>Linux</b>軟件<b class='flag-5'>包</b>V2.1.20-RT 修補(bǔ)程序應(yīng)用指南

    RZ/G驗證的Linux軟件V2.1.20-RT組件列表

    電子發(fā)燒友網(wǎng)站提供《RZ/G驗證的Linux軟件V2.1.20-RT組件列表.pdf》資料免費下載
    發(fā)表于 01-03 14:11 ?0次下載
    RZ/G驗證的<b class='flag-5'>Linux</b>軟件<b class='flag-5'>包</b>V2.1.20-RT組件列表

    RZ/G驗證的Linux軟件V2.1.20-RT 發(fā)布說明

    電子發(fā)燒友網(wǎng)站提供《RZ/G驗證的Linux軟件V2.1.20-RT 發(fā)布說明.pdf》資料免費下載
    發(fā)表于 01-03 10:11 ?0次下載
    RZ/G驗證的<b class='flag-5'>Linux</b>軟件<b class='flag-5'>包</b>V2.1.20-RT 發(fā)布說明

    網(wǎng)卡硬件故障及解決方法

    網(wǎng)卡硬件故障及解決方法 網(wǎng)卡是計算機(jī)與網(wǎng)絡(luò)之間進(jìn)行通信的重要組件之一。然而,由于各種原因,網(wǎng)卡硬件故障可能會導(dǎo)致計算機(jī)無法連接到網(wǎng)絡(luò)或者網(wǎng)絡(luò)連接緩慢不穩(wěn)定。本文將介紹常見的網(wǎng)卡硬件故障
    的頭像 發(fā)表于 12-27 15:17 ?3484次閱讀
    RM新时代网站-首页