네트워크

[컴퓨터네트워크] week5 - 네트워크 시스템과 다중화

haerangssa 2024. 12. 2. 00:27
네트워크 시스템 구현

 

1. 네트워크 HW/SW 구현

- System on Chip 구조

 
- System on Chip 블록 다이어그램

 
 

2. 네트워크 HW/SW 동작

- 송신 호스트: 데이터그램을 프레임으로 캡슐화 & 에러 검사 비트 추가
- 수신 호스트: 에러 검사 & 데이터그램을 추출하여 상위 계층으로 전달


네트워크 다중화

 

1. 다중화

1) 다중화(Multiplexing): 네트워크 전송로 하나에, 다수의 저속 데이터 신호 여러개를 중복시켜 고속 신호로 전송하는 방법.
- 다중화는 전송매체 한정
- 충돌 > 오류 > 재전송 > 에너지 증가 > 스루풋 감소  :  비효율적인 방법
2) 다중화 장치(Multiplexer): 여러 개의 데이터 신호를 하나의 전송로를 통해 동시에, 직렬로 전송하는 장치
- 다중화 장치 예시: 컴퓨터, 랩탑, 스마트폰 등
- 다중화 장치의 입력들은 주파수, 시간, 공간, 언어(코드)으로 분할이 가능.
 
 

2. 다중 접속 기술(Multiple Access Control)

- 네트워크 각 노드는 다른 노드들과 전송매체를 공유하며 데이터 송수신 가능.
- 어떤 노드가 송신하면 다른 노드가 수신해야 함
 
+ 5G: 한 명의 사용자가 쓰는 단말이 2~30개로 많을 것이라 예상하고 만든 기술. 
> Data Traffic이 증가하는 상황에서 최적화 시켜주는 기술
>> 다중 접속 기술의 영향이 커진다면(단말이 많아진다면), 5G의 장점이 체감될 것임 !
 
 

3. 다중화 기법

- 다중 호스트가 송신측 >수신측으로 회선을 공유하여 데이터를 전송할 때, 데이터를 구별하고 회선을 공유하기 위한 기준

통신 자원의 할당 방법 다중화(Multiplexing) 다중 접속(Multiple Access)
주파수 분할: 서로 다른 주파수 할당 주파수 분할 다중화 FDM
(Frequency Division Multiplexing)
주파수 분할 다중접속 FDMA(Access)
시 분할: 서로 다른 시간 슬롯 할당 시 분할 다중화 TDM
(Time Division Multiplexing)
시 분할 다중접속 TDMA
부호 분할: 서로 다른 코드 할당 부호 분할 다중화 CDM
(Code Division Multiplexing)
부호 분할 다중접속 CDMA
/ 2G, 3G가 사용하는 접속 방법

 
1) 주파수 분할 다중화 FDM 
데이터 링크(채널)의 주파수 대역폭을 여러 개의 작은 주파수 대역으로 나누어, 여러 개의 부채널로 재구성하여 여러 호스트에 할당해 동시 전송하는 방식 > 공간분할과 효과 비슷.
(조 나눔)
 
송/수신자들의 주파수가 다름 > 시간이 같아도 동시 전송이 가능 !
* 그러나 가까우면 간섭이 생기기 때문에 주파수간에는 어느 정도 간격이 필요함.

일정한 간격은 X

 
2) 시 분할 다중화 TDM
채널에 할당된 데이터 전송 허용시간을 일정한 시간 슬롯으로 나누고, 부채널을 순차적으로 할당해 사용하는 방식.
부채널에 전송할 데이터가 없는 경우에도 시간 슬롯이 할당되어 낭비 발생
(손 든 사람 먼저 발표)

 
3) 코드 분할 다중화 CDM
사용자가 상호 약속에 의해 고유 부호를 할당받아 서로 직교하는 부호를 바꿔가며 접속하는 방식.
주파수 대역확산 기술(CDMA 기술)에서 유래하여, 위성통신, 군용 비밀유지, 방해 전파 방지 위한 기술을
미국 퀄컴이 2G, 3G 이동통신, 디지털 셀룰러 전화에 적용. 
(언어를 바꿔 대화. 동시에 말 하기가 가능.)
 
+ 2G, 3G에서는 CDMA를 사용하지만, 4G, 5G에서는 전송속도에 한계가 존재. >> OFDM 사용

 
 

3. 다중 접속 방식 구현 & 동작 예시

1) FDMA : 큰 방을 여러 방으로 나눈 뒤, 원하는 사람끼리 각 방에서 대화하는 방식
주파수의 높낮이로 주파수가 빠른지 느린지 판단이 가능. + 보호대역이 필요(주파수 간 간격)
* 그러나 주파수는 사용하는 만큼 사용자에게 부과되며 비싸기 때문에 낭비가 될 수 있다.

 
2) TDMA : 큰 방에 여러 명이 있지만, 각 사람에게 지정된 시간에만 발언권을 주는 방식
시간을 나눠주는 것.  /  1,2,3,1,2,3,1,2,3,.... 반복됨
다음 슬롯에서 얘기할 것이 없어도 일단 지나가기 때문에 낭비임. 

 
3) CDMA : 큰 방에 여러 나라 사람들이 있어서, 각 나라 사람들끼리 자기 나라 언어로 대화하는 방식.
- 은닉성이 좋아 군사용으로 많이 사용했음. 
- 2G, 3G가 사용하는 다중 접속 방식
- 스루풋 성능이 좋지 않아 4G부터는 OFDM으로 넘어감.

* Spread Codes : 어떤 언어(코드) 사용할지 정해서 곱해줌. / 비밀키 같은 것. 특정 패턴이 섞여있어 구분 가능.
* 수신측은 서로 다른 코드가 섞여 들어옴. 하지만 스프레드 코드의 패턴을 알아 원하는 언어를 추출할 수 있음.
 
 

4. 다중 접속 방식의 분류

 
                                         다중접속
                                        /             \
                      경쟁 방식                     비경쟁 방식
                       /         \                            /         \
        ALOHA    CSMA/CD       토큰버스     라운드로빈
                        CSMA/CA          토큰링           폴링방식
 
1) 경쟁방식: 눈치게임 하며 전송
- Carrier Sensing을 하지 않는 방식 : ALOHA
- Carrier Sensing을 하는 방식 : CSMA/CD(이더넷), CSMA/CA(와이파이)
 
2) 비경쟁 방식 : 중앙에서 통제해주면 전송 / 어어 그래 1번 니가 해라
- 예약방식 : Token Bus, Token Ring
* 토큰 유무로 data 전송 여부 결정(예약) > 비효율적이지만 관리에 용이함.
 
- 비예약방식 : 라운드로빈, 폴링방식
* 스케줄링 하는 것이 특징이다.
* 라운드로빈은 순서대로, 폴링은 손들면 발표하는 방식
 
 

5. 경쟁 방식 기반의 다중 접속 기술 - ALOHA

- 하나 이상의 노드가 동시에 전송하면 충돌(collision)발생. / 시간 공간 주파수로 나눠도 충돌은 반드시 발생하게 되어있다.
- 충돌 확률을 줄이기 위해, 다수의 호스트가 채널의 상태를 감지해서 충돌을 피하는 매체접근방식 사용 > 눈치게임(Carrier Sensing)
- ALOHA > Slotted ALOHA > CSMA/CD > CSMA/CA  순서로 발전
 
1) ALOHA(Additive Links On-line Hawaii Area)
- 1971년 하와이 대학에서 개발한 컴퓨터 네트워크 기술
- 한 노드에게 보낼 데이터가 있다면 무조건 전송 > 잘 수신했다면 ACK 회신 > 송신 노드는 정해진 시간동안 ACK 받지 못하면(time-out) 충돌 발생으로 판단 > 랜덤 시간을 기다린 후 재전송 > 비효율적
- 데이터 전송하는 노드의 수가 증가할 수록 충돌 횟수가 증가하여 채널 사용률이 저하됨.


+ 네트워크 성능 분석을 위한 수학
[푸아송 분포]
- 일정한 시간 동안 발생하는 어떤 사건의 횟수를 확률적으로 모델링할 때 사용
- 패킷도착횟수, 콜센터에서 전화가 걸려오는 횟수, 한시간에 평균적으로 몇명이 오는지  등을 모델링하고 분석할 때 사용
>> 규칙성 있을 때 잘 맞음. 독립성이 보장됨
 
- n 개의 패킷이 시간 인터벌 t 안에 도착할 확률

P(0)은 네트워크의 특정 시간 동안  "데이터 전송이 없을 확률"

+ [예제]
한 콜센터에 1분당 평균 2건(lambda t) 전화가 온다. 1분 동안 3건(n)의 전화가 올 확률?
+ e = 2.718
p(3) = (2^3 * e^-2)/3! = 8*0.1353/6 = 0.1804 (약 18%)


2) ALOHA의 Throughput 분석
- n개의 패킷이 두개의 packet time 안에 도착할 확률 (푸아송 분포)

 P(0)
= 다른 노드들이 패킷을 전송하지 않을 확률
= 한 노드가 하나의 패킷을 충돌 없이 성공적으로 전송되는 확률
= 푸아송 분포에서 n이 0인 경우
 
ALOHA의 스루풋
패킷 전송 성공 확률 X 트래픽 로드 G
S = GxP(0) = Gx(e^-2G)
 
ALOHA의 Throughput S는 G가 0.5일 때 최대 = 0.184
 
 
3) Slotted ALOHA 기반 다중 접속
- 시간을 슬롯 단위로 정의해서, 슬롯이 시작할 때만 패킷 전송을 허가해 충돌 구간을 줄임.
> 아무 때나 보낼 게 있으면 일단 전송해서 충돌났던 문제를 해결

 
4) ALOHA와 Slotted ALOHA의 Throughput 비교

데이터 전송량이 많아지면 공식 상 수치가 증가해야하짐나 사실 떨어진다.
왜일까?
일정 양 만큼 증가하면 최적지점이 되지만, 그 이상 증가하면 충돌 위험도 같이 증가하여 throughput이 감소한다.
> 적정 수준 정보량이 BEST !
 
 

6. 경쟁 방식 기반의 다중 접속 기술 - CSMA(Carrier Sense Multiple Access)

- ALOHA는 일단 전송하고 충돌하는지 확인하지만, CSMA는 전송 전에 남들이 보내는지 확인하는
LBT(Listen Before Talk)과정 = Carrier Sense 을 거침.

유형 특징
CSMA( Carrier Sense Multiple Access ) 전송 중이지 않을 때만 전송 시작
/ 알로하는 일단 그냥 보냄
CSMA/CD( Collision Detection ) 충돌이 감지되면 전송 중단
CSMA/CA( Collision Avoidance) 충돌이 감지되면 랜덤 시간 기다리고 재전송
CSMA/CA with ACK FCS(체크섬,CRC)를 활용하여 패킷에러를 체크하고,
에러 없이 수신 시 ACK 송신 O, 에러 발생 시에는 ACK 송신 X
CSMA/CA with RTS/CTS 데이터 패킷 충돌 발생하면 손실이 크므로,
짧은 패킷 RTS와 CTS로 전송 가능한 상태인지 확인 후,
주변 노드에 데이터 전송 시간을 알려주며 기다리게 하여 충돌을 방지.
/ 무선에서 충돌확률 높아지는 문제 해결을 위해 발명

 
- 노드 1, 2, 3이 전송 중일 때, 노드 4, 5는 채널 사용을 감지(Sense)하고 충돌을 회피(Collision Avoidance)함.
+ ALOHA와 CSMA의 차이는 Carrier Sensing의 유무

 
1)  Persistent method 
ALOHA는 네트워크의 어떤 노드가 전송 매체를 사용 중인지 모르지만, CSMA는 채널이 사용 중인지 확인함. > Persistent method 
- 1-persistent
전송 매체가 사용 중인지 상태를 계속 확인하다가, 아무도 사용하지 않고 있다면 바로 전송
- non-persistent
아무도 전송매체를 사용하고 있지 않다면 데이터를 바로 보내고, 사용 중이라면 임의의 시간 기다렸다가 다시 상태를 확인.
- p-persistent
전송 매체가 사용 중이면 기다렸다가 상태를 다시 확인하고, 아무도 사용하고 있지 않다면 p의 확률로 데이터 전송

 
 
2) CSMA/CD = 이더넷 방식( 유선 )  // 충돌 감지
- 데이터 전송 후 충돌이 나면 랜덤 시간을 기다림
- persistent method 중 하나를 선택하여 충돌 방지

 
- CSMA 단순화된 개념도

 
 
- 정상: 송신 종료까지 전압이 규정 범위 안에 있다면 정상 데이터 전송으로 판단
- 충돌: 송신 도중에 전압이 설정 범위 벗어나면 충돌 발생으로 판단
- 잼: 충돌 발생 시, 송신을 정지하고 잼 신호를 송신하여 persistent 방법에 따라 재전송

 
- 경쟁 방식 기반 다중 접속 기술들의 Throughput 성능 비교

 
3) CSMA/CA (무선랜) // 충돌 회피
- 네트워크의 모든 노드는 동일한 채널(medium)을 Listen함.
- 데이터 전송 전 채널이 비어 있는지 확인함. = Carrier Sense(눈치게임)
- 전송할 데이터가 있을 때, 미디엄(채널)이 비어 있으면 전송
- 다른 노드가 채널 사용 중이라면, 대기 했다가 다시 시도. = 눈치게임 실패
- 대기 시간을 무작위로 설정(Random Backoff)하여, 여러 기기가 동시에 재시도 하지 않도록 함. > DIFS라는 정해진 시간 동안 대기

* DIFS: 채널이 사용 중이지 않을 때, 제일 먼저 기다리는 일정한 시간
* Contention Window: DIFS 이후 기다리는 슬롯단위 랜덤 시간. (표준에서 일정 범위 내에서 뽑음)

contention window의 범위를 크게 하는지 작게 하는지에 따라 충돌 확률이 결정됨. 
그러나 숫자를 너무 크게 두면 충돌 확률은 줄지만 불필요하게 오래 기다려야 함. >> 비효율적
contention window 값이 정해지면, 역으로 카운트 하여 0이 될 때 데이터를 전송한다.

 
 
4) CSMA/CA with ACK
- 수신 노드가 데이터를 정상적으로 수신하면, 채널 센싱할 필요 없이 즉시 ACK를 전송한다.
- 데이터 수신 후 SIFS 시간 안에 ACK 전송
- ACK 손실되면 송신 노드는 데이터를 재전송함.

* SIFS (Short IFS) : 가장 짧은 대기지연 시간 (가장 높은 우선순위)

CSMA/CA에서 ACK만 추가된 것. 
순서는 동일하다. 

1. 채널이 비었음을 확인
2. DIFS 일정시간 기다림
3. Contention Window 랜덤시간 기다림
4. 데이터 전송
5. SIFS 일정시간 무조건 기다림
6. SIFS이후 ACK 회신후 이 과정을 반복

 
스루풋 아래 사진 매우 중요 !!!!!!!!!!!1

 

5) CSMA/CA with RTS/CTS

- 송신 노드가 RTS(Request to Send)를 전송하여 데이터를 전송해도 되는지 확인 요청을 하면,  수신 노드가 CTS(Clear to Send)를 전송하여 데이터 수신이 가능한 상태임을 알려줌. > RTS와 CTS를 교환한 후 Data 전송하는 예약시스템. (ACK처럼 짧음)
- RTS, CTS는 데이터 전송시간 동안 채널을 점유하기 위한 정보를 포함. > 제 3의 노드들은 RTS, CTS를 수신하면 해당시간 동안 아무것도 전송하지 않음. 

 내가 ~~시간 만큼 전송할 거니까 너희는 아무것도 보내지 마~^^

 

* RTS: 나 지금 데이터 전송해도 돼?
* CTS: 그래 보내라 ~  

1. 채널이 비어있음 확인
2. DIFS 기다림
3. Contention Window 기다림
4. 원래 바로 Data 보내지만, 이 순서에서 RTS 송신
5. SIFS 무조건 기다림
6. CTS 회신
7. SIFS 무조건 기다림
8. 데이터 전송
9. SIFS 무조건 기다림
10. 어 그래 잘 받았다 ACK 회신

이 과정 반복

 
 
+ Carrier Sensing에는 Physical, Virtual 두가지 방식이 있다.

[물리적 감지] - (Physical Carrier Sensing)
물리계층에서 채널상태를 감지하며 이를 MAC 부계층에게 알려주게됨

[가상적 감지] - (Virtual Carrier Sensing)
전송채널을 확보한 노드는 송출 프레임 내에 채널이 점유될 시간을 알려줌.
 > NAV에 의한 시간 타이머로 매체사용 여부를 논리적으로 알게 함

 
- RTS와 CTS 패킷은 데이터와 ACK를 전송하는 시간인 NAV(Network Allocation Vector)값을 포함하고 있음.
- 다른 노드들(그림의 "Other nodes")은 NAV 만큼 타이머를 설정하여 대기

 

 
7. 무선 네트워크의 숨겨진 노드 문제 (hidden node)

: 무선 네트워크에서는 여러 노드가 공유 채널로 데이터를 주고 받기에 충돌 문제가 발생할 수 있음.
 
1) 두 송신노드 A와 C는 서로 직접 보이지 않는 상황이고, 두 노드는 B에게 데이터를 전송하려고 함.
2) A > B 송신 시, C는 A의 존재를 모르기 때문에 B에게 전송을 시도할 수 있음.
3) A, C가 동시에 데이터를 전송하면 B에서 충돌 발생 !

C는 A>B과정에서의 RTS/CTS>NAV를 보고 데이터를 보내지 않음.

** RTS/CTS의 NAV로 해결 
 
 

8. 무선 네트워크의 노출된 노드 문제 (Exposed node)

: 무선 네트워크에서는 여러 노드가 공유 채널로 데이터를 주고받기에, 한 노드가 불필요하게 대기하는 상황이 발생.
 
1) B와 A가 통신하는 동안, C가 D에게 데이터를 보내려고 함.
2) C는 B의 전송신호를 감지하고, 충돌을 피하려고 전송을 멈춤 (그러지않아도되는데)
3) B의 통신이 C,D에게는 영향을 주지 않으므로 C>D에 문제가 없는 상황이지만, C,D는 불필요하게 대기하게 됨.

네트워크 별로 색이 다름을 헤더에 저장하여, 데이터 동시 전송이 가능하게 함. >> BSS color 전송 방식

** BSS color 전송 방식으로 해결
 
- Exposed node 비율이 증가함에 따른 Throughput 성능
: RTS/CTS 또는 BSS color 전송 방식을 사용하여 불필요한 대기를 줄이고 성능 개선

 
 


꼭 풀어봐야 하는 문제