•
Data Plane
◦
각 라우터 내부에서 포트 선택을 해서 전송하는 방식
◦
개별 패킷에 대해서 적용되고, 포워딩이다
•
Control Plane
◦
네트워크 전체를 고려하는 것이고, 경로를 결정하고 테이블을 생성하는 것임
Inside Router
input → switch → output으로 이동을 함
어떤 데이터가 들어오고 어디로 나가려고 하냐에 따라서 다양한 문제 발생
1.
HOL
•
input queue가 생겨버림. 이 때, 초록색은 갈 수 있음에도 불구하고 빨간색 때문에 못 간다.
2.
buffer overflow
그럼 어떻게 해야하나
•
scheduling을 해야함
◦
queue에 대해서 FIFO, priority, round robin, weighted fair queueing 등이 있음
IP Datagram
각 링크는 MTU가 있음. max.transmission size (가능한 가장 큰 크기)
→ 넘으면 분할됨
IP
어떻게 얻냐?
•
Manual setting 하거나 DHCP
◦
Dynamically get address from as server
•
DHCP
◦
DHCP를 찾는다는 메시지를 broadcast
◦
DHCP가 응답
◦
IP Request하고 응답 줌
•
여러 가지 정보를 추가로 제공함
◦
기본 게이트웨이: 거치는 첫 번째 라우터의 IP 주소
◦
DNS 서버의 IP 주소랑 이름
◦
서브넷 마스크
NAT
•
사설 IP랑 공인 IP를 매핑함
•
각기 다른 곳에서 온 곳은 같은 IP에 다른 포트로 매핑됨.
•
NAT는 포트를 보고 알아서 전달함.
•
16-bit 포트 넘버가 있음
◦
약 6만개 정도 가능하다
◦
라우터는 원래 3계층만 처리해야하는데 NAT는 포트번호까지 건드린다.
◦
NAT Traversal 문제가 있을 수 있다.
•
NAT Traversal 문제
◦
직접 연결하고 싶은데, 뭔지 모름
▪
port fowarding
▪
그리고 이 포트포워딩을 자동으로 하는게 UPnP
▪
릴레이 서버가 중계해주는 식
Control Plane
Routing Algorithm
•
Global
◦
모든 라우터가 네트워크 전체 토폴로지와 링크 비용을 알고 있음
◦
전체 지도를 보고 최적 경로 계산
▪
Link-State Algorithm (Dijkstra)
•
전체 노드에서, 링크에 대해서 가장 작은거 빼면서 거리 업데이트 해가는 방식임
•
Decentralized
◦
직접 연결된 이웃만 알고 있음
◦
이웃과 정보 교환하며 점진적으로 최적 경로 계산
◦
Distance Vector Algorithm (Bellman-Ford 알고리즘)
▪
자기 이웃에 대한 정보를 가지고 있고, 이웃 외에 다른 것들에 대한 정보도 가지고 있음
▪
자신들의 이웃이 라우팅 거리 테이블이 바뀌었다고 말하면 그걸 기반으로 자기꺼를 업데이트하는 식임.
•
Static
◦
라우팅 경로가 거의 변화가 없다
•
Dynamic
◦
경로가 변할 수 있음
▪
RIP, OSPF, BGP 등
Distance Vector Infinity Count
•
엄청 많이 왔다갔다 할 수 있음
◦
기존에 알고 있던 정보가, 나에게 업데이트하라고 알려준 친구에게 의존하기 때문임.
•
poisoned reverse로 y가 z에게 의존하지 못하도록 함.
AS(Autonomous System)
•
Intra-AS
◦
AS 안에서 라우팅을 어떻게 하냐
◦
RIP, OSPF, IGRP 등이 있다.
▪
link-state 알고리즘을 쓴다.
▪
자신이 알고 있는 링크 상태 정보를 직접 전달함. 이 때 IP 패킷 위에 직접 전송됨
▪
링크 상태 패킷을 배포하면 각 라우터에서 토폴로지 맵을 구성하는 것임
•
Inter-AS
◦
AS 끼리 어떻게 하냐, BGP 같은 거
◦
각 AS에 대해서 도달 가능한 목적지를 알아야함
◦
이 정보를 자기 AS 안에 전파해야함.
BGP
•
eBGP
◦
다른 AS로부터 서브넷의 도달 가능성 정보를 받아온다.
•
iBGP
◦
자기 AS 내부 라우터들에게 도달 가능성 정보를 전달함.
◦
라우팅 정책에 따라 좋은 경로를 선택하는 기능도 수행한다.
•
기본적으로 BGP에 참여하는 친구들은 TCP 위에 반영구적인 커넥션을 맺고 있다.
◦
그리고 어떠 ㄴ경로를 통해 어떤 목적지에 도달할 수 있는지 광고해야함
◦
BGP는 경로 벡터 기반 프로토콜
•
prefix + attributes = “route”
◦
AS-PATH: 거쳐온 ASes
◦
NEXT-HOP: 그 다음 AS 내부 라우터의 IP 주소
경로 선택 기준이 존재
•
Local Preference (로컬 우선순위)
◦
정책 설정 값 (값이 클수록 우선순위 높음)
◦
고객이 아닌 애들한테는 광고를 안 한다.
•
Shortest AS-PATH
◦
거쳐가는 AS의 수가 가장 적은 경로 선택
•
Closest NEXT-HOP (Hot Potato Routing)
◦
내부 네트워크 내에서 가장 가까운 출구 (gateway) 사용
◦
멀지만 내부만 생각해서 가장 가까운 게이트웨이로 보내버린다.
•
기타 세부 기준들
◦
예: router ID, MED 값 등
ICMP
•
hosts&routers에서 사용하는 것들임
•
네트워크 수준의 오류나 상태 정보를 주고받기 위해 사용하는 프로토콜
•
type, code에다가 IP 데이터그램의 첫 8바이트를 사용함.
•
IP 위에서 동작하는 프로토콜, 전송 계층 아닌 네트워크 계층
•
traceroute
◦
TTL을 1씩 올려가면서 홉 추적
◦
목적지 도달 시 열려있지 않은 포트 때문에 unreachable 반환, 이걸로 경로 추적 가능
SDN
•
각 라우터가 통신하는게 control plane인데 이걸 가상화한것이다.
•
그래서 중앙화가 가능하고, 관리가 쉽다. 프로그래밍이 가능하다.
•
Open Flow로 된다.