[라우팅 알고리즘 분류]
- global
- 모든 라우터들이 완벽한 topology를 가짐 -> 모두의 가진 정보가 동일
- 정보가 모두 브로드캐스팅
- "link state" 알고리즘 : 네트워크 전체 정보를 이용- decentralized
- 자신의 정보를 가장 가까이에 있는 곳에만 뿌려서 이웃을 통해 다음으로 넘어가게끔 만드는 알고리즘.
- "distance vector" 알고리즘 : 반복적, 비동기적, 분산적- state
- 라우터가 천천히 변한다.- dynamic
- 라우터가 빠르게 변한다.
- 주기적 업데이트, 링크 비용 변경에 대한 응답
- 라우팅 프로토콜 돌렸을 때 자동으로 테이블이 생성
[거리 벡터 알고리즘 특징]
- 분산적 : 각 노드는 하나 이상의 직접 연결된 이웃으로부터 정보르르 받고 계산을 수행하여 계산된 결과를 다시 그 이웃들에게 배포한다.
- 반복적 : 이웃끼리 더 이상 정보를 교환하지 않을 때까지 프로세스가 지속된다. (자기 종료)
- 비동기적 : 톱니바퀴 돌듯이 모든 노드가 서로 정확히 맞물려 동작할 필요가 없다.
[벨만-포드 Bellman-Ford 알고리즘]
- dx(y) : 노드 x부터 y까지 최소 비용 경로의 비용
- 이웃간 통신의 형식을 제안.
- 각 노드는 이웃으로부터의 갱신을 기다림.
- 업데이트를 수신하면 새로 거리 벡터를 계산.
- 거리 벡터가 갱신될 경우 이웃 노드에 전파- Example
[링크 비용 변경과 링크 고장]
- 링크 비용 변경
- 자신의 거리 벡터 갱신 후 변화가 있는 경우 이웃에게 새로운 거리 벡터를 전송
- 비용이 안 좋게 변경될 경우 문제가 발생.
- Dy(x) = min{60 + 0, 1 + 5} = 6 <Error!>
- 라우팅 루프 : x로 가기 위해, y는 z로 경로 설정을 하고, z는 y로 경로 설정을 하는 것
- 무한 계수 문제 (count-to-infinity problem)- 포이즌 리버스
- 라우팅 루프 방지
- z가 y를 통해 x로 가는 경로 설정을 했을 때, z는 y에게 Dz(x) = ∞ 이라고 알리는 방법. (선의의 거짓말)
- 직접 이웃한 노드가 3개 이상인 무한 계수 문제는 해결X
[LS와 DV 알고리즘 비교]
- 메시지 복잡도
- LS : n개의 라우터, O(n^2)의 메시지
- DV : 이웃 간의 교환, 수렴 시간 다양- 수렴 속도
- LS : O(n^2) 메시지, 진동 있을 수 있음.
- DV : 라우팅 루프 있을 수 있음 (무한대 계수 문제)- 견고성 : 잘못된 비용을 알려줬을 때 얼마나 큰 영향을 미치니?
- LS : 각 라우터는 자신의 테이블만 계산
- DV : 블랙홀링. 네트워크를 통해 오류 전파. 한 노드의 잘못된 계산은 전체로 확산될 수 있다. 취약함.
[자율 시스템 AS]
- 라우터들을 AS로 조직화하여 확장, 관리 자율성의 문제를 해결
- 동일한 관리 제어하에 있는 라우터의 그룹으로 구성
- AS는 전 세계적으로 고유한 AS번호로 식별
- ICANN의 지역 등록 기관에 의해 할당됨.- 다른 말로는 "도메인"
- 종류
1) intra-AS
- 같은 AS 내에서의 라우팅
- 같은 AS 내에 있는 라우터들은 동일한 라우팅 알고리즘 사용
- 상대의 정보 알 수 있음
- gateway router : AS의 엣지에서 다른 AS로 라우팅하기 위한 링크를 가짐
- 내부 목적지 서비스
2) inter-AS
- 다른 AS 간의 라우팅
- gateway router는 1), 2) 모두 수행해야함.
- 외부 목적지 서비스
[intra-AS 라우팅 프로토콜]
- RIP : Routing Informaion Protocol
- classic DV
- 더이상 사용 X- EIGRP : Enhanced Interior Gateway Routing Protocol
- DV based
- CISCO 전용 라우팅 프로토콜- OSPF : Open Shortest Path First [RFC 2328]
- link-state 라우팅
- IS-IS 프로토콜 : OSPF와 같지만 ISO 표준 프로토콜
[OSFP 개방형 최단 경로 우선 프로토콜]
- AS 내부 라우팅 프로토콜
- open : 퍼블릭하게 사용가능
- link-state 기반 프로토콜
- TCP/UDP 사용하지 않고 IP에 직접적으로 쌓여서 지나감
- 대역폭, 딜레이가 얼만지 고려해서 비용 결정
- 전체 topology 가지고 있어야함
- 포워딩 테이블 계산을 위해 다익스트라 알고리즘 사용- 보안
- LS의 견고성- Hierarchical OSPF
- 두 가지 계층 구조 : local area, backbone
- backbone : local area의 경계에 있는 것들
- local area나 backbone 내에서만 브로드캐스트
- area border routers : 지역 경계, 최종값을 가지고 있음. 정보 주고 받음.
- local area에서 포워딩된 정보를 border를 통해 외부로
[역할]
1. 이웃 AS를 통해 도달 가능한 서브넷 프리픽스 정보를 얻는다.
- 서브넷의 존재를 알림.
2. 서브넷 주소 프리픽스로의 가장 좋은 경로를 결정한다.
- 경로 결정 프로시저
[AS에서의 라우터]
- 게이트웨이 라우터 (ex. 1c)
- AS 경계에 있는 라우터
- 다른 AS들에 있는 여러 개의 라우터와 직접 연결된다.- 내부 라우터 (ex. 1a, 1b, 1d)
- 자신의 AS 내에 있는 호스트 및 라우터와만 연결된다.
[BGP 연결]
- eBGP (external BGP)
- 2개의 AS를 연결
- 인접 AS로부터 서브넷 도달 가능성 정보 획득- iBGP (internal BGP)
- 같은 AS 내의 라우터 간 연결
- 모든 AS 내부 라우터에 도달 가능성 정보 전파
[BFP advertised route : prefix + attributes]
- prefix
- 브로드캐스트 중인 목적지- attributes
- AS-PATH : 프리픽스 advertisement가 통과한 AS 목록
경로가 여러 개인 경우 정책 기반으로 결정
- NEXT-HOP : 특정 내부 AS 라우터를 다음 홉 AS로 지시
[BGP messages]
- OPEN : 원격의 BGP peer와 TCP 연결을 맺고 인증 과정을 거침
- UPDATE : 새로운 경로 정보 주고 받음.
- KEEPALIVE : 오랫동안 UPDATE 메세지가 없으면 아직도 살아있다는 정보를 주고 받음.
- NOTIFICATION : 에러 보고
[뜨거운 감자 라우팅 Hot potato routing]
- 2d가 외부로 라우팅하고 싶을 때 둘 중 어느 경로로 보낼까?
- 최단 경로 우선! 2a, 2c 중 2a로 보낸다.
- 직접 붙은 두개의 경로 중 짧은 것 선택
[라우팅 정책 중요도 차이]
- inter-AS
- 관리자는 트래픽이 라우팅되는 방식, 네트워크를 통해 라우팅 되는 사용자에 대한 제어를 원함.
- 경로를 결정하는 데 기반이 되는 정책이 중요해짐.- intra-AS
- 단일 관리자
- 정책이 중요X, 최소비용이 최우선.
[라우팅을 선택적으로 광고하는 기준]
- 선택적 광고
- B는 C에게 'A, w'의 정보를 전달하지 않는다. (효율적 측면)
- 로컬 기본 설정 값 속성 : 정책 결정
- 가장 짧은 AS-PATH
- 가장 가까운 NEXT-HOP 라우터 : 뜨거운 감자 라우팅
- 추가적 기준
[SDN구조의 특징]
- 플로우 기반 포워딩
- 목적지 주소 기반으로 이루어지는 전통적인 라우터 기반 포워딩과는 대조적인 특성
- SDN의 제어 평면 : 모든 네트워크 스위치의 플로우 테이블 항복들을 계산, 관리, 설치- 데이터 평면과 제어 평면의 분리- 매치 플러스 액션 수행
- 제어 평면 : 서버와 스위치들의 플로우 테이블을 결정, 관리하는 소프트웨어- 네트워크 제어 기능이 데이터 평면 스위치 외부에 존재
- SDN 컨트롤러
- 논리적 중앙 집중형
- 협업능력, 확장성, 높은 이용성을 갖도록- 프로그램이 가능한 네트워크
[OpenFlow 메시지 클래스]🔺
- 컨트롤러가 스위치로 전달하는 메시지
- 스위치의 상태 확인 (features)
- 스위치 설정 셋팅 (configure)
- 플로우 테이블 수정 (modify-state)
- 특정 스위치 포트로 패킷 전공 (packet-out)- 스위치가 컨트롤러로 전달하는 메시지
- 컨트롤러로 패킷 전송 (packet-in)
- 스위치의 상태 정보 리포트 (port status)
- 스위치에서 플로우 테이블 삭제 (flow-removed)- 동시에
- 특정 문제 진단
- 연결 요구
1. 스위치 s2의 링크 단절을 감지한 s1은 OpenFlow의 포트 상태 메시지를 사용하여 링크 상태의 변화를 SDN 컨트롤러에게 알린다.
2. 링크 상태 변화를 알리는 OpenFlow 메시지를 받은 SDN 컨트롤러는 링크 상태 관리자에게 알리고, 링크 상태 관리자는 링크 상태 데이터베이스를 갱신한다.
3. 다익스트라 링크 상태 라우팅을 담당하는 네트워크 제어 애플리케이션은 링크 상태의 변화가 있을 경우 알려달라고 이전에 등록해두었다. 이 애플리케이션이 링크 상태의 변화에 대한 알림을 받게 된다.
4. 링크 상태 라우팅 애플리케이션이 링크 상태 관리자에게 요청하여 갱신된 링크 상태를 가져온다. 이 작업은 상태 관리 계층에 있는 다른 구성요소의 도움이 필요할 수도 있다. 그 후 새로운 최소 비용 경로를 계산한다.
5. 링크 상태 라우팅 애플리케이션은 갱신되어야할 플로우 테이블을 결정하는 플로우 테이블 관리자와 접촉한다.
6. 플로우 테이블 관리자는 OpenFlow 프로토콜을 사용하여 링크상태 변화에 영향을 받는 스위치들의 플로우 테이블을 갱신한다.
[ICMP 메시지 형식]
- 타입 + 코드 + IPCM 메시지의 발생 원인이 된 IP 데이터그램의 헤더 첫 8바이트
- Type = 3 : 도달할 수 없음
- Type = 11, code = 0 : TTL expired
- 오류 상태를 알리기 위해서만 사용되는 것은 아님!
[Traceroute와 ICMP]
- Traceroute 프로그램 : 한 호스트에서부터 세계 어느 호스트로의 경로라도 추적할 수 있는 프로그램.
- Traceroute도 ICMP 메시지로 구현
- 과정
- n번째 데이터그램이 n번째 라우터에 도착하면 해당 라우터는 데이터그램의 TTL이 방금 만료되었음을 알게 됨
-> 라우터는 데이터그램을 폐기하고 ICMP 경고 메시지를 출발지에 보낸다.(TTL expired)
-> 이 경고 메시지는 라우터의 이름과 IP 주소를 포함
-> 출발지는 타이머로부터 왕복 시간(RTTs), ICMP 메시지로부터 n번째 라우터의 주소와 이름을 획득- UDP 세그먼트가 최종 목적지 호스트에 도착하는 방법
- type = 3, code = 3 "목적지 포트 도달 불가능" 리턴