tcp summary

8
Network Flow Jooho, Lee RHCE,JBCSA Red Hat GSS

Upload: jooho-lee

Post on 07-Jul-2015

454 views

Category:

Engineering


1 download

DESCRIPTION

Network flow

TRANSCRIPT

Page 1: Tcp summary

Network Flow

Jooho, LeeRHCE,JBCSA

Red Hat GSS

Page 2: Tcp summary

Machine

(Kernel)

CLIENT

(browser)

Ring Buffer

(rx_ring)

Kernel

Memory

Packet

Data

SoftlrqNet_rx_action

NIC

1

NIC Interrupt

Handler

alloc_skb()

Poll_queue(per CPU)

Netif_rx_schedule()Raised softirq

Interrupt

GeneratorDMA Engine

NIC Memory

NIC1

DEVICE DRIVER

Higher layer

Check

net.core.netdev_max_backlog

Queue

Page 3: Tcp summary

Client

Client

SYN

SYN/ACK

SYN

SYN/ACK

LISTEN SocketQUEUE

SYN QUEUE ACCPET QUEUE

APPLICATION

APPLICATION

ACK

ACK

(SYN_RECEVIED)(ESTABLISHED

without PID)

ACCEPT Call

ACCEPT Call

(ESTABLISHED

with PID)

LISTEN Socket

(ESTABLISHED

without PID)

(SYN_RECEVIED)

(ESTABLISHED

with PID)

System Widenet.ip4.tcp_max_syn_backlog

Per Socketnet.core.somaxconn

Listen(sockfd,backlog)

/proc/$PID/net/tcp data.

/proc/$PID/net/tcp data.

Text line

Socket

Text line Text line

Socket

KernelLayer

Application Layer

Page 4: Tcp summary
Page 5: Tcp summary

1. sysctl_max_syn_backlog is full

(=max_qlen_log) ==> net.ipv4.tcp_max_syn_backlog

2. listen queue is full

(=Accept queue) ==> net.core.somaxconn (Hard Limit)

Application can specify it.(Soft Limit)

3.SYN cookies enabled.

net.ipv4.tcp_syncookies

*SYN Flodding attack(DDOS)

kernel: possible SYN flooding on port X. Sending cookies.

When it happen(condition)

Reference :

http://blog.dubbelboer.com/2012/04/09/syn-cookies.htm

l

https://access.redhat.com/solutions/30453

Page 6: Tcp summary

WAS Engineer가 봐야하는 것(Kernel parameter)

* 전체메모리 공간(bytes) = awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo

net.core.somaxconn :Socket 프로세스 당 접속 대기 queue

net.ipv4.tcp_max_syn_backlog : Kernel 전체의 접속 대기 queuenet.ipv4.tcp_syncookies : 1 enable 시 소켓으로 syn backlog queue 가 넘칠때 syncookies 를 보낸다.

net.core.netdev_max_backlog : Interface 당 수신 queue

net.ipv4.tcp_mem : TCP 전체 버퍼 사이즈net.core.rmem_default : 수신 소켓 버퍼로 지정가능한 최대 메모리 크기net.core.wmem_default : 송신 소켓 버퍼로 지정가능한 최대 메모리 크기net.core.optmem_max : 소켓 당 할당된 최대 버퍼 사이즈를 지정한다.

net.ipv4.tcp_rmem : 수신 소켓 버퍼의 크기net.ipv4.tcp_wmem : 송신 소켓 버퍼의 크기net.ipv4.tcp_tw_reuse : TCP TIME_WAIT Socket 재사용 여부. (권장 : 사용)

net.ipv4.tcp_retries2 : 살아있는 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. net.ipv4.tcp_syn_retries : 활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한다.

net.ipv4.tcp_synack_retries : passive TCP 접속 시도가 재 접속을 하기 위한 SYNACKs의 값을 정한다.

net.ipv4.tcp_max_orphans : bind 되지 않은 소켓의 최대 수 (DoS 공격 방어용)

net.ipv4.tcp_orphan_retries : TCP 연결을 끊기전에 확인하는 횟수net.ipv4.tcp_fin_timeout : TCP/IP가 처리 완료된 연결을 해제하여 해당 자원을 재 사용할 수 있다.

net.ipv4.tcp_keepalive_time : TCP/IP가 대기 연결이 계속 원래 상태를 유지하는지 확인을 시도하는 빈도를 제어net.ipv4.tcp_keepalive_intvl : 상대로부터 활성화 상태 지속 응답이 수신되지 않을 경우

TCP/IP에서 활성화 상태 지속 전송을 반복하는 빈도를 결정.

net.ipv4.tcp_fin_timeout : FIN_TIMEOUT 대기 시간을 줄이면 끊어진 소켓의 소거 시간을 줄일 수 있음.

net.ipv4.icmp_echo_ignore_all : ICMP 차단

Page 7: Tcp summary

WAS Engineer가 봐야하는 것(Ulimit parameter)

fs.aio-max-nr : 최대 AIO (asynchronous io) request의 수 (파일 수와는 무관)

fs.file-max : 시스템 전체에서 최대로 열 수 있는 파일개수fs.nr_open : 하나의 프로세스가 핸들링하는 최대 파일개수# ulimit -n : 일반 계정(root 제외)의 프로세스(세션)별 최대 오픈할 수 있는 파일 수

최대값 : fs.nr_open ( fs.nr_open보다 작거나 같아야 함)

# ulimit -u : nproc 값은 각 유저별로 생성할 수 있는 최대 프로세스의 갯수

* 각 파라메터의 연관관계fs.file-max >= fs.nr_open >= ulimit -n

Page 8: Tcp summary

명령어

* 프로세스 파일 오픈 수 확인실행중인 모든 프로세스에서 사용하고 있는 파일의 수를 확인# lsof | wc -l

PID 25102 프로세스의 파일 수 확인# lsof -p 25102 | wc -l

해당 프로세스가 실제 사용하고 있는 파일 핸들러의 수# ls /proc/25102/fd | wc -l

*현재 열려있는 프로세스의 수 확인ps -eLf |grep PID |wc -l

pstree

WAS Engineer가 봐야하는 것(Commands)