Ethernet IEEE 802.3
IEEE 802.3( Ethernet )
Data-link layer의 MAC sublayer와 Physical layer를 정의하는 protocol
Characteristics
- Connectionless
- Unreliable 따라서 2개의 L2 sublayer 중 p-to-p communication에 관여하는 LLC sublayer에서 Flow control을 하지 않는다. CRC가 있으니 수신 측에서 error correction한다. (FEC , Forward error correction ) error correction 하지만 ARQ(=BEC) 가 아닌 FEC 이고, Flow control 하지 않으니 당연히 ACK도 없다.
LLC identifier(802.2 )대신 MAC에서 EtherType을 사용하니 다양한 upper layer protocol을 지원하기 위한 Multiplexing 기능도 MAC이 대신한다. 결국 LLC는 하는 일이 없다. ( EtherType이 없는 경우는 802.2 LLC header를 사용한다 ) 사실 생각해보면, wired network에서는 error가 드문 현상이니까 ARQ나 Flow control할 필요가 없기 때문에 이런 특성을 가진다는 것을 알 수 있다.
Data-link layer
- LLC - Multiplexing, Flow control, Automatic Repeat reQuest(Backward Error Correction)
- MAC - Framing, Multiple access control(CSMA/CD) * MAC이 더 아래쪽 layer다. * Framing은 MAC에서 하긴 하는데 조금 애매하다. 보통은 LLC에서 802.2 LLC header를 추가하는데(Multiplexing) Frame을 구성하는 방식이니까 이것도 Framing이라고 봐야하는건지. * Checksum의 경우 어느 sublayer에 속한다기 보다는 Data-link layer의 기본 기능이지만, 굳이 따지면 MAC의 Framing에 포함된다 * LLC은 바로 상위 layer인 network layer의 다양한 protocol을 지원하기 위한 multiplexing 기능과 error control(BEC), flow control을 담당한다. 그러나 보통 flow control과 ARQ를 TCP같은 상위 layer에게 맡기기 때문에 LLC는 multiplexing만 담당하는 경우가 많으며, Ethernet에서는 그마저도 MAC이 담당하고 있다.
Frame Format
added at physical layer
- Preamble 7 bytes of alternating 0s and 1s to synchronize receiver
- Start Frame Delimiter (SFD) Sequence of 10101011 to indicate a ctual start of the frame physical layer에서 추가되기 때문에, 이를 제외해야 frame이다. 게다가 packet rawdata를 떠보면 Frame의 첫부분에 Destination address가 있다. 즉 DA 앞에 붙는 Preamble과 SFD를 확인할 수 없다. physical layer에서 decapsulation되어 올라와서 그런 것으로 보인다. 굳이 표시해 줄 필요가 없기도 하고.
아무튼 Sync는 preamble로 맞춘다는 것과 각 frame 시작 지점을 SFD로 구분한다는 것만 참고하면 된다.
added at data-link layer
- Destination address / Source address 6byte * 2 6 bytes L2 address
- EtherType 2byte 1536 보다 같거나 큰 값을 가지며 upper-layer protocol을 의미한다. IPv4는 2048( 0x0800 ), ARQ는 0x0806, 802.1Q는 0x8100이다. 드물지만 이 자리에 1500 보다 같거나 작은 값이 올 때가 있는데, 그 경우 EtherType이 아니라 payload size다.
- Data
- Pad Octets added for proper collision-detection operation Minimum frame length : 64 bytes ( max 2500 meter and 4 repeaters ) Maximum farme length : 1518 bytes 이 때 Minimum은 Preamble과 SFD를 제외한 frame size.
- Checksum 4byte CRC-32, calculated over address, types and data
Minimum size
Minimum이 존재하는 이유는 collision detection을 위해서다. collision detection을 energy level로 하기 때문에 \(T_f \geq 2T_p\)여야 detection이 된다. transmission 다 끝났는데 signal이 오면, energy level이 1이니까 정상으로 인지하게 된다. \(T_f\) : transmission time. \(2T_p\) : round-trip time. end-to-end 왕복 시간. (\(T_p\)는 propagation delay) 따라서 paylaod의 minimum length는 46 bytes.
이런 식으로 frame을 보내는 도중 감지할 수 있어야 한다. 참고로 collision detection하면 frame을 송신하던 host들이 jam signal을 보내고, 전체 network가 collision이 발생했음을 인지한다.
Maximum size
Maximum size는 독점을 방지하기 위해 존재한다.
payload에서 1500byte 제한이 걸리고, 나머지 field의 크기 18 bytes를 더하면 maximum frame length는 1518 bytes가 나온다.
multicast
MAC address에서 첫번째 byte의 마지막 1bit가 0이면 Unicast, 1이면 multicast다. 즉 첫번째 octet이 X1, X3, X5…등 홀수여야 multicast다. broadcast는 모두 1. 즉 FF:FF…다.
CSMA/CD
CSMA access mode
Ethernet에서는 CSMA/CD를 사용하며, CSMA방식 중 1-persistent method를 사용한다.
Non-persistent가 제일 좋아보였는데, 실제 사용 환경에서는 아닌가보다. 생각해보니 요즘은 다 switch로 collision domain 나눠버리니까 sensing하다가 idle시 바로 전송하는 1-persistent가 throughput이 더 잘나오겠다.
아래 그림은 shared media일 때를 가정한 데이터인 듯. n-persistent가 throughput이 굉장히 잘 나오는 것 처럼 보이지만, 전송을 대기하는 packet이 많은 경우에만 그렇고 전송 대기중인 packet이 별로 없는 경우에는 괜히 기다려서 낭비다.