

鵝直覺的反應是把NIC(BCM5719)的offloading關掉,關掉後狀況的確是消失了(未使用到的bge1 RXCSUM/TXCSUM/TSO4 default是on的,bge0的RXCSUM/TXCSUM/TSO4是被鵝關掉的)....

可是仔細一想,現代的Ethernet MAC/switch在遇到bad frame時應該會直接drop掉才對(i.e. Wireshark理論上是看不到L2的bad frame的),那為啥鵝會看到那些Ethernet frame check sequence incorrect,而且offloading關掉之後,問題也消失了(誤打誤撞

後來鵝試著在lab重建現場,最方便而且還算精確的方式是在ESXi上透過DirectPath I/O讓VM直接控制Ethernet MAC,然後產生大量traffic,看能不能重現一樣的狀況,如果看到一樣的狀況就是OS/driver相容性之類的問題,沒有的話就是user site的問題,建了兩個Linux VM測了半天,傳了上TB的garbage,就是看不到一樣的狀況,問題是鵝家的產品是based on BSD的,BSD VM卻無法透過DirectPath I/O直接控制NIC(VM的kernel boot起來時有看到BCM5719,但要initial PHY時失敗,所以不work

