안녕하십니까 ?
proxmox를 이제 시작한 초보입니다.
네트워크 전문가들이 많이 계셔서 좀 여쭤보려 합니다.
멜라녹스 40gbe (ConnectX3)를 추가한 후 제대로 설치가 된건지 알수 없어서 문의드립니다.
목표는 1기가랜으로 외부접속, 40기가랜으로 가상기계 연결하는 것입니다
상황은 간단한데
HP Z820 proxmox 8.3에
1) 온보드 1gbe 랜카드(eno1): 1기가 공유기에 연결되어 있습니다.
2) 멜라녹스 40gbe 랜카드(포트 2개 ens4, ens4d1): PCIe 3.0 x8로 연결되어 있고 케이블이 연결되어 있지 않습니다.
3) 3개의 vm들은 우분투 22.04이고, NVME 3.0 SSD에 설치되어 있습니다: PCIe 3.0 x16으로 연결되어 있음
3개의 vm은 vmbr1(eno1, 10.1.82.1)을 사용하고, 포트포워딩으로 인터넷 사용중입니다 (IP개수 제한 때문에 어쩔 수 없이)
현재 각 vm에 vmbr2(ens4, 10.40.82.1)을 추가한 상태입니다. (MTU 9000까지 네트워크 관련한 수정은 커뮤니티 글보고 겨우 했습니다)
목표는
각 vm의 외부접속은 vmbr1, 1기가로 그대로 사용하고,
vm간 통신은 vmbr2, 40기가로 연결하여 내부망 속도를 높이는 것입니다.
여기 문서들 참고하여 일단 멜라녹스 설정은 마쳤고 iperf3로 테스트중인데
vmbr1(인텔 1gbe 브릿지)의 속도와 vmbr2(멜라녹스 40gbe 브릿지)의 속도가 같이 나와서 당황스러운 상태입니다.
iperf3 결과(화면캡쳐를 잘 못해서 마지막 줄을 입력하였음)는 아래에 있습니다.
보시다시피 두 결과의 수치가 거의 같은데 뭐가 잘못된 걸까요 ?
너무 초보적인 질문이지만 그래도 전문가들의 고견을 기다립니다.
1. 이 정도 속도가 나오면 괜찮은 건가요 ? (이건 랜카드가 아니라 proxmox때문으로 보입니다만)
2.1기가 브릿지나 40기가 브릿지가 속도가 같이 나오는 건 제가 40기가 설정을 잘못했기 때문일까요 ?
GPT는 40기가 내부망 쓰면 노드간 전송 속도는 높아진다고 해서 해봤는데 알 수가 없네요
감사합니다!!
아래는
(vmbr1, 1gbe) 연결 결과
(서버, n0, 받는 노드): iperf3 -s -B 10.1.82.100
(클라이언트, n1, 보내는 노드): iperf3 -c 10.1.82.100 -P 10 -t 10
...
[SUM] 0.00--10.00 sec 16.7 GBytes 14.3 Gbits/sec 0 sender
[SUM] 0.00--10.02 sec 16.6 GBytes 14.3 Gbits/sec receiver
(vmbr2, 40gbe) 연결 결과
(서버, n0, 받는 노드): iperf3 -s -B 10.40.82.100
(클라이언트, n1, 보내는 노드): iperf3 -c 10.40.82.100 -P 10 -t 10
...
[SUM] 0.00--10.00 sec 17.6 GBytes 15.1 Gbits/sec 0 sender
[SUM] 0.00--10.02 sec 17.6 GBytes 15.1 Gbits/sec receiver
동일 하이퍼바이저 내에서 VM간에 이루어지는 네트워킹 속도가,
실제 랜카드 사양과 관련이 있을까?를요.
1) 1기가 랜을 브릿지로 해서 가상노드 3개를 연결하면 proxmox vmbr1(가상브릿지)로 서로 통신하고, 내부는 proxmox VirtIO 의 성능만큼 속도가 나오고
2) 40기가 랜을 브릿지로 해서 가상노드 3개를 연결해 내부망으로 쓰면 proxmox vmbr2(가상브릿지)로 서로 통신하여 40기가 효과를 볼 수 있다는 것이었는데
선생님 말씀은
VM간 속도는 동일 하이퍼바이저를 사용한다면 실제 랜카드 사양과는 무관하고 proxmox 의 성능에 좌우된다는 말씀이신건가요 ? 저도 확신이 없어서^^
제가 GPT에게 물어본 내용의 일부입니다
성능 향상 여부는 VM 간 트래픽에 의존합니다. 40기가 랜카드는 케이블이 연결되지 않으므로, 해당 네트워크 카드의 대역폭과 성능을 최대한 활용할 수는 없습니다. 그러나 vmbr2를 사용하여 40기가 랜카드를 VM 간의 트래픽에 할당하면, 해당 네트워크를 사용하는 경우 성능 향상을 기대할 수 있습니다.
40기가 랜카드는 내부 VM 간의 통신 속도를 대폭 향상시킬 수 있습니다. 내부 네트워크 트래픽이 많은 경우 (예: 대용량 데이터 전송, 파일 서버 등) 1기가 랜카드로 제한된 속도 대신, 40기가 네트워크를 통해 훨씬 빠른 속도를 제공할 수 있습니다.
1기가 랜카드는 외부와 연결되는 트래픽에 사용되기 때문에, 외부와의 통신에는 영향이 없으며, 40기가 랜카드가 케이블 없이 연결되더라도 VM 간의 통신 성능에 영향을 줄 수 있습니다.
결론:
이 구성을 구현하는 것은 가능하며, 외부와의 연결을 1기가 랜카드로, 내부 VM 간의 연결을 40기가 랜카드로 분리하여 성능을 최적화할 수 있습니다.
성능 향상은 주로 VM 간의 트래픽이 많은 경우에 효과적입니다. 외부 트래픽에는 큰 변화가 없지만, 내부 통신에서는 큰 성능 향상이 있을 수 있습니다.
이쪽과 저쪽에 들어 있는 VM간을 좀 더 빠르게 네트워킹하기 위해서요.
근데, 1대인 경우에는 의미가 없어요.
이미 가상화된 내부 네트워크로 VM들이 통신하니까요.
(실제 어댑터의 속도와 무관)
이 게 이론으로는 꽤 높아요.
얼마였더라~, 가물가물해요.
- e1000드라이버는 1기가까지 <- 아니요. 서버 성능 따라 더 나옵니다.
- virtIO가 기본값 <- 게스트 OS가 인식한다면 가장 좋은 선택입니다. 같은 시스템에서 속도도 e1000 보다 잘 나오구요.
- 같은 호스트에 있는 VM간의 통신의 성능은 VM의 네트워크 디바이스 유형 + 호스트 시스템 성능이 좌우합니다. vmbr에 연결된 물리 포트의 성능과 관계 없습니다.
- 서로 다른 호스트에 있는 VM간의 통신 성능은 물리 포트를 거치기 때문에 네트워크 디바이스의 성능(속도)에 의해서 좌우됩니다.
- "connectx3 sriov"로 검색하면 connectx3도 sriov 지원한다고 나옵니다 : https://enterprise-support.nvidia.com/s/article/howto-configure-sr-iov-for-connectx-3-with-kvm--ethernet-x
- 특정 VM이 약 20gbps 이상 필요하다면 말씀 처럼 SR-IOV 이용해서 VM에 VF를 직접 연결하는게 효과적입니다. 흔히 패스스루 한다고 하는 것과 비슷합니다.
- 서로 다른 호스트에 있는, 여러 VM이 최대 약 10~20gbps 이상의 대역폭으로 동시에 통신할 수 있으면 충분하다면 -> 지금 처럼 그냥 vmbr에 연결해서 관리하는게 훨씬 간단하고 관리하기도 편리합니다.
1. 일단 proxmox에 있는 가상 드라이버는 e1000, virtIO 등이 있는데 드라이버는 서버 성능 따라 virtIO는 10-20기가까지도 나온다고 본 것 같네요 (40기가 달면 30Gbps는 나올 줄 알았는데 아니군요^^. 내부망을 위해 10기가 랜카드도 별도로 달 필요는 없어지네요), E5-2660v2 듀얼이라 CPU도 코어만 많지 싱글성능이 낮아서 이쯤에서 정리해야겠네요
2. 방금 SRIOV로 VF 8개 잡히는 건 해봤습니다. 튜토리얼도 있기는 한데 점점 산으로 가는 분위기네요
3. 그래서 지금은 1기가나, 40기가나 다 15Gbps는 나오니까 그냥 40기가 NIC은 잠시 빼버리려고 합니다.
SR-IOV가 패스쓰루에 유사하다는 것과 어디 쓰는지도 말씀해주셔서 많은 도움 되었습니다. 감사드립니다 !!
CT가 VM 보다 덜 나오내요. 약 22~23gbps 정도.
호스트 2대 이상 구성 안하실거면 vm간 통신속도 올리기 위해 굳이 네트워크 카드 올릴 필요 없습니다.
전에 vmbr로 구성해서 호스트(Gold 6138) 2대 간에 다이렉트로 연결해서 전송해보니 튜닝하고 25gbps 정도 나왔었습니다.
다음에 시간 좀 나면 SRIOV로도 한번 해봐야겠습니다.
간단히 구성해본 바로는 10gbps 언저리는 쉽게 나오나, 단일 연결 15gbps 넘기기도 쉽지 않더라구요.