IP 간 대역폭 공유

IP 간 대역폭 공유

내 네트워크에는 두 개의 AD 그룹에 속한 200명의 사용자가 있고 각 그룹에 대해 특정 IP 범위를 설정할 수 없습니다. 각 그룹에 대해 그룹 사용자 간에 공유할 수 있는 대역폭의 양을 설정하고 싶습니다.

squid를 사용하여 IP의 대역폭을 관리할 수도 있고, iptables+tc를 사용하여 IP의 대역폭을 관리할 수도 있지만, 해당 IP의 사용자 간에 공유되는 IP 그룹에 대한 대역폭을 설정하고 싶습니다. 어떻게 해야 하나요?

답변1

어떤 IP가 어떤 그룹에 속하는지 알고 나면 대역폭을 관리하는 방법에 대해 답할 수 있습니다. 당신은 그것을 사용할 수 있습니다계층적 토큰 버킷세 개의 그룹을 할당합니다.

  • 그룹A 10명
  • B그룹 20명
  • 30 네트워크의 비 AD 장치에서 발생하는 알 수 없는 트래픽

#Create egress shaping
$TC qdisc add dev eth0 root handle 1: htb default 20 r2q 50

$TC class add dev eth0 parent 1: classid 1:1 htb rate 19mbit ceil 19mbit

$TC class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 15mbit prio 1
$TC class add dev eth0 parent 1:1 classid 1:20 htb rate 8mbit ceil 15mbit prio 1
$TC class add dev eth0 parent 1:1 classid 1:30 htb rate 2mbit ceil 10mbit prio 2

#Send everything unknown to classid 1:30. The filter has low priority 
#(higher numbers are filtered later)
$TC filter add dev eth0 parent 1: prio 20 protocol all u32 match u32 0 0 flowid 1:30

위 스크립트에서 이러한 그룹은 대역폭을 사용하지 않는 경우 다른 그룹에 대역폭을 빌려줄 수 있습니다. 이 세트를 원하지 않는다면천장와 같은 값속도.

이제 IP를 1:10 또는 1:20 클래스에 동적으로 보내는 스크립트를 작성할 수 있습니다. 어쩌면 일부 DHCP 또는 광고 이벤트에 연결해야 할 수도 있습니다.

그룹 A의 스크립트는 다음과 같습니다.


$TC filter replace dev eth0 parent 1: protocol ip prio 3 u32 match \
                ip dst $THEIP/32 flowid 1:10

자신이 보내는 내용만 제어할 수 있다는 점을 기억하세요. 따라서 라우터에 인터페이스 eth0 및 eth1이 있는 경우 eth1에서도 대역폭을 관리해야 합니다.

그리고 SFQ 리프 QDISC를 클래스에 연결하는 것을 고려해보세요. SFQ는 굉장해요!


$TC qdisc add dev eth0 parent 1:10 handle 110: sfq perturb 10
$TC qdisc add dev eth0 parent 1:20 handle 120: sfq perturb 10
$TC qdisc add dev eth0 parent 1:30 handle 130: sfq perturb 10

IP를 그룹에 매핑

어떤 IP가 어떤 그룹에 속하는지 알아내는 것은 주로 사용하는 소프트웨어에 따라 다릅니다. 소프트웨어가 이벤트를 지원하지 않는 경우 로그를 구문 분석하고 특정 그룹에 IP를 할당하기로 결정하는 스크립트를 작성할 수 있습니다.

관련 정보