FreeBSD 링크 통합은 단일 링크보다 빠르지 않습니다


10

우리 는 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 등으로 떨어집니다.

우리는 iperf34 가지 테스트 클라이언트의 트래픽이 다른 포트의 중앙 스위치로 들어오는 테스트를 설정하는 데주의를 기울였습니다 .

LACP 테스트 설정

각 테스트 시스템에는 랙 스위치로 돌아가는 독립적 인 경로가 있으며 파일 서버, 해당 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 개의 개별 인터페이스를 사용한 성공적인 테스트로 인해 하드웨어가 손상되지 않았다고 가정합니다.

우리는이 길들이 앞으로 나아 오는 것을 보았습니다.

  1. SMC의 LACP 구현이 어려워지고 새로운 스위치가 더 나을 것으로 기대하면서 더 크고 나쁜 스위치를 구입하십시오. (HP 2530-24G로 업그레이드해도 도움이되지 않았습니다.)

  2. lagg우리가 무언가를 놓치기를 희망하면서 FreeBSD 설정을 좀 더 쳐다보십시오 . 4

  3. 링크 집계를 잊고 라운드 로빈 DNS를 사용하여 대신로드 균형 조정에 영향을줍니다.

  4. 서버 NIC를 교체하고 이번 LACP 실험의 하드웨어 비용의 약 4 배로 이번에는 10GigE로 다시 전환하십시오 .


각주

  1. FreeBSD 10으로 옮기지 않겠습니까? FreeBSD 10.0-RELEASE는 여전히 ZFS 풀 버전 28을 사용하기 때문에이 서버는 FreeBSD 9.3의 새로운 기능인 ZFS 풀 5000으로 업그레이드되었습니다. 10. x 라인은 FreeBSD 10.1이 약 한 달 정도 배송 될 때까지 얻을 수 없습니다 . 그리고 아니요, 소스에서 재 구축하여 10.0-STABLE 블리딩 엣지에 도달하는 것은 프로덕션 서버이므로 옵션이 아닙니다.

  2. 결론으로 넘어 가지 마십시오. 이 질문의 뒷부분에있는 테스트 결과는 왜 이것이이 질문과 중복되지 않는지 알려줍니다 .

  3. iperf3순수한 네트워크 테스트입니다. 최종 목표는 디스크에서 해당 4Gbit / sec 집계 파이프를 시도하고 채우는 것이지만 디스크 하위 시스템은 아직 포함되지 않았습니다.

  4. 버그가 있거나 잘못 설계 되었으나 공장을 떠났을 때보 다 더 이상 파손되지 않았습니다.

  5. 나는 이미 그렇게하지 않았습니다.


1
내 초기 추측은 사용되는 해싱 알고리즘과 관련이있을 수 있지만 패킷을 면밀히 검사해야합니다. 그래도 문제가 해결되지 않으면 iperf가 사용하는 TCP 창을 더 큰 것으로 변경하십시오. lagg (4) 매뉴얼 페이지에는 해시 오프로드 비활성화에 대한 내용이 있습니다.
Giovanni Tirloni

답변:


2

시스템과 스위치 모두에서 사용중인로드 밸런싱 알고리즘은 무엇입니까?

이것에 대한 나의 모든 경험은 FreeBSD와 SMC가 아니라 Linux와 Cisco에 관한 것이지만 동일한 이론이 여전히 적용됩니다.

Linux 본딩 드라이버의 LACP 모드 및 2950과 같은 이전 Cisco 스위치의 기본로드 밸런싱 모드는 MAC 주소 만 기반으로 밸런싱하는 것입니다.

즉, 모든 트래픽이 한 시스템 (파일 서버)에서 다른 MAC (기본 게이트웨이 또는 스위치의 스위치 가상 인터페이스)으로 이동하는 경우 소스 및 대상 MAC이 동일하므로 하나의 슬레이브 만 사용하십시오.

다이어그램에서 트래픽을 기본 게이트웨이로 보내는 것처럼 보이지 않지만 테스트 서버가 10.0.0.0/24에 있는지 테스트 시스템이 다른 서브넷에 있고 경로를 통해 라우팅되는지 확실하지 않습니다. 스위치의 레이어 3 인터페이스

스위치를 라우팅하고 있다면 답이 있습니다.

이에 대한 해결책은 다른로드 밸런싱 알고리즘을 사용하는 것입니다.

다시 한 번 BSD 또는 SMC에 대한 경험이 없지만 Linux와 Cisco는 L3 정보 (IP 주소) 또는 L4 정보 (포트 번호)를 기반으로 균형을 맞출 수 있습니다.

각 테스트 시스템마다 다른 IP가 있어야하므로 L3 정보를 기반으로 밸런싱을 시도하십시오. 그래도 작동하지 않으면 몇 가지 IP를 변경하고로드 밸런싱 패턴을 변경하는지 확인하십시오.


고맙지 만 당신의 추측은 틀립니다. 위에 표시된 HP 스위치 구성에 따르면 L3 밸런싱을 수행하고 있습니다. 또한 이들은 라우터 인 L3 "스위치"가 아닙니다. 그들은 IGMP 스누핑 및 LACP를 수행하기에 충분한 L3 스마트를 보유하고 있습니다. 건물의 유일한 라우터는 인터넷 게이트웨이의 라우터이며, 위의 테스트 다이어그램의 관점에서 측면 다리에 있습니다.
워렌 영

이것이 L2 또는 L3 스위치인지는 중요하지 않습니다. 이것은 본드가 다른 것의로드 밸런스를 위해 사용하는 구성입니다. 스위치 자체에는 VLAN간에 라우팅하거나 L2 이상의 트래픽을 처리 할 수있는 지능이 없지만 본드의로드 밸런싱 알고리즘은 가능합니다.
suprjami

나는 당신의 스위치가라고 말합니다 Load Balancing Method: L3-based (default). 이것을 바꿔보십시오.
suprjami
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.