각각의 router가 control plan을 갖고 있고, 독립적으로 path selection algorithm을 running하는 decentralized routing protocol을 보고 있음.
내가 속한 ISP의 각 link의 상태 정보를 global하게 수집해 와서,
path selection algorithm을 running 하기 전에 내가 속한 ISP 안의 나를 제외한 N-1개의 라우터까지의 least cost path를 계산해야 하는데, 그것들이 어떤 link 정보를 가지고 있는지 complete topology 정보를 다 얻은 후 path selection algorithm을 running하는 방식은 Dijkstra's algorithm.
Dijkstra's algorithm에 의해 결정된 route로 user pkt이 가게 되는 길만을 따라 topology를 그리면 loop이 없는 tree 구조가 됨. (RIP에 비해 loop가 생기지 않으니 높은 신뢰도, but complexity가 높음)
→ global 정보를 다 받고 Dijkstra's algorithm을 running
Ex. OSPF (나머지 router들과 broadcast로 통신)
물리적으로 직접 연결된 neighbor router와만 communication 하여 나 제외 나머지 라우터로 가는 path의 local한 정보(distance vector = routing table)를 주고 받음.
msg exchange → path selection → msg exchange → path selection → ... iteration
라우터들이 linear하게 배치 되어있을 때 나와 가장 먼 라우터로부터 도달하는 라우팅 정보는 n-1번 iteration 하면 됨.
→ physically connected된 neighbor 라우터에게서 받은 정보로 estimate 값을 계산.
Ex. RIP, BGP
static: link의 상태가 update되는 것에 반응이 느림
dynamic: nw가 정보를 자체적으로 update
우리가 알고있는 routing protocol들은 link의 cost를 variable하게 가지지 않음. 고정된 값을 가짐
→ 실시간으로 변하는 load-sensitive한 정보를 사용하게 되면, OSPF 같은 경우 특정 destination으로 가는 traffic들이 한 방향으로 갔다가, 다시 반대 방향으로 갔다가 oscillation 할 수 있음.
굉장히 작은 망이라 2 time이 지나니 모든 라우터가 똑같은 routing table을 갖게 됨.
DV algorithm 내에서 link cost가 좋아졌으면(작아졌으면) 반영이 빠르나, link cost가 나빠졌으면 반영이 느림.
bad new travels slowly!
→ DV algorithm의 단점: count to infinity 현상이 일어날 수 있다.
local한 link의 cost가 안 좋아졌을 때, 나머지 모든 router들이 자신의 distance vector를 계산하는데 적용되는 시간이 굉장히 오래 걸려서 중간에 destination으로 가는 pkt들이 loop를 돌 수 있다.
A — B — C 일 때, Da(c)=C(A, B) + Db(C), A에서 B로 가는 cost, B가 알려준 B에서 C로 가는 cost.
이 B가 알려준 정보를 A가 B에게 다시 알려주는 짓은 하지 말자!
알려주되 너한테 얻은 정보라는 것 까지도 알려주자!
만약 z가 y를 통해 목적지 x로 가는 경로 설정을 했다면, z는 y에게 x까지의 거리가 ∞라고 알린다.
즉, z는 y에게 Dz(x) = ∞ 라고 알림으로써 y는 z에게 x로 가는 경로가 없다고 믿으므로, y는 z를 통해 x로 가는 경로를 시도하지 않을 것이다.
이 방법이 모든 블랙홀을 막아주진 않음.
세 개 이상의 router들이 involve 되어있는 loop은 이 두 방법으로도 막지 못 함.
→ RIP는 세 개 이상의 router들이 involve 되는 topology를 구성하지 않음
→ BGP는 거쳐오는 라우터들을 모두 적어서 알려줌.
LS와 DV 알고리즘은 경로를 계산할 때 서로 대비되는 방법을 취한다.
DV 알고리즘에서 각 라우터는 오직 직접 연결된 이웃과만 메시지를 교환하지만, 자신으로부터 네트워크 내 (자신이 알고 있는) 모든 라우터들로의 최소 비용 추정값을 이웃들에게 제공한다.
LS 알고리즘은 전체 정보를 필요로 한다. 각 노드는 모든 노드와 broadcast를 통해 통신하지만, 오직 자신에 직접 연결된 링크의 비용만 알린다.
모든 link의 정보를 다 알고 router가 계산을 시작 (정확한 정보를 모두에게)
Ex. OSPF, IS-IS: Dijkstra's algorithm
내가 예측하고 있는 모든 subnet으로 가는 정보를 내 이웃에게만 줌
Ex. RIP, BGP, ISO IDRP, Novel IPX, the original ARPAnet : Bellman-Ford algorithm
각 AS는 동일한 관리 제어하에 있는 라우터의 그룹으로 구성된다. 한 ISP의 라우터와 그들을 연결하는 링크가 종종 하나의 AS를 이룬다. 어떤 ISP들은 그들의 네트워크를 여러 개의 AS로 나누기도 한다.
AS들은 전세계적으로 고유한 ASN number로 식별된다.
-- iterative, asynchronous, distributed
-- may include count-to-infinity which is a temporary routing loop in the network when a link cost gets worse (usually a link goes down).
-- solution for count-to-infinity : split-horizon or split-horizon with poison reverse
-- LS : smaller message size and more traffic
-- DV : larger message size and less traffic
-- If a router malfunctions,
-- for LS, only local info becomes wrong
-- for DV, route path info gets wrong --> more serious