소규모 ISP를 위한 멀티호밍(Multihoming)


번역 : 임종균[hermes44@secsm.org]
서울대학교 컴퓨터공학과
(원본 :
http://routes.netaxs.com/multi.html)

 

 

작가의 노트:

freedman@netaxs.com으로 ‘멀티호밍 FAQ 해설’(Multihoming FAQ Comments)에 적합한 주제에 대한 평을 보내 주세요. inet-access@earth.com으로 ‘멀티호밍 질문’(Multihoming Question) 포함될 질문을 보내 주세요. inet-access에 가입하지 않으셨다면, inet-access-request@earth.com으로 ‘subscribe’라는 제목으로 이메일(e-mail)을 보내 주세요. 그렇지 않다면 제 답변을 받으실 수 없습니다.


멀티호밍이란 무엇인가?

당신이 두 개의 “업스트림 제공자(upstream provider)”를 가지고 있다면, 멀티호밍을 하고 있는 것이다. 제공자는 백업 서비스를 교환하는 다른 ISP가 될 수도 있다; MCI, Sprint, UUNet 또는 Agis/Net99과 (PSI와 ANS는 소매업자에게 팔지는 않는다) 같은 큰 백본(backbone); 지역 단위의 백본 제공자; 또는 다른 지역(local) ISP들


왜 멀티호밍을 해야 하는가?

어떤 제공자도 어떤 순간 큰 문제를 겪을 수 있기 때문이다. 여기서 이름을 언급하지는 않겠지만 오늘의 최고의 제공자가 내일의 최악의 제공자가 될 수가 있다.

그래서 여분을 두는 가장 좋은 방법이 멀티홈(두 개의 다른 제공자와 연결)이다. 현재, 이 FAQ는 단지 “완전(full) 멀티-호밍” - 비상 사태에 사용될 수 있는 백업 준비가 아니라, 연결선이나 제공자 중의 하나가 문제가 생겼을 때 즉시 완전히 동작할 수 있는 경우 - 을 다루고 있다.


제공자의 역할은 무엇인가?

이는 명백해 보이지만, 제공자가 당신을 위해 해야 하도록 되어 있는 두 가지 일이 있다: (1)인터넷(internet)에서 당신의 네트웍(network)으로 데이터를 가져오는 것과 (2)당신의 네트웍에서 인터넷으로 데이터를 가져가는 것이다.


#1에 대해서: 제공자가 데이터를 가져오기

제공자들은 서로 경로를 교환한다. 경로는 IP 주소 공간의 부분에 대한 설명과 그 IP 주소 공간 에 대한 “데이터를 받아들이겠다는 약속”이다.

어떻게 네트웍의 어떤 지역의 사람이 당신에게 데이터를 보낼까? 그들은 그들의 제공자에게 패킷(packet)을 보낸다. 당신이 그들과 다른 제공자를 사용하고 있다면, 그들의 제공자는 당신의 제공자에게 패킷을 보낸다. 이 과정은 그 두 제공자 사이에서 이루어진 “경로 공지(announcement)”에 기초 한다.

그래서 나가는(outgoing) 경로 공지는 데이터를 당신의 네트웍으로 인도한다.

제공자가 당신의 경로를 내부 경로 테이블과 외부 경로 공지 테이블에 넣거나, 당신이 경로를 제공자에게 공지하고 그 후 그 경로들이 내부와 외부 경로 공지 테이블에 들어간다. 물론, 만약 제공자로부터 당신의 IP 주소 공간을 얻을 수 있다면, 당신의 하위 경로를 인터넷에 공지하지 않아도 된다.


#2에 대해서: 인터넷에 데이터 보내기

내부 네트웍이 아닌 외부 네트웍으로 보내야 하는 패킷을 하나 만들었다. 어디로 보내야 하는가? 제공자 중의 하나로 보내야 한다. 어떻게 그 결정을 하는가? 당신의 “경계 라우터(border router)”에는 한 경로가 있다.

기본(default) 경로: 만약 기본 경로가 있다면 (또는 0.0.0.0 경로로 쓰여진다), 제공자와 관계가 없는 모든 데이터를 보낸다. 기능성 멀티-호밍을 할 때도, 여전히 이렇게 하려 할 지도 모른다.

제공자에게서 경로 가져오기: 만약 하나의 제공자가 있다면, 모든 인터넷 주소(95/12/15에 약 32,000개)를 가져올 수 있다. 이 글은 16mb Cisco 2500 계열 라우터에 맞춰져 있다. 만약 단지 하나의 제공자만 있다면 어떻게 하겠는가? 그것은 그 제공자를 기본 제공자로 설정한 것과 같은 효과를 준다.


간단한 설명 1: 만약 단일(single)-호밍의 경우?

일반적인 설정:
제공자는 네트웍에 대한 모든 경로를 정적으로(statically) 추가한다. 이는 만약 당신에게 즉시 다시 번호를 매길지를 확신할 수 없는 “C등급의 유산”을 가진 고객이 있다면, 제공자에게 당신에 대한 경로를 추가해 달라고 요청해야 한다는 것을 의미한다.

제공자에 기본 경로를 설정한다.

int e0 ip add [local_ip_adx] [local_ip_mask]
int s0 ip add [local_t1_adx] 255.255.255.252
ip route 0.0.0.0 s0

노트: 대개 마스크는 255.255.255.252이다.
이는 IP 주소 공간을 보존하기(conserve) 위한 것이다.

약간 더 바람직한 설정:
당신의 경로를 제공자에게 공지하기 위해서 BGP를 이용한다. 이 방법으로 당신은 NOC나 당신 대신 해주는 “경로 부서”에 연락하지 않고도 경로를 추가할 수 있다. 만약 계속적으로(또는 언제나, 때때로) 요청하면, 당신의 경로 공지에 필터 목록을 놓거나 또는 정적 경로로 바꿔 줄 것을 기대할 수도 있다. (노트: 우리는 BGP 고객들이 우리에게 공지할 수 있는 경로에 대한 목록을 만들었다. 이는 그들이 우리에게 잘못된 경로를 주는 것을 방지하기 위해...)

제공자에 기본 경로를 설정한다.

int e0
ip add [local_ip_adx] [local_ip_mask]
int s0
ip add [local_t1_adx] 255.255.255.252
router bgp [your-asn]
network [net1]
network [net2] mask 255.255.254.0
network [net3] mask 255.255.252.0
neighbor [remote_t1_adx] remote-as [provider-as]
ip route 0.0.0.0 s0
ip route [net1] dest1
ip route [net2] 255.255.254.0 dest2
ip route [net3] 255.255.252.0 dest3

노트: 이 방법은 엉뚱한 경로가 끼여들 수 없는 것을 보장한다. 그러나 그것은 단 하나의 제공자를 가지고 있을 경우에만 일 것이다.

BGP 노트:

만약 제공자가 하나만 있다해도, 큰 걱정을 할 것은 없다. 만약 제공자가 여러 개 있다면, 잘못된 경로(또는 모든 네트웍에 대한 경로)를 공지하지 않도록 주의를 해야만 한다. 제공자들을 대개 외부의 경로로 보이는 경로 상의 고객 경로를 신뢰하도록 설정이 되어 있다. 그래서 만약 MCI 경로를 UUNET으로 공지하면, UUNET은 MCI에서 MCI로 보내는 지역 데이터 모두를 MCI T1로 보낼 것이다!!! 만약 이중(dual)-호밍을 사용하지 않는다면 걱정할 필요는 없다.


간단한 설명 2: 만약 이중(dual)-호밍의 경우?

들어오는 데이터 (나가는 경로 공지)

일반적인 설정:
경로를 공지하기 위해 제공자 둘 다에게 BGP를 이용하여 알린다.
무슨 동작을 하는가:
제공자에게 BGP를 이용해야만 하는 이유는 전혀 없다. 제공자들은 정적으로 당신의 경로를 추가할 수 있지만, 기본 가정은 다음과 같은 이유로 당신이 BGP를 이용하기를 원할 것이다:
(1)더 지능적인 경로 설정에 대한 결정을 하기 위해 제공자로부터의 완전한 경로를 가져올 수 있기를 원하거나/원하고
(2)대인 관계없이 경로를 추가할 수 있기를 원 한다.
나가는 데이터 (들어오는 경로 공지와/또는 기본 경로)
방법1: 기본 경로만: 같은 가중치

제공자에 대한 많은 인터페이스(interface)를 사용하거나 당신의 “직렬 단말”(serial end)에서 같은 지역 IP를 사용할 경우. 이 때, 두 제공자는 당신의 단말에 있는 같은 라우터(router)상에 있다는 것을 가정한다. 같은 가중치로 두 라우터에 기본값을 설정하기만 하면 된다. 두 직렬 회선에 ‘ip route-cache’를 설정한다.

이는 당신이 하나 또는 두 제공자에 대해 BGP를 이용하면서도 가능하지만, 만약 BGP를 이용하고 있다면 아마도 “고객 경로”(customer route)를 가져오기를 원할 것이다. (방법3을 보아라.)

물론, 나가는 경로 공지에 대해서 BGP를 이용하기를 원한다면, 모든 들어오는(incoming) 경로를 걸러 내면 이 방법으로 1MB Cisco 2501에서 조차도 멀티-호밍을 할 수 있다는 것을 알 수 있을 것이다.

▲ top

방법2: 기본 경로만: 하나는 백업

각 제공자에 대해서 하나씩, 두 개의 기본 경로를 가지고 있다. 그러나 하나는 더 낮은 가중치를 가지고 있어서 주 제공자에 대한 연결이 끊어졌을 경우에만 동작을 한다. (노트: Cisco에서는 경로(기본 경로도 포함하여)는 연결된 인터페이스가 문제가 있는 경우에 사라진다.)

이는 한 제공자가 성능이 좋지 않고 보조 접속이 큰 대역폭(bandwidth)을 필요로 하지 않을 때, 효과가 있을 것이다.

방법3: 각 제공자로부터 “고객 경로” 가져오기

두 제공자에 대해 BGP를 이용한다. 제공자 X로부터 그리고 제공자 Y로부터 모든 제공자 X의 고객 경로를 가져온다. 그 후, 같은 가중치로 두 제공자에 기본 경로를 설정하거나, 하나에는 기본 경로를 다른 하나에는 백업 기본 경로를 설정하면 된다. 이는 16MB 2501에서 확실히 동작할 것이다.

방법4: 각 제공자로부터 “완전 경로” 가져오기

두 제공자에 대해 BGP를 이용한다. 각 제공자에서 모든 것에 대한 경로를 모두 가져온다. 이는 16MB 2501에 맞을 것 같지만, 아마도 동작하지 않을 것이다. Morningstar/gated나 PC/gated로서 32MB 4000이나 4500이 좋을 것이다. 이 설정을 이용하여, 기본 경로 없이 운영할 수 있다 - 기본 경로가 없이, 네트웍의 모든 접속 사이트(site)에 대한 완전한 경로를 가지고 있기 때문에. 그러나 만약 하나 또는 두 제공자가 꼬이게 되어 완전한 경로를 제공할 수 없다면, 기본 경로가 없기 때문에 접속을 할 수 없을 것이기 때문에, 이런 방법으로 할 필요는 없다. 완전 경로를 가져오면서 기본 경로를 설정하는 것은 아무런 문제가 없다.

방법5: 창조적인 경로-균형 방법 balancing

이는 방법3과 방법4의 중간 정도의 방법이다. 두 제공자에 대해 BGP를 이용한다. 각 제공자에게 “고객 경로”를 가져온다. 그 후, 인터넷을 키 운송(key transit) 제공자의 AS로 나눈다:
·MCI (AS3561)
·Sprint (AS1239)
·ANS (AS690)
·UUNET (AS701)
·PSI (AS174)
·Net99 (AS3830)
·AGIS (AS4200)

이 숫자들은 당신의 것과 다를 지도 모른다! 맞는 지는 당신의 경로 테이블을 확인해 보아야만 한다. (ftp.uu.net, ftp.psi.com, ftp.sprintlink.net 등에 대한 AS-경로를 본다.)

그 후, 단지 제공자A에서 MCI 경로의 것을, 제공자B에서 Sprint 경로의 데이터를 받기를 결정한다. 또는 당신이 원하는 바대로. 어떤 제공자로 부터 어떤 경로의 데이터를 받을 지에 대한 균형을 잡는 것은 평균 이용률의 균형을 유지하는 것이다. 두 제공자에 기본 경로를 같은 가중치로 또는 하나는 주, 하나는 보조로 추가하라.


terry@spcvxb.spc.edu Terry Kennedy, Operations Mgr. at St. Peter’s College, US

In article <1995Dec18.164944.1@hujicc>, yehavi@vms.huji.ac.il (Yehavi Bourvine (58-4279)) writes:

· 하나의 ISP는 곧 NAP에 직접 연결된 두 ISP에 대한 이중-호밍이 될 것이다.
· 질문은 어떤 라우터를 이용해야 하는 것인가 이다: 32MB의 4500또는 64MB의 7010. 내 주요 관심사는 경로 테이블(완전 BGP 테이블)과 그에 사용될 메모리 양이다.
· 테이블의 앞으로의 크기를 예상할 때, 4500은 충분한 여유 메모리를 가지고 있는 것인가? 또는 안전하게 64MB의 7010을 선택해야 하는가? 7000과 7500은 당연히 가격 문제도 있다.
이 질문에 대해서는 의도와는 좀 다른 답이 있다. 난 CIX 라우터로부터 받아 낸 숫자들을 포스팅했었고, 사람들은 내게 “CIX 라우터는 많은 경로를 걸러 내서 완전 경로를 이용하는데 문제가 있을 것이다.”라고 말했다.

하지만, 난 어쨌든지 그것을 해냈다. 난 주 메모리 32MB와 입출력 메모리 16MB의 4500을 사용하고 있다. 그것은 Sprint와 Alternet에 이중 연결을 하고 있고 완전 경로를 유지하고 있다. 다음은 sh ip bgp sum과 sh mem의 결과이다.

 

router>sh ip bgp sum
BGP table version is 2436598, main routing table version 2436598
32175 network entries (61909/64360 paths) using 5679608 bytes of memory
3550 BGP path attribute entries using 413828 bytes of memory
0 BGP route-map cache entries using 0 bytes fo memory
5246 BGP filter-list cache entries using 83936 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State
xxx.xxx.xxx.xxx 4 701 432288 20337 2436532 0 0 2d13
xxx.xxx.xxx.xxx 4 1239 411988 20314 2436532 0 0 1w6d
xxx.xxx.xxx.xxx 4 xxxx 19984 19978 2436532 0 0 3d04
xxx.xxx.xxx.xxx 4 xxxx 20222 19979 2436532 0 0 4d23
xxx.xxx.xxx.xxx 4 xxxx 19512 19881 2436532 0 0 2d17


router>sh mem
Head FreeList Total(b) Used(b) Free(b) Largest(b)
Processor60508B40 604ACA78 28275904 15935728 12370176 11647024
I/O400 00000 604AD78C 16777216 1842080 14935136 14877616

Terry Kennedy Operations Manager, Academic Computing
terry@spcvxa.spc.edu St. Peter's College, Jersey City, NJ USA
+1 201 915 9381 (voice) +1 201 435-3662 (FAX)


[용어 해설]


백본(Backbone):
기업 전산망의 근간이 되는 네트웍를 연결시켜 주는 고속 통신망. 계층적 네트웍의 최상위 레벨로 중계 네트웍은 내부 접속을 보증받고 있다.
http://www.shinbiro.com/~sarancha/b/backbone.htm

패킷(packet):
package와 bucket의 합성어로 소포 또는 소화물이란 뜻으로서 데이터를 일정한 길이(1024비트=영문자128자)로 분할하여 하나의 덩어리로 만들어 교환, 전송하는 단위
http://www.shinbiro.com/@educa/web_edu_book/d3.html

대역폭(Bandwidth):
한 번의 접속으로 정보 전송이 가능한 양. Bandwidth의 기본 단위는 보통 bits-per-second (bps) 이다. 한 페이지 (영문)는 16,000정도 이다. 빠른 모뎀은 15,000bps가 가능하다. Full-motion, Full-screen Video의 경우 최소한 10,000,000bps가 필요하다.
http://www.shinbiro.com/@educa/web_edu_book/d.html#B

제공자(Provider):
ISP가 고객들에게 정보를 제공하는 데 사용되는 서버 기계.

BGP:
경계 게이트웨어 프로토콜(Border Gateway Protocol). 사람들이 보통 말하는 - “Cisco 2501은 BGP를 지원할 수 있어?” - 가장 많이 사용되는 “BGP”는 사실 BGP4이다. 옛 RIP 프로토콜이 RIPv2와 다른 것과 같이 BGP4는 BGP3와 다르다. BGP4와 RIPv2는 클래스 없는 경로에 - “클래스A”, “클래스B” 또는 “클래스C”에도 포함되지 않는 경로 - 대한 공지를 가능하게 한다. 그러나 대신에 “하위네트웍”(subnet)이나 “상위네트웍”(supernet)이 될 수도 있다.
http://www.netaxs.com/~freedman/bgp.html

 

▲ top

 

home으로...