공부/네트워크2011. 8. 15. 18:25


transport segment를 sender에서 receiver로 보내는 역할.
datagrams으로 캡슐화(헤더붙이기)를 한다.
모든 호스트와 라우터에 network layer protocols이 있다.
router는 헤더를 보고 다른 곳으로 전달한다.

네트워크 레이어에서의 두가지 핵심적인 기능은 forwarding과 routing이다.
forwarding은 라우터에서 패킷을 다음 라우터로 보내는 것. 
routing은 출발지에서 목적지까지의 길을 정하는 것.

datagrams이 전송되기 전에, 두 end hosts와 라우터들이 가상의 연결을 맺는다.
transport layer의 경우 두 프로세스간 연결인 반면 network layer의 경우에는 두 호스트간 연결서비스를 제공한다.

Network layer에는 연결지향적인  VC network와 비연결적인 datagram network 서비스를 제공한다.
transport layer와 비교해서 network layer는 호스트간 서비스이고, 네트워크는 둘 중에 하나만 선택할 수 있고, 둘 다는 못쓴다. 그리고 네트워크 코어에서 서비스를 구현한다.

VC. virtual circuit.
전화망 같이 동작한다.
성능이 좋다.
전송전에 setup을 한다.
각 패킷은 VC id을 지니고 있다.
라우터는 각 패킷이 어디로 보내져야 할지 상태를 유지한다.
링크, 라우터 자원을 VC에 할당해서 delivery나 delay를 보증할 수 있다. 

Datagram networks
setup이 필요없다.
이 레이어에서는 연결의 개념이 없고
도착지 host 주소를 보고 패킷을 포워딩한다.
주소를 볼 때 가장 긴 prefix로 match한다. 
단순하다. 복잡한 기능은 end system이 하도록 미룬다.

라우터 아키텍쳐
라우터의 두가지 핵심 기능 : 라우팅 프로토콜,  datagram을 인풋링크에서 아웃풋링크로 포워딩.
인풋포트 -> switch fabric -> 아웃풋포트

인풋포트
인풋포트의 포워딩 테이블을 보고 아웃풋 포트를 정한다.
 switch fabric에 포워딩되는 속도보다 데이터그램이 인풋포트에 도착하는 속도가 더 빠르면 큐에 저장된다.

switch fabric
switch fabric은 메모리나 버스, interconnection network로 만들 수 있다.

아웃풋포트
큐가 있어서 속도차 보완. 
큐에 있는 패킷중에서 어느 순서로 전송해 줄 것인지 선택할 수 있다.

큰 ip 데이터그램은 작게 쪼개질 수 있다. fragmentation.
마지막 도착지에서 합쳐진다.

subnets
ip adress는 subnet 부분과 host 부분으로 나눌 수 있다.
인터페이스를 때어냈을 때 분리되어 생기는 작은 네트워크들.
같은 subnet을 가진 호스트들은 라우터를 거치지 않고 직접통신이 가능하다.

CIDR
Classless InterDomain Routing.
subnet, host part 구분이 고정되지 않음.

어떻게 아이피를 얻는가?
수동으로 설정할 수도 있고, DHCP(Dynamic Host Configuration Protocol)을 이용해서 자동으로 받을 수 있다.

network가 subnet part를 어떻게 얻는가?
ISP가 가진 아이피 주소공간을 8개의 subset으로 쪼갠다.

ISP는 어떻게 아이피 주소공간을 얻는가?
ICANN (Internet Corporation for Assigned Names and Numbers)에서 받는다.

NAT (Network Address Translation)
전체 네트워크를 하나의 아이피가 대표한다.
좋은점 : 주소 절약. 내부 네트워크가 변경되도 바깥 네트워크는 몰라도 되고, 바깥쪽(ISP)이 변경되도 안쪽은 몰라도 된다.
테이블을 이용하여 안쪽이나 바깥쪽 네트워크로 들어오거나 나가는 패킷의 주소를 수정해준다.
NAT은 포트넘버를 보기 때문에 IP레어어 이상을 본다.
바깥쪽 네트워크의 호스트가 안쪽 네트워크의 호스트 연결을 원할 때는 어떻게 하는가?
수동으로 엔트리를 추가하거나 UPnp라는 프로토콜을 사용하여 자동으로 엔트리를 추가. 아니면 relaying이라고 두 호스사이에 다리역할을 하는 것을 둔다. 

ICMP(Internet Control Message Protocol)
라우팅에 관련된 정보를 주고 받는다. 예를 들어 TTL이 만료되었다는 메시지를 보낸다던가, 목적지 호스트에 도착해서 더이상 더 나아갈 수 있는 포트가 없다는 패킷을 보내는 것 등등.
 
Ipv6
기존의 32비트 어드레스보다 더 많은 주소길이를 갖는다.
헤더는 40 byte로 고정(헤더를 따로 추가할 수 있다, 길이가 고정되어 있어서 파이프라인 구현할 수 있다.)
fragmentation은 라우터가 분할하고 합치느라 복잡해지기 때문에 허용하지 않는다.
 
tunneling.
IPv4에서 IPv6도 작동하게 하는 방법.
IPv6에서 Ipv4로 갈 때 패킷 추가로 데이터를 붙여서 Ipv4에서도 작동하게 한다.

라우팅 알고리즘

1) Link State
각 라우터가 네트워크의 라우터들이 어떻게 연결되었는지에 대한 정보를 알고 있다.
각 라우터는 독립적으로 도착지에 대한 최선의 경로를 계산한다.
다익스트라 알고리즘 사용할 수 있다.
단점으로 routing loop가 발생할 수 있다.
한 패킷이 어느 특정 목적지로 갈 때, 2개의 서로 이웃한 라우터가 각각 서로의 라우터로 가는것이 가장 짧은 길이다 판단하고 포워딩시킬 때 루프 발생.
각 라우터가 이웃끼리 서로 정보교환을 하지 않고 경로를 계산해서 발생하는 문제이다.

2) Distance Vector
한 라우터 x에서 다른 라우터 y까지 가는 최단 경로.
각 라우터는 자신의 이웃들로 가는 링크 비용을 알고 있고, 자신의 distance vector와 이웃의 distance vector를 가지고 있다.
각 라우터가 링크비용이 변경되거나 새로운 디스턴스 벡터를 받았을 때 자신의 DV를 수정하고 수정되었으면 이웃들에게 자신의 DV를 보낸다.
벨만포드 알고리즘을 사용해서 발생하는 단점으로 count to infinity가 있다.
A가 B에게 특정 목적지로 가는 경로를 알려줄 때, B는 그 경로가 자기를 포함한 경로인지를 알지 못한다.
특정 목적지로 가는 링크가 끊어졌을 때 A와 B사이에 특정 목적지로 가는 최단경로가 무한대까지 서서히 수정이된다.

Hierarchical Rounting
여러개의 라우터를 autonomous systems(AS)로 묶는다.
한 AS의 라우터들은 같은 라우팅 알고리즘을 사용한다. (intra-AS routing protocol)
Gateway router : 다른 AS의 라우터를 연결해주는 라우터.

forwarding table은 같은 AS내부의 라우터쪽으로 포워딩할때는 intra-AS 라우팅 알고리즘을 사용하고, 다른 AS의 라우터쪽으로 포워딩할 때는 intra-AS와 inter-AS 라우팅 알고리즘을 사용한다.

Inter-AS
AS 밖으로 나가는 패킷이 있을 때 어느 AS로 포워딩될지 알려준다.
2개 이상의 AS로 갈 수 있는 경우, 자신과 가까운 gateway router에게 패킷을 처리하라고 맡긴다.

Intra-AS routing protocols

1)RIP (Routing Information Protocol)
distance vector 알고리즘을 이용한다.
이웃에게 매 정해진 시간마다 자신의 DV를 보낸다. (advertisement)
포워딩 테이블에는 다른 네트워크로 가기 위한 다음 라우터 정보가 있다.
일정시간 반응이 없으면 그 라우터가 유효하지 않은 걸로 간주한다.

2) OSPF (Open Shortest Path First)
Link State algorithm을 사용.
LS 패킷을 전체 AS에 퍼뜨림.
OSPF 메시지 보안을 제공
같은 비용의 Path가 두개 이상 있을 때 허용.
hierarchical을 제공. 하나의 AS가 크면 작은 영역으로 나눈다. 나눠진 각 영역을 Area라고 한다.
area border routers: 자신의 area에 있는 비용정보들을 요약하고, 다른 area의 area border routers에게 알려준다.
backbone routers: backbone network에 대한 라우팅 정보를 가지고 있다.
boundary routers: 다른 AS와 연결하는 라우터.

AS{multiple routers in an area -> area border routers -> backbone routers -> boundary routers} -> another AS{...}

3) BGP (Border Gateway Protocol)
표준
AS가 이웃 AS들로 부터 그것들이 접근할 수 있는 subnet의 정보를 얻는다.
AS 내부 라우터들에게 이 정보를 뿌린다. 

라우터들은 TCP연결을 통해 라우팅 정보를 주고받는다. (BGP session)
AS가 다른 AS에게 특정 prefix로 시작하는 아이피를 자기에게 보내달라고 알린다.(advertise)
AS내부에서는 iBGP를 사용해서 이 정보를 내부의 라우터들에게 알려주고,
AS에서 다른 AS로 보낼때는 eBGP를 사용.
라우터는 새로운 prefix정보를 받으면 자신의 포워딩 테이블에 기록.

prefix를 알릴 때 몇 가지 정보(BGP attributes)를 더 붙여서 보낸다.
AS-PATH는 prefix advertisement가 어떤 AS들을 거쳤는지.
NEXT-HOP은 현재 AS에서 다음 AS로 가는데 지나가는 AS 내부의 라우터들.
게이트웨이 라우터가 route advertisement를 받았을 때, poliy를 적용해서 다른 AS에 보낼지 말지를 정한다.
 
어떤 prefix로 갈 수 있는 라우터가 여러개 있을 때, 하나를 정해야 한다. 정책에 따라 할 수도 있고, AS-PATH가 짧은 것으로 정할 수도 있고, 가장 가까운 Next-hop으로 정해서 선택을 떠넘길수도 있고, 등등.

 

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Transport Layer  (0) 2011.07.28
Application layer  (0) 2011.07.23


Posted by skyjumps