1) Routing table 구성방법


Routing : 라우팅은 어떤 네트워크 안에서 통신 데이터를 보낼 경로를 선택하는 과정입니다. 라우팅은 전화 통신망, 전자 정보 통신망(인터넷 같은) 그리고 교통망 등 여러 종류의 네트워크에서 사용됩니다. 하나의 컴퓨터로 자신이 속하지 않은 네트워크에 속한 컴퓨터와 통신을 할 때 발생된 패킷을 목적지까지 전절해 주는 과정이라고도 할 수 있습니다이를 정적 라우팅과 동적 라우팅으로 나눌 수 있습니다.

 

1 - 정적 라우팅(Static Routing)

: 네트워크 관리자가 패킷의 경로를 임의로 결정하여 수동으로 구성하는 라우팅 방식으로, 정적 라우팅은 네트워크 환경 변화와는 무관하게 항상 같은 경로로만 패킷의 라우팅 경로를 설정 및 유지합니다.

 

장점

1. 정적 경로가 간단하고 경로를 네트워크 관리자의 의도대로 정밀하게 제어할 수 있습니다.

2. 라우터 경로정보를 주고 받을 필요가 없어 효율이 높습니다.

3. 정적 경로 예측 및 소규모 네트워크에서 이해하기 쉽습니다.

 

단점

1. 경로를 설정하고 유지하는 데에 시간이 많이 걸리게 됩니다.

2. 적절한 경로 구현을 위해 전체 네트워크에 대한 완전한 지식이 요구됩니다.

3. 네트워크 규모가 커지면 설정 및 관리가 어렵습니다.

 

2 - 동적 라우팅(Dynamic Routing)

: 인접한 라우터들 사이에서 라우팅 프로토콜을 이용하여 네트워크 정보를 상호 교환하며 라우팅 테이블을 상시 자동적으로 생성하고 유지하는 라우팅 방식입니다.


장점

1. 네트워크가 추가되거나 삭제되어도 관리자의 설정을 유지하기 위한 작업이 적게 됩니다.

2. 네트워크 환경이 수시로 변경되는 복잡한 환경, 대규모의 네트워크에서 사용할 수 있습니다.

3. 경로의 특성에 대한 정보를 주고 받아 상황에 따라 다른 경로를 선택할 수 있습니다.

 

단점

1. CPU 사이클, 메모리, 링크 대역폭 등과 같은 라우터 자원들이 사용됩니다.

2. 불필요한 정보까지 라우터가 가지게 되어 데이터 전송 속도가 느려집니다.

 

Routing Table(라우팅 테이블)은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용되며, 라우팅 프로토콜의 가장 중요한 목적이 바로 이러한 라우팅 테이블의 구성입니다.

 

- 가장 단순한 모델인 hop-by-hop 라우팅 방식에서, 각 라우터의 라우팅 테이블은 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해서 거쳐야 할 다음 라우터의 정보를 가지고 있습니다. 라우팅 테이블이 일관적이라고 가정하면, 패킷을 받은 다음, 라우팅 테이블을 검사해서 다음 라우터를 찾은 뒤, 해당 라우터로 패킷을 넘겨주는 이러한 단순한 알고리즘만으로 네트워크상의 어느 곳으로라도 데이터를 전송할 수 있게 됩니다. 하지만 실제로는, hop-by-hop 라우팅 방식은 MPLS와 같은 계층적 아키텍처에 밀려나서 급격히 사라지는 추세입니다. 계층적 아키텍처에서는 한번의 테이블 검사로 몇 번의 전달과정을 대체할 수 있으며, 이는 테이블 검사시간을 감소시키며 따라서 네트워크의 성능을 증가시키게 됩니다.


2) Distant Vector Routing 알고리즘

라우터는 목적지 까지의 모든 경로를 자신의 라우팅 테이블 안에 저장하는 것이 아니라 목적지까지의 거리(홉 카운트 등)와 그 목적지까지 어떤 인접 라우터를 거쳐서 가야하는 만을 저장하게 됩니다. 인접 라우터들과 주기적으로 라우팅 테이블을 교환해서 자신의 정보에 변화가 생기지 않았는지를 확인하고 관리합니다.

 

장점

1. 한 라우터가 모든 라우팅 정보를 가지고 있을 필요가 없기 때문에 라우팅 테이블을 줄일 수 있어서 메모리를 절약할 수 있습니다.

2. 라우팅의 구성자체가 간단하며, 여러 곳에서 표준으로 사용되고 있습니다.

 

단점

1. 라우팅 테이블에 아무런 변화가 없더라도 정해진 시간마다 한 번씩 꼭 라우팅 테이블의 업데이트가 일어나기 때문에 트래픽을 쓸데없이 낭비하게 됩니다.

2. 라우팅 테이블에 변화가 생길 경우 이 변화를 모든 라우터가 알 때까지 걸리는 시간이 느리다는 단점이 있습니다.

 

-> 커다란 네트워크에는 적용하지 않고 다만 작은 규모의 네트워크에 적용할 경우에는 구성의 편리와 메모리의 절약 등의 장점을 살릴 수 있습니다.

 

라우팅 테이블의 변화가 생기면 이웃 라우터와 '전달->전달->전달' 이와 같은 방식으로 일어나기 때문에 라우팅 테이블의 변화를 알아채는 데 걸리는 시간이 길게 됩니다.

 

3) Link State Routing 알고리즘의 원리 및 특성

: 한 라우터가 목적지까지의 모든 경로 정보를 다 알고 있는 것입니다.

topology 데이터베이스를 가지고 라우터는 SPF(Shortest Path First)라는 알고리즘을 계산합니다.

 

SPF(Shortest Path First): 어디로 가야 가장 빨리갈 수 있는가를 계산. 이 계산 결과를 가지고 라우터는 SPF트리를 만들게 됩니다.

(*SPF트리 : 출발지에서 목적지까지를 마치 나뭇가지처럼 펼쳐놓은 다음 가장 빠른 경로를 찾아가는 방식)

 

장점 

1. 링크 스테이트 알고리즘은 한 라우터에서 목적지까지의 모든 경로는 알고있기 때문에 중간에 링크의 변화가 생겨도 이를 알아내느데 걸리는 시간이 짧습니다.

2. 이웃 라우터들과 라우팅 테이블을 교환하는 과정에서도 모든 라우팅 테이블을 교환하는 디스턴트 벡터방식과는 달리 라우팅 테이블의 교환이 자주 발생하지 않고, 또 교환이 일어나는 경우에도 테이블에 변화가 있는 것만을 교환하기 때문에 트래픽 발생을 줄여줄 수 있습니다.

단점

1. 모든 라우팅 정보를 관리해야 하기 때문에 메모리를 많이 소모하게 됩니다.

2. SPF게산 등 여러 가지 계산을 해야하기 때문에 라우터 CPU가 일을 많이 해야합니다.

 

커다란 네트워크에 설치되는 고용량 라우터에 적용하는 것이 바람직하며, OSPF(Open Shortest Path First)인 대표적인 라우팅 프로토콜이 있습니다.

 

4) RIP(Routing Information Protocol)

: 거리벡터 알고리즘에 기초하여 개발된 라우팅 프로토콜

- IGP(Interior Gateway Protocol)

- 소규모 또는 교육용 등 비교적 간단한 네트워크에 주로 사용됨

 

특징 거리벡터 라우팅 프로토콜.

 

1 - Routing Metric(라우팅 메트릭) 으로 Hop Count (홉 수)만 사용

- 경로비용을 단지 홉 수로 만 판단

  속도나 거리 지연 등을 고려하지 않아 최적의 경로 산정에 비효율적

 

2 - 최대 홉 수의 제한

- 최대 15 홉 수(16은 무한대)로 제한

  (hop)수는 라우터를 통과할 때 마다 1 씩 증가하게 됨

 

  UDP 세그먼트에 캡슐화되어 사용

- RIP 메세지 송수신용 UDP 포트

. RIPv1,RIPv2 : UDP 포트번호 520

. RIPng : UDP 포트번호 521

 

3 - Classful Routing 수행

- Subnetwork 정보가 아닌 Class 형태의 라우팅 정보 만을 전달함으로써 라우팅 정

보 전달량이 많음

. , RIPv2 는 라우팅 업데이트 정보에 서브넷 마스크 정보를 포함하여 VLSM 지원

 

4 - 주기적인 라우팅 업데이트 -> 라우팅 광고 참조

- 30초 마다 RIP 응답메세지(RIP 패킷)를 브로드캐스팅

. 이때의 목적지 IP 주소를 255.255.255.255로하여 브로드캐스트 주소를 사용

- 상대에게서 수신된 네트워크 정보를 제외한 모든 네트워크 정보를 상대에게 알려줌

. 수신 라우터는 자신의 라우팅 테이블을 재 작성하도록 함

.. 수신 라우터는 네트워크 경로 항목에서 더 짧은 홉 수를 수신 받았을 때만 해당 라우팅 경로 항목을 교체함

 

5 - Slow Convergence (늦은 수렴성)

- 라우터들끼리 주기적으로(30초 간격) 경로 업데이트를 하며 경로 재계산함에 따라

. 몇 개 라우터 만 지나도 수분 이상 걸림

 

6 - 라우팅 트래픽 부하

- 전체 경로를 담은 라우팅 테이블을 주기적으로 보로드캐스트함에 따라

. network에 이에따른 traffic 부하를 줌

 

7 - 라우팅 루프

- 전 라우터들 사이에 동기화를 시켜주지 않으면 패킷의 경로가 부적절하게될 수 있음

- 30초 마다 업데이트되는 까닭에 다운(Down) 등의 나쁜 소식이 늦게 전달되어

잘못된 경로로 무한 루프(Infinite Loop)를 도는 사태 발생

 

8 - Count-to-Infinity Problem

- 느린 수렴 시간 때문에, 나쁜 경로를 다른 라우터에게 전하면 그 라우터는 더 느리게

더 나쁜 정보로써 다른 라우터에게 전하게되면서 결국 무한(16) 홉 수로 가는 현상

 

5) OSPF(Open Shortest Path First)

: 최단 경로 우선 프로토콜(Open Shortest Path First, OSPF)은 인터넷 프로토콜(IP) 네트워크를 위한 링크 스테이트 라우팅 프로토콜입니다. 링크 스테이트 라우팅 알고리즘을 사용하며, 하나의 자율 시스템(AS)에서 동작하면서 내부 라우팅 프로토콜의 그룹에 도달합니다.

 

특징

1 - 네트웍을 Area 로 구분하여 이것을 계층구조로 구성함으로써 많은 Routing Information의 교환으로 인한 라우터의 성능 저하를 예방하고 대역을 절약

2 - VLSM을 지원하므로 IP Address를 효과적으로 할당하여 활용

3 - Aggregation된 형태로 Routing Information을 전달할 수 있어 라우터의 메모리 절약 및 성능 향상, 그리고 대역을 절약

4 - Metric으로 Bandwidth를 이용하므로 IGRP와 마찬가지로 Hop Count에 의한 제한을 받지 않음

5 - Routing Information 전달시 IP Multicast 방법을 이용

6 - Routing Information 교환시 Authentication 을 지원

 

 

6) BGP (Border Gateway Protocol)

자치시스템(AS) 상호 간에 적용되는 라우팅 프로토콜(Inter-Domain Routing Protocol)

- 독립적으로 운용되는 대규모 네트워크 간에 주로 사용되는 라우팅 프로토콜

 

특징

: AS 상호 간의 라우팅 정보 교환을 위한 라우팅 프로토콜

- EGP(Exterior Gateway Protocol) 또는 Interdomain Routing Protocol 라고 함

 , 물리적인 라우터 간에 라우팅하는 관점이 아니라, AS 간에 라우팅이 이루어짐

 

1 - 인터넷을 AS 간 연결 경로(Path)로 이루어진 방향성 그래프의 집단으로 봄

- BGP는 인터넷을 각각 유일한 AS 번호를 갖는 AS들이 임의로 연결된 AS 집합으로 그래프를 그리고 있다고 가정 (AS 간에 Mesh Type 구성)

 

2 - 발전된 형태의 Distance Vector Routing Protocol (거리벡터 라우팅프로토콜)

- `Path Vector Routing Protocol (경로 벡터 라우팅프로토콜이라고도 불림.

(여기서, AS 경로(AS Path)는 목적지 네트워크(AS)까지 거쳐야하는 Path를 나타냄)

- BGP는 최적/최단의 경로를 찾는 라우팅 정보라기 보다는, 도달 가능성(network reachability)을 알리는 프로토콜


3 - 끝없이 순환되는 문제점이 없도록 함

- , BGPLooping-free 하는 라우팅을 보장하며, 순환을 피할 수 있도록 목적지까지 가는 경로 정보를 제공

 

4 - 신뢰할 만한 TCP 연결에 의해 라우팅 정보를 교환

- 라우팅 정보는 BGP 라우터간에 포트번호 179번을 통하여 TCP에 의해 신뢰성있게 전달

 

5 - 라우팅 정보의 점진적 부분 갱신 (Incremental, Partial, Triggered Update)

- BGP는 주기적으로 정보를 갱신하지 않고, 단지 변화가 있을때 만, 이웃 라우터에게 갱신 정보를 Advertising.

(처음 BGP Session을 맺을때만 전체 라우팅 정보 필요, 이후 변화된 것만 필요)

 

- 한편, 순간적 Flapping 방지를 위해 일정시간 대기

(AS 내부 iBGP 간에 5, AS 외부 eBGP 간에 30초 대기 후에 라우팅 업데이트 수행)

 

- 만일, 네트워크 변화가 전혀 없으면 주고받는 정보가 없게되므로, 이를 위해 자신이 살아있음을 알리는 BGP 킵얼라이브메세지를 60초 마다 교환

 

6 - 최상의 경로 선택을 위해 다양하고 풍부한 Routing Metric 사용 (Path Attribute)

- 우선순위가 있는 각 Metric을 차례대로 참조하여 최상의 경로를 선택

 

7 - 클래스 없는 주소체계 지원

- CIDR(Classless InterDomain Routing) 지원

- BGP는 각 주소 정보에 덧붙여 Prefix의 길이도 함께 전달 -> NLRI

 

8 - 정책 기반의 라우팅 프로토콜 (Policy-based Routing)

- BGP는 상대 영역의 라우팅 정책을 침범하지 않고도, 자신의 라우팅 정책을 구현 가능

(서로 경쟁적인 AS 간에 자신의 피해 예방을 위해 최소한의 정보 공유 등 정치적 이유,보안 등에 의해 각 경로에 대해 선택적으로 버리거나 무시하거나또는 정책적인 가중치 부여가 가능)

 

BGP 메시지 포맷


 

7) IS-IS(Intermediate System to Intermediate System)

IS-IStwo-level 계층의 Link-state technology를 기반으로 하는 라우팅 프로토콜이며, ISOConnectionless Network Protocol(CLNP)을 위한 라우팅 프로토콜입니다.

처음 IS-ISDigital Equipment Corporation에서 DECnet Phase V을 위해 개발한 프로토콜이었으나 ISO에서 표준으로 제정한 것입니다. ISOIS-IS를 표준으로 만들 때, Internet Architecture Board (IAB)에서는 OSPF를 만들고 있었습니다. TCP/IP1980년대와 1990년대에 OSI를 대신하여 대중적으로 많이 사용한 프로토콜이였으나, 결국에는 OSI로 대체될 것이라고 예상하였고, 이 예상에 대비하기 위해 IS-IS를 확장하여 Integrate IS-IS(또는 Dual IS-IS)를 제안하였습니다. Integrated IS-IS의 목적은 CLNPIP를 라우팅할 수 있는 능력을 가지는 하나의 라우팅 프로토콜을 제공하는 것입니다. Integrated IS-ISCLNS 환경, IP 환경, 그리고 CLNS/IP 혼합 환경에서 사용할 수 있도록 설계되었습니다.

 

특징

- Shortest-path tree를 계산하는 Dijkstra-based SPF로부터 링크 state database를 유지합니다.

- Adjacency들을 형성하고 유지하기 위해 Hello 패킷들을 사용합니다.

- Two-level hierarchical topology를 형성하기 위해 area들을 사용합니다.

- 두 area사이의 address summarization을 제공할 수 있습니다.

- Classless 프로토콜입니다.

- Broadcast 네트워크를 대표하는 designated 라우터를 선출하게 됩니다.

- Authentication 기능을 가집니다.


WRITTEN BY
SiriusJ

,

[UDP 프로토콜 특징]

- 비연결형(Port만 확인하여 소켓을 식별하고 송수신)

패킷 오버헤드가 적어 네트워크 부하 감소(세그먼트당 8byte)

 

-UDP의 비신뢰성(unreliable)

: TCP는 메세지가 잘 보내졌는지 확인할 수 있지만 UDP는 이러한 어떠한 장치도 가지고 있지 않습니다. 따라서 UDP로 전송된 패킷은 순서가 뒤바뀔수도 있으며, 중간에 패킷이 손실될 수도 있습니다. 프로토콜 차원에서 패킷의 순서가 뒤바뀌었는지, 패킷이 손실되었는지 알 수 있는 방법은 없으므로, UDP는 단순히 데이타그램 위주의 통신을 하기 때문에 데이타그램 지향 프로토콜이라고 불리우기도 합니다.

 

UDPTCP와 마찬가지로 인터넷 전송방식 중 하나입니다. 그러나 이 방식은 TCP처럼 중간에 유실된 정보를 모두 보충하지 않고 전송합니다. 가령 생방송 인터넷 방송의 경우 유실된 정보를 모두 표현하려면 실제 방송시간에 비해 느려지며, 발신서버에서 정보를 갖고 올 때까지 동영상이 멈추거나 버퍼링이 되기 때문에 동영상을 보는데 큰 불편을 겪게 됩니다. 그래서 대부분의 인터넷 생방송 동영상은 UDP방식을 사용하게 됩니다.

[UDP 연결방식]


WRITTEN BY
SiriusJ

,

UDPtransport layer에서 동작하는 비연결지향형 프로토콜입니.

연결지향형인 TCP와는 달리 단순 오류검출 기능만을 지원하기 때문에 흐름제어나 오류제어등의 기능은 어플리케이션에서 담당해야만 합니다. 이러한 이유로 UDPbest-effort protocol로도 불립니다

UDP는 그 특성 때문에 다른 전송 프로토콜에 비해 오버헤드가 적고, 따라서 브로드캐스트나 멀티캐스트, 소량의 데이터 전송 시에는 UDP를 이용하는 것이 효율적입니다.

[UDP 구조]

- Source Port : 해당 패킷을 만든 송신자의 어플리케이션 포트번호를 나타냅니다.

- Destination Port : 해당 패킷을 수신할 어플리케이션의 포트번호를 나타냅니.

- Length : UDP헤더와 데이터를 포함한 전체 길이를 Byte단위로 표시합니다.

- Checksum : 데이터가 전송 중에 손상되지 않고 원본과 동일한지 여부를 확인하는 기능을 제공합니다. 만일 checksum값이 incorrect일 경우 송신자에게 패킷의 재전송을 요구하게 됩니. 옵션이지만 RFC1122에서는 사용할 것을 권장하고 있으며 현재는 호스트에 의해 기본적으로 동작하게 요구되고 있습니다. checksumNAT를 수행 할 때를 제외하곤 송신지에서 계산되어 수신지에서 검사됩니다.

[사용자 데이터그램 형식] 


[UDP의 주요 기능 및 특징]

: 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스 제공

- 메세지가 제대로 도착했는지 확인하지 않음 (확인응답 없음)

- 수신된 메세지의 순서를 맞추지 않음 (순서제어 없음)

- 흐름 제어를 위한 피드백을 제공하지 않음 (흐름제어 없음)

- 검사합을 제외한 특별한 오류 검출 및 제어 없음 (오류제어 거의 없음)

- UDP를 사용하는 프로그램 쪽에서 오류제어 기능을 스스로 갖추어야 함

- 빠른 요청과 응답이 필요한 응용에 적합

- 실시간 응용 등에 사용

- 논리적인 연결(가상회선)이 필요없는 데이터그램 지향의 전송계층용 프로토콜

- 비연결접속상태에서의 Host-to-Host 통신경로를 설정

- 헤더가 단순함

- UDPTCP 처럼 16 비트의 포트 번호를 사용

- 헤더는 고정크기의 8 바이트(TCP20 바이트) 만 사용

(즉, 헤더 처리에 많은 시간과 노력을 요하지 않습니다.)


[UDP 위에서 동작되는 프로토콜들 또는 응용분야]

- TFTP, SNMP, DHCP, NFS, DNS, RIP

[데이터 전송 단위]

- Message (TCP에서의 데이터 전송단위는 세그먼트라 함)

[최대 데이터 크기]

- 65,507 바이트 = 65,535 바이트 - UDP 헤더 8 바이트 - IP 헤더 20 바이트


WRITTEN BY
SiriusJ

,

[QoS]

- QoS(서비스 품질)는 비용 효율적인 방식으로 네트워크 트래픽을 관리함으로써 가정 및 기업에서 사용자 환경을 개선할 수 있는 일련의 기술을 의미합니다. QoS 기술을 사용하여 대역폭을 측정하고 네트워크 상태의 변화를 탐지하며(: 네트워크 정체 또는 대역폭 가용성) 트래픽의 우선 순위를 정하거나 트래픽을 제한할 수 있습니다. 예를 들어 음성 또는 비디오 응용 프로그램처럼 대기 시간에 민감한 트래픽의 전달에 우선 순위를 두고 대량 데이터 전송과 같은 대기 시간에 민감하지 않은 트래픽으로 인한 영향을 제어하려는 경우 QoS를 사용할 수 있습니다. TCP/IP 트래픽에 우선 순위를 지정하여 전송하려면 호스트 및 네트워크 인프라 장치가 이를 지원해야 합니다.

 

TCP/IP 네트워크에 QoS를 정의할 때 가장 문제가 되는 점은 IP 트래픽의 우선 순위를 지정하고 그에 따라 전송하는 방법을 찾는 것입니다. RFC 791 문서에서는 IP에 우선 순위, 지연, 처리량, 안정성 및 비용적인 특성의 가용성을 규정하기 위한 TOS(Type of Service) 필드를 정의하고 있지만, 근본적으로 IP는 각 패킷을 선착순으로 동일하게 처리하는 최선형(Best-effort) 방식의 데이터그램 기반 패킷 교환 기술입니다.

 

[우선 순위가 지정된 전송 구성]

우선 순위가 지정된 전송 서비스를 제공하려면 몇 가지 작업을 수행해야 합니다. 예를 들어 표시된 트래픽을 별도로 처리하고 전송 호스트에서 나가는 트래픽에 표시를 남기도록 네트워크 인프라를 구성하거나, 나가는 트래픽(: 주소 및 포트 번호)의 특성을 기준으로 별도의 처리 방법을 제공하도록 전송 호스트에서 네트워크 인프라를 동적으로 프로그래밍하게 할 수 있습니다.

TCP/IP 트래픽의 경우 몇 가지 방법을 사용하여 전송 우선 순위를 지정할 수 있습니다. 예를 들어 이더넷의 네트워크 인터페이스 계층에서 IEEE 802. 1p 태그 지정 기능은 이더넷 프레임의 VLAN(Virtual Local Area Network) 헤더에 있는 3비트 우선 순위 필드를 사용해 호스트에서 전송한 프레임에 표시를 하여 전송 우선 순위를 지정합니다. VLAN 헤더는 이더넷 헤더의 Source Address 필드와 Length 필드(IEEE 802.3 프레임용) 또는 EtherType 필드(Ethernet II 프레임용) 사이에 위치합니다.

 

전송 호스트에 802.1p 태그 지정 기능을 구현하려면 네트워크 어댑터와 장치 드라이버가 802.1p를 지원하고 네트워크 어댑터에서 802.1p 지원이 활성화되어 있어야 합니다. 보통 802.1p 지원은 네트워크 어댑터 드라이버의 속성에서 고급 탭을 선택하면 설정할 수 있으며, 이더넷 스위치에서도 802.1p 지원을 설정해야 합니다.

 

오늘날 대부분의 기업 라우터에서는 DSCP 트래픽 차별화를 지원하지만 기본적으로 비활성화되어 있는 경우가 많습니다. DSCP 지원 라우터는 전달 도중 DSCP 값을 읽은 다음 특정 큐에 해당 패킷을 배치하게 됩니다. 예를 들어 전달된 패킷을 사용자가 지정한 DSCP 값을 기준으로 높은 순위, 최선형에 배치하거나 최선형 큐보다 낮은 곳에 배치하도록 라우터를 구성할 수 있습니다. 큐 및 DSCP 값을 구성하여 DSCP 표시가 지정된 트래픽의 서비스 수준을 차별화할 수 있습니다. 예를 들어 업무에 중요한 네트워크 트래픽이 낮은 우선 순위에 속하는 대량 데이터 트래픽 때문에 지연되지 않고 우선적으로 전달되도록 할 수 있습니다. WMM 사양은 WMM 액세스 범주가 DSCP 값에 매핑되는 방식을 정의합니다. WMM 지원 무선 APDSCP 값을 읽고 해당 액세스 범주를 기준으로 트래픽을 처리하게 됩니다.


WRITTEN BY
SiriusJ

,

[TCP의 전송 제어 절차]

1. 흐름 제어 (Flow Control)

송신측이 수신측의 처리속도 보다 더 빨리 데이타를 보내지 못하도록 제어해 주는 것입니다.

수신측에서 송신측 발송 데이타의 양이나 속도를 제한합니다. (송신측을 억제하는 형태)

이를 위해 수신측에서 데이터 넘침을 송신측에 통보하는 피드백 메커니즘 필요하게 됩니다.

한편, 이를 `속도 조절(pacing)`이라고도 합니다. (송신,수신의 속도를 일치시키는 것)

 

2. 흐름제어 방식 구분

1) 송신제어 방식 -> 정지대기방식 (Stop and Wait)

- 한번에 1개씩 수신확인하며 프레임을 전송하는 방식

. 링크상에서 보내고자하는 데이터가 프레임 길이 보다 긴 경우에는 비효율적.

2) 전송률 기반 흐름제어 (Rate-based)

- 데이터 송신률에 대한 임계값 관리에 의한 흐름제어

3) 윈도우 기반 흐름제어 (Window-based) -> Sliding Window

- 여러 개의 프레임을 동시에 보내고자하는 기법

  기타 윈도우 방식 : 크레디트(Credit) 윈도우 방식, 페이징(paging) 윈도우 방식

 

3. 통신계층별 흐름제어

1) 데이터링크 계층에서 흐름제어

- 데이터 링크의 송수신 양단 간에 송신율 및 수신율의 균형을 맞춤

2) 망 계층에서 흐름제어

- 통신망 종류에 따라 흐름제어 기능 제공을 할 수도 안할 수도 있음

 IP계층에서 흐름제어 방식

- IP계층에서는 명시적인 흐름제어 기능이 없음

  그 상위계층(, 전송계층)에서 흐름제어 기능을 제공함

  다만 IP계층에서는 송수신 버퍼 정도의 기능은 제공하게 됨

3) 전송 계층에서 흐름제어

- 단일 데이터 링크 간이 아닌 전송계층 종단--종단 간에 흐름제어 기능을 수행

* 전송계층 상에서의 흐름제어는 구현이 복잡

  전송지연이 매우 가변적이므로 링크계층 처럼 단순한 재전송(시간만료) 메커니즘을 사용하기 어려움

 

1. 전송 제어

데이타를 원활하게 전송하기 위하여 회선접속의 확인, 상대방의 확인, 데이타가 올바르게 전송되었는가의 확인 등을 하는 일련의 절차

 

2. 전송 제어 특징

- 통신회선을 매개로 하여 데이타를 목적하는 장치에 착오없이 전송하기 위하여 송신장치와 수신장치간에 필요로 하는 절차

전송제어절차 관련 제어 방식 (-데이터링크)

- 데이터장치 제어 : 데이타 송수신에 관련된 장치의 지정이나 확인 (- 매체접근제어)

- 데이타열의 제어 : 데이타 열을 논리적으로 구분하거나 (- Framing)

+ 순서를 관리 (- Sequence Number)

- 에러 제어 : 전송중의 에러의 검출 및 정정

  통상적으로 OSI 참조모델의 제 2 계층에서 전송제어절차를 규정.


[TCP프로토콜 특성]

1. 연결형

- TCP는 장비가 데이터를 송신하기 전에 먼저 연결을 수립할 것을 요구

2. 양방향

- 일단 연결이 수립되면 TCP 장비는 누가 연결을 초기화했는지에 관계없이 데이터를 양방향으로 송수신.

3. 다중 연결과 종단 식별

- 연결된 두 장비가 사용하는 소켓 쌍은 TCP 연결의 종단을 식별

4. 신뢰성

- TCP는 모든 데이터가 목적지에 도달할 수 있도록 송신, 수신한 데이터를 추적하기 때문에 TCP 통신은 신뢰성有

5. 승인

- 신뢰성을 제공하는 데 핵심이 되는 특성은 TCP가 모든 전송에 대한 승인 메시지를 보낸다는 것.

6. 스트림 기반

- TCP는 애플리케이션이 연속적인 데이터 스트림을 송신할 수 있도록 함.

7. 구조화되지 않은 데이터

- TCP의 스트림 기반 특성때문에 애플리케이션은 메시지간 구별하는 방법을 제공해야 함.

8. 데이터 흐름 관리

- TCP는 데이터가 일정한 속도로 평탄하게 흐르고, 전송 경로 중 발생하는 문제를 처리할 수 있도록 연결을 관리.


WRITTEN BY
SiriusJ

,

TCP/IP 프로토콜의 핵심 전송 계층 프로토콜은 전송 제어 프로토콜(TCP)입니다.

TCP는 연결형이고, 승인을 제공하며, 신뢰할 수 있는 다양한 기능을 갖춘 프로토콜로 안정적이지 않은 인터넷 프로토콜(IP) 위에서 애플리케이션이 안정적으로 데이터를 송신하는 방법을 제공합니. TCP는 애플리케이션이 데이터를 바이트 스트림으로 보낼 수 있도록 하며 그 바이트 스트림을 적절한 크기의 세그먼트로 자동 패키징하고, TCP의 특수 슬라이딩 윈도우 체계는 수신자가 모든 데이터를 수신하고, 필요할 경우 재전송을 하며, 상대방의 송신 속도를 조절할 수 있는 흐름 제어 기능을 제공하게 됩니.

 

[TCP 전송 프레임 구조 특성]

[TCP 구조]


Sort Port : 패킷을 송신하는 시스템의 포트번호를 나타냅니다. 클라이언트의 경우 예약된 0-1023well-known포트번호를 제외한 번호를 임의로 생성하고 서버의 경우 일반적인 서비스 제공 시 well-known한 포트를 사용합니다.

Destination Port : 패킷을 수신할 시스템의 포트번호를 나타냅니다.

Sequence Number : 세그먼트(각 계층 패킷의 구분을 위해 4계층-세그먼트, 3계층-패킷, 2계층-프레임으로 구분) 데이터의 순서번호를 표기합니. 3Way-Handshacking 수행 시 ISN의 기능도 합니.

Acknowledge Number : 상대방으로부터 수신한 데이터의 바로 다음에 수신할 데이터 순서번호를 나타냅니다. Sequence Number의 확인 응답으로서 데이터 전송자에게 패킷을 잘 받았으니 그다음 패킷을 송신하라는 의미로 사용됩니다. 상대방이 다음에 전송할 패킷의 Sequence Number이기도 합니.

Header Length : TCP헤더의 전제 길이를 byte단위로 표현합니다.

Reserved : 미래를 위해 예약된 필드로 항상 0 으로 설정됩니다.

Window size : 송신 시스템에서 자신이 수용하는 한 버퍼의 크기를 byte단위로 나타냅니. 통신하는 동안 송수신자는 해당 필드를 통해 수신사이즈를 계속 변경하게 됩니다.

Checksum : 데이터가 전송중에 손실되지 않고 원본과 동일한지 검사합니다.

Urgent Point : Urgent flag 설정 시 urgent데이터의 마지막 byte의 일련번호를 Urgent Point 필드에 저장합니다. 해당 부분까지 긴급하게 처리를 요한다는 의미입니다.

 

[TCP의 기능]

1. [주소지정/다중화]

- 여러 프로세스에서 온 데이터를 다중화하여 하위 네트워크 계층 프로토콜로 송신되도록 하는 것은 TCP의 중요한 임무이며 동시에 이들 상위 계층 애플리케이션은 TCP 포트를 통해 식별됩니다.

2. [연결 수립, 유지, 종료]

- TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공합니다연결이 수립되면 TCP는 연결을 유지하고 혹시 발생할 지 모르는 문제를 처리하기 위한 방법이 있습니다장비가 TCP 연결로 할 일을 마치면 그 연결을 종료하기 위한 특수한 절차도 수행됩니.

3. [데이터 처리와 패키징]

- 애플리케이션이 상위 계층에서 데이터를 송신할 수 있는 방법을 제공합니다이 데이터는 메시지로 패키징되고 목적지 TCP 소프트웨어로 전달됩니.

4. [데이터 전송]

- 송신 장비의 TCP 구현은 패키징된 데이터를 다른 장비의 TCP 프로세스로 전달할 책임이 있습니다.

5. [신뢰성과 전송 품질 서비스 제공]

- 애플리케이션이 데이터를 신뢰할 수 있게 송신할 수 있도록 여러 서비스와 기능을 제공합니다.

6. [흐름 제어와 혼잡 회피 기능 제공]

- 두 장비 간의 데이터 흐름을 제어하고 관리할 수 있도록 하며, 두 장비 간 통신에서 발생할 수 있는 혼잡을 처리하는 기능도 포함합니.

 

[TCP가 수행하지 않는 기능]

1 . 전송 프로토콜만을 정의하므로 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시하지 않습니다.

2 . 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공하지 않습니.

3 . TCP는 데이터를 분리된 메시지가 아닌 연속된 스트림으로 송신합니다.

4 . 한 메시지가 어디에서 끝나고 다음 메시지는 어디에서 시작되는지를 명시하는 것은 애플리케이션 계층에 달려있게 됩니다.

5 . TCP는 승인을 받지 않는 전송을 탐지하고 필요할 경우 재전송합니다. 어떤 문제가 통신을 방해할 경우에 TCP는 계속 재전송을 시도하게 됩니다.


WRITTEN BY
SiriusJ

,

Gnuplot 사용하기

Network 2016. 4. 26. 21:55

Linux에서는 주로 xgraph gnuplot 사용합니다.


터미널에서 아래 명령으로 gnuplot을 설치 후 사용할 수 있습니다.

Sudo apt-get install gnuplot


[Gnuplot 사용]

$gnuplot

$plot "data명"  -> ex) plot "log.out"

(단, 데이터가 존재하고 있는 폴더에서 gnuplot을 실행시켜야 합니다.)


(X축, 데이터 이름 설정)

- $Set xlabel "----"

(Y축, 데이터 이름 설정)

- $Set ylabel "----"

보시는 것처럼 gnuplot으로 파일을 graph시각화할수도 있고, 기타 기본함수들 (sin,cos,tan )도 볼 수 있습니다. 또한 sin+tan등의 계산도 볼 수 있습니다.


WRITTEN BY
SiriusJ

,

지난 포스팅에서 NS-3에 대한 first.cc와 second.cc에 대한 포스팅을 먼저 올렸었는데, NS-3가 무엇인가에 대한 설명을 드리고자합니다.


네트워크 시뮬레이터(Network Simulator) 란, 실제 동작을 관찰하지 않고, 네트워크의 동작과 영향을 예측하고 분석하기 위한 장치 또는 소프트웨어를 말합니다. 그 종류의 하나로 NS-3가 있습니다.


NS-3는 NS-2에 이어 새롭게 개발된 네트워크 시뮬레이터 입니다.

최신 무선 네트워크 모델을 비롯한 다양한 유/무선 네트워크 모델을 지원하며 빠른 개발속도와 여러 장점을 바탕으로 점차 사용자가 증가하고 있습니다. 그러나 NS-3를 기반으로 한 시각화 도구는 아직 개발 초기단계에 머물러있으며 특히 무선 네트워크를 위한 시각화도구의 이용은 매우 제한적인 상황입니다.


[Basic NS-3 Data Flow Model]

NS-3의 데이터 흐름에 대한 Model입니다. 보다시피 Application에서 원래 네트워크에서 Socket API를 사용하는 것과 같이하여 프로토콜 스택에서 패킷을 NetDevice(Hardware Device)를 이용하여 channel을 통해 다른 NetDevice로 보내는 과정을 이용하여 Data를 이동시킵니다.


[NS-3 설치하여 이용하기]

제가 NS-3를 사용하는데 있어서 노트북의 사양은 Windows7 RAM4GB  였으며, 우분투버전과 메모리크기는 Ubuntu 12.04 LTS 32bit에 RAM1024MB 입니다.

주로 가상머신으로 Virtualbox나 VM Ware를 사용하는데 저는 Virtualbox를 사용하였습니다.


NS-3는 www.nsnam.org 가 공식홈페이지입니다.

우분투 Linux Programming에서 다룬 포스팅을 이용하여 잘 설치했다는 가정하에, 우분투 내에서 ns-3의 공식홈페이지에 들어가서 ns-3를 설치하고 압축을 풉니다.

그리고 메뉴얼이나 정보를 원하시면 Download 하는 곳에 tutorialmenual이 있는데 둘다 다운받으셔서 공부하는데 도움이 될수도 있습니다.



처음 NS-3를 이용하기 위해 최소 요구되는 Package들을 설치해 줍니다.

[C++을 위한 최소 요구]

$sudo apt-get install gcc g++ python

[Python을 위한 최소 요구]

$sudo apt-get install gcc g++ python python-dev

[NS-3개발에 함께 필요한 Mercurial 설치]

$sudo apt-get install mercurial

[NS-3개발로부터 python binding 을 Running 하기 위한 bazaar 설치]

$sudo apt-get install bzr


NS-3 다운 후, 


[tar로 압축 풀기]

$tar xvf ns-allinone-3.19.tar.bz2

[build.py Building]

$./build.py --enable-examples --enable-tests

[NS-3 테스트]

$./test.py -c core

[기본 스크립트 Running]

$./waf --run scratch/example

위 패키지들을 설치하고 다운받은 ns-3를 설치한 후 예제소스를 실행시킨 화면입니다.

Scratch-simulation이 실행되고 나면, 보시는 것과 같이 화면이 띄워집니다.

'Network' 카테고리의 다른 글

TCP의 기능 및 전송 프레임 구조 특성  (0) 2016.05.03
Gnuplot 사용하기  (0) 2016.04.26
NS-3 Network Simulation (second.cc)  (0) 2016.04.26
NS-3 Network Simulation (first.cc)  (0) 2016.04.26
IP주소 체계  (0) 2016.04.24

WRITTEN BY
SiriusJ

,