태그 보관물: bonding

bonding

네트워크 트래픽이 트렁크를 떠나는 것처럼 보이지 않습니다

새로운 가상화 서버를 준비하는 중이며 그중 일부는 더 높은 대역폭의 파이프를 서버에 가져 오는 것입니다. 궁극적 인 목표는 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는 핑이 수신되고 ECHO REPLY 패킷이 전송되지만 VM 호스트는이를 볼 수 없음을 보여줍니다. 동시에 클라이언트 컴퓨터에서 VM을 핑하려고하면 작동하지 않습니다. 동일한 서브넷에있는 client2를 ping 할 수 없다는 사실은 네트워크 계층에서 무언가 어딘가에 문제가 있음을 시사합니다.

이상하게도 VM 호스트에서 모든 스위치의 게이트웨이 IP를 Ping 할 수 있습니다. 단일 인터페이스를 사용하면 VLAN 태깅 유무에 관계없이 모든 것이 잘 작동합니다. 단일 인터페이스를 바인딩하고 해당 인터페이스에서 VLAN 태그를 설정하면 어디든 갈 수 있습니다. 트렁크를 만들고 스위치 패브릭으로 제한합니다.

트렁크의 유형은 중요하지 않습니다. 지금은 LACP / 802.1qa를 사용하는 것과 같은 방식으로 작동하지만 모드 0 트렁크 (balance-rr)로 구성되어 있습니다.

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에 연결되어 있지만 차트에 배치하면 서식이 까다로워집니다. 어쨌든 인터페이스 스탠자의 유일한 것은 name지시문입니다. untaggedSW1의 VLAN 70 스탠자에 포트로 나열됩니다 .

내가 무엇을 놓치고 있습니까?



답변

관련 채팅에서 오랜 논쟁 후 MikeyB , PauskaChrisS을 , 문제는 두 배 었죠 :

  1. CentOS 6의 가능한 버그는의 bonding일부로 모듈 의 모듈 옵션을 service network restart변경하지 않았으므로 LACP 모드 (4)와 roundrobin (0) 사이의 변경 사항을 추적하지 않았습니다.
  2. 라운드 로빈 모드는 ProCurve 스위치와 함께 작동하지 않습니다.

이 명령을 통해 본딩 된 인터페이스를 LACP / 802.1qa 모드로 강제 설정 한 후 :

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

서버와 스위치 모두 대화 중이었습니다. 이 시점에서 스위치에서 하나의 인터페이스 만 활성화하면 트래픽이 정상적으로 작동하기 시작했습니다. 두 번째, 세 번째 및 마지막으로 네 번째 인터페이스는 모두 트래픽 작동을 유지했습니다.

궁극적으로 LACP 모드는 작동 방식입니다. 단서는 트렁크에 활성화 된 스위치 포트가 하나만있을 때 라운드 로빈 모드가 작동했다는 것입니다. 서버가 재부팅 된 후에도 올바른 모드로 나타납니다. 그러나 a service network restart는 파일 의 MODE="4"일부를 적용 하지 않습니다 . 해당 모드가 변경되면 부팅시 설정된 상태로 유지됩니다 (또는 모듈의 모듈로드 시간 일 가능성이 높습니다 ).ifcfg-bond0/etc/sysconfig/network-scripts/bonding


답변

당신은 당신의 구성에 있습니다 :

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

그렇게해서는 안됩니다 :

   untagged Trk16
   tagged Trk1-Trk2,Trk5,Trk8

답변