RNRAND 랜덤 생성 실패 (CPU & BIOS 버전 이슈)
문제 인식
- 개인 서버에 쿠버네티스 클러스터를 구축하기 위해 CNI 를 Calico 로 선택하여 배포하는데 계속하여 특정 Pod 가 에러를 뱉으며 CrashLoopBackoff 가 발생하는 이슈가 있었음
- 소스코드를 뜯어보며 에러를 추적하니 랜덤값을 생성할 때 이전에 생성한 랜덤값과 비교하여 동일한 경우 해당 랜덤 생성기는 신뢰할 수 없다고 판단하여 에러를 발생 (자세한 내용은 위 이슈 참고)
- 하지만 왜 랜덤값 생성이 제대로 되지 않는지 확인이 안되었음
환경
- CPU :
AMD Ryzen 9 3900X
- 마더보드 :
Gigabyte X570 AORUS elite
- BIOS 버전 :
F3
문제
- AMD Ryzen 3000 번대 시리즈 CPU 가 특정 버전의 BIOS 에서 RNRAND 명령을 제대로 수행하지 않고 랜덤값으로 계속하여
0xFFFFFFFF 만 출력하는 버그가 있음
- 버그의 가장 큰 문제는
0xFFFFFFFF 값을 유효한 랜덤값으로 판단해 반환한다는 것에 있음
- 만일 별도로 체크하는 과정이 없다면 해당 버그는 인지조차 어려움
- 참고자료
해결