Notice
														
													
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Tags
													
											- admin port
- wildfly jboss
- 우파푸른하늘80만이벤트
- 우파푸른하늘
- Auth
- data-door
- vmware
- Storage
- web&was apche htaccess
- port description
- Kubernetes
- openldap
- docker
- 웰카
- Galera Cluster
- mariadb
- banner
- drbd
- Path
- unix_socket
- RHEL8
- perplexity
- CentOS
- etcd
- dell
- snmp
- Network
- n1548
- CEP
- maxscale
- n15148
- MotD
- mgmtip
250x250
    
    
  반응형
    
    
    
  전산쟁이의 기억노트
Traffic Control 기반의 트래픽 제어 본문
728x90
    
    
  반응형
    
    
    
  TC소개
- TC ≠ Test Case, TC = Traffic Control
- 기본적으로 데이터 전송시, 최대 성능을 위해 커널에서는 대역폭의 제한을 설정하지 않음
- 스위치 장비에서 대역폭 제한을 설정할 경우 10/100M, Half/Full 형식으로만 제한작업이 가능
- 하지만, NIC의 link auto negotiation 기능 때문에 스위치 or 서버장비에서만 설정하면 Link Down 현상 발생
- 운영자가 원하는 세밀한 대역폭 제한 설정 불.가.능.
- tc설정상태는 메모리에 저장되기 때문에, 장비를 재부팅하면 원래상태로 되돌아옴
- 이런문제를 해소하기 위한 방안, TC
- Iproute rpm에 포함된 명령어(iproute는 기본 패키지) Iproute 패키지에는 netstat, ifconfig, arp 의 명령어가 포함
Linux Traffic 처리 방식

PREROUTING : 외부에서 내부로 패킷이 유입될 때 적용받는 라우팅
POSTROUTING : 내부에서 외부로 나갈 때 적용받는 라우팅
Traffic Shaping 방식 소개
- Shaping?
- Traffic Shaping : 정의한 포트/트래픽을 조절하여, 네트워크 속도를 지연시키는 방법
- 트래픽 방향에 따라서 TBF / HTB 방식을 이용,
- TBF (Token Bucket Filter)
- Packet을 Bucket에 담아 트래픽을 지연시키고, 정의한 양만큼 Traffic Shaping 적용
- Inbound 트래픽에 대해 적용 가능
- TBF Data Flow 
- HTB (Hierarchy Token Bucket)
- 기본 방식은 TBF와 동일
- 다중 Class를 생성이 가능하기 때문에 특정 IP 혹은 특정 포트 정책을 2개 이상 생성 가능
- Outbound 트래픽에 대해 적용 가능HTB Data Flow 
- HTB Queue의 상관관계 
 하위 Filter를 통해 특정IP, 특정 포트에 대해서 정책 생성
 Class는 Qdisc의 종속되어 있고 Filter는 class의 종속되어 Queue처리함
TBF 방식의 구성 테스트
- TBF 방식의 Traffic Shaping (eth0 인터페이스에 최대 10Mbps, 데이터 전송간 최대 70ms의 지연 발생)
$ tc qdisc add dev eth0 root tbf rate 10mbit latency 70ms burst 1540
- Shaping 적용 확인
$ tc qdisc show dev eth0 qdisc tbf 8012: root refcnt 2 rate 10000Kbit burst 1540b lat 70.0ms
- Shaping 변경
$ tc qdisc change dev eth0 root tbf rate 20mbit latency 70ms burst 1540
- 변경 적용 확인
$ tc qdisc show dev eth0 qdisc tbf 8012: root refcnt 2 rate 20000Kbit burst 1540b lat 70.0ms
- tc정보 삭제
$ tc qdisc del dev eth0 root
HTB 방식의 구성 테스트
- eth0 인터페이스에 최대 Limit는 100Mbps으로 설정
$ tc qdisc add dev eth0 root handle 1:0 htb default 10 $ tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit $ tc class add dev eth0 parent 1:0 classid 1:10 htb rate 50mbit ceil 50mbit burst 10k prio 0 $ tc class add dev eth0 parent 1:0 classid 1:11 htb rate 20mbit ceil 20mbit burst 10k prio 0 $ tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip dport 2049 0xffff flowid 1:10 $ tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip dport 22 0xffff flowid 1:11
- destination port가 tcp/80인 경우 최대 50Mbps으로 제한
- destination port가 tcp/22인 경우 20Mbps으로 제한
- rate : 최대 허용 대역폭
- ceil : 허용가능한 버킷양
- prio : 우선순위 설정 0부터 가능하고 낮은숫자가 우선순위를 갖음
- 적용 확인
# qdisc 적용확인$> tc qdisc show dev eth0 qdisc htb 1: root refcnt 2 r2q 10 default 10 direct_packets_stat 17
 # Class 적용확인$> tc class show dev eth0 class htb 1:11 root prio 0 rate 20000Kbit ceil 20000Kbit burst 10Kb cburst 1600b class htb 1:10 root prio 0 rate 50000Kbit ceil 50000Kbit burst 10Kb cburst 1600b class htb 1:1 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b
 #Filter 적용 확인
 # Match (Destination 포트 정보)는 16진수로 출력$> tc filter show dev eth0 filter parent 1: protocol ip pref 49151 u32 filter parent 1: protocol ip pref 49151 u32 fh 801: ht divisor 1 filter parent 1: protocol ip pref 49151 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 match 00000016/0000ffff at 20 filter parent 1: protocol ip pref 49152 u32 filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10 match 00000801/0000ffff at 20
- 정책 변경(20Mbit -> 200Mbit)
$> tc class change dev eth0 parent 1:0 classid 1:11 htb rate 200mbit ceil 200mbit burst 10k prio 0
- 변경 정책 적용 확인
$> tc class show dev eth0 class htb 1:11 root prio 0 rate 200000Kbit ceil 200000Kbit burst 10200b cburst 1600b class htb 1:10 root prio 0 rate 50000Kbit ceil 50000Kbit burst 10Kb cburst 1600b class htb 1:1 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b
NMS 연동한 Traffic Shaping 적용 확인
-  Traffic Shaping 적용전 (최대 610Mbps까지 트래픽 발생)
 
- Taffic Shaping 적용 후 (100Mbps 적용시 최대 77.84Mbps 까지 나옴) 
TC의 알려진 문제점
실제 트래픽 양을 설정해도, 트래픽이 처리 과정 사이에 Queue처리 하는 절차가 추가되기 때문에 설정한 양보다 전송속도가 떨어짐
TBF 설정 후 유입되는 Packet양이 Bucket양보다 클 경우 Packet Drop하는 문제가 존재
출처 - http://igoni.kr/books/linux/page/traffic-control
Traffic Control 기반의 트래... | igoni.kr
TC소개 TC ≠ Test Case, TC = Traffic Control 기본적으로 데이터 전송시, 최대 성능을 위해 커널에서...
igoni.kr
728x90
    
    
  반응형
    
    
    
  'Centos기술노트' 카테고리의 다른 글
| yum changelog 사용하기 (0) | 2022.08.15 | 
|---|---|
| valgrind를 이용한 메모리 체크 (0) | 2022.08.15 | 
| ssh 패스워드 없이 로그인 하기 (0) | 2022.08.15 | 
| sar와 ksar를 이용한 서버성능 확인 (0) | 2022.08.15 | 
| samba messages read_data failure (0) | 2022.08.15 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
				