요즘은 실종자분 정보나 북한에서 풍선 띄우면 오는 문자 정도로 전달되는 재난문자...

기본적으로는 CBS라고 해서, Cell Broadcast Service로 처리되는 문자의 형태다.

2000년도 쯤에 해당 서비스를 이용해서 사용자에게 서비스 하는 회사는 LG텔레콤 뿐이었고, 길이가 80byte 밖에 되지 않아서, 뭔가 현재 느낌으로는 스팸문자 취급을 당하고 있던 터에, 한국통신프리텔과 SK텔레콤에서 짧아서 이상하니 길게하면 되겠지!와 같은 생각을 각자 해서는 80byte 단위의 문자를 여러개 붙여서 하나의 문자로 보여주자!는 아이디어를 더해서 방송문자를 상용화 하게 되었다.

CDMA 시절의 규격은 국제 표준이란 개념이 없이, 미국 쪽의 IS-xx 규격이어서, 추가적인 서비스는 Reserved 영역을 맘껏 활용하는 식이었고, 단말기에 들어가는 주파수도 많지 않아, 로밍 같은 것은 전혀 생각할 필요없이 각자 자기 망에서 서비스 되면 되지 같은 상태였어서...

프리텔 쪽 (내가 쓴) 규격은 최대 7개까지를 더해서 한 512byte로 만들어서 보여주고, 필요시 해당 데이터를 문자와 아이콘으로 분할해서 보여주는 것이었고, 각각 분리된 문자는 일단 받으면 저장해두었다가, 추가로 재전송된 것을 합쳐서 전체 조각이 모이면 문자로 보여주게 하는 방식이었다. SK텔레콤 쪽 규격은 최대 4개를 합쳐서, 256byte 길이의 문자를 만들어서 보여주는 방식인데, 해당 분리된 문자가 한번에 다 받아지지 않으면 받은 걸 폐기하는 방식으로 기억한다. 
단말기 내에 문자를 저장해두고, 이후에 정 안들어오면 버려야하는 추가적인 로직이 들어가야하지만, 한번에 다 받아야만 수신되는 SK쪽 규격보다는 수신율이 좋았다.

하여간, 그래서 방송문자 서비스를 상용화 하는데...

1) 야이 삼xxx 놈들아...

프리텔 직원으로서 최초로 방송문자 규격을 넣고, 단말기 시험을 하는데...

반응해선 안될 기존에 판매된 일부 삼xxx 단말기들이 방송문자를 받으면 뻘짓을 해댔다. 삼xxx에서 LG텔레콤을 포함해서 PCS 단말기를 납품 하던 중에 프리텔에 납품하는 단말기에 방송문자를 수신하는 LG텔레콤 코드가 일부 닫히지 않고 포함되어 버렸고, 프리텔에서는 방송문자를 사용 안하고 있었으니 시험이 되지 않았고, 그 상태로 판매가 되었던 것이다.

그때 농담삼아 하던 말이, '사람들이 냉장고가 고장나면 짊어지고라도 A/S센터에 오는데, 휴대폰은 A/S센터에 오기는 커녕 S/W 업데이트도 안 한다.'는 게 단말기 쟁이들의 공통인식이라, 이미 판매된 단말기가 뻘짓하는 걸 막기 위해서 교환기를 수정하는 짓을 하게 되었다. -_-

이후 메시지를 전송하는 교환기를 수정해서, 이전 단말기들이 수정된 메시지에 반응하지 않는 걸 실험실에서 확인한 후에, 차들만 슝슝 지나가는 자유로 길가나 평일에 사람이 없는 과천경마장에 혼자 백수십대의 단말기를 가져가서 봉고차 뒤에 죽 깔아두고, 방송메시지를 뿌려서, 단말기들이 아무 반응이 없는지를 확인했던 적이 있었다.

2) 서울의 동쪽은 강원도.

하여간, 그렇게 전송 서버 요구사항과 단말기 규격을 혼자서 다 써버리고, 서버 개발시에 전국뿐 아니라, 지도상의 특정 지역별(시도 단위나 군구단위)로도 전송할 수 있게 시스템 요구사항을 내서, 기본 납품시에 해당 시도/군구 단위 전송 기능을 탑재해 들어오도록 했는데...

실제 도입후에 자꾸 강원도에 문자를 쏜 것이 서울 지역에서 받아지는 문제가 있었다. 

그 원인이... -_-

서울의 동쪽 절반은 강원도... (출처: 본인)

위의 지도를 보면 알겠지만, 최초 요구사항 적용시 '전송 대상 지역에 사각형을 그리고, 그 사각형 안에 있는 기지국 리스트를 뽑아서, 해당 기지국 리스트로 방송문자를 보내라'로 적용이 되었어서, 강원도를 하나의 사각형으로 덮은 결과 서울의 절반쯤이 그 사각형에 들어가서 발생한 일이었다. -_-

지역 적용시 오차를 고려해서 좀 넘치더라도 인근 지역에서도 받아지면 좋겠지 싶어서 결정했던 것이 저런 결과를 낳았다. 곧바로 하나의 사각형이 아닌, 여러개의 사각형을 하나의 지역으로 인식하도록 수정해서 서울의 동쪽 절반이 강원도 문자를 받는 일을 해결했다. 

3) 재난문자 좀 꺼줘.

서비스명 Magicⓝ MultiQ 서비스로 상용화된 이후에 매일 아침 날씨 아이콘과 오늘의 날씨가 받아지고, 다른 여러 정보 문자가 받아지던 와중에 당시 소방방재청에서 재난이 생겼을 경우에 우리도 문자를 전송할 수 있게 해달라는 요구가 들어왔다.

아, 이것은 공익적인 목적이고, 위험할 때 보내는 거니 모두가 안 받을 수 없게 해드려야지!란 생각으로, '수신차단 불가'로 셋팅을 해서 재난문자 채널을 추가했다. 그런데...

재난문자의 내용이 별 중요하지 않은 것도 보내다보니, 다들 짜증이 났고, 꺼버릴 수도 없다는 것에 열들이 받으셨나 보다. 어느날, 당시 과장 나부랭이라서 직접 얘기를 듣지 못하고, 어디 돌아서 어디 국회의원실에서 이것 좀 끄게 해달라고 민원이 들어왔다는 얘기가 들어왔다. 뭐 그럴 수도 있지하고서, 모든 가입자가 재난문자 수신을 차단할 수 있도록, 가입자 전부에게 SMS를 한번씩 보내게 되었다. (수신 가능한 방송 채널 정보를 가입/해지시에 개개인에게 SMS로 전송하도록 구현 했었기에...)

4) 재난문자의 세계화.

위의 내용과 같이 암 생각없이 소방방재청의 요청에 따라 재난문자 채널을 만들어줬고, 경찰청에서 미아찾기 채널도 만들어달라해서 추가해줬었는데...

나중에 듣기로는 국제 소방방재청 모임이 있었다고 하고, 우리나라 소방방재청이 그 국제 회의에 가서 우리는 이런 거 한다!라고 자랑을 했었나 보다...

그리고, 그게 미국 쪽 맘에 들었는지, CMAS(Commercial Mobile Alert Service)란 이름으로 미국 국내 규격을 작성하고, 3GPP규격에 해당 CMAS를 2008년에 밀어넣고, 그게 다시 WCDMA/LTE 시절의 우리나라로 역수입이 됐었다. -_-

 

WCDMA 시절에 삽질했던 내용은 다음 글로...

美泥.

:

이동... 인간에게 있어서 아주 자연스런 행동인 이동... (귀차니스트에게는 자연스럽지 않겠지만...)

걷거나, 버스를 타거나, 차를 타거나, 지하철을 타거나, 실려서 위치를 변경하는 이동...

그러나, 본인(?)의 의지와 상관없이 위치를 변경당하게 되는 스마트폰은 무슨 일을 당하는 걸까...

뭐 어차피 신경쓰지 않고, 이동통신 서비스를 받으시는 분들은 당연히 되는 걸로 생각하는 이동...

스마트폰의 입장에서 LTE망의 경우로 설명해 보겠다... (WCDMA면 조금더 복잡해지고, CDMA면 비슷한 정도다.)

기지국은 System Information Block 이라는 기지국과 그 연관된 정보를 항시 전송하고 있다. 

그 중에서 단말기의 이동에 관련된 항목은 다음의 3가지 정도가 된다.

  • SIBtype3
  • SIBtype4
  • SIBtype5

개별적으로 세부 사항을 들여다보면...

  • SIBtype3
    • 지금 기지국을 잡고서 다른 기지국을 찾지 않아도 되는 현재 기지국의 세기
    • 지금 기지국을 잡고 있지만, 동일한 주파수의 다른 기지국을 찾기 시작해야 하는 현재 기지국의 세기
    • 지금 기지국을 잡고 있지만, 다른 주파수의 다른 기지국을 찾기 시작해야 하는 현재 기지국의 세기
    • 몇초 이상 현재 기지국이 신호가 약해져야 다른 기지국을 찾기 시작해도 되는지의 시간

을 기지국이 알려주고(모두 다 단말기가 다른 기지국을 찾느라고 배터리를 쓰지 않게 하기 위함이다.), SIB4/5는 

  • SIBtype4 : 같은 주파수의 다른 기지국에 대한 정보
  • SIBtype5 : 다른 주파수의 다른 기지국에 대한 정보

의 값이 된다. SIB6의 경우는 LTE가 아닌 다른 기술을 사용하는 기지국(WCDMA나 CDMA등 다른 접속방식에 대한 기지국)에 대한 정보를 주지만, 거의 사용되지 않는다.
그래서, 저 기지국에서 전송하고 있는 값은 스마트폰이 데이터를 쓰지 않고, 그냥 이동하는 경우에 다음 기지국을 빨리 찾아서 접속하기 위해 제공하는 정보이다. 그 때는 이전에 언급한 RRC 연결을 기지국과 맺고 있지 않기 때문에 스마트폰이 알아서 다른 기지국을 선택하기 때문에 알려주는 정보이다. 그런 다음에, SIBtype1에서 TAC(Tracking Area Code)가 모르는 값이 나오는 경우 스마트폰은 위치가 변경됐다는 것을 망에 알림으로써 이동했다는 것을 처리하게 된다. 

 

그런데, 데이터를 사용하고 있는 경우, 기지국은 인근에 다른 기지국에 대한 정보를 주고, 그 기지국 세기가 얼마나 되는지를 단말기가 측정해서 알릴 것을 명령한다. 이는 현재 맺어져있는 RRC 연결의 재구성(RRCConnectionReconfiguration)을 통해서 전달되며 스마트폰은 요청된 기지국들에 대한 신호세기를 측정해서(Measurement Report) 기지국에 알리게 된다.

이때, 단말기가 알려준 인근 기지국에 대한 신호 세기는 

  • 해당 기지국을 통해 추가적인 연결통로 확보 및 속도 증가(CA, Carrier Aggregation)
  • 해당 기지국으로 넘겨서, 현재 기지국의 부하를 줄이거나 좋은 서비스를 제공하기 위한 판단 근거 (H/O, Hand Over)

에 활용된다. 이동 중일 경우 Hand Over로 활용되는 경우가 일반적이 되지만, 단말기 입장에선 별도의 위치 판단을 하지 않기 때문에, 모든 것은 이동하기 때문에 일어나는, 현재 접속한 기지국의 신호가 안 좋아지고, 옆의 기지국의 신호가 좋아지는 것으로 받아들이게 되며, 기지국도 해당 단말기가 나한테서 멀어지니, 옆의 기지국으로 넘겨줘야겠다는 것으로 판단하게 된다.

그래서, SIB4/5의 값 내지는 RRC연결 재구성 메시지에 주어진 정보를 가지고, 해당 기지국이 사용하고 있는 Code에 대한 정보인 PCI(Physical Cell Identity)와 필요한 경우 해당 셀이 사용하고 있는 주파수에 해당하는 정보를 이용해서 넘어갈 수도 있는 기지국의 세기가 얼마정도 되는지를 현재 기지국에 알리게 된다.

그래서, 현재 기지국이 생각할 때, 옆의 기지국으로 넘겨줘야 겠다는 판단이 되는 경우, RRC 연결 재구성(RRCConnectionReconfiguration) 메시지를 통해서 해당 기지국을 단말기가 잡을 것을 명령하고, 전송대기 중인 데이터를 해당 기지국으로 넘겨주는 동작을 하게된다. 그를 통해서 이동 중에도 끊김 없는 데이터 전송을 제공하게 된다.

이러한 망쪽에서의 동작이 WiFi AP에서 벗어날 경우와 다른 데이터 끊김이 없는 것을 보장하게 된다. 

美泥.

: