iT邦幫忙

0

封包路徑可以是從一張網卡的其中一個port經過switch後再回到同一張卡的另一個port嗎? 以及performance測試問題.

  • 分享至 

  • xImage

您好,
有個好奇的問題想請教一下大家,
如果我有一張多ports網路卡跟一台switch,
我有辦法透過這張網路卡的其中一個port A,
送封包到switch,
然後再透過switch內部的forward設定,
把封包丟到同一張網卡的另一個port B嗎?
如果這理論上是可行的,
那如果我依照這個方式去測試同張卡的port performance,
這樣是否無法正常的驗證出來?
因為會變成這張卡的效能要同時應付port A丟出的封包速率,
還要去處理port B接收的速率,
進而導致測出來的port A performance值不準確的問題?
所以如果要真正測出這張卡的performance,
必須要兩張網卡對接去做測試,
這樣說正確嗎?
又或是,
這樣測的話就變成你要把Tx performance(port A),
跟Rx performance(port B)相加,
變成整張網卡的performance?

以我個人的認知,
Ethernet loopback test僅是拿來做為HW basic function驗證,
用以快速確認Ethernet port是否有硬體上的問題,
但如果用loopback test的方式來測port throughput,
我自己的認知是因為封包是自己丟給自己,
可能就無法反應真實的狀況,
以目前我google到的結果,
沒有看到有人是利用loopback的方式在做正式的throughput test.
不知道這樣的認知是否有誤,
謝謝.

PORT A & B 要放在不同的網段,兩PORT之間只能透過路由器交換的話,樓主說的才成立
但是因為經過了第三地,因此測出來的效能老實說也不是很準確,他會受到第三地的影響
我們這麼說好了,兩個PORT 接到路由器,路由器也是要兩個PORT去轉封包吧,
那路由器 兩個PORT的交換能力怎麼樣,有沒有其他的影響,這都是很難確認的
還有多PORT網卡他還受限 PCIE通道的頻寬,你確認你的PCIE通道可以給滿頻寬 ?
就像很多第二第三線的交換器,不敢寫背版頻寬多少,一台 48PROT GBIC 的交換器
理論上背板頻寬要有 96G bps ,這樣才能全PORT全雙工傳輸,但誰真的敢標她有這麼高的背板頻寬 ?
所以真的不用想太多,原則上就算INTEL 在 PCIE 3.0 的網卡,他的效能大概能到六成就偷笑了,更不用說那些二三線品牌了
打雜工 iT邦研究生 1 級 ‧ 2023-12-15 11:28:16 檢舉
要測OS對於網路的performance? 網卡運作的performance? 還是網路間傳輸的performance? 我的認知這三種作法都不同,現在隨便一台設備都不貴,所以如果我要測performance,應該不會用您的模式
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
Ray
iT邦大神 1 級 ‧ 2023-12-13 23:45:50
最佳解答

先問: 你測到這個數據之後, 要拿來幹嘛?

再問: 你測出一個自己傳給自己的 Performance, 對於網路傳輸有甚麼幫助?

看更多先前的回應...收起先前的回應...
lasthero iT邦新手 4 級 ‧ 2023-12-14 09:03:06 檢舉
  1. 只是單純好奇這樣的條件下, 測出來的數據是否準確?
  2. 我認為沒有幫助, 但我不確定我的論點是否正確, 所以才要上來請請教.
Ray iT邦大神 1 級 ‧ 2023-12-14 09:34:56 檢舉

如果我們定義傳輸=將資料由一端傳遞到另一端
那麼, 你自己傳給自己, 狹義上並不能稱為傳輸

因為傳給自己 vs. 傳給異端, 中間通過的介質與條件必不相同, 所以測出傳給自己的數據, 其實在傳給異端的情境中, 沒有太多參考價值.

因此我才會問:
你測了這個要拿來做甚麼? 以及他會在甚麼情境有具體的意義?

沒有產業應用意義的事情, 也不是不能做, 但那就回到學理討論的層面去了, 這樣你要看的不只是介面卡外面的事情, 連晶片裡面的架構都要去了解清楚, 才能做出正確的量測.

舉例來說: 同時有多 Port 的卡片, 他在內部兩個 Port 之間, 是否還會夾一層小的 Switch 功能? 如果有這層存在, 你有可能有些測試的條件是不成立的.

lasthero iT邦新手 4 級 ‧ 2023-12-14 09:38:46 檢舉

是的, 板子上自帶一個小型switch, 但為何您如此肯定, 如果板上自帶小的switch, 採用這種port A to port B的測試就無法成立呢? 因為我原本有一個想法, 就是port A接到外部switch, 再透過switch的port forwarding功能把封包轉到port B, 但我仍無法確定這是否就會有actual traffic, 還是仍然是假性的, 且沒有參考價值, 只能是驗證HW是否正常而已.

Ray iT邦大神 1 級 ‧ 2023-12-14 09:40:41 檢舉

因為你這樣接起來, 兩邊的 Switch 就會形成 Loop, 然後 Switch 若有支援 STP/RSTP 協定的話, 30 秒後就會自動切斷其中一條路徑, 阻止你的傳輸

你可以先拿兩台 Switch 測看看, 不需要接任何網卡, 就兩台 Switch 同時對接兩條線(兩個 Switch Port), 不要開啟任何 Ethernet Channel 或 LACP 功能, 看看這兩台會怎麼反應?

你也可以插上兩片網卡看看, 就當成是在模擬你的卡內部有 Switch 的狀況...

https://networkers-online.com/p/spanning-tree-the-problem-and-the-solution

https://blog.router-switch.com/2012/11/how-to-configure-spanning-tree-protocol-stp-on-catalyst-switches/

https://www.ccnablog.com/stp-part-i/

lasthero iT邦新手 4 級 ‧ 2023-12-14 09:49:05 檢舉

了解, 原來這也跟switch有關聯, 感謝您詳細的解說! 再次跟您確認, 所以您認為, 測出傳給自己的數據, 在傳給異端的情境中, 沒有太多參考價值, 也就是說, 自己封包打給自己, 這種得出來的結果, 無法套用在系統A網路傳輸給系統B網路的異端的情境裡, 理由就如同上一則網友cmwang的回覆, 對OS而言IP A到IP B其實不會走到實體網路,只會在OS kernel內部直通, 用此方式不會有actual traffic, 只能當作是測試硬體是否有問題, 無法拿來當作實體應用的參考, 以上說法是否正確呢?

lasthero iT邦新手 4 級 ‧ 2023-12-14 10:00:43 檢舉

剛看到您更新了您的comment, 您說, 如果我的網卡上面的ports內部是接到卡上的小型switch, 此時, 如果我拿相同的網卡跟他對接, 也會形成switch loop的問題, 理由是:

網卡A controller -> 網卡A內部switch -> 網卡A port -> 網卡B port -> 網卡B內部switch -> 網卡B controller

由於end端都是接到小型switch, 雖然是兩張不同的卡, 各自插在兩台不同的system上, 此時仍然會有loop的問題, 而導致會被自動切斷, 如果內部小型switch有支援STP/RSTP協定的話.

如果這個理論是成立的, 請問要如何去避免呢? 可以更改switch內部設定, 去防止自動切斷的問題嗎?

Ray iT邦大神 1 級 ‧ 2023-12-14 10:01:43 檢舉

就結果論來說是這樣沒錯;

但實際上的問題更複雜一些, 因為你不是直接對網卡下指令 (除非你能拆開網卡, 直接把指令訊號灌進晶片的接腳內), 而是透過 OS 轉譯之後, OS 才去對網卡下指令. 而 OS 在轉譯你的指令過程中, 就已經先判斷指令的合理性, 對於他認為不合理的指令, 也不會傳達給網卡, 在 OS 內就已經處理掉了.

Ray iT邦大神 1 級 ‧ 2023-12-14 10:04:44 檢舉

如果這個理論是成立的, 請問要如何去避免呢? 可以更改switch內部設定, 去防止自動切斷的問題嗎?

不切斷的話, 這個架構將會引發 Switch 之間的廣播風暴:

什麼是廣播風暴,如何防止局域網環路引起的廣播風暴?
廣播風暴一旦發生, 所有通訊都會被阻塞, 因為所有傳輸路徑都塞滿了垃圾封包在傳遞...

這些在網路的基礎課程裏面都會談到, 您可以參考 Cisco 的 CCNA 課程內容

這裡有一個實作廣播風暴的影片, 在 2'47" 的地方, 你可以看到他插上 loop 之後, Switch 的燈就開始狂閃, 代表已經引發廣播風暴, 此時是無法傳輸任何資料的:
https://www.youtube.com/watch?v=5Lu8HjeWRyc

lasthero iT邦新手 4 級 ‧ 2023-12-14 10:16:28 檢舉

我剛google了一下, 有些switch似乎是可以config把STP disable, 如果把兩邊的STP disable後, 理論上應該就可以做, 對吧?

網卡A controller -> 網卡A內部switch -> 網卡A port -> 網卡B port -> 網卡B內部switch -> 網卡B controller

這樣就可以做performance and stress test, 且會有實際封包送收.

Ray iT邦大神 1 級 ‧ 2023-12-14 10:29:56 檢舉

如前所述, 關掉 STP 之後, 實體層又接成 Loop 架構的話, 結果就是引發廣播風暴.

lasthero iT邦新手 4 級 ‧ 2023-12-14 10:39:22 檢舉

了解, 但我仍然有疑問, 這樣的網路產品, 如果他要外接switch去接更多的後端device, 那這樣豈不能做? 舉例來說, 例如我本身有在用Fortinet產品, FortiGate跟FortiSwtich, FortiGate就是有支援多個網路port, 且自帶內建switch, 然後FortiGate可以允許你接他的switch產品FortiSwitch, 那為什麼FortiGate接上FortiSwitch後卻仍可以正常的使用, 不會有阻斷的問題發生?

lasthero iT邦新手 4 級 ‧ 2023-12-14 11:02:47 檢舉

阿抱歉我傻了, 就是因為有STP所以才可以這樣接且不會發生broadcast storm, 但如果依照您說的, 開啟STP後, 兩台switch串接再一起, 就會有30秒自動組斷的問題, 換句話說, 我就無法將兩張有自帶switch的網卡接在一起, 因為網卡上面都有switch, 但如同我上一則留言, 如果是這樣的話, 那理論上FortiGate(板上內建switch)與FortiSwitch接在一起(透過FortiLink), 為什麼不會發生組斷的問題呢? 是因為FortiLink有機制去防止阻斷, 即使開啟了STP嗎?

Ray iT邦大神 1 級 ‧ 2023-12-14 13:13:35 檢舉

Got it! 你想通了....

有試過同時把兩條線, 對接在 Gate 和 Switch 的兩個 Port 上面嗎? 如果有的話, 當時是不是其中一個 Port 的燈會熄滅?

若燈會滅的話, 代表他已經自己啟動 STP 去切斷其中一條了 (被切斷的燈會熄掉, 不過 Log 裡面會留下 STP 判定的紀錄), 所以其實他是只用一條線在通訊的, 並不是兩條同時使用 (這是假設你沒開 LACP 的狀況)

lasthero iT邦新手 4 級 ‧ 2023-12-14 13:24:34 檢舉

感謝您詳細的解說, 的確FortiGate接FortiSwitch透過的是FortiLink, 而FortiLink採用的是LACP(Link Aggregation Control Protocol), 就是把兩個ports合併成一條logical port, 自然就不會有switch因STP而阻斷其中一條線的問題.

0
cmwang
iT邦大師 1 級 ‧ 2023-12-13 19:27:45

一般OS不太容易這樣測,因為就算單一主機的不同網卡或不同port bind不同IP,對OS而言IP A到IP B其實不會走到實體網路,只會在OS kernel內部直通,鵝是在VM上透過I/O passthrough讓兩個Guest各抓1port測(i.e. OS各自獨立,所以只能跑到實體網路通),您參考參考吧/images/emoticon/emoticon06.gif....

lasthero iT邦新手 4 級 ‧ 2023-12-13 19:59:58 檢舉

所以就算單張卡兩個不同的port, 對OS來講他不會走實體網路, 這是所有的OS都是如此嗎例如Windows, RHEL, Ubuntu...etc.?

lasthero iT邦新手 4 級 ‧ 2023-12-13 20:00:30 檢舉

而且換句話說, 等於是在這情況下測出來的port throughput, 也是沒有意義的對嗎?

我要發表回答

立即登入回答