Post date: Nov 30, 2016 4:01:19 AM
십수년전 아침... 슈퍼맨이 뜬 구름없이
"슈퍼맨 : 야~ 너네들 이기종 프로세서나 이기종 머신 사이에 데이터 통신할 때 통신 성공여부 어떻게 확인하냐? "
이러시느거다..
" A왈 : Ack Nak 로 확인하면 되죠...^^;"
" B왈 : Checksum 같은걸루 확인하면 되죠 ^^;;"
.....
"슈퍼맨 : 그래 그럼 Ack 받지 못했으면....??"
"A, B..: 음.. 예..외..처...리 해..야..죠..."
"슈퍼맨 : 어떻게?"
"A : 일정 시간 기다렸다가 Ack 안오면 다시 보내는 방법으로 하면 되죠... "
"슈퍼맨 : 그래 ..그게 좀 유식한 말로 Back Off Algorthms 이라고 하는거다 ..알것냐?"
지금껏 네트웍 이나 Device 통신 프로그램을 구현하면서 통신 예외 처리를 해 왔지만 단순히 "예외 처리"라는 명목(짧은 언어 구사 능력 ) 하에 좀 있어보이는 "Back Off Algorithms"이란 용어는 생각 해 보지 못했다. 지난 WiFi Phone 개발시 SIP 인증 단계에 분명 이 알고리즘을 사용했는데도 불구하고 말이다..
Back Off Algorithms의 아이디어는 단순하다.. 하지만 구현은 조금 머리 아플수 있다.
다른 프로세서와의 통신 시 정상적인 흐름이 되지 않을 때 일정 시간동안 특정 간격으로 같은 데이터를 재 요청하는 하는 것으로
현재는 IEEE 802.11 등 다양한 분양에 적용할수 있는 알고리즘이기때문에 잘 기억해 두면 좋은 예외 처리 디자인을 생산 해 낼수 있을것이다.
Transmit Count Wait Backoff time( Sec )
======================================================
1 N/A
2 2
3 4
4 8
5 16
6 32
7 64
8 128
9 256
10 Give Up
Sample of Back Off Algorithms Flow