[인터넷에서의 AS 내부 라우팅: OSPF]
⤷링크 상태 프로토콜의 한 예이다.
⤷라우팅 프로토콜의 특징은 모든 라우터들이 네트워크 연결로를 다 알고 있고 링크 비비용을 다 알고 있다. 모든 라우팅 정보를 공유.
⤷같은 도메인 내에서는 OSPF가 사용된다.
-> 개방형 최단 경로 우선 프로토콜
(Open Shortest Path First, OSPF)
<확장 가능한 라우팅 만들기>
⤷DV나 LS알고리즘은 이론적으로 이상적인 상황에 대한 것이다.
- 모든 라우터는 동일하다는 가정.
- 네트워크가 계층적이지 않다는 가정.
⤷이것은 현실적이지는 않다.
이렇게 간주하는 관점은 다음의 두 가지 중요한 이유 때문에 단순하다고 할 수 있다.
1. 확장
: 오늘날 인터넷은 수억 개의 라우터로 구성되므로, 이들 라우터 각각에 모든 가능한 목적지로의 라우팅 정보를 저장하기 위해서는 막대한 양의 메모리가 필요하다. 라우팅 테이블 교환은 링크를 넘쳐나게 할 것이다.(오버헤드)
2. 관리 자치
: 인터넷은 ISP들의 네트워크이고 각 ISP들은 자신의 라우터들로 구성된 네트워크이다. 이상적으로 하나의 조직은 자신의 네트워크를 외부 네트워크에 연결하면서도 자신이 원하는 대로 네트워크를 운영하고 관리할 수 있어야 한다.
<확장 가능한 라우팅에 대한 인터넷 접근 방식>
⤷확장, 관리 자치 이 두 가지 문제를
자율 시스템(Autonomous system, AS)으로 조직화하여 해결할 수 있다.
⤷도메인 개념이다!
⤷강원대 최미정교수한테 가는건데 외부에서는 그냥 강원대라고 보면 된다. 그거를 최미정교수님한테 보내는 거를 강원대 내의 라우터가 담당한다. 이걸 통합한다는 의미이다.
⤷네트워크에서도 도메인이라고하는 한 단위를 AS라고 부르는 것이다.
⤷강원대라는 도메인 내 AS에서도 동작하는 라우팅 프로토콜을 “(내부)intra AS 라우팅”이라고 부른다.
<intra-AS routing> 359p
⤷동일한 AS (네트워크)의 호스트, 라우터 간 라우팅
⤷AS의 모든 라우터는 동일한 도메인 내 프로토콜을 실행해야 한다.
⤷서로 다른 AS의 라우터는 서로 다른 도메인 내 라우팅 크로토콜을 실행할 수 있다.
⤷게이트웨이 라우터: 자체 AS의 에지에 다른 AS의 라우터에 대한 링크가 있다.
⤷AS와 AS를 연결하는 에지안에 있는 라우터들을 게이트웨이 라우터라고 한다.
⤷게이트웨이 라우터는 내부(intra) 라우팅도 알아야하고 외부(inter) 라우팅도 알아야 한다.
<inter-AS routing>
⤷AS간의 라우팅
⤷게이트웨이는 도메인 간 라우팅( 및 도메인 내 라우팅)을 수행한다. (내부와 외부 모두 수행)
[AS들의 상호연결]
⤷3개의 AS.
⤷1a~3b : 게이트웨이 라우터
(내부하고도 연결되고 다른 AS하 고도 연결됨)
(내부(intra), 외부(inter) 라우팅 알고리즘을 다 알고있는 포워딩 테이블이 필요하다.)
⤷내부 및 AS 간 라우팅 알고리즘으로 구성된 포워딩 테이블이 필요하다.
⤷AS 내 라우팅은 AS 내 대상 항목을 결정한다.
⤷inter-AS 및 intra-AS는 외부 대상에 대한 항목을 결정한다.
⤷에지에 있는 1c나 1b와 같은 애들은 특히 외부 내부 정보를 다 알고 있어야 한다.
<Inter-AS의 동작>
⤷intra AS는 같은 도메인을 쓰는 자율 시스템 내에서의 라우팅 프로토콜이다.
⤷inter AS는 서로 다른 자율시스템들을 어떻게 연결할 것인지에 대한 라우팅 프로토콜이다.
=> AS1의 라우터가 AS1 외부로 향하는 데이터 그램을 수신한다고 가정.
⤷ 라우터는 패킷을 어떤 게이트웨이 라우터로 전달해야 하는가?
⤷AS1은 다음을 충족해야 한다.
(AS간 라우팅 작업)
1. AS2를 통해 목적지에 도착하는지, 아니면 AS3을 통해 목적지에 도착하는지.
2. AS1이 어디로 가면 되는지 알게 되었음. 이 연결성 정보를 AS1의 (내부) 모든 라우터에 전파한다.
⤷외부하고 연결하는 라우팅 프로토콜이 해야 할 일은 내가 어떤 목적지 라우터에 도착하기 위해서는 어떤 AS를 거쳐가는게 좋은지를 알아야한다.
⤷그걸 결정했으면 내부에 있는 라우터들에게 여기로 결정했다고 방향을 다 알려주는 것이다.
inter AS는 외부와 연결하기 위한 AS간의 연결, 그 정보를 내부에 전달하는 것까지 역할을 포함한다.
<Intra-AS 라우팅>
⤷AS내부에서의 라우팅 프로토콜
⤷interior gateway protocols (IGP)
내부 게이트웨이 프로토콜이라고 함.
⤷가장 일반적인 내부 AS 라우팅 프로토콜
- RIP : routing information protocol
- OSPF : 개방형 최단 경로 우선
- IGRP: 내부 게이트웨이 라우팅 프로토콜
(외부에 공개하지 않고 독자적 사용)
(Cisco제품에 사용)
⤷OSPF <-> IGRP
[OSPF, open shortest path first]
⤷개방형 최단 경로 우선 프로토콜
⤷링크 상태(link state) 알고리즘을 사용.
⤷각 노드에 연결을 다 알아야 하고 그 연결의 링크 비용(cost)를 알아야 한다.
⤷모든 목적지에 도착하기 위한 가장 짧은 길
⤷open이니까 이 표준 프로토콜을 공개했다는 뜻.
⤷하나의 자율 시스템(AS)내에서 라우팅 테이블을 만들기 위해서 사용하는 프로토콜이다.
⤷OSPF는 링크 상태 정보를 플러딩하고 다익스트라 최소 비용 경로 알고리즘을 사용하는 링크 상태 알고리즘이다.
⤷라우터는 전체 AS의 다른 모든 라우터에 OSPF 링크 상태 알림을 알린다.
⤷이때 OSPF 메시지는 TCP나 UDP를 쓰지 않고 그냥 IP로 전달된다. 모든 애들한테 다보낸다.
⤷IS-IS routing 프로토콜: OSPF와 거의 동일하다.
[OSPF에 구현된 개선 사항들] 360p
보안 : OSPF 라우터들 간의 정보 교환이 인증될 수 있다. 인증을 통해 신뢰할 수 있는 라우터들만이 AS 내부의 OSPF 프로토콜에 참여할 수 있고, 악의적인 침입자가 잘못된 정보를 라우터 테이블에 삽입하는 것을 막게 된다. 즉, 단순 인증 또는 MD5를 사용할 수 있다. 기본적으로 OSPF는 악의적인 침입을 방지해서 잘못된 라우팅 테이블을 추가하는 걸 방지하기 위해 인증 매커니즘을 쓴다.
복수 동일 비용 경로 : 하나의 목적지에 대해 동일한 비용을 가진 여러 개의 경로가 존재할 때 OSPF는 여러 개의 경로를 사용할 수 있도록 한다. (하지만 RIP는 경로를 딱하나만 선택하도록 함)
⤷각 링크에 대해 서로 다른 TOS(type of service)에 대해 비용의 값을 다르게 할 수 있다. (최선의 ToS에 대해 낮은 위성 링크 비용 설정, 실시간 ToS에 대해 높은 설정)
같은 링크더라도 다른 서비스별로 링크 cost를 다르게 매길 수 있다.
유니캐스트와 멀티캐스트 라우팅의 통합지원: 유니캐스트(일대일),멀티캐스트(다대일)
멀티캐스트 OSPF = MOSPF
멀티캐스트 라우팅 기능을 제공하기 위해 OSPF를 단순 확장하였다.
MOSPF는 기존의 OSPF 링크 데이터베 이스를 사용하고 OSPF 링크 상태 브로 드캐스트 매커니즘에 새로운 형태의 링크 상태 알림을 추가한다.
단일 AS 내에서의 계층 지원 : OSPF의 자율 시스템(AS)은 계층적인 영역으로 구성될 수 있다. 각 영역은 자신의 OSPF 링크 상태 라우팅 알고리즘을 수행하는데, 한 영역 내의 라우터는 같은 영역 내의 라우터들에게만 링크 상태를 브로드캐스팅 한다.
⤷회사나 대학이나 이런 대규모의 도메인은 계층적인 구조를 써서 OSPF를 사용한다.
(오버헤드를 줄이기 위함) 프리픽스를 보고 계층적으로 나눠준다.
[계층적 OSPF]
⤷boundary router : 가장 경계에 있는 끝 라우터 (ex. 강원대로 들어오는 외부하고 연결해주는 라우터)
⤷backbone router: 경계 라우터와 area 네트워크를 연결한 라우터들.
⤷area border router: area 끝에 있는 라우터.
⤷backbone: 파란색 부분
⤷internal routers: 내부에 있는 라우터
⤷OSPF는 내부에서 동작하면 된다.
⤷전체가 다 OSPF이면서도 그 사이에 계층적인 구조가 있으면 area1에 있는 그 주소만 가지고 라우팅 테이블을 가지고 있으면 된다. 라우팅하기 훨씬 편함.
<2단계 계층>
local area, backbone
⤷백본 영역의 주요 역할은 AS 내 영역간의 트래픽을 라우팅 하는 것이다.
⤷각 노드에는 세부 영역 토폴로지가 있다.
백본 라우터 누구 거쳐서 area2로 가면 된다. 이거만 알고 있으면 된다. area2 내부가 어떻게 연결되어 있는지 area1에 있는 애들은 알 필요가 없다. 훨씬 각각에 대한 걸 몰라도 되니까 라우팅 테이블의 엔트리가 줄어든다.
<area border routers>
⤷하나의 area에서 또 다른 area border router로 가는 거리를 요약. 내가 area2로 가기 위해서는 어떤 백본 라우터를 거쳐서 가면 되는지 shortest path를 알고 있으면 된다.
<backbone routers>
⤷백본에서 동작하는 OSPF 라우팅이다.
⤷백본 라우터에서 동작하는 OSPF는 백본 네트워크에서만 동작하도록 한정된다.
⤷boundary router 입장에서는 area1로 가기 위해서 백본 라우터 1을 주면 돼 이런식으로 여기까지만 알고 있으면 되고 그리고 area border router한테 주면 그 다음부터는 백본입장에서는 area1은 몇 번으로 나가면 되고 그래서 area border router 정보만 알고 있으면 되고 area border router가 각각의 자기 내부에 있는 호스트라던지 라우터에 대한 것을 처리를 한다.
⤷사장은 전무들하고만 연락
전무가 이사들하고만 연락
이사는 부장들한테 연락
부장은 각 팀원들에게 연락 이런식이다.
⤷이렇게 계층적인 구조이다.
<boundary routers>
⤷외부에 있는 다른 AS들과 연결하는 것의 책임이 크다.
⤷BGP 프로토콜이 필요하고 나하고 연결된 백본 라우터들과 필요한 OSPF 같은 것들도 쓸 수 있다.
=> OSPF는 intra-AS 라우팅 프로토콜이다.
하나의 도메인이라고 불리는 자율 시스템 내에서 라우팅 정보를 주고받는 프로토콜이다.
링크 상태 알고리즘(Dijkstra)을 사용해서 모든 네트워크 토폴로지와 링크 cost를 기반으로 가장 짧은 shortest path를 계산하는 알고리즘이다. 라우터들도 계층을 둬서 오버헤드를 줄인다.
[인터넷 AS 간 라우팅: BGP]
⤷Border Gateway Protocol
⤷AS와 AS 간에 (서로 다른 자율 시스템들 간에) 외부로 라우팅을 하기 위한 프로토콜 표준인 BGP 프로토콜.
⤷이것도 역시 산업체에서 구현이 되고 그렇게 표준이 된 형태이다.
⤷사실상 도메인 간 라우팅 프로토콜
⤷인터넷이 서로 붙을 수 있도록 연결하는 역할을 한다. AS들끼리 서로 붙어서 정보를 교환할 수 있고 길을 찾을 수 있는 역할을 하는게 BGP이다.
->BGP가 각 AS에게 제공하는 수단 :
- eBGP : 서로 이웃해있는 자율 시스템 간 에 도달 가능한 서브넷의 정보를 얻는다. 내가 누구랑 연결되어 있 는지에 대한 정보를 교환. (외부)
- iBGP : 모든 AS 내부 라우터에 도달
가능성 정보를 전파한다. (내부)
=>연결성 정보 및 정책을 기반으로 다른 네트워크에 대한 좋은 경로 설정.
⤷도달하고자 하는 목적지까지 도달하기 위한 좋은 길을 찾는다.
⤷서로 다른 외부 AS들 간의 도달 정보와 그 정보를 기반으로 내부 AS 라우터들에게 도달 정보를 전파하는 역할, 각 AS간에 정책을 가지고 좋은 길을 결정해서 알려주는 것이 BGP의 역할이다.
<BGP의 역할>
1. 이웃 AS로부터 도달 가능한 서브넷 접두부 정보를 얻는다.
⤷특히 BGP는 각 서브넷이 자신의 존재를 인터넷 전체에 알릴 수 있도록 한다. 어떤 서브넷이 나 여기있어! 라고 외치면 BGP는 인터넷의 모든 라우터들이 이 서브넷에 대해 알 수 있도록 만든다.
2. 서브넷 주소 접두부로의 가장 좋은 경로를 설정한다.
⤷원 표시되어 있는게 eBGP.
⤷AS1은 AS3을 가기 위해 AS2를 거쳐서 간다라는 정보를 AS1 내부에 있는 1a,1b,1d에게 알려줘야 한다.
⤷1C = gateway router (=border router)
는 eBGP와 iBGP 두 개다 동시에 동작하고 수행된다.
<BGP>
(세션)
⤷’peer’라고 불리는 2개의 BGP 라우터가 반영구적 TCP 연결을 통해 BGP 메시지를 교환한다.
⤷BGP는 TCP 연결 위에서 도는 라우팅 프로토콜이니까 BGP는 어플리케이션 계층 프로토콜이라고 봐도 된다.
⤷즉, TCP 연결을 맺고 그 길로 BGP메시지들이 왔다 갔다한다는 뜻이다.
⤷프리픽스: 도메인에서 앞 주소. /의 앞.
⤷서로 다른 목적지를 갖는 경로들에 대해 알린다. 그래서 BGP는 “path vector” 프로토콜이다.
⤷목적지 X로 가고자 한다.
⤷AS3가 AS2에게 BGP 메시지를 보내 X가 존재하고 AS3 내에 있음을 알린다.
⤷이 메시지를 ‘AS3 X’라고 하자.
⤷AS2는 AS1에게 BGP 메시지를 보내서 X가 존재하고 X에 도달하기 위해서는 먼저 AS2를 통과하고 그 후 AS3로 갈 수 있다고 알린다.
⤷이 메시지를 ‘AS2 AS3 X’라고 하자.
⤷이런 방식으로 자율 시스템 각각은 X의 존재뿐 아니라 X에 이르기 위한 자율 시스템의 경로를 알게 된다.
⤷AS3는 AS2에 데이터 그램을 X로 전달할 것이라고 약속한다. 나(AS3)한테 주면 내가 X한테 전달할게! 하는 거다.
<경로 속성 및 BGP 경로>
⤷알려진 프리픽스에 BGP 속성이 포함된다.
프리픽스 + 속성 = 경로
⤷도메인에서 앞부분 똑같은 거
i) AS1 -> AS2 -> AS3
⤷이렇게 갈 때는 NEXT-HOP이 2a
⤷이렇게 갈 때는
AS-PATH가 ‘AS2 AS3’
ii) 1d -> 3d
⤷이렇게 갈 때는 NEXT-HOP이 3d
⤷이렇게 갈 때는 AS-PATH가 ‘AS3’
=> 중요한 속성 2가지 365p
AS-PATH 속성
⤷알림 메시지가 통과하는 AS들의 리스트를 담는다. AS-PATH 값을 생성하기 위해서 프리픽스(접두부)가 어떤 AS에 전달되었을 때 그 AS는 자신의 ASN을 AS-PATH 내 현재 리스트에 추가한다.
⤷어떤 라우터가 자신의 AS가 경로 리스트에 포함되어 있는 것을 발견하면 그 알림 메시지를 버린다.
NEXT-HOP 속성
⤷AS 간 프로토콜과 AS 내부 라우팅 프로토콜 사이에 매우 중요한 연결을 제공한다. NEXT-HOP은 AS-PATH를 시작하는 라우터 인터페이스의 IP이다. (경계에 있는 라우터의 주소)
이렇게 프리픽스와 이 속성들을 합해야 길을 찾는데 중요한 정보들이 된다.
<정책 기반의 라우팅>
⤷게이트웨이가 경로 정보를 받았는데 이 길을 수용을 할 것인지 거절할 것인지의 중요한 정책을 사용한다.
ex) 절대 Y는 거쳐서 가지 않는다.
⤷AS의 정책에서는 Y를 거쳐서 가지 않으면 Y가 포함된 길에 대해서는 알리지 않는다.
⤷내 이웃에 있는 다른 AS에게 이 경로를 알릴거냐 말거냐도 정책에 의해서 결정한다.
<BGP 경로 알림> (예시1)
⤷gateway router: 1c,2a,2c,3a
(얘네 사이에서 eBGP 사용)
⤷내부에서 iBGP 사용.
⤷X가 나한테 있다고 AS2에게 알림.(eBGP)
(=너가 나한테 X에 대한 패킷을 주면 X까지 도달하도록 약속할게)
⤷AS2 정책에 의해서 이걸 쓸건지 말건지, 신뢰할건지 말건지를 내부적인 정책에 의해 결정한다. path AS3 x를 받아들인다.
iBGP를 써서 AS2에 있는 다른 라우터들에게 전달해서 알려준다.
⤷또 AS2 정책으로 알릴 건지 말건지 결정하고 2a가 eBGP를 통해서 1c 라우터에게 X를 가려면 AS2를 거치고 AS3를 거치면 X에 갈 수 있다고 경로 정보를 알린다.
(예시2)
⤷게이트웨이 라우터가 길이 여러 개인 경우
(다중 경로)
⤷방법1. 1c는 AS2로 가서(2a) AS3로 간다.
⤷방법2. 1c에서 3a로 바로 간다.
⤷정책에 의해서 AS1에 있는 1c라우터는 기본적으로 짧은 게 좋다. 거쳐가는 AS가 적은게 좋다. 1c는 방법2를 통해 간다고 예상할 수 있다. 그리고 AS1의 나머지 라우터 들에게 iBGP를 통해서 경로 정보를 알린다.
<BGP 메시지 종류>
⤷BGP 메시지는 먼저 TCP 연결을 하고 그 위에서 전송된다.
OPEN : 게이트웨이 라우터들 사이에 먼저 TCP 연결을 하고 BGP 피어들 간에 서로 인증을 한다.
UPDATE : 새로운 경로를 추가하거나 기존 경로를 철회한다. 수정.
KEEPALIVE : 업데이트가 없어도 연결을 유지한다. 또한 ACK OPEN 요청. 주기적으로 나 아직 살아있다고 알림. open 성공했다고 ACK을 보냄.
NOTIFICATION : open에 대한 close에 사용된다. 메시지에 대한 에러를 보고한다.
=> 연결 맺고 경로 수정하고 주기적으로 연결에 대한 ACK, 살아있다고 알리고, 에러를 보고하고 연결을 끊는데 사용.
[BGP, OSPF, 포워딩 테이블 항목]
⤷라우팅 테이블로 길을 결정.
⤷라우터들은 input 포트로 받은 걸 output 포트 어디로 전달할 건지를 포워딩 테이블을 보고 전달한다.
⤷어떻게 라우터는 외부 프리픽스를 사용해서 포워딩 테이블 항복을 만들까?
⤷1a,1b,1d는 iBGP를 통해 x로 가기 위해서는 1c로 가야한다는 것을 배웠다.
⤷1c는 AS2를 거치지 않고 AS3로 가는 것이 더 좋다는 것을 정책을 통해서 안다.
⤷그 정보를 AS1의 다른 애들한테 알려준다.
⤷AS1에서 x로 가려면 1c로 가야 하기 때문에 1d는 1번 인터페이스로 가야 한다. 이런 정보가 저장되어 있는게 포워딩 테이블이다.
⤷목적지 어디로 가기 위해서는 몇 번 output을 가야 하는지.
⤷1a 입장에서는 2번 인터페이스를 고른다.
<BGP 경로 선택 알고리즘> 367p
=> 라우터는 대상 AS에 대한 둘 이상의 경로에 대해 학습할 수 있으며 다음에 따라 경로를 선택한다. 이 4가지 순서로 찾는다.
지역 선호도(local preference)가 경로에 할당된다. 지역 선호도의 값은 온전히 AS 네트워크 관리자에 의한 정책적인 결정이다.
가장 높은 지역 선호 값을 가진 경로가 여러 개 있다면 이들 중에서 최단 AS-PATH를 가진 경로가 선택된다.
NEXT-HOP 라우터까지의 거리가 가장 가까운 경로가 선택된다. (뜨거운 감자 라우팅)
만일 아직도 하나보다 많은 경로가 남아 있다면 라우터는 BGP 식별자를 사용하여 경로를 선택한다.
[뜨거운 감자 라우팅]
⤷뜨거운 감자 라우팅에서는 (가능한 모든 경로 중에서) 경로 각각의 시작점인 NEXT-HOP 라우터까지의 경로 비용이 최소가 되는 경로가 선택된다.
⤷감자가 너무 뜨겁기 때문에 되도록 빨리 다른 AS에게 건네준다. 전체 경로 중에 외부에서 얼마의 비용이 드는지는 신경쓰지 않고 오로지 자신의 내부 AS 비용만 줄이려는 이기적인 알고리즘이다.
⤷너무 뜨거우니까 가장 가까운 내부에 있는 애한테 먼저 주겠다.
⤷뜨거운 감자 라우팅을 사용하면 한 AS 내 두 개의 라우터가 동일한 목적지 주소에 대해 서로 다른 AS 경로를 선택할 수도 있음을 알아야 한다.
⤷2d는 2a,1c,3a,3d,x 이렇게도 갈 수 있고
2c,3a,3d,x 이렇게도 갈 수 있다.
⤷우리가 봤을 때는 2c로 가는게 더 빠른데
2d입장에서는 어떤 길이 더 빠른지 신경쓰지 않는다.
⤷단지 2d는 2a를 201이고 2c는 263이니까
빨리 주기만 하면 되니까 2a에게 넘기게 된다.
[BGP 광고를 통한 정책]
⤷A,B,C는 AS들이다.
⤷인터넷 서비스 제공자는 트래픽이 들어오고 나감에 있어서 단지 자기와 연결되어있는 고객한테만 연결하기를 원한다.
⤷w를 가려면 어쩔 수 없이 A를 거쳐가야 하잖음 하지만 x로 가기 위해서 C는 바로 가지, B를 거쳐서 가지는 않겠다는 뜻이다.
⤷A는 B,C에게 w로 가기 위해서는 A를 거쳐야 갈 수 있다는 path Aw를 알린다.
⤷C는 w를 가기 위해 CAw를 배우지,
CBAw는 배우지 않는다.
⤷X는 dual-homed(서비스 제공자가 2개)이다.
⤷X는 B로부터 C를 거쳐서 X에 오지 않게 한다. 쓸데없는 경로 NO. 다이렉트로 오는 것만 원함.
<왜 intra-AS와 inter-AS라우팅이 다른가?>
⤷intra는 AS 내부에서 OSPF로 이루어진 라우팅이다.
⤷inter는 AS 간의 외부를 연결하는 BGP에 의한 라우팅이다.
- 정책 : inter-AS, 트래픽이 라우팅되는
전체 경로를 제어하길 원한다.
intra-AS, 하나의 도메인에 한명의 관리자가 있다. 특별한 정책 결정이 필요하지 않다.
확장성 : 테이블의 사이즈를 줄이기 위해서는 계층적인 라우팅이 필요하다. OSPF.
성능 : intra-AS, 성능이 중요. 최대한 빠른 길로 찾아서 간다. 하나의 AS에서 돌아가는 OSPF.
inter-AS, 성능보다는 정책이 중요하다.
외부하고 연결이기 때문.