6.1 링크 계층 소개
노드: 링크 계층 프로토콜을 실행하는 장치
링크: 통신 경로상의 인접한 노드들을 연결하는 통신 채널
데이터 그램을 종단간 경로의 개별 링크로 이동시켜야 전달 가능
(송신호스트-WIFI 접속점 사이의 WIFI 링크 - 접속점과 링크 계층 스위치 사이의 이더넷 링크 - 링크 계층 스위치와 라우터 사이의 링크 - 라우터 사이의 링크 - 라우터와 링크 계층 스위치 사이의 이더넷 링크 - 스위치와 서버 간의 이더넷 링크)
한 링크에서 각 노드는 데이터그램을 링크 계층 프레임으로 캡슐화해서 링크로 전송
링크 계층 프로토콜 서비스
프레임화: 네트워크 계층 데이터그램을 링크 계층 프레임에 캡슐화.
프레임= 데이터그램이 들어있는 데이터필드 + 여러개의 헤더 필드. 링크 계층 프로토콜이 프레임 구조를 명시.
링크 접속: 매체 접속 제어(MAC) 프로토콜은 링크상으로 프레임을 전송하는 규칙을 명시.
점대점 링크의 경우 MAC 프로토콜은 단순.
1. 송신자는 링크가 사용되지 않을 때마다 프레임을 전송할 수 있다.
2. 하나의 브로드캐스트 링크를 여러 노드가 공유하는 경우 여러 노드로부터의 프레임 전송을 조정
신뢰적 전달: 확인응답 & 재전송을 통해 가능. 무선 링크처럼 오류율 높은 링크에서 주로 사용.
전송계층이나 어플계층 프로토콜이 데이터를 종단간에 재전송하는 것과 달리, 오류가 발생한 링크에서 오류 정정.
낮은 비트 오류율 링크에선 불필요한 오버헤드를 야기
오류 검출과 정정: 송신노드에서 프레임에 오류 검출 비트를 설정, 수신 노드에서 오류 검사를 수행.
하드웨어로 구현되기 때문에 보다 복잡. 오류 정정은 프레임안의 오류 검출 뿐만 아니라
어느곳에서 오류가 발생했는지 정확하게 찾을 수 있다.
링크 계층 구현 위치
라우터 링크 계층 구현은 4장에서 다룸.
종단 시스템에서 링크 계층 구현: 네트워크 인터페이스 카드(NIC)로 알려진 네트워크 어댑터에 구현
네트워크 어댑터의 중심에는 링크 계층 제어기가 있고 그 제어기는 링크계층 서비스들의
대다수가 구현돼있는 단일의 특수 용도 칩이다.(그래서 대부분 하드웨어로 구현됨)
최근엔 네트워크 어댑터가 분리된 카드가 아닌 호스트의 마더보드에 붙은 LAN-on-mother-board 구성 추세.
이 제어기는 상위계층에서 내려온 데이터그램을 캡슐화하여 링크 접속 프로토콜에 따라 통신 링크상으로 송신.
수신측 제어기는 프레임 수신 후 데이터그램 추출.
링크 계층 주소 정보 조립, 제어기 하드웨어 활성화 등과 같은 상위 수준의 링크 계층 기능들은
링크 계층 소프트웨어 구성요소(CPU)에 구현됨.
수신 측 소프트웨어는 제어기로부터의 인터럽트에 응답, 오류 처리,
데이터그램을 상위 계층으로 옮기는 등의 역할 수행
즉 링크 계층 = 하드웨어 + 소프트웨어 // 프로토콜 스택 상에서 소프트웨어와 하드웨어가 만나는 지점.
6.2 오류 검출 및 정정 기술
송신 노드에서 오류 검출 및 정정 비트들(EDC)를 첨가.
보호되는 데이터는 데이터그램 뿐만 아니라 링크 프레임 헤더에 있는 링크 수준의 주소와 순서번호, 필드 등 포함.
데이터 D와 EDC는 링크 수준 프레임에 포함되어 수신노드로 전송되고, 수신 노드는 비트열 D'와 EDC'를 수신함.
D와 D'의 동일 여부 판단을 위해 오류 검출 비트를 사용, 이후에도 남아있는 오류를 위한 검출 및 정정 기술 필요
1. 패티리 검사
짝수(홀수) 패리티 기법: 사용자가 한 비트를 추가하여 d+1개의 비트에서 1의 개수가 짝수(홀수)가 되도록 하는 것
다만 짝수 개의 비트오류가 발생하면 검출을 못한다.
So, 비트 오류 확률이 적어서 다중 비트 오류일 가능성이 없을 때만 단일 패리티 비트 사용.
2차원 패리티 기법에선 패리티 오류가 있는 열과 행의 인덱스 값을 이용해 실제 오류를 식별하고 정정 가능.
수신자가 오류를 검출 및 정정하는 능력을 순방향 오류 정정(FEC)라 함. [해밍코드, 상승 코드 기법 등]
FEC 기술은 송신자의 전송 요구 횟수를 줄이고,
수신자가 직접 정정할 경우 (NAK패킷을 보내고 재전송된 패킷을 받는) 왕복 시간을 절약 할 수 있다.
*패리티검사는 오류 발생시 송신측에 재전송을 요구하는 BEC(역방향 오류 정정)이다.
2. 체크섬 방법
d비트들 중 일련의 k비트 정수들을 더해서 그 결과값을 오류 검출 비트로 사용
더한 값의 1의 보수가 인터넷 체크섬이 되어 이를 세그먼트 헤더에 넣어준다.
상대적으로 패킷 오버헤드가 적은 방식이지만 CRC와 비교하면 오류면에서 취약한 편.
다만 전송계층은 소프트웨어로 구현되기 때문에 체크섬처럼 간단하고 빠른 오류 검출 기법이 필요하고,
링크 계층은 하드웨어로 구현되므로 복잡한 CRC연산을 빨리 할 수 있어서 CRC를 자주 쓴다.
3. CRC(순환중복검사) // 다항식 코드
전송되는 비트열에 있는 0과 1값을 계수로 갖는 다항식처럼 비트열을 생각하고 연산.
d비트로 이루어진 데이터 D를 전송할 때 G로 표기되는 생성자(r+1 비트 패턴)을 합의.
G의 최상위 비트는 1이어야하고 송신자는 r개의 추가비트 R을 선택해서 D 뒤에 덧붙이며,
이 d+r 비트 패턴은 *모듈로-2 연산을 이용하면 G로 정확히 나누어진다.
*모듈로-2 연산: 피연산자를 비트별로 XOR 취한 것
D* 2^r XOR R = D비트를 r개의 비트만큼 왼쪽으로 보내어 R과 XOR을 취하는 것.
이 때 R을 구하는 방법은 D*2^r XOR R = nG가 되는, 즉 좌항식을 나머지 없이 G로 나눌 수 있는 R을 구한다.
D* 2^ r = nG XOR R // R = D* 2^r /G
각각의 CRC 표준은 r+1비트보다 적은 수의 버스트 오류를 검출 가능.
r+1 비트보다 큰 길이의 버스트 오류는 1-(0.5)^r 확률로 검출되며 각 CRC 표준은 임의의 홀수개의 비트오류 검출가능
위 블로그를 참조하여 예시를 통해 확실히 이해하도록 한다.
6.3 다중 접속 링크와 프로토콜
대부분 링크 계층 프로토콜은 점대점 링크가 대부분으로 PPP, HDLC가 속한다.
브로드캐스트 링크는 하나의 공유된 채널에 다수의 송신 노드 및 수신 노드가 연결된 것(ex. 이더넷, 무선 랜)
양방향 브로드캐스트 채널로 보내는 노드들의 전송을 조절하는 다중 접속 프로토콜
2개 이상의 노드가 동시에 프레임을 전송하면 모든 노드는 동시에 여러 개의 프레임을 받게되며 충돌 발생
충돌에 관련된 모든 프레임은 손실되고 채널은 충돌기간만큼 낭비됨.
초당 K비트의 전송률을 갖는 브로드캐스트 채널에 대한 다중 접속 프로토콜 특성
1. 단 하나의 노드 전송시 그 노드의 처리율 = R bps
2. M개의 노드가 전송시 각 노드의 처리율 = R/M bps
3. 프로토콜이 분산되어 있어 전체 시스템을 정지할 수 있는 마스터 노드가 없음
4. 단순해서 구현하는데 비용이 적게 듦.
자,, 이제 다중 접속 프로토콜 세가지를 알아보자 [채널 분할 프로토콜, 랜덤 접속 프로토콜, 순번 프로토콜]
채널 분할 프로토콜
TDM: 시간을 시간 프레임으로 나누고 각 시간 프레임을 N개의 시간 슬롯으로 나누어 각 슬롯을 노드에 할당
노드는 전송할 패킷(링크 계층에서의 프레임)이 있을 때마다 TDM 프레임에서 할당된 시간 슬롯동안 패킷전송
- 충돌 제거, 공정
- 전송할 패킷이 있는 노드가 하나여도 전송률이 R/M으로 고정됨
- 노드가 전송 순서상 자신의 차례를 항상 기다려야 함
FDM: R bps의 채널을 다른 주파수로 나누어 각 주파수를 N개의 노드 중 하나에게 할당
- 충돌 제거, N개 노드에 균등하게 대역폭 분할
- 전송할 패킷이 하나여도 노드는 R/N 대역폭으로 고정됨.
CDMA(코드분할다중접속): 각기 다른 코드를 각 노드에 할당하고, 각 노드들은 전송하는 데이터 비트들을
자신의 유일한 코드로 인코딩
- 여러 노드들이 동시에 전송될 수 있고 전송이 간섭되더라도 각 수신자들이 송신자의 인코딩된 데이터 비트를
정확하게 수신할 수 있다.
랜던 접속 프로토콜
전송노드는 항상 채널의 최대 전송률인 R bps로 전송
충돌 발생시 프레임이 충돌없이 전송될 때까지 자신의 프레임을 계속해서 재전송
충돌 시 해당 프레임을 즉시 재전송하는 것이 아닌, 그 프레임을 재전송하기전에 랜덤 지연 시간동안 기다림.
각 노드는 지연시간을 스스로 결정하며 충돌 노드 중 하나는 다른 노드가 선택한 지연 시간보다
충분히 작은 지연 시간을 선택함으로써 충돌 없이 자신의 프레임을 전송할 수 있다.
슬롯 알로하: 가장 단순한 랜덤 접속 프로토콜
- 모든 프레임은 정확히 L비트로 구성됨
- 시간은 L/R 초의 슬롯들로 나뉨.(한 슬롯은 한 프레임 전송에 걸리는 시간과 같음)
- 노드는 슬롯의 시작점에서만 프레임을 전송하기 시작함
- 각 노드는 언제 슬롯이 시작하는지 알 수 있게끔 동기화 돼있음
- 한 슬롯에서 2개 이상의 프레임이 충돌하면 모든 노드는 그 슬롯이 끝나기 전에 충돌 발생을 알게 됨.
- 노드는 전송할 새 프레임이 있으면 다음 슬롯이 시작할 때까지 기다렸다가 그 스롯에 전체 프레임을 전송
- 만약 충돌하지 않으면 재전송x, 충돌한다면 그 슬롯이 끝나기전에 충돌 검출
- 충돌없이 전송될 때까지 확률 p로 해당 프레임을 다음 슬롯들에서 재전송/ 각 노드는 독립적으로 수행
*p = 0~1 사이의 확률
장점: 최대 속력 R로 프레임을 전송할 수 있고, 각 노드가 충돌을 감지 및 재전송까지 알아서 결정 = 잘 분산됨
단점: 노드간 동기화가 필요하긴 하며, 활성 노드가 많이 있으면 일부 슬롯들은 충돌로 낭비된다.
게다가 활성 노드들이 확률적인 전송정책을 펼치다 보니 일부 슬롯은 낭비됨
= 정확히 한 노드만 전송하는 "성공한 노드만" 낭비되지 않는 셈
(N개의 노드가 있을 때 성공한 슬롯은 한 노드만 전송하고 N-1개 노드는 전송을 안해야 함
= p(1-p)^(N-1)의 확률
N이 무한대가 되는 극한을 취하면 최대 효율은 1/e ≒ 0.37, 이는 많은 노드가 전송할 프레임이 많은 경우
결국 실제 채널 전송률은 0.37R bps에 그친다는 것..)
알로하: 슬롯 없이 완전히 분산된 프로토콜
- 프레임이 도착하면 노드는 즉시 그 프레임 전체를 브로드캐스트 채널로 전송
- 만일 전송된 프레임이 하나 이상의 다른 전송과 충돌하면 노드는 p의 확률로 그 프레임을 즉시 재전송
- 어떤 노드가 t0에 확률p로 프레임을 전송하면,
[t0 -1, t0] 동안 나머지 노드가 (1-p)의 확률로 노드를 전송하지 않아야 충돌 발생x.
거기다 [t0, t0+1] 시간에도 노드를 전송하지 않아야 하므로,
p(1-P)^2(N-1)의 확률 즉, 1/2e의 효율밖에 안된다.
CSMA: 알로하 스타일과 달리 다른 노드의 활성 여부를 고려해서 자신의 전송을 관리하는 프로토콜
- 캐리어 감지(노드를 전송하기전에 채널을 들음): 말하기 전에 듣는다.
다른 노드가 프레임을 채널로 전송중이면 노드는 임의의 짧은 시간동안 전송 중단을 감지하고 프레임 전송 시작
다만 채널 전파지연(신호가 한 채널 끝에서 다른 끝으로 전파되는데 걸리는 시간)이 크면 A가 전송한 비트들이
B에 도착하지 않아서 B는 채널이 비어있는 줄 알고 B도 송신을 할텐데 이러면 A와 B가 보낸 비트들이 간섭을 일으킴.
CSMA/CD: 충돌을 검출하면 바로 자신의 전송을 중단
- 충돌 검출: 다른 사람이 동시에 말하기 시작하면 말을 중단한다.
전송하면서 동시에 채널을 듣고, 충돌 감지시 랜덤 시간동안 기다린 후 유휴시 감지 및 전송과정 반복
- 쓸모없는 손상된 프레임을 모두 전송하지 않아도 되므로 프로토콜 성능 개선
- 어댑터는 다른 어댑터로부터 신호 에너지를 감지하여 충돌을 검출하고, 자신의 프레임 전송을 취소
- 어댑터는 전송을 취소한 후 임의의 랜덤 시간만큼 기다리다가 다시 전송
이때 시간 간격이 길고 충돌한 노드 수가 작으면-> 채널이 유효한데도 기다리는 시간 증가..
한편 시간 간격이 짧고 충돌한 노드 수가 많으면-> 각 어댑터가 선택한 랜덤 대기 시간이 같을 확률 높아져 또 충돌
->DOCSIS 케이블 네트워크 다중 접속 프로토콜과 이더넷에서 사용되는 *이진 지수적 백오프 알고리즘으로 해결
*이진 지수적 백오프 알고리즘: n번 충돌한 프레임을 전송할 때 노드는 [0,1,2,...,2^n -1]중에서 랜덤한 K값 선택,
프레임 충돌이 많아질수록 K를 선택할 간격을 크게 한다. (이더넷은 K *512 비트시간만큼 대기)
ex) 전송도중 충돌을 검출한다고 가정/ 확률 0.5로 K=0 또는 K=1을 선택
K=1을 선택하면 유휴 시 감지 및 전송 단계를 반복하기 전에 1*512 비트 시간을 기다림.
두번 충돌했으면 [0,1,2,3] 중에서 K를 선택하고 세번 충돌은 [0,1,2,3,4,5,6,7] 중에서 K를 선택.
집합 크기가 충돌횟수에 따라 지수적으로 증가하면서 충돌 가능성을 낮춤.
많은 노드들이 활성노드 일 때 충돌없이 프레임이 채널로 전송되는 시간 비율 = 효율 = 1/(1+5 dprop/dtrans)
즉 전파지연이 0에 가까우면 충돌한 노드들이 채널을 낭비하지 않고 즉시 취소할 수 있고,
전송속도가 아주 크면 프레임이 채널을 한번 차지해서 아주 오랫동안 채널을 사용할 수 있음.
순번 프로토콜
다중 접속 프로토콜에서 요구하는 (1) 하나의 노드만 활성되면 R bps를 가지고 (2) M개의 노드가 활성된 상태면
각 노드가 R/M bps를 가지게 하라는 두 요구조건을 모두 만족시키는 프로토콜
*알로하랑 CSMA는 1번만 만족함
폴링 프로토콜: 노드 중 하나를 마스터 노드로 지정하여 각 노드를 라운드 방식으로 폴링하게 함.
(노드1에게 노드1이 최대로 보낼 수 있는 프레임 수를 제공하고, 노드1이 프레임을 보낸 다음에 노드2한테
노드2가 최대로 보낼 수 있는 프레임 수를 알려줌)
- 충돌 뿐만 아니라 빈 슬롯을 제거하여 높은 효율을 제공
- BUT, 노드가 전송할 수 있음을 알리는데 걸리는 시간-> 활성노드가 프레임을 최대 개수로 보낼 때마다
비활성 노드들을 차례로 폴링해줘야 돼서 Rbps보다는 작아진다는 단점, 또 마스터 노드 고장 시 전체 채널 정지
토큰 전달 프로토콜: 마스터 노드 없이 토큰이라고 알려진 작은 특수 목적 프레임이 정해진 순서대로 노드간에 전달됨.
(노드1은 항상 노드2에게 코튼 전달, 노드2는 노드3에, 노드N은 노드1에 토큰 전송)
노드가 토큰을 수신하면, 전송할 프레임이 있을 때만 토큰을 붙잡고 프레임을 최대 개수까지 전송함.
보낼 프레임이 없으면 그냥 다음 노드로 전달해버림.
- BUT, 노드 하나가 실패하면 전체 채널이 동작x, 또 한 노드가 토큰을 안놓아주면 토큰 회복 절차 필요
DOCSIS
케이블 접속망은 FDM, TDM, 랜덤 접속, 하나의 망에 시간 슬롯을 중앙에서 할당 등 모든 다중 접속 프로토콜 짬뽕
- 하향 채널은 그냥 FDM으로 최대 처리율 제공해서 처리
- 상향 채널은 충돌 발생할 수도 있으니 TDM처럼 시간간격을 미니 슬롯에 나누어 각 모뎀이 특정 미니 슬롯에 전송.
- 하향 채널 상으로 MAP 메시지라고 알려진 제어 메시지를 보내어
어떤 모뎀이 MAP 메시지에서 명시한 시간 간격동안 어떤 미니 슬롯으로 전송할지를 알려줌.
미니슬롯들은 요청 프레임을 CMTS에게 랜덤 접속 방식으로 전송하여 어떤 모뎀이 보낼 데이터가 있는지를 확인.
요청된 할당에 대한 응답을 그 다음 하향 제어 메시지에서 못받으면 충돌이 발생했다고 판단하고
미니 슬롯 요청 프레임 재전송을 이진 지수적 백오프를 사용해서 지연시킴.
6.4 스위치 근거리 네트워크
스위치는 링크 계층에서 동작, RIP나 OSPF 같은 라우팅 알고리즘을 사용 x, IP주소가 아닌 링크 계층 주소 사용
링크 계층 주소 체계 - 이더넷 - 링크 계층 스위치 작동 - 대규모랜 구성 순서대로 알아보자.
링크 계층 주소체계와 ARP
링크 계층 주소를 가진 것은 호스트나 라우터가 아닌, 그 안의 어댑터(네트워크 인터페이스)이다.
다수의 네트워크 인터페이스를 가지는 호스트나 라우터는 여러 개의 링크계층 주소를 가진다.
*근데 링크 계층 스위치는 호스트랑 라우터를 연결해주는 인터페이스에 링크 계층 주소를 가지지 않는다.
링크 계층 주소는 랜주소, 물리주소, MAC 주소 등으로 불린다.
MAC 주소: 대부분 랜에서 길이가 6바이트, 2^48개의 랜 주소가 있음.
어떠한 어댑터도 동일한 주소를 가지지 않는다. IEEE가 MAC 주소 공간을 관리하기 때문에 어댑터 제조사는
IEEE로부터 24비트를 부여받아서 주소를 사용할 수 있으며 위치 등에 따라 변하지 않는 평면 주소 구조를 가짐.
어댑터는 프레임을 수신한 뒤 프레임안의 목적지 MAC 주소가 자신의 주소와 일치하는지 확인.
일치하면 데이터그램을 추출, 일치하지 않으면 프레임 폐기
어떤 어댑터는 랜상의 다른 모든 어댑터가 자신이 보낸 데이터를 수신하길 원하기 때문에
이럴 경우 목적지 주소에 특수한 MAC 브로드캐스트 주소를(FF-FF-FF-FF-FF-FF) 넣는다.
ARP:IP주소와 MAC주소 사이의 변환 프로토콜
송신 호스트의 ARP 모듈은 입력값으로서 동일한 랜상의 임의의 IP주소에 대해 대응되는 MAC주소를 돌려준다.
(DNS와 작동방식이 유사하지만 동일한 랜상에 대한 정보만 처리한다는 점에서 다르다.)
- 각 호스트와 라우터는 자신의 메모리에 갖고 있는 ARP 테이블에 IP주소, MAC 주소간의 매핑 정보와
해당 매핑 정보의 유효기간을 나타내는 TTL 값을 포함한다.
- 목적지 노드에 대한 엔트리가 없으면, 송신 노드는 ARP 패킷이라는 특수 패킷을 구성
ARP패킷: 송수신 IP 주소와 MAC 주소를 포함하는 필드를 가짐.
질의 패킷은 해결하려는 IP주소에 대응되는 MAC 주소를 알기위해 서브넷의 다른 모든 호스트와 라우터에게 질의.
IP가 일치하는 노드는 ARP 테이블을 갱신하고, 자신의 데이터그램을 링크 계층 프레임으로 캡슐화해서 전송
서브넷에 없는 노드로의 데이터 전송
우선 라우터 인터페이스 중 자신의 서브넷과 연결된 인터페이스로 ARP 패킷 보낸다.
(라우터 MAC 주소 몰랐으면 브로드캐스트해서 찾았겠지?)
(이 때 목적지 IP주소는 라우터 IP주소말고 '자기가 보내려하는 곳'의 IP주소를 담는다)
라우터는 자신의 포워딩 테이블을 써서 목적지 MAC으로 보낸다.
(또 당연히 목적지 MAC주소를 모르면 ARP해서 찾아낸 다음 보내겠지)
===========================================================
이더넷
1. 처음으로 널리 사용된 고속 랜으로, 다른 랜 기술로 바꾸기를 꺼리게 됨..
2. 대체제인 토큰 링과 FDDI, ATM이 이더넷보다 복잡하고 비삼
3. 높은 데이터율로 지속적으로 업데이트 함.
버스 토폴로지의 이더넷은 브로드캐스트 랜으로, 전송되는 프레임은 연결된 모든 어댑터를 거치고 처리된다.
*이더넷의 이진 지수적 백오프를 사용하는 CSMA/CD 다중 접속 프로토콜
버스 토폴로지에서 허브 기반의 스타 토폴로지를 사용하게 되면서 호스트는 꼬임쌍선을 사용해서 허브에 직접 연결.
허브는 프레임이 아닌 각각의 비트에 대한 처리를 하는 물리 계층 장치로, 0이나 1인 비트가 인터페이스에 도착하면
허브는 이 비트를 재생하고 에너지 세기를 증가시킨 후 다른 모든 인터페이스로 전송.
허브 기반에서 스위치 기반 스타 토폴로지로 변화하면서 허브를 사용할 때와 달리 스위치는 "충돌이 없는"장치이며
"저장 후 전달 패킷 스위치" 라는 점이 달라짐.
이더넷 프레임 구조
데이터 필드(1500바이트 초과시 단편화 필요, 최소 크기는 45바이트)
목적지 주소/출발지 주소
타입 필드(네트워크 계층 프로토콜 다중화 허용. IP이외의 다른 네트워크 계층 프로토콜 사용 가능)
순환중복검사(CRC): 수신 어댑터로 하여금 프레임에 오류가 생겼는지 검출하게 함
프리앰블: 9바이트의 프리앰블 필드로 시작, 첫 바이트는 10101010, 마지막 바이트는 10101011.
첫 7바이트는 수신 어댑터를 "깨우고", 수신자의 클록을 송신자의 클록에 동기화 함.
마지막 8바이트의 마지막 두 비트 11은 수신자로 하여금 "중요한 것이 옴"을 알림.
이더넷은 네트워크 계층에게 비연결형 2계층 서비스를 제공
비신뢰적 서비스: CRC 검사에 대한 결과를 응답 패킷으로 보내지 x, 오류를 발견해도 응답하지 않고 프레임 폐기
-> 어플리케이션이 UDP를 쓰냐 TCP를 쓰냐에 따라 데이터 손실에 대해 다르게 대응
이더넷은 초기에는 동축케이블의 일부로 여겨짐. 리피터를 사용하여 길이를 확장.
동축 케이블 = 이더넷을 브로드 캐스트 매체로 간주 = CSMA/CD 프로토콜 다중 접속 프로토콜 필요 // 허브
최근엔 꼬임상선/광섬유 케이블 사용 = 점대점 세그먼트, 양방향 40Gbps 전이중 통신 가능 // 스위치
스위치는 전송을 조절하며 동일 인터페이스로 하나 이상의 프레임을 전달하지 않음.
스위치와 노드는 간섭없이 동시에 서로에게 프레임을 보냄(전이중) -> MAC프로토콜 필요 x
===========================================================
링크 계층 스위치
호스트/라우터는 중간에 스위치의 존재에 대해 알지 못하며(=투명하다) 따라서 프레임이 스위치 출력 인터페이스 중
하나에 그것의 링크 용량을 일시적으로 초과하여 도착할 수도 있다.
이를 해결하기 위해 스위치 출력 인터페이스는 버퍼를 가진다.
전달 및 여과
전달: 프레임이 전송될 인터페이스를 결정하고 보내기
여과: 프레임을 인터페이스로 전달할지 또는 폐기할지 결정
둘 다 스위치 테이블을 이용. 랜상의 일부 노드에 대한 엔트리가 포함 돼있어
(1) MAC 주소 (2) 그 MAC으로 보내는 스위치 인터페이스 (3) 해당 엔트리가 테이블에 만들어진 시점을 알 수 있다.
다만 스위치는 라우터와 달리 MAC 주소를 기반으로 패킷을 전달하며 테이블 구축방식이 라우팅 테이블과는 다르다.
1. 테이블에 목적지에 대한 엔트리가 x -> 브로드캐스트
2. 해당 스위치 인터페이스에 엔트리가 o -> 다른 스위치로 전달하지 않고 프레임을 제거하여 여과 기능만 수행
3. 해당 스위치 인터페이스 말고 다른 인터페이스와 연관된 엔트리가 o -> 그 스위치로 전달
자가 학습
스위치는 자신의 테이블을 자동으로, 동적으로, 자치적으로 구축(PnP)
인터페이스로 수신한 각 프레임에 대해 스위치는
(1) 프레임의 출발지 주소 필드의 MAC 주소 (2) 프레임이 도착한 인터페이스 (3) 현재 시간 을 테이블에 저장
송신 노드들에 대한 랜 세그먼트를 기록하면서 테이블 갱신.
수명시간이 지난 후에도 해당 주소를 출발지 주소로 하는 프레임을 수신하지 못하면 테이블에서 그 주소를 삭제.
링크 계층 스위치 특성
충돌제거: 프레임을 버퍼링하며 어느 시점이든 세그먼트에 하나 이상의 프레임을 전송하지 않음.
브로드 캐스트 링크를 사용하는 랜보다 월등한 성능을 가진다.
이질적인 링크들: 링크들을 별개로 분리하기 때문에 링크들끼리 상이한 속도로 동작
관리: 향상된 보안을 제공할 뿐만 아니라 관리를 쉽게 해줌. 오동작하는 어댑터의 연결을 의도적으로 끊어주고,
케이블이 단절된 경우 이 케이블과 연결된 호스트의 연결만 끊음.
대역폭 사용, 충돌률, 트래픽 종류에 대한 통계치를 수집하여 네트워크 관리자에게 제공
스위치 vs 라우터
스위치는 2계층 / 라우터는 3계층 / match & action 기능을 사용하는 최신 스위치는 2계층 + 3계층
스위치 장점: PnP, 상대적으로 높은 패킷 여과 및 전달률
스위치 단점: 브로드캐스트 프레임 순환을 방지하기 위해서 실제 사용되는 토폴로지가 스패닝 트리로 제한됨.
ARP 트래픽이 막대하며, 브로드캐스트 트래픽 폭주에 대한 대비책 x
라우터 장점: 중복된 경로가 있을 때조차 패킷은 라우터를 따라 순환x (특수 데이터그램 헤더 필드 사용)
스패닝 트리뿐만 아니라 최상의 경로 사용, 2계층에서의 브로드캐스트 트래픽 폭주에 대비한 방화벽 보호 기능
라우터 단점: PnP가 아님. 3계층 필드까지 처리해야돼서 처리 시간이 더 큼
네트워크 크기가 클수록 라우터가 어울리는 셈.(트래픽 폭주도 제한하고 경로도 잘 제공하니까)
======================================================
가상 근거리 네트워크(VLAN)
현대기관 랜은 부서별로 별도의 스위치 랜을 갖고 부서들 간의 스위치 랜은 계층 구조로 연결된 형태.
위의 단점 3가지
1. 트래픽 격리 부족: 브로드캐스트 트래픽 메시지를 포함한 프레임은 트래픽 격리가 부족.
2. 스위치의 비효율적 사용: 스위치 하나로는 트래픽 격리 불가능
3. 사용자 관리: 사원이 한 그룹에서 다른 그룹으로 이동하는 경우 다른 스위치를 연결하기 위해
물리적 케이블 연결까지 변경해야 한다는 문제점 발생
--> 이 문제들은 VLAN을 지원하는 스위치로 해결 가능
VLAN을 지원하는 스위치 하나는
물리적 근거리 네트워크 기반구조 상에서 여러 개의 가상 근거리 네트워크들을 정의할 수 있게 한다.
VLAN에 속한 호스트들은 마치 스위치에 자신들만 연결된 것처럼 서로 통신한다.
한 VLAN의 포트들은 하나의 브로드캐스트 도메인을 형성하기 때문에,
3번 문제처럼 한 사용자가 그룹을 변경하면 변경한 VLAN에 대한 포트로 연결해주면 된다.
VLAN 스위치 포트중 하나는 외부 라우터에 연결하고, 이 포트를 각 VLAN에 모두 속하게 하면
서로 다른 그룹과도 통신할 수 있다.
VLAN 트렁킹: 스위치마다 하나의 특수 포트가 여러개의 VLAN 스위치를 연결하는 트렁크 포트로 구성되면
이 트렁크 포트는 모든 VLAN에 속하여 한 VLAN에서 보낸 프레임을 다른 스위치로 전달해 줄 수 있다.
이 때 스위치가 트렁크 포트로 온 프레임은 어느 VLAN에서 온건지 알기 위해
4비트 VLAN 테그를 헤더에 갖고 있는 이더넷 프레임도 지원한다.
VLAN 태그: 2바이트 태그 프로토콜 식별자, 2바이트 태그 제어 정보, 3비트 우선순위 필드
라우터들을 거쳐 VLAN이 확장될 수도 있으며 떨어져 있는 랜들을 연결하여 단일 VLAN을 형성할 수도 있다.
6.5 링크 가상화: 링크 계층으로서의 네트워크
MPLS(다중 프로토콜 레이블 스위칭): 네트워크, 링크 계층에 해당되며
자체적인 패킷 형식과 전달 방식을 사용하는 가상회선 네트워크
가상회선 네트워크의 주요개념인 고정 길이 레이블을 도입하여 IP라우터의 전달 속도를 향상시키려는 노력에서
목적지 기반 데이터그램 전달 기반구조를 포기하진 않고, 가능한 경우에 데이터그램을 선택적으로 레이블링해서
라우터로 하여금 고정 길이 레이블을 기반으로 전달할 수 있도록 구조 확장
*IP 주소체계와 라우팅을 사용하는 IP와 긴밀하게 동작
MPLS 가능 장치들 간에 전달되는 링크 계층 프레임이 2계층 헤더와 3계층 헤더 사이에 작은 MPLS 헤더를 가짐.
*MPLS 헤더=[레이블, 실험을 위해 예약된 3비트, 일련의 스택된 MPLS 헤더들의 끝을 나타내는 1비트, 생존기간]
MPLS 프레임은 MPLS 가능 라우터 사이에서만 전송되며 MPLS 가능 라우터는 MPLS 레이블을
포워딩 테이블에서 찾아 적당한 출력 인터페이스로 데이터그램을 전달하여 프레임을 전달 (=스위치 라우터)
MPLS 가능 라우터는 목적지 IP주소를 꺼내볼 필요도 없고, 포워딩 테이블에서 최장 프리픽스 대응을 찾을 필요도 x
(= 가상회선 기반 구조의 필요성x, 고정 길이 레이블 기반하에 가능)
MPLS 라우터들은 인접한 MPLS 라우터들에게 자신이 라우팅 가능한 MPLS 입력 레이블, 출력 레이블, 목적지,
출력 인터페이스에 대한 정보를 광고. 인접한 라우터들끼리 광고가 완료되면 라우터들간에 MPLS 기능이 있는
이웃노드를 인식, 목적지 정보를 인식 했기 때문에 패킷의 IP 헤더를 건드리지 않고 MPLS 라우팅 가능.
MPLS의 트래픽 관리 기능이 스위칭 속도를 향상(IP주소를 고려 안하고 스위칭 하기에)시키는 것보다 더 장점.
IP주소 기반 라우팅에서는 최소 비용 경로 하나만 지정하는 반면, MPLS를 이용하면 IP라우팅에선 불가능했던
경로를 사용할 수 있기 때문에 동일 목적지로 가는 트래픽의 일부는 A경로로, 일부는 B경로로 이런식으로
트래픽 분배가 가능하다. 링크 고장 시 다른 복구 경로로 트래픽 재배정도 가능하며 가상 사설 네트워크 구성도 가능.
6.6 데이터 센터 네트워킹
데이터 센터와 인터넷간 연결 및 호스트간 상호연결을 위한 자체 데이터 센터 네트워크
호스트는 콘텐츠 제공, 전자메일 문서 저장, 대량의 분산된 계산 공동 수행.
블레이드: 데이터 센터의 호스트. CPU, 메모리, 디스크 저장장치를 가짐
각 데이터 센터 호스트들은 20~40의 블레이드를 적재할 수 있는 랙에 적재됨.
랙의 맨 위에는 TOR(top of rack) 스위치가 있으며 이 스위치는
랙에 있는 호스트들을 연결해주고(TOR 스위치와 네트워크 인터페이스 카드를 통해 연결)
데이터 센터의 다른 스위치들과 연결됨(추가 포트를 통해 연결)
호스트는 데이터 센터 내부 자체 IP 주소를 할당받으며 데이터 센터는 외부<->내부 트래픽과 내부간 트래픽을 모두 지원.
외부<->내부 트래픽을 위해 경계 라우터를 가지고, 이 라우터를 통해 데이터 센터 네트워크를 공중 인터넷으로 연결
부화 균등화
외부 클라이언트로부터의 요청이 데이터센터로 들어오면 먼저 부하 균등화기로 보내며
부화 균등화기는 요청을 호스트로 분배하고 호스트는 현재 부하 상태에 따라서 호스크 간 부하를 균등하게 함.
*패킷의 목적지 IP주소뿐만 아니라 목적지 포트번호까지 고려하여 분배
요청 처리를 마친 호스트는 부하 균등화기로 응답을 보내고, 부하 균등화기가 이를 외부 클라이언트로 전달.
또한, 호스트의 공용 외부 IP주소를 내부 IP주소로 전환하고 내부 IP주소를 외부 IP주소로 변환하는 NAT 기능 제공
계층적 구조
라우터와 스위치의 계층 구조를 채택.
최상단 경계라우터 - >접속 라우터 -> 최상단 스위치 -> 2단 스위치들과 부하 균등화기
2단 스위치 ->각 랙의 TOR 스위치를 통해 랙으로 연결
모든 링크는 링크, 물리 계층 프로토콜로 이더넷을 사용한 계층구조 설계 이용.
ARP 브로드캐스트 트래픽을 지역내로 한정시키기 위해서 서브넷은 다시 작은 VLAN 서브넷들로 분할되는 등,
계층 구조 설계에서 접속 라우터 밑의 호스트들끼리 작은 서브넷 구성
여러개의 플로우가 존재하는 경우 플로우들이 링크 용량을 나누어 가지기 때문에 전송률이 심각하게 줄어들 수 있다.
호스트-호스트 간 용량 제한 문제를 해결하기 위해 고속 스위치와 라우터를 사용할수도 있지만 이는 비싸기 때문에
데이터 센터는 여러 비공개 네트워킹 설계를 사용.
새로운 상호연결 구조와 네트워크 프로토콜 사용: 완전 연결 토폴로지로 스위치와 라우터의 계층 구조 대체
선박 컨테이너 기반의 모듈화된 데이터센터(MDC): 선박 컨테이너에 미니 데이터 센터를 구축한 후
컨테이너를 데이터 센터의 위치로 옮김. 컨테이너 성능이 점진적으로 저하되도록 설계하여 임계치 이하로
성능이 떨어지면 컨테이너를 새걸로 교체. 각 컨테이너의 내부 네트워크 및 컨테이너들 연결하는 중앙 네트워크 존재.
랜덤 라우팅 알고리즘: 호스트마다 네트워크 인터페이스 카드를 여러개 설치한 후 여러 대의 저가 스위치에 연결하여
호스트들이 알아서 스위치 간 트래픽 라우팅이 가능하게 하는 방법.
근처 건물에 데이터 센터를 복제하여 가용 구역 확보 후 신뢰성 향상 등의 기술 동향 존재.
복습 중 의문
본문의 총복습 9번 과정을 보면 5번 과정에서의 DHCP ACK 메시지를 통해 학교 게이트웨이 라우터의 IP주소를
알 수 있지만 MAC주소를 몰라서 ARP를 또 해야 한다고 하는데, DHCP ACK 메시지에서 그냥 MAC 주소도 담아서
보내면 안되나..?
힘드니까 다음에 알아보자
'CS > Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크 하향식 접근] Chapter05 네트워크 계층: 제어 평면 (0) | 2024.08.04 |
---|---|
[컴퓨터 네트워크 하향식 접근] Chapter04 네트워크 계층: 데이터 평면 (0) | 2024.08.03 |
[컴퓨터 네트워크 하향식 접근] Chapter03 트랜스포트 계층 (0) | 2024.07.31 |
[컴퓨터 네트워크 하향식 접근] Chapter02 애플리케이션 계층 (0) | 2024.07.26 |
[컴퓨터 네트워크 하향식 접근] Chapter01 컴퓨터 네트워크와 인터넷 (1) | 2024.07.21 |