Intra-domain (Intra-AS) routing
routing among hosts, routers in same AS("network")
AS에 있는 모든 router들은 same intra-domain protocol을 돌려야 한다
다른 AS에 있는 router들은 different intra-domain routing protocol을 돌릴 수 있다.
gateway router : AS의 'edge'에 있는 router. 다른 AS의 router와의 link가 있다
What is the shortest path from A to C?
처음에는 direct neighbor에 대한 경로만 저장한다.
이제, direct neighbor끼리 table을 교환한다
Each node sends its routing table to all its direct neighbors
Node D가 E에게 table을 보내고, 그걸 보고 E가 자신의 table을 update한다
Node B -> Node A
Node E -> Node A
이런 방식으로 All nodes exchange tables
일단 D와 E가 제일 먼저 detect하고 본인들의 table을 update한다
D와 E가 neigbors에게 update된 table들을 또 보내고 각자 또 update한다
(결국은 다시 converge가 된다)
After rout table is finalized, the link between A and B breaks
B는 A로 가는 길을 모르게 되고(A : -, C : 1), C가 routing table(A : 2, B : 1)을 B에게 보내준다
문제는 C는 저 길이 끊어진지 모르고 그 길을 통해 A로 가는 정보를 B에게 보내준다는 것이다
그걸 받고 B는 table을 update한다 (A : 3, C : 1)
그리고 이걸 C한테 보낸다
C는 기존에 A로 가는 길이 B를 거쳐서 갔기 때문에, B가 A로 가는 길을 update한 걸 보고, 본인의 table을 update한다. (A : 4, B : 1)
그리고 이걸 B한테 보낸다
B도 역시 A로 가는 길을 C 거쳐서 가는 것으로 했기 때문에 또 update한다 (A : 5, C : 1)
이 왔다갔다를 계속해서 진행하다가,
C 입장에서 값이 25를 넘어가는 순간, C는 direct로 A로 가는 길을 선택할 것이다. 그제서야 각 table의 update가 멈춘다
Routing Information Protocol
distance vector routing을 기반으로 널리 사용되는 routing protocol이다
Each router sends advertisement messages
D(x)는 distance, P(x)는 parent를 나타낸다
step0 (direct 연결)에서 가장 작은 값을 child로 붙여서
step1을 update한다
만약 가장 작은 게 여러개라면 아무거나 선택해도 된다.
그 경우, path는 달라질 수 있지만, 값은 동일하게 나온다
이런 방식으로 이전 step에서 가장 작은 값을 chil로 붙여서 모든 노드를 다 붙이면 마무리한다
Packet forwarding
Link state packet forwarding에서는
network 상의 모든 노드에게 LSP를 보낸다
(distance vector에서는 direct neighbor에게만 보냈다)
Network-wide flooding
A가 전체에게 LSP를 보낸다
B가 A의 LSP를 받는다
B는 A의 LSP의 sequence number를 체크한다
Open shortest path first
A routing protocol based on link state routing
Each router sends Link State Advertisement(LSA) packets
LSA packet format