Linux

網路流量似乎沒有離開主幹

  • July 27, 2011

我正在準備一些新的虛擬化伺服器,其中一部分是讓一些更高頻寬的管道進入它們。最終目標是將 4 個 GigE 埠綁定到一個承載 802.1q 標記流量的單一中繼中。我可以做到這一點,但是我遇到了一個奇怪的問題。但首先,一張圖表。

----------       ----------  1GbE trunks 
|        | 10GbE |        | ------------- --------
|  SW1   |-------|   SW2  | ------------- | VM1  |
|        |       |        | ------------- --------
----------       ----------
    |                |  1GbE  -----------
    | 1GbE           |--------| client2 |
    |                         -----------
----------
|        | 1GbE -----------
|  SW3   |------| client1 |
|        |      -----------
----------

所有交換機均為 HP ProCurve 2910al 交換機,未堆疊。上圖中的 Client2 與 VM1 在同一個 VLAN 中。Client1 位於不同的 VLAN 中。對於 VM 機器(CentOS 6),iptables 和 SELinux 都已禁用。

我的問題是,當涉及到中繼時,在與任一客戶端機器交談時,雙向網路流量是不可能的。TCPDUMP 顯示它們收到了 ping 並發送了 ECHO REPLY 數據包,但 VM 主機從未看到它們。同時,如果我嘗試從客戶端機器 ping 虛擬機,它也不起作用。我無法 ping 同一子網中的 client2 的事實表明某處的網路層有些問題。

奇怪的是,我可以從 VM 主機 ping 任何交換機上的網關 IP。如果我使用單個介面,無論有無 VLAN 標記,一切都可以正常工作。如果我只綁定一個介面並在該介面上打開 VLAN 標記,我可以去任何地方。建立一個主幹,我僅限於交換結構。

樹幹的類型似乎並不重要。現在它們配置了模式 0 中繼 (balance-rr),儘管使用 LACP/802.1qa 的行為方式相同。

vlan 70 
  name "Virtualization Subnet" 
  untagged 35,36,38,40 
  tagged Trk1-Trk2,Trk5,Trk8 
  no ip address 
  jumbo 
  exit 

那是上面 SW2 上的 VLAN 配置。SW1 的 VLAN 70 定義上定義了“IP 地址”。上面的程式碼片段處於完全非集群模式。當我被中繼時:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
  name "Virtualization Subnet" 
  tagged Trk1-Trk2,Trk5,Trk8,Trk16
  no ip address 
  jumbo 
  exit 

802.1qa/LACP 版本放棄了中繼定義,trunk 35-36,38,40 Trk16 lacp但正如我所說,並沒有改變問題的呈現方式。

Client2 實際上連接到 SW1,但是將它放在圖表中會使格式化變得更加棘手。在任何情況下,Interface 節中唯一的東西就是一個name指令;它在 SW1 的 vlan 70 節中被列為untagged埠。

我錯過了什麼?

在涉及MikeyBPauskaChrisS的聊天中進行了長時間的辯論之後,問題最終分為兩個方面:

  1. CentOS 6 中的一個可能錯誤是沒有將模組的模組選項更改為 的bonding一部分service network restart,因此它沒有跟踪我在 LACP 模式 (4) 和循環 (0) 之間的更改。
  2. 循環模式不喜歡使用 ProCurve 開關。

一旦我通過以下命令將綁定介面強制為 LACP/802.1qa 模式:

ifconfig bond0 down
echo "4" > /sys/class/net/bond0/bonding/mode
ifconfig bond0 up

伺服器和交換機都在說話。此時,從交換機上僅啟用一個介面開始,流量開始正常工作。啟用第二個,第三個,最後,第四個介面都保持流量正常。

最終,LACP 模式讓一切順利進行。線索是當主幹中只有一個啟用的交換機埠時,循環模式起作用。伺服器在重新啟動後仍然存在並以正確的模式啟動。但是,aservice network restart不會導致文件中的MODE="4"部分生效。如果該模式發生變化,它將保持啟動時設置的內容(或者更有可能是模組的模組載入時間)。ifcfg-bond0``/etc/sysconfig/network-scripts/``bonding

引用自:https://serverfault.com/questions/294289