2012-08-16 2 views
0

대개 LAN에있는 유일한 장치 인 대량의 멀티 캐스트 데이터를 보내는 Linux 2.6.33이 실행되는 임베디드 장치가 있습니다. 그러나 드물게 같은 네트워크에 두 개 이상의 장치가있는 경우 클라이언트 연결을 통해 장치를 구별 할 수있는 방법이 필요합니다.소스 특정 멀티 캐스팅 OS/드라이버 성능

EDIT : 단일 클라이언트는 단일 장치의 트래픽에만 관심이 있습니다.

  1. 나는 각 데이터 그램의 식별자를 포함 할 수 있지만, 그 클라이언트가 아마 더 빨리 드라이버에서 구현되는 패킷을 검사 귀중한 시간을 사용하는 것을 의미한다. 느린 클라이언트는 확실히 패킷을 떨어 뜨리기 시작합니다.

  2. 장치마다 별도의 멀티 캐스트 IP 주소를 사용하거나 각 장치가 보내는 포트를 구분할 수 있습니다. 이미 구현되었습니다.

  3. 소스 관련 멀티 캐스팅을 사용할 수 있습니다. 내가 가장 일반적인 운영 체제 및 드라이버가 SSM을 구현하는 방법을 효율적으로 모르는

, 또는 SSM에 의존하는 것보다 빠릅니다 당 장치 다른 멀티 캐스트 그룹을 사용할지 여부.

이것은 모두 구현에 따라 다르며 옵션 2 및 3에 대한 조언을 원합니다. 멀티 캐스트 포트를 전환하면 트래픽 차별화에 충분한 지 알고 싶습니다.

답변

1

내 마음에는 세 가지 옵션 모두 큰 차이가 없습니다. 이유가 여기 있습니다. 어쨌든 멀티 캐스트 트래픽은 클라이언트 호스트에 충돌합니다. 이제 발신자 차별화 부분이 있습니다. 에 관계없이 어떤 방법 당신은 비교의 문제입니다 선택 : 임의의 크기 (선택)

  1. 이 식별자하지만, 대부분 사람들은 int
  2. 이 개 ...
    1. IP 주소 것 즉 IPv4의 경우 4 바이트이고 서로 다른 멀티 캐스트 그룹
    2. 또는 포트를 사용하도록 선택할 경우 다른 포트
  3. 두 개의 IP 요지를 사용하도록 선택하는 경우, 즉 2 바이트 다시 말하지만 비교는 응용 프로그램이 아닌 커널에서 수행합니다.

두 가지 기본 데이터 형식을 한 번 비교하기 때문에 성능상의 차이는 없습니다. 이 비교는 어쨌든 몇 가지 프로세서 명령어로 구현 될 것이므로 커널 또는 사용자 공간에서 수행되는지 여부는 중요하지 않습니다.

프로그램 부담이 적은 방법을 선택합니다. 어떤 방법을 선택하든 관계없이 성능은 거의 동일합니다.

+0

NIC 하드웨어에서 mcast 그룹 멤버십 검사가 수행된다는 점을 제외하고는. –

+0

클라이언트가 아무 것도 변경하지 않는 두 개의 원격 장치에서 데이터를 수신하려는 경우. 패킷을 수신하면 클라이언트는 어쨌든 어떤 패킷인지 알 필요가 있기 때문입니다. –

+0

2 또는 3에는 비교가 필요하지 않습니다. 관심있는 기기의 패킷 만받을 수 있습니다 .1.) 클라이언트 커널은 커다란 버퍼를 조사하고 버려야하는 사용자 공간으로 복사해야합니까? –