← 모든 글

엔지니어링 철학: 라디아 펄먼

네트워크 프로토콜 설계자 라디아 펄먼

핵심 요약

  • 그는 스위치 기반 이더넷을 대규모로 동작하게 만든 Spanning Tree Protocol을 발명했습니다. Digital Equipment Corporation에 재직하던 시절, 라디아 펄먼은 spanning tree 알고리즘을 설계했습니다. 1985년에 발표되어 IEEE 802.1D로 표준화된 이 알고리즘은, 임의의 토폴로지로 연결된 네트워크 속 브리지들이 스스로 모든 목적지에 이르는 단 하나의 루프 없는 경로를 계산하게 하면서, 장애가 생기면 조용히 그 주변을 우회해 복구하도록 합니다. 이것이 없으면 중복 링크는 루프를 만들고, 하나의 브로드캐스트가 영원히 맴돌며 네트워크를 녹여 버립니다.123
  • 그를 규정하는 신념은 견고함입니다. 장애 속에서도, 심지어 악의적인 장애 속에서도 올바름을 유지하는 네트워크 말입니다. 1988년 MIT 박사 학위 논문의 제목은 “Network Layer Protocols with Byzantine Robustness”였습니다. 링크가 죽었을 때뿐 아니라 노드가 능동적으로 거짓말을 할 때에도 계속 동작하도록 설계된 라우팅입니다. 적대적 상황을 포함한 장애 상황을 염두에 둔 설계는 그가 만든 모든 것에 일관되게 흐릅니다.1
  • 그는 정통 교과서를 썼고, 특허 안에 시 한 편을 적어 넣었습니다. 펄먼은 한 세대의 네트워크 엔지니어가 배운 책 Interconnections: Bridges, Routers, Switches, and Internetworking Protocols의 저자이며, Network Security: Private Communication in a Public World의 공동 저자이기도 합니다. 그는 또한 spanning tree를 묘사하기 위해 “Algorhyme”이라는 시를 썼습니다. “내 생각에 나는 결코 보지 못하리 / 나무보다 더 사랑스러운 그래프를.” 이는 기록에 남은 소프트웨어 특허 가운데 시를 담은 유일한 사례일지도 모릅니다.347
  • 그는 100개가 넘는 특허를 보유하고 National Inventors Hall of Fame에 헌액되었습니다. 그리고 “인터넷의 어머니”라는 호칭을 싫어합니다. Internet Hall of Fame(2014)과 National Inventors Hall of Fame(2016)에 헌액되고 100개가 넘는 등록 특허를 보유한 펄먼은, 인터넷을 발명한 사람은 단 한 명도 없다고 주장하며 “인터넷의 어머니”라는 꼬리표를 수십 년 동안 거부해 왔습니다.15

핵심 원리

“내 생각에 나는 결코 보지 못하리 / 나무보다 더 사랑스러운 그래프를. / 그 나무의 결정적 성질은 / 루프 없는 연결성이라네.” – 라디아 펄먼, “Algorhyme,” Spanning Tree Protocol을 묘사한 시4

대부분의 엔지니어링은 모든 것이 잘 작동하는 경우를 위해 최적화됩니다. 정상 경로를 설계하고, 상상할 수 있는 몇 가지 오류를 처리한 뒤, 출시합니다. 하지만 네트워크는 그런 안락함을 허락하지 않습니다. 네트워크란 무작위로 고장 나는 기계들, 패킷 전송 도중 끊겨 버리는 링크들, 그리고 – 운이 나쁘면 – 누군가에게 장악되어 이제는 당신에게 거짓을 흘려보내는 노드들이 어우러진, 살아 있는 그물망입니다. 펄먼의 작업 전체는 대부분의 코드와 정반대의 전제에서 출발합니다. 장애 상황은 예외 사례가 아니라 설계의 중심입니다. 프로토콜은 배선이 깨끗할 때 잘 돌아간다고 해서 제값을 하는 것이 아니라, 깨끗하지 않을 때에도 올바름을 유지할 때 제값을 합니다. 사람이 개입하지 않아도 스스로 다시 좋은 상태로 안정화되면서 말입니다.13

Spanning Tree Protocol은 이 원리가 가장 순수한 형태로 드러난 예입니다. 이 프로토콜이 푸는 문제는 가혹하고 구조적입니다. 스위치를 중복 링크로 연결하면 – 신뢰성을 위해서는 그렇게 해야만 합니다 – 물리적 루프가 생기고, 단 하나의 브로드캐스트 프레임이 그 루프를 영원히 맴돌면서 분기점마다 증식해 모든 링크를 포화시키다가 결국 네트워크를 죽입니다. 단순한 해법은 루프를 금지하는 것이지만, 그러면 중복성을 금지한 셈이 되어 케이블 하나만 끊겨도 건물의 절반이 멈춥니다. 펄먼의 통찰은 둘 다 가질 수 있다는 것이었습니다. 운영자가 원하는 어떤 그물망이든 마음대로 배선하게 두되, 스위치들 스스로가 모두에게 닿으면서도 루프가 없는 단 하나의 트리를 계산하고, 중복 링크는 예비로 남겨 두게 하는 것입니다.23 중앙 제어기도, 사람이 손으로 그리는 트리도 없이 – 스스로 수렴하고 무언가 깨지면 다시 수렴하는, 완전히 분산된 알고리즘입니다.

이 원리에는 두 번째 절반이 있으며, 그것이야말로 첫 번째 절반을 깊게 만듭니다. 견고함은 우연한 사고뿐 아니라 악의에까지 확장되어야 합니다. 고장 난 노드는 그저 멈출 뿐이지만, 장악당한 노드는 계속 떠들어 대며, 그 말은 당신을 해치도록 설계되어 있습니다. 펄먼의 박사 연구는 더 어려운 질문을 던졌습니다. 일부 라우터가 능동적으로 방해 공작을 벌이는 와중에도 라우팅 프로토콜이 패킷을 올바르게 계속 전달할 수 있는가? 그리고 그는 비잔틴 견고함(Byzantine robustness)을 갖춘 프로토콜로 그 질문에 답했습니다.1 그 규율은 spanning tree에서 그의 보안 작업으로 이어지는 동안 줄곧 같습니다. 프로토콜이 살아갈 세상에 대해 최악을 가정하고, 그럼에도 스스로 치유되도록 설계하라는 것입니다. 그리고 그 모든 작업을 관통하는 미학은 단순함입니다. 단순한 프로토콜은 추론할 수 있고, 증명할 수 있으며, 수렴을 믿을 수 있는 프로토콜입니다. spanning tree가 시 한 편에 담기는 이유가 바로 여기에 있습니다.

맥락

라디아 펄먼은 1951년 12월 18일 버지니아주 포츠머스에서 태어났습니다.1 MIT에 진학해 수학 학사(SB)와 석사(SM)를 받았고, 이후 1988년에 컴퓨터 과학 박사 학위를 받았습니다. 그의 논문 제목은 “Network Layer Protocols with Byzantine Robustness” – 악의를 품게 된 라우터들 속에서도 살아남도록 설계된 라우팅이었습니다.1 그 논문 주제는 그의 경력에 달린 각주가 아닙니다. 그것은 일찌감치 적어 둔, 그의 경력 그 자체의 핵심 명제입니다.

그가 유명해진 프로토콜들에 앞서, 그는 MIT의 인공지능 연구소에서 조용히 급진적인 일을 해냈습니다. 1970년대 초 그는 TORTIS – “Toddler’s Own Recursive Turtle Interpreter System” – 를 개발했습니다. LOGO 거북이 환경을 세 살 반 정도의 어린아이도 로봇을 프로그래밍할 수 있을 만큼 단순하게 만든 것입니다.1 이것과 그의 후기 작업 사이의 연결선은 분명합니다. 어린아이에게 프로그래밍을 가르치는 일은 급진적 단순화의 훈련입니다. 사전 지식이 전혀 없는 사람과 마주쳐도 살아남을 때까지 아이디어를 깎아 내는 것이지요. 그는 남은 평생 동안 네트워크 프로토콜을 바로 그런 식의 본질적이고 이해 가능한 핵심으로 깎아 내게 됩니다.

그의 경력 행로는 현대 네트워크를 일군 기관들을 관통합니다. MIT 이후 그는 BBN에서 일하다가 1980년 무렵 Digital Equipment Corporation에 합류했고, 연구실에 격리된 채가 아니라 실제 제품 문제를 풀던 DEC에서 spanning tree 알고리즘을 발명하고 DECnet 라우팅을 설계했으며, 라우팅을 거리 벡터(distance-vector) 방식에서 링크 상태(link-state) 방식으로 옮기는 기초 작업을 했습니다. 여기에는 IS-IS도 포함됩니다.13 DEC 이후에는 Novell에서, 그다음 Sun Microsystems에서 일했고(이곳에서 Sun Fellow였으며 자신의 특허 중 40개 이상을 얻었습니다), 이후 IntelDell EMC에서 일했습니다.1 그 과정에서 그는 100개가 넘는 등록 특허를 쌓았고, Internet Hall of Fame(2014)National Inventors Hall of Fame(2016)에 헌액되었으며, 수년에 걸쳐 거부해 온 꼬리표 하나를 얻었습니다 – “인터넷의 어머니”라는 호칭 말입니다. 그는 인터넷을 발명한 단 한 사람은 없으며, 성별을 부각한 이 호칭이 기리는 것보다 가리는 것이 더 많다는 이유로 이를 거부합니다.15

작업

Spanning Tree Protocol: 네트워크가 스스로 키워 내는 트리

여기서 시작합시다. 원리가 메커니즘으로 구현된 사례이기 때문입니다. 무대는 확장 LAN입니다 – 여러 세그먼트가 브리지(오늘날 우리가 스위치라고 부르는 것)로 꿰매어진 환경이며, 단 하나의 장애로 네트워크가 분단되지 않도록 중복 링크로 배선되어 있습니다. 신뢰성을 위해 중복성은 타협 불가능한 조건입니다. 그러나 중복성은 루프를 뜻하고, 루프는 치명적입니다. 이더넷 프레임에는 time-to-live 필드가 없어서, 루프에 들어온 브로드캐스트 프레임은 끝없이 복제되며 맴돌고, 스위치는 브로드캐스트를 모든 포트로 플러딩하기 때문에 그 복사본들은 가용 대역폭을 전부 소진할 때까지 증식합니다. 네트워크는 느려지는 게 아니라 죽습니다. 이것이 브로드캐스트 스톰이며, “STP의 기본 기능은 브리지 루프와 그로 인해 발생하는 브로드캐스트 복사를 방지하는 것”입니다.2

펄먼의 1985년 알고리즘은 중앙 권한이 필요 없는 분산 계산으로 이를 해결합니다.3 먼저 브리지들이 루트를 선출합니다 – 식별자가 가장 낮은 것이 이기며, 작은 메시지들을 주고받아 결정되고, 사람이 고르지 않습니다.2 그다음 각 브리지는 루트로 향하는 최소 비용 경로를 계산해 그 하나의 링크만 포워딩용으로 활성 상태로 두고, 중복 링크는 차단합니다.2 그 결과 남는 것이 spanning tree입니다. 모든 세그먼트에서 루트까지, 따라서 임의의 두 지점 사이에 루프가 없는 단 하나의 경로이면서도 여전히 모든 LAN에 닿는 트리 – 바로 그 시가 이름 붙인 “루프 없는 연결성”입니다.4 차단된 링크는 낭비되지 않고 예비로 남아 있습니다. 활성 링크가 고장 나면 브리지들이 변화를 감지하고 알고리즘이 새로운 최소 비용 트리를 계산해 대기 중이던 링크를 승격시켜 연결을 복구합니다.2 이것이 자기 치유입니다 – 자동이고, 분산되어 있으며, 운영자가 아무것도 건드리지 않아도 됩니다.

이것이 엔지니어링으로서 왜 중요한가: spanning tree는 운영자가 무시해도 되는, 스스로 안정화되는 분산 알고리즘입니다. 케이블을 꽂고, 안전을 위해 중복성을 더하면, 네트워크가 알아서 정돈됩니다 – 그리고 무언가 깨지면 다시 정돈됩니다. IEEE는 1990년에 이 알고리즘을 802.1D로 표준화했고, 수십 년 동안 출하된 사실상 모든 관리형 이더넷 스위치 안에서 동작했습니다.2 이것은 또한 이해 가능성의 본보기이기도 합니다. 전체가 열두 줄짜리 시에 담기는 까닭은 그 밑바탕의 아이디어가 진정으로 단순하기 때문이며, 단순함이야말로 그것이 수렴한다는 사실을 믿게 해 주는 요소입니다.4

링크 상태 라우팅, IS-IS, 그리고 Interconnections

spanning tree는 확장 LAN 내부의 브리징을 다스립니다. 네트워크 사이의 라우팅은 더 큰 문제이며, 펄먼은 이 또한 빚어냈습니다. DEC에서 그는 라우팅을 거리 벡터 프로토콜에서 멀어지도록 도왔습니다. 거리 벡터 방식에서는 각 라우터가 이웃이 알려 준 대로 각 목적지까지의 비용만 알 뿐이라, 수렴이 느리고 “무한대로 세기(counting to infinity)”에 빠지기 쉽습니다. 그는 라우팅을 링크 상태 방식으로 옮겼는데, 여기서는 모든 라우터가 전체 토폴로지를 학습하고 자신의 최단 경로를 직접 계산합니다.1 IS-IS(Intermediate System to Intermediate System) – OSPF의 OSI 대응물이 된 링크 상태 프로토콜 – 에 대한 그의 작업은 링크 상태 라우팅이 견고하고 빠르게 수렴하는 이유의 일부입니다. 이 프로토콜은 토폴로지 변화를 신뢰성 있게 플러딩하고 경로를 다시 계산하도록 만들어졌으며, 이는 한 계층 위에서 작동하는 spanning tree와 동일한 자기 치유 본능입니다.1

그는 책도 썼습니다 – 말 그대로요. Interconnections: Bridges, Routers, Switches, and Internetworking Protocols는 한 세대의 네트워크 엔지니어가 이 분야를 배운 텍스트이며, Network Security: Private Communication in a Public World(Charlie Kaufman, Mike Speciner 공저)는 표준 참고 문헌이 되었습니다.7 그의 글을 남다르게 만드는 점은 그의 프로토콜을 남다르게 만드는 바로 그것입니다. 설계가 무엇을 하는지뿐 아니라 그런 모습인지를 설명하려는 고집, 즉 독자에게 사양을 외우게 하는 대신 올바름과 장애에 대해 스스로 추론하도록 가르치는 태도입니다.

라디아 펄먼

악의를 상대로 한 설계: 비잔틴 견고 라우팅과 만료되는 데이터

이것이 그를 가장 잘 드러내는 작업입니다. 고장 난 노드 주변을 우회해 치유하는 네트워크만 해도 충분히 어렵습니다. 그런데 그의 박사 연구 “Network Layer Protocols with Byzantine Robustness”는 일부 라우터가 장악당해 모든 힘을 다해 방해하는 와중에도 – 패킷을 떨어뜨리고, 토폴로지에 대해 거짓을 말하고, 라우팅 메시지를 위조하는 와중에도 – 라우팅이 패킷을 올바르게 계속 전달할 수 있는지를 물었습니다.1 고장 난 노드는 조용하고 예측 가능하지만, 비잔틴 노드는 시끄럽고 적대적이며, 그럼에도 프로토콜은 끝내 전달해 내야 합니다. 악의적 장애를 나중에 덧붙이는 보안 기능이 아니라 설계해야 할 일급 사례로 다루는 태도는 대부분의 시스템이 만들어지던 방식보다 수십 년 앞서 있으며, 이는 spanning tree와 동일한 본능에서 곧장 비롯됩니다. 세상은 적대적이라고 가정하고, 무슨 일이 있어도 올바른 상태로 수렴하라는 것입니다.1

그 본능은 그의 후기 보안 작업으로 이어졌습니다. 그는 공개 키 기반 구조(public-key infrastructure)의 신뢰 모델에 기여했고, 또한 – 그답게 명료한 아이디어로 – 만료되는 데이터를 위한 메커니즘에도 기여했습니다. 정해진 시점 이후 정보가 확실히 복구 불가능해지도록 설계된 임시(ephemeral) 키 관리, 즉 삭제된 데이터가 정말로 사라졌다는 보증입니다.1 이는 장애 상황 중심의 사고방식을 프라이버시로 돌린 것입니다. 대부분의 시스템은 기억하도록 만들어지지만, 그는 잊는다고 신뢰할 수 있는 시스템을 어떻게 만드는가를 물었습니다. 이것이 더 어렵고 더 적대적인 문제입니다.

National Inventors Hall of Fame 헌액 연설을 하는 라디아 펄먼

TRILL, 그리고 단순함의 규율

펄먼은 스스로에게 가장 날카로운 비평가이기도 했고, 그래서 spanning tree의 후계자를 설계했습니다. STP의 큰 한계는 그 미덕의 이면입니다. 루프를 죽이기 위해 중복 링크를 차단하는데, 이는 대역폭이 놀고 있다는 뜻이며, 가까운 두 스위치 사이의 트래픽이 루트를 거쳐 멀리 우회하도록 강요될 수 있습니다.6 TRILL – “Transparent Interconnection of Lots of Links” – 이 그의 답이며, 이는 그의 경력 전체의 종합입니다. 그것은 “링크 상태 라우팅을 VLAN 인식 고객 브리징 문제에 적용한 것”입니다.6 RBridge라고 불리는 TRILL 스위치들은 자기들끼리 IS-IS 링크 상태 프로토콜을 실행해 전체 토폴로지를 학습하고 최단 경로를 계산하므로, TRILL은 링크를 차단하는 대신 “모든 활성 링크에 걸쳐 경로를 확립합니다.” 플러그 앤 플레이 브리징의 회복력과 단순함에, 라우팅의 경로 효율성을 더한 것입니다.6 링크 상태 작업과 spanning tree 작업을 하나의 설계로 접어 넣은 셈입니다.

그 모든 것을 관통하는 것은, 과소평가하기 쉬운 단순함에 대한 신념입니다. spanning tree가 유명한 데에는 시 한 편에 담길 만큼 작다는 점이 한몫합니다. 그의 교과서가 사랑받는 까닭은 나열하는 대신 설명하기 때문입니다. 네트워킹의 상당 부분에 대한 그의 변함없는 불만은, 그것이 필요 이상으로 복잡하다는 것입니다. 펄먼에게 단순함은 미적 선호가 아닙니다. 그것은 프로토콜을 증명 가능하게 올바르고 신뢰할 수 있게 스스로 안정화되게 만드는 요소입니다. 추론할 수 없는 메커니즘이 스스로 치유한다고 믿을 수는 없고, 머릿속에 담을 수 없는 것을 추론할 수는 없습니다.46

방법론

spanning tree, IS-IS, 비잔틴 견고함 논문, 보안 작업, TRILL을 가로질러 읽어 보면, 동일한 신념들이 거듭 나타납니다. 펄먼의 방법론은 구호라기보다는 일관된 습관의 묶음입니다.

장애 상황을 가장 먼저 설계하라. spanning tree는 장애 처리를 덧붙인 포워딩 알고리즘이 아닙니다. 장애 그 자체가 이 프로토콜이 풀려고 존재하는 문제입니다 – 루프 없음과 공존해야만 하는 중복 링크, 그리고 죽을 것이고 그 주변을 우회해 치유되어야만 하는 활성 링크 말입니다.23 이 교훈은 네트워킹을 훌쩍 넘어 전이됩니다. 정상 경로를 설계한 뒤 오류 처리를 덧대지 말고, 장애 모드를 먼저 설계한 다음 그 장애를 이미 견디는 시스템에서 정상 경로가 저절로 떨어져 나오게 하라는 것입니다. 이는 견고함에 적용된 증거 관문입니다 – “아무것도 고장 나지 않았을 때 작동한다”는 증거가 아니고, “링크가 고장 나도 올바른 상태로 수렴한다”는 것이 증거입니다.

우연한 사고만이 아니라 악의를 가정하라. 가장 어려운 장애는 조용한 장애가 아닙니다. 장악당해 이제 거짓을 말하는 노드들입니다. 펄먼의 비잔틴 견고함 논문은 적을 사후 고려가 아니라 설계 입력으로 다룹니다.1 이는 아디 샤미르가 암호학 경력 전체를 쌓아 올린 바로 그 본능과 같습니다 – 시스템의 일부를 통제하는 공격자가 무엇을 할 수 있는지 물어보기 전까지는 그 시스템을 이해한 것이 아닙니다 – 그리고 권한 경계나 라우팅 프로토콜이, 그것을 능동적으로 깨뜨리려는 참여자를 상대로 설계되어야 하는 이유이기도 합니다.

스스로 안정화되게 만들어라 – 사람의 개입 없이. spanning tree의 가장 깊은 미덕은 운영자가 그것을 무시해도 된다는 점입니다. 누구도 트리를 그리지 않아도 스스로 수렴하고, 장애 후에 다시 수렴합니다.2 그 규율은 복구를 운영 매뉴얼이 아니라 시스템 안으로 밀어 넣는 것입니다. 사람이 있어야만 치유되는 네트워크는 새벽 3시에 치유되지 않으니까요. 이는 레슬리 램포트가 합의(consensus)에 가져온 것과 동일한 분산 올바름의 충동입니다. 좋은 상태를 정확히 정의한 다음, 어떤 출발점에서든 그 상태로 되돌아가는 프로토콜을 만드는 것이지요.

추론할 수 있을 만큼 – 그리고 가르칠 수 있을 만큼 – 단순하게 유지하라. 시 한 편에 담을 수 있는 프로토콜은 수렴을 증명할 수 있는 프로토콜입니다. 를 설명하는 교과서는 다음 세대가 외우는 대신 추론할 수 있게 합니다.47 여기서 단순함은 단순함 그 자체를 위한 미니멀리즘이 아닙니다. 그것은 신뢰의 전제 조건이며, 가장 강력한 메커니즘이 동시에 가장 이해하기 쉽도록 만드는 바로 그 수단의 경제성입니다. 최소 가치 제품의 정신과 같습니다.

자기 자신의 가장 가혹한 비평가가 되어라. STP는 잘 작동하는데도, 펄먼은 STP의 차단된 링크 낭비를 자신이 평생 매달려 온 링크 상태 아이디어로 고치기 위해 TRILL을 설계했습니다.6 그 변함없는 습관은 자신의 최고작을 계속 공격하는 것입니다 – 자신이 유명해진 그것의 한계를 직접 짚어내고 그 후계자를 만드는 것이지요 – 이는 품질만이 유일한 변수를 하나의 실천으로 만든 것입니다. 질문은 결코 “이만하면 출시할 만큼 좋은가?”가 아니라 “이것이 여전히 옳은 설계인가?”입니다.

영향의 사슬

그를 빚어낸 것들

MIT의 수학·AI 전통. MIT에서의 두 개의 수학 학위와 박사 학위, 그리고 AI 연구소에서 LOGO 거북이 시스템을 다룬 초기 작업은, 프로토콜이 올바르다는 것을 증명할 엄밀함과 아이디어를 급진적으로 단순하게 만들 본능 모두를 그에게 심어 주었습니다.1 세 살짜리 아이에게 프로그래밍을 가르치는 것은 spanning tree를 시 한 편에 담는 것과 똑같은 기술입니다. (형성적 영향)

초기 인터네트워킹 공동체. BBN과 DEC에서 보낸 세월은 그를 1970년대와 1980년대에 광역 및 근거리 네트워킹을 실제로 구축하던 기관들 한복판에 두었습니다. 그곳에서 문제는 학술적이지 않았고 – 루프는 진짜 네트워크를 정말로 녹였습니다 – DECnet, IS-IS, 브리징에 관한 작업은 그 문제들을 푸는 데서 나왔습니다.1 (직접적 영향)

비잔틴 결함 전통. 악의적 장애에 견고한 프로토콜에 대한 그의 박사 연구는, 일부 참여자가 임의로, 심지어 적대적으로 행동할 때 시스템이 어떻게 올바름을 유지하는지를 묻는 분산 시스템 사고의 계보 – 레슬리 램포트 등이 정식화한 – 와 그를 잇습니다.1 (형성적 영향)

그가 빚어낸 것들

모든 스위치 이더넷. IEEE 802.1D로 표준화된 Spanning Tree Protocol은 수십 년 동안 사실상 모든 관리형 스위치 안에서 동작했습니다 – 기업 네트워크에 중복 케이블을 꽂아도 네트워크가 무너지지 않는, 그 조용한 이유입니다.23

현대 데이터센터 패브릭. TRILL과 그 링크 상태 브리징 아이디어는, 중복성을 차단하는 대신 최단 경로 라우팅으로 모든 링크를 사용하는 패브릭 쪽으로 이 분야를 밀어붙여, 대규모 데이터센터 네트워크가 구축되는 방식을 빚어냈습니다.6

한 세대의 네트워크 엔지니어. InterconnectionsNetwork Security를 통해 펄먼은 이 분야에 브리지, 라우터, 프로토콜에 대해 추론하는 법을 가르쳤습니다 – 그의 설명 방식은, 그토록 많은 실무자가 네트워크를 지금처럼 사고하는 이유의 일부입니다.7

관통하는 선

펄먼은 이 시리즈의 네트워크 자신의 회복력이라는 핵심 축입니다 – 다른 모든 것 밑에 깔린 배선이 스스로 치유되도록 만든 인물이지요. 레슬리 램포트는 노드가 임의로 행동하는 비잔틴 결함을 포함해 장애 속에서도 올바름을 유지하는 분산 시스템의 이론을 세웠고, 펄먼은 실제 네트워크에서 바로 그 일을 해내는 프로토콜을 만들었으며, 그의 비잔틴 견고함 논문은 램포트의 질문에 라우팅 계층에서 답한 것입니다.1 아디 샤미르는 시스템의 일부를 통제하는 공격자를 상대로 설계함으로써 시스템을 신뢰할 수 있게 만들었습니다 – 펄먼이 십 년 동안 자기만의 방향으로 라우팅에 가져온 것과 같은 적대적 본능입니다. 그리고 팀 버너스리는 모두를 위한 웹을 만들었지만, 웹이 모두에게 닿는 까닭은 오직 그 아래의 스위치·라우팅 네트워크가 장애를 뚫고 연결을 유지하기 때문입니다 – 다시 말해, 펄먼이 빚어낸 spanning tree와 링크 상태 라우팅 덕분입니다. 램포트가 올바름을 정의하고 그것이 장애를 견딘다는 것을 증명하라고 말하고 샤미르가 적을 상대로 설계하라고 말하는 곳에서, 펄먼은 이렇게 말합니다. 네트워크가 스스로 치유되도록 만들어라 – 사람의 개입 없이, 일부 노드가 거짓을 말할 때조차. (시리즈 교량)

내가 여기서 얻는 것

내가 펄먼에게서 계속 간직하는 교훈은 장애 상황을 가장 먼저 설계하라는 것입니다. 대부분의 빌더처럼 내 본능도 정상 경로를 먼저 쓰는 것입니다 – 성공하는 요청, 끊기지 않는 링크, 얌전히 동작하는 노드 – 그러고 나서 일단 돌아가면 오류 처리를 솔솔 뿌려 넣는 식이지요. spanning tree는 그에 대한 질책입니다. 장애는 설계에게 일어나는 무언가가 아니라, 설계가 존재하는 이유 그 자체입니다. 중복 링크와 죽어 가는 케이블은 땜질해야 할 예외 사례가 아니라, 프로토콜이 지금의 모습을 갖춘 전적인 이유이며, 정상 경로는 그 장애를 이미 견디는 시스템에서 그저 떨어져 나올 뿐입니다. 그래서 지금 내가 무언가를 만들 때 – 동기화 루프든, 재시도 경로든, 권한 경계든 – 나는 “무엇이 깨지며, 이것은 나 없이 어떻게 스스로 치유되는가?”에서 시작하려 합니다. 그것을 맨 마지막에 다다르는 대신에요. 복구를 위해 새벽 3시에 내가 깨어 있어야 하는 시스템은, 내가 설계를 마치지 못한 시스템입니다.

두 번째 교훈은 단순함이야말로 견고함을 신뢰할 수 있게 만든다는 것입니다. spanning tree의 우아함 – 시 한 편에 담길 만큼 작다는 것 – 을 매력적인 일화 정도로 다루고 싶은 유혹이 있습니다. 하지만 그것은 일화가 아니라 핵심입니다. 어떤 메커니즘이 수렴하는지 추론할 수 없다면 그것이 스스로 치유한다고 믿을 수 없고, 머릿속에 담을 수 없는 것을 추론할 수는 없습니다. 펄먼의 프로토콜이 견고한 것은 바로 그것들이 단순하기 때문이며, 그의 교과서가 오래가는 것은 사양이 아니라 를 가르치기 때문입니다. 이것은 내게 단순함을 있으면 좋은 것에서 올바름의 하중을 지탱하는 속성으로 다시 규정해 주었습니다. 설계가 충분히 복잡해져서 그것이 모든 장애로부터 복구된다고 더는 스스로를 납득시킬 수 없게 될 때, 그 복잡함은 정교함이 아닙니다 – 아직 내가 찾지 못한 버그입니다.

자주 묻는 질문

Spanning Tree Protocol이란 무엇인가요?

Spanning Tree Protocol(STP)은 1985년 Digital Equipment Corporation에서 라디아 펄먼이 발명하고 IEEE 802.1D로 표준화된 네트워크 프로토콜로, 중복 링크가 있는 브리지 또는 스위치 기반 이더넷 네트워크에서 루프를 방지합니다.23 이것이 없으면 중복 연결이 루프를 만들고, 이더넷 프레임에는 time-to-live가 없기 때문에 브로드캐스트가 루프를 영원히 맴돌며 증식해, 네트워크를 포화시키는 브로드캐스트 스톰으로 번집니다. STP는 이를 자동으로 해결합니다. 스위치들이 루트를 선출하고, 각 스위치는 루트로 향하는 최적 경로만 포워딩용으로 남기고 중복 링크를 차단해, 모든 세그먼트에 여전히 닿으면서도 루프가 없는 단 하나의 트리를 남깁니다. 활성 링크가 고장 나면 알고리즘이 새 트리를 다시 계산하고 차단되어 있던 예비 링크를 승격시켜, 사람의 개입 없이 연결을 치유합니다.2

라디아 펄먼은 왜 “인터넷의 어머니”라고 불리며, 왜 그 호칭을 싫어하나요?

펄먼이 흔히 “인터넷의 어머니”라고 불리는 까닭은, Spanning Tree Protocol과 그의 링크 상태 라우팅 작업이 현대 네트워크가 연결을 유지하는 방식의 토대이기 때문입니다.1 그는 수년 동안 이 꼬리표를 거부해 왔는데, 인터넷을 발명한 단 한 사람은 없으며 – 그것은 많은 사람과 많은 기술의 작업이었습니다 – 한 명의 발명가를 따로 떼어 부각하는 것은 부정확할 뿐 아니라 본질을 흐리는 일이라고 주장합니다.5 그는 또한 성별을 부각한 틀에도 반대하며, 한 사람의 성별이 그의 평생 작업을 바라보는 렌즈가 되어서는 안 된다고 봅니다.5

비잔틴 견고 라우팅이란 무엇인가요?

비잔틴 견고 라우팅(Byzantine-robust routing)은 일부 라우터가 단지 고장 난 것이 아니라 능동적으로 악의적인 경우에도 – 트래픽을 떨어뜨리고, 네트워크 토폴로지에 대해 거짓을 말하고, 라우팅 메시지를 위조하는 경우에도 – 패킷을 올바르게 계속 전달하도록 설계된 라우팅입니다. 이는 펄먼의 1988년 MIT 박사 학위 논문 “Network Layer Protocols with Byzantine Robustness”의 주제였습니다.1 그 차이는 중요합니다. 고장 난 노드는 조용하고 예측 가능한 반면, 비잔틴(장악당한) 노드는 임의로 그리고 적대적으로 행동하므로, 프로토콜은 그것을 깨뜨리려는 참여자가 있어도 올바른 전달에 도달해야 합니다. 악의적 장애를 나중의 보안 패치가 아니라 핵심 설계 사례로 다루는 것이 펄먼 작업을 관통하는 선입니다.1

TRILL이란 무엇이며, Spanning Tree Protocol을 어떻게 개선하나요?

TRILL(“Transparent Interconnection of Lots of Links”)은 펄먼이 STP의 후계자로 설계한 프로토콜입니다.6 STP는 중복 링크를 차단함으로써 루프를 방지하는데, 이는 대역폭을 낭비하고 트래픽을 루트를 거치는 긴 우회로로 강제할 수 있습니다. 반면 TRILL은 링크 상태 라우팅을 브리징에 적용합니다. RBridge라고 불리는 그 스위치들은 자기들끼리 IS-IS 프로토콜을 실행해 전체 토폴로지를 학습하고 최단 경로를 계산하므로, 링크를 비활성화하는 대신 “모든 활성 링크에 걸쳐 경로를 확립합니다” – 브리징의 플러그 앤 플레이 단순함을 유지하면서 라우팅의 경로 효율성과 회복력을 얻는 것입니다.6


출처


  1. “Radia Perlman,” Wikipedia. 1951년 12월 18일 버지니아주 포츠머스 출생. MIT에서 수학 학사(SB)와 석사(SM), 컴퓨터 과학 박사(1988) 취득. 박사 논문 제목은 “Network Layer Protocols with Byzantine Robustness”로, 악의적(비잔틴) 장애가 존재하는 상황에서도 올바름을 유지하는 라우팅을 다룸. 1970년대 초 MIT AI 연구소에서 매우 어린 아이들이 로봇 거북이를 프로그래밍할 수 있게 한 LOGO 기반 시스템 TORTIS(Toddler’s Own Recursive Turtle Interpreter System)를 개발. 경력: BBN을 거쳐 Digital Equipment Corporation(~1980년부터)에서 spanning tree 알고리즘을 발명하고 DECnet 및 IS-IS를 포함한 링크 상태 라우팅의 기초 작업을 수행. 이후 Novell, Sun Microsystems(Sun Fellow, 40+ 특허), Intel, Dell EMC. 100개가 넘는 등록 특허 보유. 네트워크 보안 기여로는 PKI 신뢰 모델과 임시/만료 데이터 메커니즘이 있음. Internet Hall of Fame(2014)과 National Inventors Hall of Fame(2016)에 헌액. ACM Fellow, IEEE Fellow, SIGCOMM 및 USENIX 평생 공로상 수상. “인터넷의 어머니”라는 별명을 거듭 거부해 옴. 

  2. “Spanning Tree Protocol,” Wikipedia. “최초의 Spanning Tree Protocol은 1985년 Digital Equipment Corporation에서 라디아 펄먼이 발명했다.” “STP의 기본 기능은 브리지 루프와 그로 인해 발생하는 브로드캐스트 복사를 방지하는 것이다.” 이 프로토콜은 루트 브리지(가장 낮은 브리지 ID = 우선순위 + MAC 주소)를 선출하고, 이후 모든 스위치가 루트로 향하는 최적 경로를 포워딩용으로 선택하며 다른 중복 링크를 차단해, 루프 없는 단일 활성 토폴로지를 만든다. 토폴로지 변화가 생기면 spanning tree 알고리즘이 새로운 최소 비용 트리를 계산하고 펼쳐 연결을 복구한다. IEEE는 펄먼의 알고리즘에 기반해 1990년에 최초 표준 IEEE 802.1D를 발표했다. 

  3. Radia Perlman, “An Algorithm for Distributed Computation of a Spanning Tree in an Extended LAN,” Proceedings of the Ninth Symposium on Data Communications (SIGCOMM ‘85), ACM, 1985, pp. 44-53 (DOI: 10.1145/319056.319004). Spanning Tree Protocol을 기술한 원 논문. 임의의 토폴로지를 가진 확장 LAN 내의 브리지들이 네트워크의 비순환(루프 없는) 신장 부분집합을 계산하는 분산 프로토콜이다. 이 논문은 시를 포함한 기록상 유일한 소프트웨어 특허일 가능성이 있다고 언급된다. 

  4. “Algorhyme,” Spanning Tree Protocol을 묘사한 라디아 펄먼의 시로, University of Washington CSE461 아카이브를 포함한 강의 자료에 수록되어 있으며 라디아 펄먼 Wikipedia 문서로 교차 확인됨. 전문: “I think that I shall never see / A graph more lovely than a tree. / A tree whose crucial property / Is loop-free connectivity. / A tree that must be sure to span / So packets can reach every LAN. / First, the root must be selected. / By ID, it is elected. / Least cost paths from root are traced. / In the tree, these paths are placed. / A mesh is made by folks like me, / Then bridges find a spanning tree.” 

  5. “Intel’s Radia Perlman: Don’t Call Her ‘Mother Of The Internet’,” SiliconValleyWatcher, 그리고 “Radia Perlman: Don’t Call Me The Mother Of The Internet,” Open Health News(The Atlantic의 2014년 인터뷰 인용), 라디아 펄먼 Wikipedia 문서로 교차 확인됨. 펄먼은 인터넷을 발명한 단 한 개인은 없으며 – 그것은 많은 사람과 많은 기술의 작업에서 비롯되었다 – 그 호칭의 성별 중심적 틀에 반대하며 “인터넷의 어머니”라는 꼬리표를 일관되게 거부해 왔다. 

  6. “TRILL (computing),” Wikipedia. TRILL(“Transparent Interconnection of Lots of Links”)은 라디아 펄먼(그 전신인 Spanning Tree Protocol의 발명자)이 이더넷 네트워크의 대역폭과 회복력을 최적화하기 위해 설계한 네트워킹 프로토콜이다. “링크 상태 라우팅을 VLAN 인식 고객 브리징 문제에 적용한 것”으로 기술된다. TRILL 스위치(RBridge)는 자기들끼리 IS-IS 링크 상태 라우팅 프로토콜을 실행해 토폴로지를 학습하고 최단 경로를 계산한다. 활성 포트를 차단해 루프 없는 토폴로지를 보장하는 STP와 달리, TRILL은 “모든 활성 링크에 걸쳐 경로를 확립”해 네트워크 용량을 더 효율적으로 사용할 수 있게 한다. 

  7. Radia Perlman, Interconnections: Bridges, Routers, Switches, and Internetworking Protocols (Addison-Wesley), 그리고 Charlie Kaufman, Radia Perlman, Mike Speciner, Network Security: Private Communication in a Public World (Prentice Hall), 라디아 펄먼 Wikipedia 문서에 기록됨. Interconnections는 브리징, 라우팅, 인터네트워킹 프로토콜에 관해 널리 사용되는 참고서이며, Network Security는 암호학과 네트워크 보안에 관한 표준 교과서다. 두 책 모두 사양만이 아니라 설계 선택의 근거를 설명하는 것으로 평가된다. 

관련 게시물

엔지니어링 철학: 베르너 보겔스(Werner Vogels)

Amazon의 CTO 베르너 보겔스는 하나의 전제 위에 클라우드를 세웠습니다. 모든 것은 항상 실패한다는 것. 장애를 전제로 설계하고, 폭발 반경을 최소화하며, 그 속에서도 가용성을 지킵니다.

16 분 소요

엔지니어링 철학: 레슬리 램포트, 코딩 전에 생각하라

레슬리 램포트는 분산 시스템을 과학으로 만들었습니다. 시간은 전역적이지 않고, 실재하는 것은 인과이며, 코드를 쓰기 전에 설계를 명세합니다.

12 분 소요

The Shader Gallery That Lied: Debugging 216 WebGL Presets

A user said the shader playground looked broken. Pixel-readback testing found 30 dead presets, 11 that never compiled, a…

11 분 소요