이 글은 성공과 실패를 결정하는 1%의 네트워크 원리 책(이도희 역)을 기반으로 재구성한 것입니다.
지난 포스팅에서는 LAN adapter에서 보낸 전기 신호가 어떻게 hub와 router를 거쳐 이동하는지 살펴봤다. 이 글에서는 access 회선과 인터넷 내부가 어떻게 동작하는지 살펴본다.
사실 CS를 공부하는 입장에서 이부분은 크게 중요한 것 같지는 않지만, 그래도 지식을 위해 정리한다.
access 회선
access 회선이란 인터넷과 LAN을 연결하는 통신 회선이며, 종류가 매우 많다. 이 글에서는 ADSL, FTTH만 살펴본다.
ADSL을 사용한 access 회선 (Asymmetric Digital Subscriber Line)
ADSL을 사용한 access 회선은 위 그림과 같은 순서로 인터넷에 흘러간다.
- client가 packet을 만들어 보낸다.
- router에서 MAC header를 붙여 보낸다.
- 인터넷 접속용 router가 해당 packet을 수신한다.
- 인터넷 접속용 router가 IP packet을 추출한다.
- 여기까지 동일한데, 다음 단계부터 조금 다르다. 연결이 어떤 것이냐에 따라 달라진다.
- 인터넷 접속용 router가 PPP, PPPoE, MAC header를 붙이고 송신한다.
- ADSL modem이 packet을 받는다.
- ADSL modem은 packet을 분할해 cell에 저장한다.
- cell은 5byte header를 가지고 뒤에 48byte data가 이어지는 덩어리이며, ATM(Asynchronous Transfer Mode)에 사용된다.
- cell을 전기 신호로 바꿔 송출한다.
- DSLAM modem이 전기 신호를 받는다.
- DSLAM modem이 전기 신호를 cell로 바꿔 송출한다.
- BAS가 cell을 수신한다.
- BAS가 cell을 packet으로 추출한다.
- BAS는 이 packet으로부터 PPP packet을 추출한다.
- BAS가 tunneling 전용 header를 붙이고 송신한다.
- tunneling 전용 router가 packet을 받는다.
- tunneling 전용 router가 IP를 추출한다.
- tunneling 전용 router가 추출한 packet을 인터넷 내부로 보낸다.
1번 ~ 4번
여기까지는 앞에서 살펴본 내용으로, client가 만든 packet에 repeater hub나 switching hub를 거쳐 인터넷 접속용 router에 도착하고, IP packet을 추출해 중계 대상을 판단하는 부분이다.
5번 ~ 7번
여기의 내용은 좀 이따 더 자세시 살펴본다. 일단 내용은 순서대로 간다.
8번
LAN의 신호는 0과 1로만 표현하지만 ADSL은 여러 가지가 섞인 파형을 사용한다. 사각형 신호는 뭉개지기 쉽고 주파수 범위가 넓어 잡음이 많아지기 때문이다.
[진폭 변조]와 [위상 변조]를 합쳐 파형을 만든다. 이를 합쳐 여러 정보를 한 번에 보낼 수 있다는 장점이 있지만 너무 단계를 늘이면 잡음으로 인한 판별이 불가능해지기 때문에 적당한 단계로 만든다.
- 진폭 변조는 진폭의 크기에 0, 1을 대응시키는 방법이다.
- 위상 변조는 시작하는 위상에 따라 0, 1을 대응시키는 방법이다.
- 예를 들어 진폭과 위상을 각각 4단계(2bit)씩 하면 총 4bit를 같은 크기로 보낼 수 있다.
또한, 한 가지 주파수만 사용하는 것이 아니라 여러 가지 주파수를 합쳐서 하나의 파를 만들며, n개의 파를 합치면 한 번에 보내는 data size가 n배만큼 늘어난다.
ADSL은 이 특징을 사용해 고속화를 꾀한다. 업로드의 경우 26개 주파수를 합치고, 다운로드는 95개 또는 223개 파를 사용한다. 따라서 다운로드 속도가 더 빠르지만, 다운로드의 경우 진동수가 더 높아 더 멀수록 약해지고, 느려진다.
spliter
ADSL modem에서 신호로 바뀐 cell들은 spliter로 흘러간다. 보낼 때는 전화 회선과 합쳐진 신호를 반대쪽에 흘리기만 하며, 보낼 때는 아무 일도 일어나지 않는다.
단, 수신할 때 spliter가 작동하며, 전화 회선에서 온 신호와 ADSL의 신호를 나눈다. spliter로 들어온 신호는 [전화 신호 + ADSL]이므로 이 신호를 사용자가 듣게 되면 주파수가 높아 듣기 힘들기 때문에 이를 분리한다.
ADSL 신호는 진동수가 높고 전화 신호는 진동수가 낮은 성질을 이용해 분리한다.
분리의 경우 ADSL가 전화기에 미치는 영향을 막을 뿐만 아니라, 전화기가 ADSL에 미치는 영향도 막는다. ADSL 통신 중에 전화가 시작되면 신호를 전달하는 쪽이 변하기 때문에 회선의 상태를 다시 조사해야 하는데, spliter를 사용하므로써 애초에 전화와 ADSL을 분리시킬 수 있다.
spliter → DSLAM
spliter 다음에는 전화 케이블이 있는 connector가 있고, 이곳을 거치면 외부의 배선을 거쳐 전화 케이블로 이어진다. 전화국에 가까워지면 매설된 지하 케이블의 수가 증가하므로 이곳들 동도(일종의 배선 지하도)가 된다.
이 전화 케이블에서 신호가 통과할 때 외부 또는 내부에서 발생한 신호(crosstalk)로 인해 잡음이 발생할 수 있다. 그러나 ADSL의 경우 진동수가 다른 여러 wave들을 합쳐 쓰기 때문에 진동수가 같은 wave들만 영향을 받는데, 이 때문에 사용할 수 있는 신호의 수가 감소해 속도가 저하되기도 한다.
9번 ~ 17번
DSLAM은 여러 개의 ADSL modem을 하나로 합친 것으로, DSL Access Multiplexer의 약자이다.
전화 케이블을 통과해 전화국에 도착한 신호는 배선반과 spliter를 통과해 DSLAM에 도착한다. (9번 과정)
그러면 DSLAM은 wave의 파형을 읽어 진폭과 위상을 얻고, 각각을 bit에 대응시켜 전기 신호를 cell로 복구한다. (10번 과정) 이후 이를 ATM cell로 되돌려 송신한다.
DSLAM이 발송한 cell은 BAS, Broadband Access Server에 도착한다. (11번 과정)
BAS는 cell을 원래 packet으로 되돌리고(위 flow의 12번 과정), 여기서 PPP packet을 추출한다. (13번 과정) 이후 tunneling용 header를 붙이고 송신한다. (14번 과정)
MAC header와 PPPoE header는 BAS에게 전달하기 위해 사용되기 때문에 BAS가 받은 시점에서 의미가 없어진다.
이후 tunnel의 끝에 있는 tunneling용 router가 packet을 받으면 (15번 과정) IP packet을 추출하고(16번 과정), 이 packet을 인터넷의 내부로 보낸다.(17번 과정)
ADSL & DSLAM & BAS
ADSL은 ethernet interface로, etehernet packet으로 송/수신할 수 있다. 그러나 DSLAM은 ATM interface로, ethernet을 쓸 수 없다. 따라서 DSLAM으로 들어가는 정보는 ATM cell로 주고받는다. 반면 BAS는 ATM interface가 존재하기 때문에 ATM cell을 받을 수 있다.
FTTH를 사용한 access 회선 (Fiber To The Home)
광섬유
광섬유는 대충 위와 같은 구조로 이루어져 있으며, 굴절률이 큰 core와 굴절률이 낮은 clad로 이루어져 있다. 이 안에 전반사 임계각보다 작은 각도로 빛을 쏘면 전반사가 이루어져 빛이 나가고, 이 원리를 이용해 한 쪽에서 반대쪽으로 빛을 쏘아 신호를 파악한다. (위 그림에서는 광원 소자 - 광섬유 - 수광 소자로 신호가 이어져나감)
이 때 전반사가 이루어지면 위상이 뒤바뀌는데 이 달라진 위상으로 인해 진폭이 강해지거나, 약해지거나 등의 변화가 생긴다.
- 싱글 모드
single mode만 사용하는 광섬유는 core가 가늘기 때문에 위상이 같은 각도 중 입사각이 제일 작은 빛만 들어갈 수 있다.
때문에 한 번에 진행하는 빛의 양이 적어져 광원/수광소자의 성능이 좋아야 하지만 신호의 변형이 적다는 장점이 있다.
- 멀티모드
core의 직경이 굵어 입사각이 큰 빛도 들어가므로 위상이 같은 빛 중 여러 종류의 빛이 들어간다. 때문에 여러 개의 위상이 하나의 광섬유 안에서 진행한다.
때문에 더 밝고, 광원/수광소자의 성능이 별로여도 된다. 그렇지만 신호의 변형이 일어날 수 있다는 단점이 있다.
이 경우 반사각이 큰 빛은 여러 번 반사되기 때문에 조금 더 느리고, 반사각이 작은 빛은 조금 덜 반사되기 때문에 더 빠르다. 그 결과 신호가 도착하는 시간이 일정하지 않아 신호가 변형되는데, 허용 한도를 초과하면 통신 오류가 발생한다. 때문에 광섬유의 최대 길이는 허용 한도를 초과하지 않는 내에거 만든다.
FTTH
ADSL 대신 광섬유를 사용해 인터넷 접속용 router와 BAS를 접속하는 것이 FTTH이다. 크게 아래 2종류가 있다.
- 하나의 광섬유로 사용자와 전화국을 연결하는 방법 : 이 경우 media converter를 사용해 ethernet의 전기 신호를 광신호로 변환한다. 이 때 파장이 다른 빛은 프리즘으로 분리할 수 있기 때문에 하나의 광섬유에 파장이 다른 여러 개의 광신호를 보낼 수 있는데, 이를 파장 다중이라고 한다.
- 여러 개의 광섬유를 사용하는 방법 : 사용자쪽에 광스플리터를 하나 두고 여기서 광섬유를 분기해 여러 명의 사용자와 연결하는 방법이다. 여기선 media converter 대신 ONU를 사용해 ethernet 신호를 광신호로 변환하고, BAS 옆의 OLT로 흘러간다.
- 이 때 여러 신호가 오면 광신호가 충돌하기 때문에 OLT와 ONU에는 충돌 방지를 위한 송신 타이밍 조정 기능이 있다.
ONU : optical network unit
OLT : optical line terminal
PPPoE와 tunneling
앞에서 ADSL이나 FTTH 등의 access 회선을 통해 인터넷 내부로 packet이 들어오고, 이는 provider가 가진 BAS로 도착한다.
ADSL이나 FTTH 등의 access 회선은 username/pw를 입력해 로그인 동작을 실행해야만 인터넷에 접근할 수 있는데, 이 때 BAS가 로그인을 검증하며, 이 때 PPPoE(Point-toPoint Protocol over Ethernet)을 사용한다. PPPoE는 일반 전화 회선을 사용한 dial-up으로 이용하는 PPP가 발전된 형태이다.
PPP, Point-to-Point Protocol
PPP의 동작은 다음과 같다.
- 사용자가 provider의 access point에 전화를 건다.
- 전화가 연결되면 username/password를 입력해 로그인한다.
- 이 때 RADIUS protocol을 사용해 RAS에서 본인 확인한다.
- 로그인이 되면 인증 서버에서 IP address 등 설정 정보가 돌아오며, 이를 사용자에게 반송한다.
- 이후 packet을 송/수신한다.
이 동작은 TCP/IP 정보를 사용자에게 알리는 데 큰 의의가 있다. 인터넷에 접속할 때는 global address를 설정해야 하는데, 이는 매번 바뀌기 때문에 미리 정해둘 수 없다.
PPPoE, Point-to-Point over Ethernet
이러한 global address 설정이나 로그인 과정이 인터넷에서 꼭 필요한 것은 아니지만 이를 사용해 provider를 전환할 수 있는 이점이 있어 일부 차용해 사용하는 것이 PPPoE이다.
PPP message를 옮길 때는 IP packet을 ethernet packet에 넣는 것과 같이 옮긴다. 이 때 HDLC protocl을 사용한다.
ADSL이나 FTTH 또한 HDLC와 유사하게 옮길 수 있는데, 이 때 형태가 다르므로 HDLC packet 대신 ethernet packet을 사용해 옮긴다. 이렇게 해서 PPP와 유사한 방식으로 PPP message를 옮길 수 있다.
PPPoE는 PPP message를 ethernet packet에 넣어 주고받는다.
tunneling
BAS는 tunneling을 사용해 packet을 운반한다.
TCP에서 다룬 session과 유사하게, BAS와 provider router에 ADSL/FTTH network socket을 만드는 것을 tunneling이라 한다. 방식은 크게 2가지가 있다.
- TCP connection을 사용하는 방법 : tunneling용 router 사이에 TCP session을 만드는 방법
- 새로운 packet으로 만들어 다른쪽까지 옮기는 방법
정리 : access 회선의 동작
- 인터넷 접속용 router에 provider가 할당한 ID/PW를 등록하면 PPPoE의 discovery를 사용해 BAS를 찾는다.
- discovery는 ARP와 유사하며, 연결된 subnet에 BAS가 있는지 broadcast로 질의를 보낸다.
- username/password를 BAS로 보낸다.
- 암호화하는 방식인 CHAP, 암호화하지 않는 PAP 방식이 있다.
- CHAP가 더 안전하긴 하지만 PAP도 안전하지 않은 것은 아니다. password가 흐르는 곳은 BAS와 internet용 router 사이이기 때문에 여기만 도청되지 않으면 된다.
- password 확인 후 BAS에서 user에게 TCP/IP 설정정보를 통지한다. (IP address, DNS server IP address, default gateway IP address 등)
- 인터넷 접속용 router에 BAS port에 global address가 할당되고, routing table에 default gateway가 등록된다.
- 그러면 인터넷 접속용 router가 준비된다.
- 인터넷 접속용 router가 packet을 받으면 default gateway로 보낸다.
- default gateway는 BAS가 알린 default gateway이다. packet은 이전 포스팅의 router와 동일한 방식으로 보낸다.
- 이후 부분은 PPPoE의 규칙에 따른다.
- PPPoE header를 붙이고 MAC header, PPP header를 붙인다.
- packet이 BAS에 도착한다. MAC header와 PPPoE header 제거 후 tunneling으로 packet을 송신한다.
- provider의 router에 도착한다.
unnumbered
router port끼리 하나의 cable로 연결된 상태에서, 즉 1:1의 상태에서는 무조건 반대편에 도착하므로 gateway를 바탕으로 address를 조사할 필요가 없다. 그러면 gateway 항목에 값을 작성할 필요도 없기 때문에 중계 대상 router port에 IP address를 작성하지 않는다. 이를 unnumbered라고 한다.
기존에는 모든 port에 IP address를 할당해야 했지만 IP address가 부족해졌기 때문에 생략하는 것이 관례가 되었다.
private → global 주소 변환
앞에서 언급했듯 BAS와 사용자에게 TCP/IP 정보를 보내는데, 이 정보가 PC로 들어가면 global address로 할당된다. 그러나 인터넷 접속용 router를 사용하면 BAS가 설정한 정보를 router가 받기 때문에 global address가 router에 할당되어 버린다. 이 경우 router가 주소 변환을 진행하며, PC에 private address를 router가 할당하고, router는 주소를 변환한다.
만약 잘작동하지 않는 경우에는 BAS가 보낸 PPPoE message를 PC에게 바로 보내며, 그러면 PC에 global address를 할당할 수 있다. 단, 이 경우에는 방화벽이 필요하다.
PPPoA
PPPoE의 경우엔 PPP message를 ethernet packet에 저장한 후 cell에 저장하는 방식이지만 PPPoA는 PPP message를 그대로 cell에 저장하는 방식이다.
이 경우 MAC address가 없기 때문에 ethernet 전송이 불가능하다. 따라서 BAS와 PPP message를 주고받는 기기인 ADSL modem과 router를 일체화시킨 모뎀을 사용한다.
MTU가 짧아진다는 장점이 있지만, router와 ADSL modem이 고정된다는 단점이 있다.
DHCP
PPPoE는 효율이 조금 떨어지고, PPPoA는 ADSL modem과 router를 일체화시켜야 한다. 이는 PPP를 사용하는 것이 문제이기 때문에, 이를 해결하기 위해서 DHCP, Dynamic Host Configuration Protocol을 사용해 TCP/IP 정보를 BAS에서 사용자에게 보내기도 한다.
Provider
Provider 내부
access 회선을 통과한 packet은 인터넷의 입구인 provider의 router에 도착한다.
인터넷은 위 그림처럼 여러 provider의 network가 합쳐진 것이다. 그림의 NOC와 PoP를 보자.
- PoP, Point of Presence : ADSL이나 FTTH의 회선이 provider의 설비에 연결된 곳이다. 내부에는 여러 종류의 router가 있다.
- NOC, Network Operation Center : provider의 핵심이 되는 장비로써, PoP에서 들어온 packet이 여기로 모인다.
NOC에도 access 회선을 설치하는 경우가 많기 때문에 엄밀하게는 구분할 수 없지만, NOC의 규모가 더 크다고 생각하면 된다.
PoP에는 여러 종류의 router가 설치되어 있는데, 역할에 따라 유형을 구분한다. router의 종류는 아래와 같다.
- access 회선이 전용 접속 회선인 경우는 보통의 router를 사용한다.
- access 회선이 전화 회선이나 ISDN dial-up 회선인 경우는 RAS router를 사용한다.
- access 회선이 ADSL이나 FTTH의 경우는 BAS와 연결하기 위한 router가 있다.
- access 회선이 PPPoA인 경우는 DSLAM의 ATM switch를 거쳐 BAS와 연결되고, 이를 거쳐 router와 연결된다.
provider 간의 접속
PoP router에 packet이 도착했을 때 무슨 일이 일어나는지 보자. provider router는 router끼리의 정보를 routing table에 미리 등록해 둔 상태이고, 이를 사용해 경로를 추출한다.
- web server와 client가 같은 provider인 경우 : provider의 router끼리 정보를 교환하고 경로를 등록한다. (NOC나 PoP 중 아무데나 감)
- web server와 client가 다른 provider인 경우 : provider 끼리 정보를 교환하며, router에 다른 provider의 정보가 있다. 그 경로로 보내고, 다른 provider에게 도착한다.
BGP, Border Gateway Protocol
provider 사이에서 routing 정보를 교환하는 방식으로, 크게 2가지가 있다.
- transit : 모든 경로를 상대에게 알리는 방식.
- peer : 해당 provider가 가지고 있는 정보만 알리는 방법.
위와 같은 예시가 있다고 하자.
D가 E에게 transit하게 정보를 알린 경우, E는 D 뿐만 아니라 A, B, C에 대한 모든 정보를 볼 수 있다.
반면 D가 E에게 peer하게 정보를 알린 경우 E는 D에 대한 정보만 볼 수 있다.
상대 지정
provider는 자신이 가지고 있는 회선에 무임승차를 막기 위해 routing 정보를 교환하는 상대를 지정할 수 있어야 한다.
예를 들어 특정 provider의 회선이 최단경로라면 해당 provider의 회선이 선택될 확률이 높은데, 돈을 내지 않고 이 회선을 쓸 경우 무임승차가 된다.
따라서, 특정 상대를 골라 routing 정보를 교환하는 것이 provider 사이의 정보 교환 방법이다. 때문에 provider는 여러 provider와 접속되어 있고, 만약 하나가 불가능하더라도 다른 provider를 거쳐 목적지까지 packet을 전달한다.
IX : Internet eXchange
앞서 provider끼리는 1:1로 연결된다고 했다. 그러나 provider끼리만 연결한다면, n개의 provider가 연결되기 위해 O(n$^2$)개의 연결이 일어나야 한다. 이를 해결하기 위해 IX를 사용한다.
IX는 여러 provider를 연결하는 중심 경유지이다. 그만큼 사고를 막기 위한 자가 발전 설비 + 내진 구조의 건물 안에 설치한다.
IX는 layer 2 switch를 사용해 provider router와 연결한다.
layer 2 switch와 연결
- provider가 IX의 건물에 같이 있는 경우 : switch에 직접 접속
- provider의 router만 IX 건물 안에 있는 경우 : switch에 router를 연결한다.
- 외부의 provider route를 switch에 연결하는 방식 : 외부의 router와 내부의 switch를 직접 연결한다.
- IX 내의 switch와 연결된 switch를 외부에 두고, 여기에 provider router를 연결한다.
이렇게 provider들이 가지고 있는 router - PoP, NOX를 거치고, 필요 시 IX를 거쳐 client가 요청한 IP address에 해당하는 server에 packet이 도착한다.
잘못된 내용이나 오탈자에 대한 지적, 질문 등은 언제나 환영합니다.
'CS > Network' 카테고리의 다른 글
[Network] 1%의 네트워크 - 6. 마무리 : Web Server Response (0) | 2023.07.24 |
---|---|
[Network] 1%의 네트워크 - 5. Firewall, Proxy, Load Balance (0) | 2023.07.24 |
[Network] 1%의 네트워크 - 3. Cable, Hub, Router (1) | 2023.07.21 |
[Network] 1%의 네트워크 - 2. OS Protocol Stack과 LAN Adapter (0) | 2023.07.20 |
[Network] 1%의 네트워크 - 1. 웹 브라우저가 하는 일 (0) | 2023.07.19 |