CS log
Network layer : Route aggregation & NAT 본문
지난 시간 배운 내용
Layer3의 Internet Protocol. 다 이걸 씀. IPv4 메시지 필드를 봤음.
Pop Quiz
end host에서 출발한 IP Packet의 Payload에는 반드시 4계층에서 보낸 정보만 들어있다.
⇒ F. end host에서 만드는 Ping이라는 프로토콜은 3계층에서 만든 ICMP 메시지를 실어서 간다. routing protocol 메시지가 있을 순 없지만, end host의 IP Packet Payload에서는 TCP segment 혹은 UDP Datagram 혹은 3계층에서 다루는 ICMP 메시지가 들어갈 수 있다.
host에선 routing protocol 메시지를 handling 하는 software가 running 하고 있다.
⇒ F. Control Plan에 있는 sw로, host엔 없으며 NW 라우터에만 있다. Control Plan에 있는 ICMP 프로토콜 만이 host에서 running 가능하다.
어떤 프로토콜의 헤더를 보면, 그 프로토콜이 무슨 일을 하는지 알 수 있다. IPv4 헤더 field는 고정되어 있다.
⇒ F. option 때문에 headerlength라는 필드가 있다. IPv4 헤더는 고정되어 있지 않음. 단, option은 user message에서 사용하지 않고, control message를 주고 받는 라우터에서 사용하기 때문에 주로, user에서 출발하는 IP Packet의 헤더는 20byte다.
반면 IPv6는 헤더 필드가 고정되어 있음.
Output queue에서 차별적으로 queue를 두어 선별적으로 priority scheduling을 해줄 것이냐에 관련한 이슈
⇒ Network neutrality에 관한 이슈
IPv4 addressing은 32 bit. 처음엔 Class 단위로 addressing을 했다가, Classless한 addressing으로 CIDR 방식을 사용. address format:a.b.c.d/x (x는 subnet mask = network prefix, 앞에서부터(왼쪽부터) 몇 bit를 subnet으로 사용하냐, 앞에서부터 x bit는 라우팅하는데 사용하겠다.) → 앞에서부터 x bit만 보고, 어떤 subnet인지 판단해서 FIB table에서 mapping 되는 것을 보고 output port로 넘겨주겠다.
network prefix가 x bit다. = network에서 라우팅할 때 앞에서부터 x bit를 보고 한다.
subnet part가 같다 = 같은 subnet에 있다 = 라우터를 사용하지 않고 메시지 전달이 가능하다.
라우터에 링크가 네 개 붙어있다고 하면 라우터는 4개의 subnet을 handling 하고 있는 것이다.
= 라우터는 서로 다른 IP를 가진 4개의 port를 가지고 있다.
한 홉을 지나간다 = 한 라우터에서 다른 라우터로 넘어간다 = 다른 subnet으로 간다.
Quiz
⇒ 같은 네트워크에 있는지 없는지를 판별하려면 subnet mask를 알아야 한다. 이걸 알려주고 다음의 IP들이 같은 네트워크 상에 있는지 물어봐야 함.
subnet mask가 24이므로 앞에서 24bit가 같으니 훑어볼 필요 없이 같은 network에 있다는 것을 알 수 있음.
→ 같은 subnet에 있으므로 얘네끼리 통신할 때는 라우터가 필요 없다. hub(버퍼x)나 switch를 통해 통신.
subnet mask를 주어주지 않았으면 "알 수 없다."가 정답임.
subnet mask가 /24. 255.255.255.0(PC에서 setting하는 모양)이다는 같은 말.
어떤 network에 물려있는가? 128.119.40.0/24 네트워크에 물려있다.
- /26이라면 255.255.255.192가 subnet mask. 11111111.11111111.11111111.11000000
- 이들은 어떤 subnet에 위치할까?
11011111.00000001.00010001.01000000
11011111.00000001.00010001.01010000
11011111.00000001.00010001.01101010
11011111.00000001.00010001.01110000
⇒ 11011111.00000001.00010001.01 = 128.119.40.64/26 subnet에 위치 - /28이라면 같은 subnet에 있지 않다. 각 subnet에는 몇 개의 host를 할당할 수 있을까? 14개 (2의32-28승 -2)
2의 4승개 - 네트워크 아이디 - broadcast 주소로 쓰는 IP (가입자를 14명 받을 수 있다.) - DHCP로 Dynamic하게 하든, 손으로 setting을 하든 IP를 setting 할 때, 해야 하는 세 가지.
- 내가 사용할 host의 Network Interface Card에 setting할 IP주소
- default gateway router의 IP주소 (첫번째 단에 물린 라우팅 프로토콜이 있는 라우터. host엔 x)
- LDNS 서버의 호스트 name과 IP주소
- DHCP는 Server와 Client구조로 되어있는 UDP위에서 작동하는 Layer 5 protocol. 특이하게 server만 well-known port를 주지 않고 client도 well-known port를 줬음. 그 이유는?
- IP주소가 아직 없어 서버는 응답시 broadcast하기 때문에, OS가 random하게 할당한 protocol을 사용하고 있다면 같은 port를 사용하는 다른 host가 응답을 받을 수 있음.
IP addresses: how to get one subnet part?
내가 속한 subnet의 상위 Provider ISP에서 받아오면 됨. 걔는 걔 위에서 받음.
만약 상위 ISP로부터 200.23.16.0/20 이라는 subnet을 할당 받았는데 이화여대 내에서 subnet을 8개로 구분하기 위해 3 bit를 더 써서 23bit를 subnet mask로 만들었음. (2^3 = 8)
Hierarchical addressing: route aggregation
이화여대의 8개의 서로 다른 subnet을 알려주기 위해 상위 Provider ISP router에게 메시지를 보내 줘야 함.
200.23.16.0/20으로 route aggregation 후 보내줌. (어떤 8개의 subnet이든 앞에서부터 20bits는 같기 때문)
→ 상위 Provider ISP(Internet이라고 되어있는 부분)는 사용자의 접속 요청이 들어오면 IP주소 앞의 20 byte만 보고 이화여대로 보내버린다. 이화여대는 뒤를 보고 8개 중 어떤 subnet인지 가리면 됨. 상위 Provider ISP까지 나머지 3bit를 더 볼 필요가 없다 = aggregation
- Router advertises subnet = will deliver(forward) IP pkts whose dest. IP address belongs to the subnet.
= 어떤 ISP가 자신의 상위 ISP에게 route 정보를 알려줬다 ⇒ 상위 ISP는 이 route 정보에 해당하는 subnet에 속한 어떤 host에 해당하는 destination IP 주소를 달고있는 pkt을 주면 처리해준다.
- 만약 8개의 subnet 중 하나가 다른 subnet으로 이사(아래쪽에 ISPs-R-Us)갔는데 상위 ISP가 200.23.16.0/20 으로 들어온 메시지를 기존(이화여대)으로 보내버린다면?
⇒ 그럴 일 없음. FIB table로 match시 longest prefix match: 더 길게 match되는 subnet에 보내줌. ( ISPs-R-Us)
/23과 match되는 IP로의 메시지가 상위 ISP에 들어왔다면 더 길게 match되는 /23 subnet에 보내줄 것.
Destination-based forwarding
FIB table은 decentralized 되어 가입자 보드가 달려있는 port에 있음. Link interface = port #
/21 network.
0번 port에는 —.—.16.0부터 —.—.23.255까지의 host IP address가 할당 됨.
예를 들면, 000 00000000 ~ 111 11111111 까지는 0번 port로 가라
Longest prefix matching
longest prefix matching이기 때문에, advertising할 때 route aggregation이 가능함.
각각 0번, 1번 port로 나간다.
Pop Quiz
- 20-bit subnet mask 주소 block을 할당받은 ISP가 있다. 이 ISP가 8개의 회사에 주소를 공평하게 나누어 주려고 한다. 각 회사의 subnet mask는 몇 bits가 되어야 할까? 20+3 = 23 bits
hint: 8개의 각 다른 네트워크를 표현하려면 몇 bits가 필요할까? - 그렇다면 각 회사는 몇 개의 IPv4 주소를 할당할 수 있는가? 2의 9승 - 2 = 510 (왜 9승이냐면, 32-29)
- 어떤 ISP가 128.119.40.64/26 block의 주소를 소유하고 있을 때, 4개의 subnet을 생성하려면, 네 개의 subnet의 prefixes (a.b.c.d/x)는 어떻게 될까?
64 = 001000000(2), 4개의 subnet을 생성하려면 상위 ISP에서 받은 subnet에서 2bit가 더 필요.
64는 00까지니까 2bit 더 쓰면 0000, 0001, 0010, 0011 네 개의 subnet으로 나눌 수 있음
⇒ 네 subnet 주소는 128.119.40.64/28, 128.119.40.80/28, 128.119.40.96/28, 128.119.40.112/28 - 8bits.8bits.001//000000 가 바로 128.119.40.64/26
- 여기서 001//000000, 001//010000, 001//100000, 001//110000 이렇게 두 비트를 더 쓴 것!
IP addressing: the last word ...
IP주소는 상위 ISP에게서 받아옴, 최상위는 KRNIC(한국인터넷정보센터)에서 받을 수 있음.
Network Address Translation (NAT)
private IP address는 인터넷에 나가지 못 하는 non-routable address. 이를 routable한 Public IP address로 convert해주는 것을 NAT라고 한다.
NAT or NAPT (Network Address Port Translation)
외부로는 private IP address로 나갈 수 없음. 10.0.0.-/24는 전세계에 엄청 많을 수 있음. 나만 쓰는 주소 X
그럼 어떻게 바꿀 것이냐? local network를 떠나 Internet으로 가는 애들은 이 주소를 달고 갈 수 없기 때문에
공식적인 IP주소를 딱 하나만 받아(138.76.29.7) 나갈 때 무조건 이 주소를 대표로 바뀌어서 나감.
다 똑같은 주소로 나가면 어떻게 구별? 내가 가진 라우터가 NAPT를 지원하여(middle ware의 부가기능) port로 구별을 시킴
port는 4계층에서 넣는 건데 3계층 주소 구별을 위해 port를 사용. 4계층에 넣는 port 번호로 주소를 구별
port 번호는 16bit → 약 65535개의 client들이 동시에 하나의 public address를 쓸 수 있다.
NAT 사용 이유
- 모든 IP-capable device는 public routable IP address가 필요하다.
- IP에게 너무 많은 범위의 IP를 받을 필요가 없고 just one IP address for all devices가 필요할 때
- 주소가 노출이 안 되니 security 보장, 공격을 받지 않을 수 있음.
- 내 local network 안에서 device의 주소를 마음껏 바꿀 수 있고, 상위 ISP에게 알려줄 필요도 없음.
NAT: network address translation
scenario A. Client initiates(→) Server
- private network에 client가 있어서 먼저 public에 있는 server에게 initiate 하는 경우
- 라우터에는 NAT가 달려있어 source IP가 Internet으로 나갈 수 없다는 것을 인지
- 라우터는 하나의 port는 private, 하나의 port는 public으로 setting 되어있어 NAT translation table에 source 주소와 port번호를 기록, public IP로 바꿔줌.
- 어떤 source IP가 오든지 하나의 public IP로 바꿔줌.
- 즉, 라우터가 IP 패킷을 까서 source주소를 바꾼다는 의미.
- ------- 바꾼 뒤의 상황은?-------
- 서버가 대답할 때는 바꾼 source IP가 destination IP로 세팅 되어 도착할 것.
- 라우터에 incoming traffic이 들어왔으니 table에 검색
- destination IP를 다시 private IP로 바꿔줌, 4계층의 port번호를 보고 5001을 3345로 바꿈
- 3345port에 있는 process에게 return
NAT is controversial - 싫어하는 사람들 주장
- IPv6 쓰면 되지 NAT를 왜 쓰는가?
- layer 3에서 4계층의 port 번호를 보며 layering을 망가뜨리는 것이 옳은가? 원래 포트넘버는 4계층껀데 왜 3계층에서 써??
- end-to-end connectivity를 파괴. 엄밀히 말하면 end to end connection이 아닌 router에서 끊긴 후 다시 보내주고 있기 때문에
- server를 home network 안에 두는 경우 (Ex. P2P) 생기는 문제
private network 안에 private IP address를 가진 어떤 peer가 server가 되면, public network IP를 가진 어떤 client가 host로 들어올 수 없음 ⇒ NAT traversal techniques
NAT traversal techniques
- Relaying : Private Server와 Client는 모두 중앙의 Relay 서버와 통신. Public으로 접근해 문제가 없으나 비효율적.
- Connection reversal : Private Server는 중간의 Peer C에게 Public Client가 connection을 initiate하도록 요청. 좀 더 효율적
Keywords
- What is the route aggregation?
- How to find the output port using the longest prefix match. (slide #52)
- Why and when do we need the NAT technology?
- What are drawbacks of NAT?
- What are differences between two NAT traversal technologies, relaying and connection reversal?
--- Relaying : there is no direct connection between a client, C and a server, S and all messages are forwarded via a relay between C and S.
--- Connection reversal : C and S are finally directly connected and exchange messages.
'CS > Computer Network' 카테고리의 다른 글
5.1 Path selection (0) | 2023.12.12 |
---|---|
Network Layer ; IPv6 & SDN (0) | 2023.12.12 |
Network layer ; DHCP Protocol (0) | 2023.12.08 |
Network Layer : Internet Protocol (0) | 2023.12.07 |
Network Layer : The data Plane 총정리 (0) | 2023.12.06 |