우리 는 FreeBSD 9.3 서버 1에 4 포트 Intel I340-T4 NIC 를 넣고 마스터 파일 서버에서 8 ~ 16TiB의 데이터를 미러하는 데 걸리는 시간을 2로 줄이기 위해 LACP 모드 에서 링크 집계 를 위해 구성했습니다. 4 개의 클론. 우리는 최대 4Gbit / sec의 총 대역폭을 기대했지만, 시도한 결과가 1Gbit / sec보다 빠르지는 않습니다. 2
iperf3
대기 LAN에서이를 테스트 하는 데 사용 하고 있습니다. 3 첫 번째 인스턴스는 예상대로 거의 기가비트에 도달하지만 두 번째 인스턴스를 병렬로 시작하면 두 클라이언트의 속도가 약 ½ Gbit / sec로 떨어집니다. 세 번째 클라이언트를 추가하면 세 클라이언트 속도가 모두 ~ ⅓ Gbit / sec 등으로 떨어집니다.
우리는 iperf3
4 가지 테스트 클라이언트의 트래픽이 다른 포트의 중앙 스위치로 들어오는 테스트를 설정하는 데주의를 기울였습니다 .
각 테스트 시스템에는 랙 스위치로 돌아가는 독립적 인 경로가 있으며 파일 서버, 해당 NIC 및 스위치는 모두 lagg0
그룹을 분리하고 각각에 별도의 IP 주소를 할당하여 이를 해제 할 수있는 대역폭을 가지고 있음을 확인했습니다 이 인텔 네트워크 카드에있는 4 개의 인터페이스 중 하나입니다. 이 구성에서는 ~ 4Gbit / sec 총 대역폭을 달성했습니다.
이 경로를 시작했을 때 이전 SMC8024L2 관리 스위치로이 작업을 수행했습니다 . (PDF 데이터 시트, 1.3MB) 오늘날 최고의 스위치는 아니지만이 작업을 수행 할 수 있어야합니다. 우리는 스위치의 수명으로 인해 스위치에 결함이 있다고 생각했지만 훨씬 더 유능한 HP 2530-24G로 업그레이드 해도 증상이 바뀌지 않았습니다.
HP 2530-24G 스위치는 문제의 4 가지 포트가 실제로 동적 LACP 트렁크로 구성되어 있다고 주장합니다.
# show trunks
Load Balancing Method: L3-based (default)
Port | Name Type | Group Type
---- + -------------------------------- --------- + ----- --------
1 | Bart trunk 1 100/1000T | Dyn1 LACP
3 | Bart trunk 2 100/1000T | Dyn1 LACP
5 | Bart trunk 3 100/1000T | Dyn1 LACP
7 | Bart trunk 4 100/1000T | Dyn1 LACP
우리는 수동 및 능동 LACP를 모두 시도했습니다.
우리는 네 개의 NIC 포트가 FreeBSD 쪽에서 다음과 같은 트래픽을 받고 있음을 확인했습니다.
$ sudo tshark -n -i igb$n
이상하게도 tshark
단 하나의 클라이언트의 경우 스위치가 1Gbit / sec 스트림을 두 포트로 분할하여 분명히 포트간에 핑퐁하는 것으로 나타났습니다. SMC 및 HP 스위치 모두이 동작을 보여줍니다.
클라이언트의 총 대역폭은 서버 랙의 스위치에서 한 곳에만 통합되므로 해당 스위치 만 LACP 용으로 구성됩니다.
어떤 클라이언트를 먼저 시작하는지 또는 어떤 순서로 시작하는지는 중요하지 않습니다.
ifconfig lagg0
FreeBSD 쪽에서는 다음과 같이 말합니다.
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
ether 90:e2:ba:7b:0b:38
inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::92e2:baff:fe7b:b38%lagg0 prefixlen 64 scopeid 0xa
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
laggproto lacp lagghash l2,l3,l4
laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
우리는 FreeBSD 네트워크 튜닝 가이드 에 우리의 상황에 맞는 많은 조언을 적용했습니다 . (최대 FD 증가에 대한 내용과 같이 대부분 관련이 없습니다.)
결과를 변경하지 않고 TCP 세그먼테이션 오프 로딩을 끄려고 시도했습니다 .
두 번째 테스트를 설정하기위한 두 번째 4 포트 서버 NIC가 없습니다. 4 개의 개별 인터페이스를 사용한 성공적인 테스트로 인해 하드웨어가 손상되지 않았다고 가정합니다. 삼
우리는이 길들이 앞으로 나아 오는 것을 보았습니다.
SMC의 LACP 구현이 어려워지고 새로운 스위치가 더 나을 것으로 기대하면서 더 크고 나쁜 스위치를 구입하십시오.(HP 2530-24G로 업그레이드해도 도움이되지 않았습니다.)lagg
우리가 무언가를 놓치기를 희망하면서 FreeBSD 설정을 좀 더 쳐다보십시오 . 4링크 집계를 잊고 라운드 로빈 DNS를 사용하여 대신로드 균형 조정에 영향을줍니다.
서버 NIC를 교체하고 이번 LACP 실험의 하드웨어 비용의 약 4 배로 이번에는 10GigE로 다시 전환하십시오 .
각주
FreeBSD 10으로 옮기지 않겠습니까? FreeBSD 10.0-RELEASE는 여전히 ZFS 풀 버전 28을 사용하기 때문에이 서버는 FreeBSD 9.3의 새로운 기능인 ZFS 풀 5000으로 업그레이드되었습니다. 10. x 라인은 FreeBSD 10.1이 약 한 달 정도 배송 될 때까지 얻을 수 없습니다 . 그리고 아니요, 소스에서 재 구축하여 10.0-STABLE 블리딩 엣지에 도달하는 것은 프로덕션 서버이므로 옵션이 아닙니다.
결론으로 넘어 가지 마십시오. 이 질문의 뒷부분에있는 테스트 결과는 왜 이것이이 질문과 중복되지 않는지 알려줍니다 .
iperf3
순수한 네트워크 테스트입니다. 최종 목표는 디스크에서 해당 4Gbit / sec 집계 파이프를 시도하고 채우는 것이지만 디스크 하위 시스템은 아직 포함되지 않았습니다.버그가 있거나 잘못 설계 되었으나 공장을 떠났을 때보 다 더 이상 파손되지 않았습니다.
나는 이미 그렇게하지 않았습니다.