| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- synchronized
- 일급 컬렉션
- 일급 객체
- factory
- Volatile
- lombok
- Dependency Injection
- builder
- OAuth 2.0
- java
- spring security
- Google OAuth
- Spring
- Today
- Total
HJW's IT Blog
Chapter 4.5: Routing Algorithm 본문
Link-State Routing Algorithm
> Dijkstra's Algorithm
>> 네트워크상 모든 노드가 링크 비용을 알고 있다
>> 가장 적은 비용이 드는 path (한 노드에서 다른 모든 노드로)
<Forwarding Table>
>> Iterative
>> Notation
<c(x,y): node x ~ node y 의 링크 비용 -> 바로 옆에 있는것이 아니라면 무한대>
<D(v): 현제에서 목표지점 v 까지의 비용>
<p(v): v까지 계산을 했을 때, 어느 노드를 통해서 왔는가(이전노드)>
<N': 노드를 하나씩 추가해 가며 추가된 노드의 집합>



> 알고리즘 복잡도: n nodes
>> 각 iteration 마다 모든 N' 에 속하지 않은 모든 노드 확인
>> O(n^2) --> 더 효율적이게 O(nlogn)에 가능
Distance Vector Algorithm
> Bellman-Ford Equation (DP)

> Dx(y) = x 에서 y 로 가는 예상 최소 비용
> node x 에 대해:
>> neighbor v 에게 비용이 알려져 있다


> Distance Vector Algorithm 의 Key Idea
>> 일정한 시간이 지나면 각 노드는, 각자의 distance vector를 보낸다.
>> x 가 새로운 DV를 이웃에게서 받으면, Bellman-Ford Equation을 사용해 자신의 DV를 update
>> 특정 조건 하에, Dx(y) 는 dx(y)에 수렴한다.
> Distance Vector Algorithm은
>> Iterative & Asynchronous
<각 로컬 iteration은 local link-cost 가 바뀔때, DV update 발생시에 일어난다>
>> Distributed
<각 노드는 DV가 바뀔때만 이웃에게 알린다>

> Link Cost Changes
>> 노드가 local link cost change 를 감지한다
>> Routing 정보를 update, DV 다시 계산
>> DV가 바뀔 경우 이웃에게 알림

> 위의 경우 다음과 같이 작동한다
>> t0: y 가 링크 비용 변경을 감지, DV update, 이웃에게 알린다.
>> t1: z는 y로부터 업데이트를 받고, 자신의 테이블을 업데이트 하고 x로의 새로운 최소 비용을 계산, DV update 후 알림
>> t2: y는 z의 업데이트를 받고 DV를 update. y 의 최소 비용이 변경 되지 않았기에 y는 메세지를 보내지 않음

> 위의 상황에서 만약 Z가 X 로 가기위해 Y를 경유한다면...(Poisoned Reverse)
>> Z는 Y 에게 X 까지의 거리가 무한대임을 알린다 --> Y는 Z를 통해 가지 않음
>> 무한대 거리를 가진 링크를 가진 노드가 루프를 만들어 무한루프를 도는 문제를 해결할 수 있지만 계수 무한대 문제를 해결할 수 없다.
Link-State vs. Distance Vector
> Message Complexity
>> LS: n개의 노드, E 개의 링크일 경우 O(nE)
>> DV: 이웃 사이에 교환... convergence time varies
> Speed of Convergence
>> LS: O(n^2)
>> DV: Convergence time varies
<routing loop 이 생길 수 있음>
<count-to-infinity 문제 발생 가능>
> Robustness(라우터가 오작동하면 무슨일이 발생하는가?)
>> LS: 노드가 틀린 링크 비용을 알릴 수 있음
<각 노드는 자신의 비용만 계산>
>> DV: DV 노드는 틀린 path cost를 알릴 수 있음
<각 노드의 table은 다른 노드들이 사용>
'컴퓨터 네트워크' 카테고리의 다른 글
| Computer Network: 10주차 (0) | 2023.05.20 |
|---|---|
| Computer Network: 9주 (0) | 2023.05.19 |
| Connection Oriented Transport: TCP (0) | 2023.04.17 |
| TCP: Transmission Control Protocol (0) | 2023.04.06 |
| Pipelined Protocol (0) | 2023.04.06 |