대규모 클러스터에서 MAC 주소 충돌 이야기

개요


CNIovs-cni를 사용할 때 MAC 주소 충돌 문제https://github.com/k8snetworkplumbingwg/ovs-cni/issues/206가 발생했습니다.발생 환경은 100대의worker node, 24개의 vlan, 1000개의 인터페이스의 상태입니다.
결론적으로'보통으로'사용하면 충돌 확률이 가장 높은 0.0639(%)인 만큼 신경 쓸 필요가 없다.'보통'이 무슨 뜻인지, 계산 근거 등을 알고 싶은 사람은 다음과 같은 내용을 읽어주세요.

MAC 주소 정보


MAC 주소는 일반적으로 하드웨어 고유의 주소이기 때문에 충돌이 발생하지 않는다.그러나 Kubbernetes 클러스터에서는 가상 인터페이스를 자주 사용하기 때문에 MAC 주소도 자동으로 생성되는 것을 사용한다.중 자동 생성 시 몇 확률의 충돌이 발생합니까?

충돌 확률의 계산 방법


우선 충돌 확률을 계산하는 공식을 세운다.알기 쉽게 쓰려고 했지만 수학을 못하는 사람은 건너뛸 수 있다.
우선 간단한 예는 6면체가 주사위를 세 번 던지는 경우다.
첫 번째 충돌은 적어도 두 주사위의 눈이 같다고 할 수 있다.
모든 출전 모드는 6^{3}입니다.
또한 모든 표면이 다른 패턴은(66\times5\times4번가.
그래서 적어도 두 개의 주사위가 같은 눈을 가질 확률은6^{3} = 0.444...
확률은 약 44.4%(%)다.
일반적으로 첫 번째 모델은possibility이고 시험 쓰기 횟수는trials이며 충돌할 확률은
(possibility^{trials} - (possibility!/(possibility - trials)!))/possibility^{trials}
이렇게 하면 표시할 수 있다.

충돌 확률


에서 위의 공식을 사용하여 확률을 계산합니다.MAC 주소의 길이는 48비트이지만 ovs-Coni에서 MAC 주소는 02:00:XX:XX 형식이고 실제 MAC 주소 공간은 24비트입니다.따라서possibility=2^{24}=167771216.또한 24개의 vlan이 있고 각각 1000개의 인터페이스가 있기 때문에 trials=24\times1000=24000.상기 공식에 따라 계산하면 충돌 확률은 99.9%(%)로 충돌이 발생하는 것은 필연적임을 알 수 있다.주의한 바와 같이 충돌이 발생하는 원인은 02:00 XX:XX 형식의 MAC 주소입니다.그래서 이것은 ovs-Coni의 고유한 결함이라고 할 수 있다.
이 문제 이후 MAC 주소를 0A:58:XX:XX:XX:X:XX:XX로 변경하고 MAC 주소 공간을 32비트로 확장하는 것이 수정되었습니다.possibility=2^{32}=49967996.trials는 변화가 없다.위 공식에 따르면 충돌 확률은 6.48(%)로 상당히 개선됐다.
또한 이전에 자신이 진행한 MAC 주소 분배를 폐지하고 SetupVeth()로 변경하여 분배를 함수에 맡긴다.명령ip link add을 사용할 때 MAC 주소 공간을 46비트까지 확장할 수 있는 셈이다.MAC 주소 길이보다 48비트가 2비트 적은 이유는 아래 2비트가 고정돼 있기 때문이다.각bit에 대한 뜻은 https://en.wikipedia.org/wiki/MAC_address을 참조하세요.
unicast/multicast bit = 0
globally unique/locally administered bit = 1
46비트까지 확장됨에 따라possibility=2^{46}=703687447664로 충돌 확률이 0.000409(%)로 떨어졌다.
ovs-Coni에서 발생한 문제에 관해서는 이미 해결되었지만 인터페이스가 증가하는 상황을 고려하여Kubbernetes는'컨테이너 수 30000 이하'의 모범 사례를 발표했다.
https://kubernetes.io/docs/setup/best-practices/cluster-large/
이것 괜찮아요?
possibility = 2^{46} = 70,368,744,177,664
trials = 300,000
의 조건으로 계산하면 충돌 확률은 0.0639(%)이다.따라서 현재로서는 MAC 주소의 충돌에 신경 쓸 필요가 없지만, Kubbernetes의 성능 향상 등으로 용기 수의 최적 실천이 달라지면 다시 계산해야 한다.

좋은 웹페이지 즐겨찾기