컴퓨터 네트워크 4 : Network Layer
1. Network Layer: overview
- network layer의 sevice 와 protocols
- sender는 segments(transport layer의 packet)를 encapsulate 하여 datagram(network layer의 packet)으로 만들어서 보내기
- receiver는 segment 를 추출해서 transport layer로 보내기
- network-layer functions
- forwarding
- 라우터 안에서 패킷을 적절한 output 링크로 보내주기
- data plane과 관련!
- routing
- 패킷 경로를 설정하기
- control plane과 관련!
1-1. data plane
- local, per-router function
- forwarding table을 통해 router의 input port로 들어온 datagram이 적합한 output port로 나가도록 하는 것
1-2. control plane
- network-wide
- 전체 packet 전송 과정에서 source에서 destination으로 갈 때 어떤 경로를 통해 갈 것인지 설정
- two control-plane approaches
- 전통적인 방식 : 라우터에 구현하기
- SDN (software-defined networking) : routing 기능을 별도의 서버에 구현하기
1-3. network service model
- 정의 : 송수신 호스트 간 패킷 전송 특성
- 서비스의 예시..
- 보장된 전달
- 지연 제한 이내의 보장된 전달
- 순서화 패킷 전달
- 최소 대역폭 보장
- 보안 서비스
- best effort service
- 보장된 것이 없는 서비스
- 순서 보장 x
- 전송 자체 보장 x
- 지연, 최소 대역폭 보장 x
- cf) QoS (Quality of Service)
2. What's inside a router
전체적인 모습
- Input Ports
- line termination : physical layer의 값 처리 (bit level)
- link layer protocol
- look up, forwarding queueing (decentralized switching)
- 검색기능 (header를 통해 output찾기)
- destination-based forwarding
- 목적지 주소를 보고 forwarding 하기
- 주소값의 범위를 가지고 앞에서부터 비교해서 어느 지점까지 확인해서 output 링크를 정하는 방식
- Longest prefix matching
- 비교한 것이 같을 때 처리하는 방식
- 가장 길게 matching 되는 것 선택하기
- TCAMs 라는 메모리 사용함 (빠르다)
- generalized forwarding
- 다른 정보를 추가로 활용한 forwarding
- Switching
- 정의 : input 링크로 들어온 packet을 올바른 output 링크로 연결하는 것
- switching rate
- 많이 사용하는 방식 세가지
- memory
- 입력포트와 출력포트를 연결하는 system bus에 있어서 메모리라는 중간 매개체를 이용
- packet이 system memory로 복사된 후 보내진다.
- 복사를 해야하기 때문에 속도가 느리다.
- bus
- 공유하는 하나의 bus를 사용
- 동시전송이 안되고, 하나의 input을 처리할때 bus를 독점해야 한다.
- interconnection network
- 동시에 통신을 가능하게 하는 방법
- multistage switch
- exploiting parallelism
- Output Ports
- cf) Input Port queuing
- 입력 대비 switch가 느리게 동작하는 것을 방지하기 위해 존재
- Head-of-the-Line blocking
- 가끔 발생할 수 있는 일을 방지하기 위해 존재함
- Output Port Queuing
- buffering : 꽉 찼을때 버리기
- scheduling discipline : 우선순위를 통해 큐에서 보낼 것 정하기
2-2. buffer management, scheduling
- Buffer Management
- drop : packet을 버리는 방식
- tail drop: 맨 뒤에(꼬리)에 있는것 버리기
- priority: 우선순위 정해서 버리기
- marking : 마킹해두기
- Scheduling
- FCFS : first come first served (먼저 온 것 먼저 보내기)
- Priority : 헤더를 통해 우선순위 구별하기
- low pri와 high pri가 존재해서 low 의 경우 high가 모두 보내진 다음 보내게 되어있다.
- Round Robin
- 큐의 우선순위에 따라 돌아가면서 쓰는 방식
- 각 큐는 같은 가중치를 가진다.
- Weighted fair queueing
- RR의 진화된 방식 -> 많이 사용되는 큐의 가중치를 더 많이 주어서 더 많이 반복되게 한다!
- 최소 bandwidth가 보장된다.
- QoS를 지킨다.
3. IP: the Internet Protocol
- Network Layer: Internet
3-2. addressing
- Intro
- IP address: 라우터나 호스트를 구별하기 위한 식별자
- Interface : 호스트와 물리적 링크 사이의 경계
- Subnets
- 라우터 없이 물리적으로 서로에게 도달할 수 있는 장치 인터페이스
- subnet 주소 예시
- CIDR(Classless InterDomain Routing)
- subnet 주소체계 표기를 일반화 하기
- a.b.c.d/x의 형식
- DHCP(Dynamic Host Configuration Protocol)
- 서버로부터 동적으로 IP 할당받기
- 동작 과정
- DHCP discover를 통해 DHCP 서버 존재여부 확인
- DHCP offer를 통해 사용할 수 있는 IP 주소 알려줌
- DHCP request를 통해 사용하겠다고 알려줌
- DHCP ACK을 통해 IP 주소 사용 확인
- IP 주소뿐만 아니라 첫번째 홉 라우터의 주소나, DNS서버의 정보 network mask등의 정보도 DHCP가 준다.
- how to get IP address?
- IP 주소의 subnet part의 경우는 주소를 바꾸지 못한다.
- 그 뒤에 수정 가능한 부분을 수정하기
- Hierarchical addressing
- route aggregation
- IP 주소가 ~ 로 시작하는 것끼리 묶어두어 더 효율적으로 addressing 할 수 있다.
- 여기서도 long dest prefix에 따라 동작하므로, 만일 1번 ISP의 Organization이 2번으로 간 경우라도 제대로 동작한다.
3-3. NAT(Network Address Translation)
- 정의 : 바깥세상(rest of Internet)으로 나갈 때 사설IP를 진짜 IP로 변환해주는 것
- port# 를 통해 사설 IP를 구별한다.
- cf) NAT는 network 계층인데, port#(transport layer)를 건드리는것은 원칙은 아니지만, 동작하는데 문제없어서 그냥 쓰고 있다.
3-4. IPv6
- IPv6가 나오게 된 동기
- IP 주소의 고갈 (IPv6 -> 128bit)
- speed processing (빠른 처리와 forwarding, IP packet 단순화) -> 간소화된 header
- 서로 다른 flow에서 서로다른 network 처리 (QoS)
- datagram format 특이점 (IPv4와 차이점)
- no checksum, fragmentation, options
- tunneling
- IPv4를 IPv6로 전환하는 과정!
- IPv6를 IPv4처럼 캡슐화 해서 진행
- 예를들어 A->F 경로 중 C,D가 IPv4 터널일때 B->E까지의 경로로 캡슐화해서 진행
4. Generalized Forwarding, SDN
4-1. Match+Action
- 정의
- Match : 목적지의 IP 주소를 찾기
- Action : 패킷을 지정된 출력 포트로 전송
- Generalized forwarding vs. Destination based forwarding
- destination based forwarding은 오직 도착지 주소만 가지고 수행하지만, generalized 는 다양한 헤더들을 통해 action을 수행한다.
- Flow table(forwarding table)
- flow : 헤더값에 정의되어 있다.
- generalized forwarding
- match
- action : drop, forward, modify 등등
- priority : 중복 제거?
- counters : 얼마나 사용했는지
4-2. OpenFlow: match+action in action
- 간단한 forwarding 예시
- load balancing
- firewall
- 요약
- router
- match: 가장 긴 도착지 IP prefix
- action: forward out a link
- switch
- match: 도착지 MAC 주소
- action: forward or flood
- firewall
- match: IP 주소, TCP/UDP 포트#
- action: permit or deny
- NAT
- match: IP 주소, port#
- action: 주소와 port 다시 쓰기
5. Middleboxes
- RFC 3234: "출발지 호스트와 목적지 호스트 사이의 데이터 경로에서 IP 라우터의 정상적이고 표준적인 기능과는 별도로 기능을 수행하는 모든 미들박스"
- Middlebox의 역할
- NAT
- 보안 (Firewall, IDS)
- 성능 향상 (Load balancer, Cache)
- "whitebox" hardware
- network를 sw화 해서 범용으로 쓸 수 있게 만들었다.
- SDN
- NFV(Network Functions Virtualization)
- whitebox위에 어떤 sw를 설치하는가에 따라 다른 역할을 할 수 있도록 만들기
- IP hourglass
- 초기 : IP 가 유일한 network layer protocol
- 중기 : IP, NAT, caching, NFV, Firewall (middle box 들)
- 결론은 Internet의 core를 simple하게 만들고, 복잡한 것들은 Internet edge에 배치하기