IPTable은 멀티 코어 프로세서를 이용합니까?


10

각 패킷은 다른 코어에서 처리됩니까? 아니면 단일 스레드 프로세스입니까?


2
Chopper3가 왜이 질문을 닫았는지 잘 모르겠습니다. 대답하기 : iptables는 실제로 netfilter 인 Linux 방화벽의 사용자 공간 프론트 엔드입니다. Netfilter는 실제로 패킷 처리와 관련된 커널의 후크 시스템입니다. 각 패킷은 커널에 의해 인터럽트를 트리거하여 처리됩니다. 커널 밸런스가 여러 CPU에서 인터럽트를 발생시키는 지 여부는 커널 수에 따라 다릅니다. 그것에 대해 StackOverflow 에서이 스레드를 참조하십시오. stackoverflow.com/questions/7467688/…
JakePaulus

+1, 나는 그것이 진짜 질문이라고 생각하기 때문에.
Sachin Divekar

@JakePaulus이 IRQ- 밸런싱은 하나의 인터럽트에 둘 이상의 코어를 할당하지 않습니다. 따라서 한 줄의 각 패킷에 대한 코어 전환이 발생하지 않습니까?
Nils

CPU 메모리 캐시 관점에서 단일 연결에 대한 코어 전환은 그다지 의미가 없습니다. 이러한 코어가 동일한 캐시를 공유하지 않으면 속도가 느려질 수 있습니다. 그런데 왜이 질문을합니까?
Nils

@Nils 인터페이스에 의해 생성 된 인터럽트는 덜 바쁜 다른 CPU로 리디렉션 될 수 있습니다. 또한 여러 인터페이스에서 인터럽트를 다른 CPU로 보내로드를 분산시킬 수 있습니다. 단일 인터페이스의 트래픽이 패킷 단위로 CPU 전체에서 균형을 이루지 못한다고 생각합니다.
JakePaulus

답변:


6

iptables는 실제로 netfilter 인 Linux 방화벽의 사용자 공간 프론트 엔드입니다. Netfilter는 실제로 패킷 처리와 관련된 커널의 후크 시스템입니다. 각 패킷은 커널에 의해 인터럽트를 트리거하여 처리됩니다. 커널 밸런스가 여러 CPU에서 인터럽트를 발생시키는 지 여부는 커널 수에 따라 다릅니다. 그것에 대해 StackOverflow 에서이 스레드를 참조하십시오. /programming/7467688/netfilter-hooks-on-multi-core-system

Nils가 언급했듯이 이러한 인터럽트는 패킷 단위로 균형이 맞지 않습니다. IRQ에 따라 (인터페이스 당) 균형이 잡히거나 너무 바빠서 다른 CPU로 이동할 수 있습니다.


또는 인터럽트를 조절하거나 다른 코어에 적용 할 수도 있습니다. 어떤 경우에는 모든 네트워크 인터럽트를 몇 개의 코어에 적용하여 패킷 순서를 최소화하고 코어 전체에서 프로세스 마이그레이션을 수행합니다.
chandank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.