8.5. 멀티캐스트에 있어서 고려할 사항
여러 애플리케이션이 멀티 캐스트 그룹을 수신할 때 멀티캐스트 프레임을 처리하는 커널 코드에는 서로 다른 개별적 소켓의 네트워크 데이터를 복제하기 위한 디자인이 필요합니다. 이러한 복제는 시간이 오래 걸리고
softirq
컨텍스트에서 발생합니다.
하나의 멀티 캐스트 그룹에 여러 개의 리스너를 추가하면
softirq
컨텍스트의 실행 시간에 직접적인 영향을 미칩니다. 멀티 캐스트 그룹에 리스너를 추가하면 커널이 해당 그룹에 대해 수신된 각 프레임에 대해 추가 복사본을 작성해야 함을 의미합니다.
낮은 트래픽 볼륨과 리스너 수가 적은 경우 이 효과는 최소화됩니다. 하지만 여러 소켓이 트래픽이 높은 멀티 캐스트 그룹을 청취하면
softirq
컨텍스트의 실행 시간이 증가하여 네트워크 카드 및 소켓 큐 모두에서 프레임 드롭이 발생합니다. softirq
런타임이 증가하면 애플리케이션은 높은 부하 시스템에서 실행하는 기회가 감소되도록 변환되므로 고용량의 멀티 캐스트 그룹을 청취하는 애플리케이션 수의 증가로 멀티 캐스트 프레임 손실 비율이 증가합니다.
8.4.2절. “소켓 큐 ” 또는 8.4.1절. “NIC 하드웨어 버퍼 ”에서 설명하고 있듯이 소켓 큐와 NIC 하드웨어 버퍼를 최적화하여 이러한 프레임 손실을 해결할 수 있습니다. 다른 방법으로는 애플리케이션의 소켓 사용을 최적화할 수 있습니다. 이를 위해 애플리케이션이 단일 소켓을 제어하도록 설정하고 수신된 네트워크 데이터를 신속하게 다른 사용자 공간 프로세스에 배포합니다.