2016-12-02 21 views
-1

IP 헤더에서 ToS 필드를 사용하여 TCP 트래픽의 우선 순위를 지정하려고합니다. ToS 필드가 0x10 (Minimize-Delay)으로 설정된 iperf를 통해 1GB 데이터를 보내 인터페이스 (이더넷)를 포화시키고 있습니다. 그런 다음 기본 ToS (0)로 다른 TCP 클라이언트를 시작합니다.ToS 필드를 사용하여 TCP 트래픽의 우선 순위를 지정할 수없는 이유는 무엇입니까?

예상 : iperf가 데이터 전송을 완료 할 때까지 내 TCP 클라이언트가 데이터를 보내면 안됩니다.

결과 : 내 클라이언트의 데이터는 iperf가 더 높은 우선 순위로 패킷을 전송하는 경우에도 전송됩니다.

두 개의 개별 클라이언트를 만들고 iptables를 사용하여 각각의 클라이언트에 0x10 및 0x08 ToS를 할당하여 동일한 시나리오를 만들려고했습니다. 내가 사용 : 의 iptables -A PREROUTING -t 압착 롤러 -p TCP를 5000 -j TOS --set-TOS --sport 최소화 - 지연

을 나는 아직도 다른 통해 하나의 클라이언트의 우선 순위를 할 수 없습니다입니다. 나는 wireshark에서 ToS로 표시된 패킷을 볼 수 있습니다.

나는의 iptables 버전 (14.04) 우분투를 사용하고 1.4.21는

은 누군가가 친절하게 문제를 해결하는 데 도움이 수 있습니까?

감사 하기 Varun

답변

2

TL; 패킷에 DR

간단하게 설정 서비스 약관 또는 DSCP 마킹는 아무것도 실시하지 않습니다. 실제로 서로 다른 표시로 다른 작업을 수행하도록 장치를 구성해야합니다. 대기열을 포함 시키려면 대기열을 구성하고 다른 대기열에 다른 표시를 지정해야합니다.

더 완전한 설명 당신은 QoS를 사용하고자하는

. QoS는 큰 주제이지만 몇 가지를 설명하려고 노력할 것입니다. Linux에서 QoS를 사용하는 방법은 Traffic Control HOWTO에서 확인할 수 있습니다.

실제로 DSCP (Differentiated Services Code Point)로 대체 된 ToS는 단순히 여러 패킷을 여러 지점에서 구분하기 위해 패킷을 구분하는 것입니다. ToS 필드는 원래 IPv4 패킷 사양의 일부 였지만 장치가 해당 필드를 사용하거나 존중해야한다는 것을 요구하는 표준에는 아무것도 없습니다.

QoS에는 패킷을 구별 (표시) 한 다음 표시를 기반으로 무언가를하는 작업이 포함됩니다. 표시를 사용하여 수행하는 작업은 쉐이핑, 폴리싱, 큐잉 (우선 순위 대기열 포함)과 같은 작업이 될 수 있습니다.

하드웨어 인터페이스는 패킷 대기열에 관계없이 FIFO 대기열을 가지며 이는 기본값이며 대기열 만 사용합니다. 하드웨어는 패킷 헤더 나 표식을 완전히 인식하지 못합니다.

실제로 마킹을 사용하는 것은 일반적으로 레이어 3 네트워크 장치에서 수행됩니다. 라우터. 예를 들어 라우터 인터페이스에 대해 서로 다른 소프트웨어 대기열을 구성 할 수 있으며 각기 다른 표식을 가진 패킷을 다른 대기열에 할당 할 수 있습니다. 대기열은 실제 버퍼와 달리 상대적으로 작습니다. 우선 순위 대기열은 일반 대기열보다 먼저 제공됩니다. 사용자가 정의 할 때까지 대기열이 존재하지 않으며, 사용자가 규칙을 구성하지 않으면 패킷이 다른 대기열에 지정되지 않습니다.BE (Best Effort, ToS 0) 패킷을 우선 순위 큐에 할당하고 EF (Expedited Forwarding) 패킷을 낮은 우선 순위 큐에 할당 할 수 있습니다.

대기열이 가득 차면 해당 대기열로 향하는 새 패킷이 삭제됩니다 (테일 드롭이라고 함). 테일 드롭은 대기열을 사용하는 모든 TCP 플로우가 동기화되고 (글로벌 동기화) 동 기적으로 백 오프 및 램프 업하고, 대기열을 굶주 리거나 넘치게하는 원인이 될 수 있기 때문에 TCP의 경우 문제가 될 수 있습니다. 이를 방지하기위한 방법이 있습니다 (예 : RED (무작위 조기 발견). RED는 실제로 임의의 패킷을 대기열에 드롭합니다. 이것은 대기열을 사용하는 다양한 TCP 플로우가 강제로 다른 스케줄에서 백 오프 및 램프 업하는 것입니다.

많은 네트워크 스위치가 하나 이상의 인터페이스에서 표시를 신뢰하도록 스위치를 구성하지 않는 한 스위치에 들어오는 모든 항목에 BE (Best Effort, ToS 0)를 자동으로 할당합니다. 라우터는 일반적으로 표시를 신뢰하지만 표시하도록 구성하지 않는 한 표시를 사용하지 않습니다.

네트워크 내에서만 QoS가 인터넷을 통해 작동하지 않습니다. 네트워크 전반에 걸쳐 일관되게 구현되는 포괄적 인 QoS 정책 집합이 필요합니다. QoS 표시 및 정책 중 일부를과 존중하도록 유료로 협상 할 수도 있지만 이는 ISP까지만 가능합니다. 트래픽이 네트워크를 떠나거나 ISP 네트워크에 합의하면 QoS 표시 및 정책이 완전히 무시되며 패킷은 아마도 BE로 설정됩니다.