나는 1kbit/s로 제한되는 DSL 업링크 연결을 통해 SCP를 사용하여 대량의 데이터를 자주 업로드합니다. 대화형 SSH 세션의 우선 순위가 가장 높기를 원하지만 SSH를 가장 높은 우선 순위로 설정하면 SCP 업로드 중에 연결을 사용할 수 없게 됩니다.
특히 OpenWRT에서 SSH와 SCP 서비스 품질 설정을 구별하는 방법은 무엇입니까?
답변1
최소한 OpenSSH는 다음과 같이 다른 TOS 비트( 0x16
대화형 세션, 0x08
대량 전송용) 를 설정합니다.quora에서 논의됨.
이는 이러한 비트와 일치하는 규칙을 사용하여 쉽게 악용될 수 있습니다. 가장 일치하는 QoS가 적용될 것으로 보입니다. 포트 22/SSH에 대한 일반 규칙이 없는지 확인하십시오. OpenWRT에는 기본적으로 SSH와 DNS를 함께 일치시키는 규칙이 제공됩니다. 이러한 규칙의 경우 위에 링크된 quora 게시물에서 제안한 대로 0x04
및 의 중복되는 DSCP 값을 사용했습니다 .0x02
config classify
option target "Priority"
option ports "22"
option dscp 0x04
option comment "ssh"
config classify
option target "Bulk"
option ports "22"
option dscp 0x02
option comment "scp"
"기본" iptables 설정의 경우 생성된 규칙은 다음과 같습니다( 매개변수 -m dscp --dscp 0x04
는 -m dscp --dscp 0x02
재미있는 부분입니다).
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x04 -m comment --comment ssh -j MARK --set-xmark 0x11/0xff
-A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x02 -m comment --comment scp -j MARK --set-xmark 0x44/0xff
QoS 설정 다시 로드를 사용한 후에는 SCP 전송을 다시 시작해야 합니다 /etc/init.d/qos restart
. QoS 설정은 새 흐름에만 적용됩니다.
이러한 규칙을 적용하기 전에(단일 SSH "우선순위" 규칙 사용) SCP 업로드 중 내 핑은 약 200ms였습니다. 규칙을 적용한 후에는 시간이 70-100ms로 떨어졌습니다(유휴 회선의 시간은 30밀리초에 비해).