admin write
blogblogblogbloglocation loglocation logtag listtag listguest bookguest book
rss feed

Congestion control

2008. 8. 11. 14:29

congestion이란,
네트워크 capacity보다 더 큰 양의 packet들이 network상에 돌아다닐 때 발생한다.
specific하게 정의하자면,
switch나 router에는 queue가 있어서 packet을 processing 하기 전, 한 후에 저장해야 할 공간이 필요하다. (input queue, output queue) 예로 packet의 처리 속도보다 도착속도가 빠르면, input queue에 데이터가 쌓일 테고, packet 출발 속도가 처리속도보다 느리면, output queue에 데이터가 길게 쌓일 것이다.

congestion control이란,
이러한 load를 capacity 이하로 떨어뜨리고, congestion을 control하는 tech를 말한다.

Congestion control of TCP

- Slow Start: Exponential Increase
connection이 establish 되면서 MSS(maximum segment size)의 크기가 1부터 시작한다. window size의 크기는 segment가 ACK 되면, 한 MSS씩 크기가 커진다
EX) MSS가 1일때, ACK되면 다음 MSS가 2되고
      MSS가 2가 된것이, ACK되면 다음 MSS는 4 (2+2)가 되고,
      MSS가 4가 된것이, ACK 되면 다음 MSS는 8(4+4)가 된다.
이렇게 exponentially 하게 증가하지만, MSS는 ssthresh(slow start threshold)까지만 증가한다.
대부분의 ssthresh는 65535byte로 구현되어 있다.

- Congestion Avoidance: Additive Increase
Slow start 알고리즘으로 cwnd가 커져서 ssthresh까지 도달하게 되면, 그 이후에는 segment 하나씩만 증가시키게 하는 알고리즘이다. 계속 exponentially하게 growth하면 congestion이 일어날 수 있기 때문에 이것을 막고자 만든 algorithm이다.

- Congestion Detection: Multiplicative Decrease
congestion이 일어나면, cwnd가 줄어든다. 이때, ssthresh도 반으로 줄인다. (multiplicative decrease)
대부분의 tcp 구현은 다음 두가지의 reaction을 취한다.
1. time-out이 일어나면(Retransmission time out timer의 time out) 현재 ssthresh를 현재의 window size의 반으로 줄이고, cwnd를 한 segment의 크기로 줄인다음, slow start phase를 다시 시작한다.(위의 slow start algorithm을 다시 시작한다.)

2. 세개의 동일한 ack을 다시 받고 해당 packet을 retransmission 하는경우 (fast retransmission)
ssthresh를 현재 window size의 반으로 줄이고, cwnd를 ssthresh의 크기로 맞추고 congestion avoidance를 시작한다. (RTO time-out보다 weaker한 congestion이기 때문인 모양)

error control mechanism의 가장 중요한 부분은 retransmission 이다.

retransmission이 일어나는 두가지 경우가 있는데,

-retranmission after retransmission time-out 
each segment는 RTO값을 갖는다. timer의 시간이 지나면, delayed 혹은 lost로 처리한다.
RTO of TCP는 값이 dynamic 하며

sender receivers three duplicated ACKs (fast retransmission)
measured timer가 너무 길면, segment를 저장하는 buffer가 넘칠 수 있다. 이럴 때 3번의 동일한 segment에 대한 ACK이 올 때 missing segment에 대한 retransmit에 되어야 한다.

Sliding Window Protocol

2008. 8. 10. 18:25
Sliding window protocol은 flow control을 하기 위해, TCP에서 이용하는 것이다.
(TCP는 이 프로토콜을 byte-oriented로 사용)

HOST는 이 window를 이용해서, data sending을 하는데, window는 프로세스로 부터 받은 byte를 저장한 버퍼의 크기를 span 한다.

window는 opened, closed, shrunk(줄이다) 의 세가지 활동을 한다. Receiver가 이것을 control 하며 sender는 이에 대한 receiver의 지시를 따른다.

window를 여는 것은 right wall을 오른쪽으로 움직이는 것이고, window를 닫는 것은 left wall을 오른쪽으로 움직이는 것을 말한다. (left wall을 오른쪽으로 움직이는 것은 ack 되었다는 뜻)
shrink는 right wall을 왼쪽으로 움직이는 것을 말함.

window에는 두가지가 있다. receiver window(rwnd)와 congestion window(cwnd)
receiver window는 다른 end에서 받아들일 수있는 byte의 개수를 말한다.
(buffer overflow나 data가 discard되는 것을 막기위해)
congestion window는 network가 congestion을 피하기 위해 value를 지정하는 것을 말한다.

rwnd사이즈는 버퍼에 있는 만큼의 숫자를 뺀 것이고, rwnd와 cwnd가 같이 공존한다면, 둘 중에 작은 wnd가 host의 wnd가 된다.

-정리-
window의 사이즈는 rwnd와 cwnd중 작은 것이다.
source는 full wnd data를 보낼 필요는 없다.
window는 receiver에 의해 open되고 close 된다. (하지만 shrunk는 아님)
dest는 ack을 언제나 보낼 수 있다.
receiver는 window를 임시적으로 닫을 수 있다. 하지만 sender는 window가 shut down된 이후에 1 byte의 segment를 항상 보낼 수있다.

SCTP에서 Flow control이란,

시간당 송신자가 보내는 패킷의 양이 수신자가 수신할 수 있는 패킷의 양을 넘어서지 않게 하는 것이다. 송신자가 만약  수신자가 수신가능한 패킷의 양을 넘어서 수신자의 버퍼가 꽉 차게 된다면, 이후에 송신자로 부터 보내지는 데이터들은 수신자로 전달되지 않고 데이터가 사라지게 된다. 이러한 현상을 방지하고자 flow control을 사용한다.

SCTP는 TCP처럼 window size를 이용한다(flow control, congestion control 둘 다를 위해서)
수신 end point는 receiver window를 송신 end point에 통보하여 데이터의 크기를 조절한다. 이때 수신 end point는 receiver window size를 SACK를 통해 알려준다.

SCTP에서 Congestion control이란,

망 내에 존재하는 패킷의 수가 과도하게 많으면 이것을 congestion이라고 정의한다.
패킷이 많아 네트워크상에 congestion이 발생하면, 수신자의 버퍼가 꽉차거나, 송신자의 패킷을 받지 못할 가능성이 있으므로, 송신자가 network congestion을 고려, 송신 속도를 조절하는 congestion control을 수행한다.
SCTP는 TCP congestion control을 사용한다.

* congestion control of SCTP에 대한 specific한 정리 요.

(-RFC 2960에서 발췌)
SCTP congestion control은 항상 전체의 association에 적용 된다. 각각의 stream에 적용되지는 않는다.
SCTP의 congestion control과 TCP의 congestion control이 다른점



slow-start란 패킷을 저장하는 중간 라우터의 저장할 버퍼공간의 부족으로 데이터 전송에 문제가 생기는 현상을 말한다.

4학년인데도 불구하고 아직 체감하지 못하고 있는 구직, 취업,
모회사 초청간담회에 가서 조금씩 발동이 걸리기 시작했다.

그 회사의 설명을 어떤 연구소장님께서 강연해주셨는데, 회사찬양만 할 줄 알고 내심 따분해하려던 차에 귀가 솔깃해지기 시작했다.
시작은 IBM부터 였다. IBM이라는 기업, 나에겐 초등학교 2학년 때 부터 접해온 IBM호환 PC라는 말에서 부터 친숙해졌던 그런 기업이었는데, 현재의 하드웨어 가격을 보면 IBM이라는 회사는 이제 망했거나 그저그런 기업이었어야 했다. 기존의 하드웨어 전문회사라는 이미지를 버리고, Software와 Hardware를 연결해 고객이 원하는 시스템을 구성하는, IT-service의 매출이 전체의 50%이상이 되는 또 다른 캐시카우를 찾은 걸출한 기업으로 성장해왔다. IT-service가 대세이고 유망한 직종이라는 것을 자사의 주력 사업과 연결하여 성장유망성을 설명하시는 모습, 인상깊었다.
직접 원하는 기업의 잠재력, 전망을 조사하고 기업에 1,2년 다닌 선배들의 조언은 왠만하면 듣지말라는 그 분의 말씀이 회사찬양에 가득찬 ppt자료보다 훨씬 설득력 있고 회사이미지의 좋은 부분을 크게 강조시켜주었다.
다양한 back-ground가 만드는 시너지효과가 다양한 idea를 만들고, 그런식의 채용을 보여주고 있는 Google은 유형적으로 보이는 아웃풋은 없지만 누구나 다아는 S전자 핸드폰 사업부보다 순이익이 훨씬 높다는 것을 보여준다. 그런면에서 볼 때, 일률적으로 시키는것만 하는 사람보다는 앞으로는 창조적인 사람이 미래에 일잘하는 사람이라고 이야기 하는 그 분의 이야기에 잠시 항상 창조적이 되자고 생각했던 내 평소 사고습관이 얼마나 내 행동 의사결정에 영향을 주었는가에 대한 반성을 하게 했다.
내 자신의 미래, 어떤 기업에서 무슨 일을 할 것인가.
원하는 조직, 하고 싶은 일, 잃어버린 열정을 찾아 취직으로서 그 모든 것을 움켜쥐겠다는 생각.

모 회사 인턴 면접에서 '내 열정은 무엇에 대한 것 인가, 열정이 있는건가'에 대한 생각을 하기 시작했고, 아직 끝을 맺지 않았다.
 

답답함.

2007. 12. 20. 23:03

이명박 전 서울시장이 과반수에 웃도는 득표율로 대통령에 당선이 되었다. 개인적으로는 우리나라 정치사에 씻을 수 없는 과오라고 생각하지만, 어쩌겠는가. 국민들의 선택인것을.
이명박 차기 대통령은 서울시장 때의 버스노선 정비와 청계천 복구라는 그의 성과에 어느정도 자신의 편이 되준 우리나라 주요 언론의 적당한 포장으로 박근혜를 밀어내고 한나라당의 대통령후보가 되었고, 지난 10년간 무언가 큰 좋은 변화를 보여주지 못했던 여당에 대한 국민들의 분노로 인해 많은 국민들이 '차떼기'라는 큰 정치적 오명에도 불구하고 한나라당을 다시 지지하기 시작했다.
지난 지자체 선거에서도, 이번 대통령선거에서도 모두 한나라당이 크게 이겼고, 내년 4월의 총선에서도 한나라당에서 대거 국회의원들이 뽑힐 것이다. 그렇다. 대다수의 국민들이 한나라당의 정치에 힘을 보태주기 시작했다.
나는 이러한 국민들의 한나라당 힘보태주기의 뿌리에 '박정희'가 있다고 생각한다. 그가 '박정희'를 닮아서도 아니고, '박근혜'가 있어서도 아니다. 그의 서울시장 재임때의 뚜렷한 치적에 알아서 국민들이 한나라당에게 '박정희'와 같은 강력한 지배를 인풋으로 주고 있고, 그리고 경제 부흥과 무언가 뚜렷히 보이는 대통령의 큰 치적을 아웃풋으로 기대 하는 것 같다.
제발, 그렇게 체감경기를 좋게 만들어주는 대통령이 되었으면 좋겠다.
근데 내가 봤을 땐, 김영삼때 처럼 처음엔 정말 좋은 일 많이 하고 나라가 잘되가고 있는 것만 같은 조중동의 기사가 많이 나가고, 레임덕이 왔을 즈음엔, 하나 하나 그가 할, 그가 임기안에 끝마치려 하는 성급한 일들의 부작용들이 연이어 신문기사의 헤드라인을 장식하는건 아닌지 우려된다.

project

2007. 11. 4. 18:43

무료계정의 문제가 많아, 유료계정으로 갈아타고
포탈의 방향을 정했다. SDU교환학생을 위한 포탈로...
EXTENSION 설치좀 하고, 템플릿을 좀 변경했다.

www.andrejsuc.net/joomla

cms solution은 시중에 나와있는 free solution 중, Joomla로. (이름이 주물러? -0-;; )

hosting 찾는건 안드레가 할 일이었지만 안드레가 찾은 zendurl에서 삽질하다가, php관련 보안문제 때문에 여기선 아예 쓸수 없다고 결론 짓고, 다른 joomla forum에서 어떤 리플보고 찾아들어간 freehostia로 결정.

http://psi2.freehostia.com/project/

install은 뭐 제로보드설치하듯이 쉽게쉽게 할 수 있었지만, zendurl에서 삽질한 시간이 아까웠음...-_-;;