이것은 아마도 매우 간단한 문제일 것입니다(즉, 근본적으로 뭔가 빠졌고 이는 단지 내 잘못/지식 부족/가정일 뿐입니다).
따라서 두 개의 VLAN이 있는 LACP(Cisco 스위치)를 통해 bond0에 바인딩된 2개의 25GbE 파이버가 있는 시스템이 있습니다.
한 소스에서 대상 경로로 다양한 데이터를 전송하기 위해 5~6개의 동시 rsync를 시작했을 때 데이터가 거의 전적으로 하나의 물리적 인터페이스(~900MiB/s)를 선호한다는 사실에 조금 놀랐습니다. 나는 본드를 구성하는 두 인터페이스 사이에 부하가 어느 정도 분산될 것이라고 가정합니다.
나는 패킷이 인터페이스 전체에서 개별 스트림으로 분할되지 않는다는 것을 잘 알고 있지만 내 rsync는 모두 별도의 프로세스이므로 적어도 하나 또는 두 개가 두 번째 물리적 인터페이스를 사용할 것으로 예상합니다.
참고로 사용 중인 넷플랜 구성의 "대략적인" 개요(즉, 민감한 정보가 제거된 것으로 간주되는 정보 포함):
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
optional: true
link-local: []
ens5f0np0:
dhcp4: false
dhcp6: false
optional: true
ens5f1np1:
dhcp4: false
dhcp6: false
optional: true
bonds:
bond0:
dhcp4: false
dhcp6: false
interfaces: [ens5f0np0, ens5f1np1]
mtu: 9000
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
vlans:
bond0.xxx:
id: xxx
link: bond0
addresses: [ip]
gateway4: ip
mtu: 1500
nameservers:
search: [domains]
addresses: [ips]
bond0.xxx:
id: xxx
link: bond0
addresses: [ip]
mtu: 9000
routes:
- to: random subnet
via: local subnet ip
- to: random subnet
via: local subnet ip
- to: random subnet
via: local subnet ip
문제는 rsync가 다른 프로세스이지만 소스 및 대상 IP가 동일하고(각 rsync는 한 위치에서 큰 하위 폴더를 읽고 공통 위치에 복사함) 바인드에서 수행된다는 것입니다. 해싱은 기본적으로 모든 것을 처리한다는 것을 의미합니다. 이게 같은 트래픽인가요? 원본 데이터는 1개의 VLAN에 있는 서버에 있고 대상 서버는 다른 VLAN에 있습니다.
이것이 내 잘못/잘못된 가정이라면, 다른 rsync가 다른 데이터 "스트림"을 구성할 것이라고 생각하기 때문에 여전히 동일한 내용을 모두 배우고 싶습니다.
답변1
나가는 트래픽에 대한 슬레이브 선택은 다음에서 선택할 수 있는 전송 해시 정책을 기반으로 수행됩니다.기본 단순 XOR 전략
xmit_hash_policy
아래에 설명된 옵션을 살펴보세요 .
2단계
해시 값은 하드웨어 MAC 주소와 패킷 유형 ID 필드의 XOR을 사용하여 생성됩니다. 공식은
hash = 소스 MAC XOR 대상 MAC XOR 패킷 유형 ID
슬레이브 번호 = 해시 모드 슬레이브 수이 알고리즘은 동일한 슬레이브 장치의 특정 네트워크 피어에 모든 트래픽을 배치합니다..
단일 소스 MAC 주소로 확인 되는 단일 소스 IP 주소에서 단일 대상 MAC 주소로 확인되는 단일 대상 IP 주소로의 트래픽은 항상 동일한 인터페이스 layer2
로layer2+3
당신은 사용해야합니다layer3+4
알고리즘에는 인터페이스 계산에 포트가 포함됩니다.
3+4층
이 정책은 상위 계층 프로토콜 정보(사용 가능한 경우)를 사용하여 해시 값을 생성합니다.이를 통해 특정 네트워크 피어에 대한 트래픽이 여러 슬레이브에 걸쳐 있을 수 있습니다.단, 단일 연결이 여러 슬레이브에 걸쳐 있지는 않습니다.
ip link
옵션 xmit_hash_policy
으로 변환됨네트워크 계획~의transmit_hash_policy
범위. 따라서 구성에 다음 추가 매개변수를 추가해야 합니다.
transmit_hash_policy: layer3+4
트래픽이 동일한 대상에 대해 단일 주소로 터널링되는 경우 encap3+4
대신 고려할 수 있습니다.
더 많은 관심이 필요하다이 정책조각화가 있는 경우 LACP를 완전히 준수하지 않기 때문입니다. 계층 4에 대한 프로토콜(TCP/UDP...) 포트가 조각에 포함되어 있지 않기 때문에 이로 인해 첫 번째 및 후속 조각이 서로 다른 인터페이스를 사용하고 도착 시 원치 않는 패킷에 대한 연결이 재정렬될 수 있습니다. 관련된 모든 시스템이 동일한 MTU(9000)를 갖는 한 TCP는 조각화를 방지하려고 시도하므로 문제가 되지 않습니다.
이 알고리즘은 802.3ad와 완전히 호환되지 않습니다. 조각화된 패킷과 조각화되지 않은 패킷을 포함하는 단일 TCP 또는 UDP 세션에서는 두 인터페이스 모두에서 패킷 스트라이핑이 표시됩니다. 이로 인해 잘못된 배송이 발생할 수 있습니다. [...]