잡기

링크시스 유무선공유기

paedros 2006. 1. 24. 03:33
블로그군. 격조했군.

바빴다.

웹의 벤치마크 테스트를 보니 국내 제품은 신호 강도 면에서 외국 제품에 많이 딸리는 것 같다. 사무실에서 유무선 공유기를 하나 사다 달라기에 Linksys WRT54G를 사다가 테스트를 해 봤다.

이전 유무선 공유기는 철제문을 지나 밖에 나가면 신호강도가 현저하게 떨어졌는데 이 놈에 공유기는 어찌된 일인지 옥상에서도 팔팔하게 전파가 잡혔다. 무려 -34dbm이 나온다. 한 층을 올라가 영화를 볼 수 있는 수준이다. 전반적으로 성능이 너무 좋다.

1. 아무리 보안에 공을 들여도 유무선 공유기는 보안에 취약하다
2. 이렇게 좋은 제품은 네트웍 게임에도 효과적이다.
3. 나는 참 열심히 일한다.

이상의 이유로 집에서 쓰던 내 유무선 공유기를 사무실에 갖다 주고 새로 산 건 내가 사용하기로 했다.

집에서 사용하던 공유기는 정성껏 닦아서 갖다 줬다.

집에서 사용하던 공유기에 사연이 있다. 예전에 FTP 서버가 안되서 Reenet의 기술 직원과 통화한 일이 있다. 해결될 기미가 보이지 않자, 그 직원이 제안하길, 제품을 가져오시면 환불해 드리겠습니다 라고 말했다. 귀찮아서 찾아가지 않았다. 그까이꺼 안 하면 그만이지.

한참 지난 후에 어쩌다가 일 때문에 FTP 프로토콜 규약을 다시 살펴본 결과... passive mode에서 사용할 때는 ftp 포트 외에도 이쪽 공유기에서 특정 포트 레인지로 인입할 수 있도록 공유기에서 passive mode용 버추얼 서버 포트를 열어줘야 한다는 것을 알았다. (사실 예전에 알던 사실이지만 한 일 년 여행 갔다가 돌아온 다음에 머리도 심장도 돌처럼 굳어버렸다) 이 공유기가 안 되던 이유는 단지 그 포트를 열지 않아서 였을 뿐이다.

네트웍 프로그래머를 비하할 생각은 없지만 통계적으로 유의미한 수준에서 간단히 말해, 수준이 낮다고 본다. 십수 년 동안 tcp 프로그래밍을 해왔다는 소위 그 분야 전문가란 작자가 don't linger나 keep alive, oob, windowing, naggle 알고리즘 따위의... 말하자면 기초적인 것을 모르거나 TCP negotiation이 트래픽이 대단한 네트웍에서 얼마나 끔찍한 것인지 이해하지 못한다던가...

국산 엔지니어 얘기냐고? 어릴 때는 외국인들하고 일했고 그들이 한국에서 삽질하는 엔지니어들보다 실력이 뛰어난 것도 아닌데 국산 엔지니어와 대접의 수준이 다른 것을 대단히 억울하게 생각했다. 이를테면 그들은 월풀이 있는 호텔 스위트에서 자는 동안 나는 공장 한켠 야전침대 위에서 잠을 설쳤다. 자는 건 그렇다치고 먹는 건... 갑자기 울컥하는군. 그런 와중에 왠 40대 외국인 철부지 꼬마가 자기도 잘 모르는 걸 나불대는데 '외국에서 왔다는' 이유로 떠들어 대는 그 시시한 내용을 참고 듣고 있자니 가려웠다.

논쟁은 무의미하다. 논쟁이란 고만고만한 도토리들끼리 서로가 얼마나 멍청한가를 공공연하게 나불거리는 몹시 이상한 짓이다.

한 일주일쯤 십년차 경력의 프로그래머와 일했는데, 아니다 다를까 이 친구도 여지없는 또라이였다. 코웍을 하면서 프로토콜 스펙을 만들었는가 말하니 플로우 하나 보여주면서 이대로 하잔다.

살다살다 '당신은 이런 종류의 프로그래밍은 한 번도 안 해봤군요!' 라는 등의 별 희안한 소리를 다 듣게 되어 오랫동안 인상에 남을 친구 같다. 사정은 이렇다. 그 친구는 비디오 데이터를 대역폭 한계까지 보낸다. 내가 트래픽 아날라이즈를 해 보니 80Mbps를 100Mbps 라인에서 24시간 365일 보내고, 임베디드 보드의 10Mbps 랜 카드들은 한계 영역에서 간신히 작동할 전망이다. 뭐 그럴 수도 있지만 갑자기 거기서 자기가 보내는 패킷에 반드시 ACK 패킷을 날려줘야 한다는 것이다. 사정은 점점 나빠지는데 그게 또 하필 TCP 통신이다(왜 TCP를 쓰는거지?). 더더욱 가관인 것은 L2 하나, 리피터로 쓰는 100Mbps 더미 스위칭 허브가 2개나 중간에 끼어 있다. 150m까지 네트웍을 연장하려고 그랬단다. 차라리 1000Base-LX를 쓰지. 그쯤에서 끝나면 좋을텐데 끔찍한 것이 하나 더 남아 있었다. 그 라인은 에머전시 라인이다. 한번에 2500명의 목숨이 왔다갔다 하는 라인인 것이다. 와... 설계 누가 했는지 완전 미친 놈 아니야? 이거 대량학살자네? 라고 혼잣말처럼 중얼거리고 있었는데 바로 그 친구가 설계한 것이었다.

...

내가 잘못했다.

그 친구 한테 '초짜' 라는 둥, 심지어 '스트리밍' 프로그래밍도 안 해봤다는 둥 하는 얘기를 묵묵히 들어줬다. 자기보다 실력도 떨어지는데 내가 돈은 더 많이 받아 기분이 몹시 상해 심사가 뒤틀렸는데 그의 설계에 감탄해 버렸으니... 이해한다. 나는 사장한테 사기 정말 잘 쳐서 돈을 더 받는 것이다. 내가 2주 일해서 그 친구 3개월 급여만큼 받는다. 마누라가 에어컨 사달라고 해서 하는 수 없이 알바를 했다. 별로 하고 싶은 생각은 안 드는 일이지만. 뭐 하는 회산지 구경이나 하려고 들렀다가(어떻게 나를 알고 연락했는지도 모르겠다. 게다가 나는 기밀유지 협정 때문에 할 수 없는 일이 많다 :p ) 하드웨어 엔지니어들이 만들어놓은 회로를 검토하고 몇 가지 고쳐서 작동하게 만들어줬다. 부사장 말로는 내가 한 시간 작업해서 2개월 작업하여 제작한 400장 보드 2억원 어치를 살렸단다. 시팔 좆됐다. 그후 2주 동안 내 전화기는 한시도 끊긴 적이 없었다.

아까 그 대량학살자한테 욕을 바가지로 먹고 원안 대로 10Mbps 대역을 full로 쓰는 클라이언트를 작성했다. 말이 클라이언트지, 이게 서버인지 클라이언트인지 모르겠다. 하여튼 설계대로 해줬다. 어서 빨리 끝내고 달아나고 싶다. 프레임 레이트가 15fps에서 간신히 똥을 싸고 BDP가 엄청나다. cpu 부하율을 그래도 1% 이내에서 잠잠했지만... 그걸 디스플레이하니 화면이 출렁거린다. 저게 바로 TCP 최악의 시나리오라는 건데, 자주 보면 우울해지지. 현학적인 TCP 최악의 시나리오가 밋밋해진 친구라도 다음날 신문 기사에 2500여명이 죽었다 라고 실리면 많이 우울해질 것 같다.

증거를 보여줘도 끝끝내 우겨대길래(황우석이냐?) 다음날 패킷 압축 알고리즘을 만들어서 같은 상황에서 360fps로 전송되는 것을 보여줬다. 네트웍 트래픽은 80Mbps에서 1.5Mbps로 팍 줄였다. 소스를 건네줬다. 바빠서 공부할 시간 없었던 사람에겐 욕 안 한다. 하지만... 음...

프로그래머는 직업적 특성상 또라이가 유난히 많은 직종이지만 자신의 무식을 전문성으로 알고 있는 30대 후반 또라이는 첨이라서 신선했다. 게임 쪽에는 또라이가 적고 뜨네기나 얼간이가 많다. 그건 그것 나름대로 의외로 장관인데, 사람 목숨이 오락가락 하거나 작은 실수 하나로 몇 초 사이에 수천만원이 공중에서 타버리는 관계로 식은 땀을 흘리며 하는 프로그래밍 경험이 없는 탓이지 싶다. 게임 프로그래머들을 비하할 의도는 없다. 그냥 업무 강도나 위험성(?)이 내쪽 일과 많이 차이난다는 뜻이다. 사실 또라이나 얼간이나 그게 그거지.

가끔 또라이 소리를 듣는다. 흡사 또라이처럼 보일 때도 있는데 그건 내가 방어적 프로그래밍, 방어적 시스템을 구축하기 위해 위험요소 분석을 하고 그쪽에 관련된 엔지니어가 보이면 친절하게 쪼르르 달려가서 히죽 웃으며 잘못 짜면 죽여버리겠다고 말해서인 것 같다. 그것 말고도 철없던 어린 시절 80만줄 짜리 어셈블리를 생짜로 아무 도구없이 c 소스로 리버스 엔지니어링한 적이 있었다. 엔지니어링 업계에 길이길이 남을 또라이짓으로 몇몇 사람들에게 회자되었다. 그렇게 만든 소스는 그 회사가 4년 동안 350억을 벌게 하는데 결정적인 역할을 한 것이었는데, 나한테는 국물도 없었다. 그때 일을 마치고 파산한 상태로 인도를 저렴하게(거지꼴로) 돌며 어떻게 고기 좀 먹어봤으면 좋겠다고 빌빌거리고 있었다. 그게 특허를 10여개나 만들고도 특허권 한 장 얻어본 적이 없는 불쌍한 엔지니어의 모습이다.

불쌍한 또라이 얘기 하다 말았던가? 이를테면 나는 쇳국물이 줄줄 흐르거나 50V 600A 짜리 보아 뱀처럼 생긴 케이블이 기어다니는 바닥에 라면 박스 깔고 앉아 프로그래밍하다가 노무자들이 곡괭이 들고 떼거지로 쳐들어와서 어떤 새끼가 CB 내렸는지 죽여버리겠다고 길길이 날뛸 때 양처럼 순진한 표정을 지은 적이 있다. CB는 내가 코드 한 줄로 내렸다. 다행히 그날 작업실 문을 걸어두었다. 많이 쫄았다. 코드 한 줄이면 수십명쯤 삽시간에 죽일 수 있다. 그런 경험을 하고 나면 목숨의 소중함, 그리고 목숨의 위협을 새삼스럽게 느끼게 된다. 특히 내 목 위에는 항상 머리가 제대로 붙어 있었으면 하는, 작은 소망을 품게 된다. 내 목 뿐만 아니라 네 목도 제대로 붙어 있게 하기 위해서 그 정도 협박 쯤이야 할 수 있고 그렇게 또라이 소리 듣는 것을 기분나쁘게 여기지 않았다.

대다수의 엔지니어는 착한 놈이다. 하지만 모르기 때문에, 모르는 것을 감추려 하기 때문에 사람을 죽일 수도 있는 것이 엔지니어다.

서로를 뜯어먹고 아둥바둥 살아가기 위해 각자 애쓰는(또는 믿어지는) 이 세계가 왜 쉽사리 붕괴되지 않는가 하는 문제를 농담한 적이 있다. 이를테면 월 스트릿이나 펜타곤 하나쯤 다운 시키는 것은 그 내부 사정을 아는 기술자에게 일도 아니다. 그런데 단순한 변심이나 '교훈'을 심어주기 위해서 그들에게 위해를 가한다는, 가했다는 증거는 여러 사정으로 듣기 어렵다. 대부분의 은행 전산망은 이미 깨졌어야 하고 국가 기간망이나 백본의 대부분은 사적이고 은밀한 샐러미에 이미 이용되고 있어야 한다. 워낙 철저하고 우아하게 작동하는 프로그램을 작성하기 때문이 그들이 걸리지 않았을까? 왜 피라미들만 날뛰는 것일까? 오캄의 면도날을 굳이 들먹이지 않더라도 이 세계를 만들었고, 이 세계를 유지했던 엔지니어들이 단순히 양심이나 정직하게 먹고 살아야 한다는 이유로(그리고 아까 어떤 엔지니어의 예를 보았듯이 실은 먹고 살지 못하더라도 지랄하지 않고) 시스템을 훼손하거나 망가뜨리지 않았다는 것은 가능한 설명 중 단순한 것이다(정직하게 말하자면 더 단순한 것도 있다).

버튼 하나로 이 세계를 붕괴시키는 것은 아름답고 우아하며 가끔 해 볼만한 일이지만 '우리'는 그 짓을 하지 않았다. 협박하거나 협잡을 늘어놓자는 수작이 아니다. 게다가 당신이 여러 가지로 부르짖는 허튼 소리는 그 와중에도 선택에 영향을 끼친 적이 없다. 참고로 아까 그 불쌍한 또라이는 공중도덕도, 법도, 정의도 제대로 지켜지지 않는 강원도 산골짝의 촌뜨기 출신이다.

지금은 계약금도 못 받았는데 일을 마쳤고 주말에 100여장 분량의 오퍼레이션 매뉴얼, 소스 어노테이션, 메인티넌스 매뉴얼, 필드 인스톨 가이드 따위 다큐먼테이션을 마치고 아까 손수 작성한(-_-) 검수평가서를 완성한 불쌍한 엔지니어일 뿐이다. 12일 걸렸다. 12일 동안 잠도 못 잤다. 이제 밀린 일을 하자. 썅.