연결이 설정되면 차이가 너무 클 것으로 기대하지 않습니다 .
TLS가 일반적으로 생성하는 오버 헤드의 내역은 여기 에서 확인할 수 있습니다 . 중요한 부분은 다음과 같습니다.
- 새로운 TLS 세션을 설정하기위한 총 오버 헤드는 평균 약 6.5k 바이트입니다.
- 기존 TLS 세션을 재개하기위한 총 오버 헤드는 평균 약 330 바이트입니다.
- 암호화 된 데이터의 총 오버 헤드는 약 40 바이트 (20 + 15 + 5)입니다.
- 환경의 세부 사항을보다 정확하게 반영하기 위해 위의 계산을 쉽게 수정할 수 있으므로, 이는 제기 된 질문에 대한 권위있는 답변이 아닌 TLS 오버 헤드의 기초로 간주되어야합니다.
이 수치들이 어떻게 계산되었는지를 읽어 볼 가치가 있습니다. TLS가이 모든 것들과 어떻게 작동하는지 더 잘 이해해야합니다. 다른 답변에서 언급했듯이, 무선 전송은 종종 IoT의 제약 인 가장 큰 에너지 사용 중 하나 일 수 있습니다. 따라서 세션이 설정되면 오버 헤드는 특히 중요하지 않습니다. 사소하게 짧지 않습니다.
언급 한 바와 같이 기사에서 HiveMQ에 의해 TLS가 MQTT 실적에 어떤 영향이 있나요? :
좋은 소식은 MQTT 클라이언트가 HTTP와 같은 프로토콜과 달리 세션마다 한 번만 연결을 설정하면된다는 것입니다. HTTP와 같은 프로토콜은 모든 요청에서 연결을 다시 설정해야합니다 (keep-alive가 사용되지 않거나 Long과 같은 다른 기술이있는 경우) 설문 조사가 진행 중입니다). 브로커에 연결되면 클라이언트는 추가 핸드 셰이크 오버 헤드없이 메시지를 보내고받을 수 있습니다. TLS를 사용하려면 추가 버퍼를 할당해야하므로 MQTT 연결마다 RAM 소비가 약간 더 높습니다.
또한 50,000 명의 클라이언트가 연결할 때 브로커의 CPU 사용률 그래프를 제공 합니다.
이미지 출처 : HiveMQ (위의 링크 된 기사 참조)
이 거의 확실 유의를 수행 하지 일반적인 사용 패턴,하지만 데이터가 그럼에도 불구하고 재미있다. 보시다시피 핸드 셰이크가 진행되는 동안 오버 헤드가 크지 만 CPU 오버 헤드는 거의 동일합니다. 나는 클라이언트에서 비슷한 것을 기대할 것입니다.
그럼에도 불구하고 일반적인 조언은 정확합니다. 검증 된 벤치 마크는 실제로 필요한 정보를 제공하지 않습니다. TLS가 유스 케이스에 어떤 영향을 미치는지 알기 위해서는 테스트해야 합니다. 유스 케이스 !