1. network layer intro
network layer
송수신 호스트간의 패킷을 전달하는 서비스 제공
주요기능
forwarding : 라우터의 입력링크로 들어온 패킷의 올바른 출력링크 결정
routing : 라우팅 알고리즘으로 출발end-도착 end 까지의 경로 결정
network service model
송수신 호스트 간의 패킷 전송 특정 정의
종류
- datagram network (-> connectionless service )
: 패캣과 수신자 ip를 가지고 어떤 경로로 가던지 간에 특정시간에 패킷이 도착할 수 있음을 보장
- virtual circuite nework (-> connection service)
: 경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달
2. virtual circuite network ,datagram network
virtual circuite network
경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달
VC의 3요소 : path, vc number, forwarding테이블
datagram network
목적지 주소를 가지고 각각의 패킷에 대한 경로가 설정되므로, 결로가 라우터 상황에 따라 바뀐다
3. Inside Router
router 구조
input port
output port
routing processor : 라우팅알고리즘으로 forwarding talbe 업데이트
switching fabric
종류
swtiching via memory
switching via a bus
switching via interconnection network
4. IP : Internet Protocol
network layer의 주요 프로토콜
routing protocol : end-to-end경로설정, forwarding table 업데이트
IP, internet protocol
: 네트워크 계층의 데이터 전송 프로토콜
ICMP
: 오규가 발생한 ip 패킷에 대해 원인을 송신 호스트에게 전달할 수 있는 기능을 지원하는 프로토콜
ip fragmentation/reassembly
- link type 마다 다른 MTU를 가지고 있으므로 large ip 패킷은 여러 small ip packet으로 분할
=> identifier(데이터그램식별), flags(1=다음패킷존재, 0=마지막패킷), offset(순서) 정보를 이용하여 분할
=> 호스트에서 위의 3가지 정보를 이용하여 reassembly
IPv4
ipv4는 32비트 주소로 host, router interface(host와 router간의 connection)의 식별자 역할
ipv4 address는 network prefix와 host number로 구성
=> nerwork prefix : nerwork 식별
=> host number : host식별
classful ip
class A : ip가 0으로 시작(0~127), prefix가 8비트. 2^24-1개의 호스트를 가지는 네트워크
class B : ip가 10으로 시작(128~191). prefix가 16비트. 2^16-1개의 호스트를 가지는 네트워크
class C : ip가 110으로 시작(192~223). prefix가 24비트. 2^8-1개의 호스트를 가지는 네트워크
class D : ip가 1110으로 시작 (224~239). multicast를 위한 ip
classful ip address의 문제점
1. large network ( class A, B)를 위한 network address가 너무 적음 -> A:128개, B:64개
2. network prefix, host number의 two-layer 계층구조는 large network에 부적합 -> host를 낭비문제 발생
-> 해결법 : subnetting
3. inflexbible -> 해결법 : CIDR
subnet
정의 : ip의 subnet part가 같은 디바이스들이 구성하는 네트워크 -> subnet에 속한 디바이스들은 라우터를 거치지 않고 브로드캐스팅 가능
subnetting
hostnumber를 subnet number와 host number로 나눔으로써 ip를 network prefix, subnet number, host number의 3계층으로 구성
subnetting 장점
subnet을 자유롭게 구성 가능
네트워크 내부적으로는 subbet을 구분된 network로 인식
외부에서는 subnet 구조를 파악할 수 없음 -> 보안
subnet mask
ip address와 and연산으로 network prefix + subnet number (= extended network prefix)를 구할수 있다. 이를 이용해 host number도 구할수 있다
CIDR, classless interdomain routing
network id의 길이가 고정되어 있지 않고 가변적인 ip주소 -> network id의 길이(network prefix)를 따로 명시
address assignment
: ISP가 클라이언트가 요구하는 만큼의 ip address block을 할당 -> 클라이언틑 이를 가지고 host ip에 할당 -> DHCP기법 이용
DHCP, dynamic host configuration protocol
host가 network에 join하면 network server로부터 host에게 ip address를 동적할당 받는다
=> ip address는 빌리고 반납하는 형식이므로 address는 재사용 가능
할당과정
1. DHCP discover : host가 브로드캐스팅으로 dhcp discover msg전송
src : 0.0.0.0
dest : 255.255.255.255
yiaddr : 0.0.0.0
2. DHCP offer : DHCP server가 브로그캐스팅으로 dhcp offer msg 전송하여 ip주소 할당
src : 223.1.2.5 // 서버의 ip주소
dest : 255.255.255.255
yiaddr : 223.1.2.4 // 할당할 주소
3. DHCP request : host는 브로드캐스팅으로 수신받은 해당주소를 사용하겠다는 dhcp request msg 전송
src : 0.0.0.0 // 아직 사용x
dest : 255.255.255.255
yiaddr: 223.1.2.4
4. DHCP ACK : 서버는 브로드캐스팅으로 해당 ip 사용 확인하는 dcp ack msg 전송
src : 223.1.2.5 //서버의 ip
dest : 255.255.255.255
yiaddr : 223.1.2.4
DHCP가 포함하고 있는 정보
1. yiaddr
2. address of first-hop router
3. dns server 이름,주소
4. network mask
NAT, network address translation
2^32개의 ip주소가 부족해지자 이를 해결하기 위한 임시방편으로 외부에서 통용되는 하나의 public ip와 local network에서 통용되는 여러 private ip를 라우터가 NAT translation table을 가지고 변환
NAT 특징
local network는 외부에서 통용되는하나의 ip만 사용
local network의 내부는 외부와 분리됨
local network의 디바이스들의 ip를 마음대로 설정가능
외부의 isp가 바뀌어도 local network에는 영향x
외부에서는 local network의 ip를 볼 수 없음 ->보안
구현조건
-NAT router는 local network안에서 밖으로 나가는 모든 datagram의 출발지 ip와 포트번호를 NAT ip와 포트번호로 변환
-변환정보를 NAT router 내부의 NAT translation table에 저장
-밖에서 들어오는 datagram의 NAT ip와 포트번호를 NAT router가 table을 보고 local network의 ip와 포트번호로 변환
NAT 약점
: 라우터는 3계층까지만 관여하는 장비인데 4계층에 해당하는 ip정보를 핸들링 -> 3계층 장비가 4계층에 침범하는 것은 네트워크의 계층화 원칭 위반
NAT 문제점
: 외부의 client가 local network 내부의 서버에 연결하고 싶은데 내부는 unvisible하므로 연결 불가능
=> 해결방안1 : NAT table을 외부에 공개 -> NAT translation table의 정보가 변경되는데 변경전 정보를 이용하면 연결 불가능
=> 해결방안2 : UPnp 프로토콜 사용 -> 자동으로 public IP를 privite ip로 맵핑하는 서비스제공
=> 해결방안3 : relay가 NAT client와 외부 client에 각각 연결되어 두 연결사이의 패킷 중계
ICMP
에러발생시 라우터가 host에게 보고할 수 있도록 ip대신 사용되는 프로토콜
icmp msg : type + code + description
traceroute : 경로추적 과정
TTL 값을 1부터 하나씩 증가시키면서 udp 세그먼트를 목적지로 전송
n번째 datagram이 n번째 라우터까지 도달하면 n번째 라우터는 (type:11, code:0 -> TTL expired) 메시지 전송
목적지는 (type3,code3->destination unreachable) 메시지 전송 -> traceroute stop
=> 목적지까지 구간의 정보기록가능
=> n 구간의 딜레이 계산가능
IPv6
32비트인 ipv4가 부족하므로 128비트 주소인 ipv6 개발
ipv6 format -> 강의자료 p82
ipv4 -> ipv6 translation
모든 라우터가 ipv6를 지원하지 않음
해결방안 : tunneling 기법
=> ipv4안에 ipv6를 넣으면 ipv4라우터가 ipv6운반가능
5. routing algorithm
graph abstraction
네트워크를 graph, router를 node, link를 edge로 표현
routing algorithm으로 최저비용경로 탐색
Link state routing algorithm
-node가 global inforamtion(전체 link의 state)을 알고 있는 경우, 한 노드에서 다른 모든 노드로 까지의 경로비용을 계산 할 수있다
-다익스트라 알고리즘 사용 : d(s,z) = min( d(s,y) + w(yz) )
distance vector algorithm
-node가 주변노드까지의 비용정보만 알고있는 경우, 나의 정보와 주변노드가 주는 정보를 가지고 비용 계산
-bellman ford algorithm 사용 : dx(y) = min( cost(x,y) + dv(y) )
=> 인접노드로부터 새 정보가 올때마다 나의 table업데이트
=> 계속 반복하여 업데이트하면 실제비용에 수렴
link cost change
good new : link cost가 줄어드는 경우 -> 짧은 iteration으로 update 가능
bad news : link cost가 늘어나는 경우 -> update를 위해 많은 iteration 필요 : “count-to-infinity problem”
-> 해결법 : poisoned reverse : 방문했었던 노드를 다시 돌아가는 경우 cost를 무한대로 설정
link state algorithm vs distance vector
1. message complextiy
LS : O(nE) : n 노드갯수, E edge갯수
VS : 이웃과 주고받는 것이 전부
2. speed of convergence
LS : O(n^2)
DV : 매우다양, count-to-infinity problem 가능
3. robustness
LS : 각각의 노드는 자신만의 table만을 계산
DV : 이웃 노드가 전달한 잘못된 path cost는 네트워크 전체로 전파됨
Hierachical Routing
- AS, Autonomous System : 공통의 routing protocol을 사용하는 라우터 집합
- intra-AS routing protocol : AS에서 통용되는 routing protocol
- inter-AS routing protocol : 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol
- gateway router : 서로다른 AS들을 연결하는 라우터
6. Routing in the internet
intra-AS routing protocol
: AS에서 통용되는 routing protocol
ex) RIP, OSPF
inter-AS routing protocol
: 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol / ex) BGP
RIP
-distance vector algorithm 사용
-30초마다 이웃들과 정보교환 (advertisement는 UDP)
-link failure : 180초동안 advertisement 없으면 해당링크는 버림
OSPF
link state algorithm 사용
OSPF advertisement는 AS전체로 전파
BGP
inter-AS routing protocol
eBGP : 이웃 AS들끼리 subnet reachability 정보제공
iBGP : AS 내부의 router들에게 reachability 정보 전파
intra-AS vs inter-AS
1. policy
intra-AS : 단일 admin이므로 policy decision 필요x
inter-AS : admin은 트래픽경로 어떻게 설정될지 control
2. performance
intra-AS : 성능이 중요
inter-AS : 성능보다 policy가 더 중요
7. Boradcast and Multicast routiong
broadcast routing
패킷을 다른 모든 노드들에게 전달
방법1 : flooding : broadcast packet을 받은 노드는 인접노드에게 복사하여 전송 -> cycle&broadcast storm문제
방법2 : controlled flooding : 내가 이전에 받았었던 패킷이면 broadcast x
방법3 : spanning tree : cycle이 없고 모둔 노드를 포함하는 spanning tree를 만들어 노들의 경로를 따라서 패킷을 forwarding -> kruskal, prim
multicast rouiting
특정 다수 node에게 동일한 패킷을 전달하기 위해 multicast tree를 구성하는 routing protocol