새로운 가상화 서버를 준비하는 중이며 그중 일부는 더 높은 대역폭의 파이프를 서버에 가져 오는 것입니다. 궁극적 인 목표는 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
지시문입니다. untagged
SW1의 VLAN 70 스탠자에 포트로 나열됩니다 .
내가 무엇을 놓치고 있습니까?
답변
관련 채팅에서 오랜 논쟁 후 MikeyB , Pauska 및 ChrisS을 , 문제는 두 배 었죠 :
- CentOS 6의 가능한 버그는의
bonding
일부로 모듈 의 모듈 옵션을service network restart
변경하지 않았으므로 LACP 모드 (4)와 roundrobin (0) 사이의 변경 사항을 추적하지 않았습니다. - 라운드 로빈 모드는 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