본문 바로가기

4학년 1학기/네트워크 보안

19. SDN(1)

개요

네트워크의 새로운 패러다임(나온 지는 좀 되긴 했음)인 SDN에 대해 학습한다. 교수님의 전문 분야이기도 해서 시험에 잘 나올 것 같은데 아마 심화로 들어가면 많이 어려워서 깊게는 안 내실 것 같긴 한데 그래도 상대적으로는 어렵게 나올 것 같으니 집중적으로 보는 것이 시험 대비에는 좋을 것 같다.

SDN

Software Defined Networking로 기존 HW 장비에 의존하고 각 장비에 대한 설정을 직접 해주는 전통적인 방식에서 각각의 장비를 SW로 정의하고 설정하는 방식으로 개선한 일종의 패러다임으로 이를 제대로 이해하기 위해 Network Layer부터 알아보자.

Network Layer

통신의 기본 단위는 Packet(Datagram)으로 여기의 Header를 보고 역할을 수행한다. 여기서는 총 2가지의 Network Layer의 기능이 존재하는데

Forwarding

라우터로 들어온 패킷을 적절한 곳으로 전달하는 기능

Routing

패킷의 src와 dst를 통해 어디로 갈 지 결정하는 기능

 

위 2가지로 Routing table을 통해 Routing을 수행한 뒤 해당 결과를 바탕으로 Forwarding을 수행하여 패킷이 오면 적절히 경로를 설정해줄 수 있다. 이러한 기능은 SDN에서는 Data Plane, Control Plane을 통해 수행된다. 

Data Plane

Forwarding을 수행하여 라우터의 Input Port로 패킷이 들어왔을 때 어느 Output Port로 나가야 하는 지 결정한다. 이는 Routing table을 통해 결정하는데 이러한 table은 Routing을 통해 생성된다.  

Control Plane

Routing을 수행하여 Routing table을 결정하는 부분으로 datagram을 전송하는데 비용을 계산하여 최적의 경로를 결정한다. 기존 방식은 특정 알고리즘(Dijkstra, Bellman-Ford)를 통해 생성했지만, SDN에서는 고정된 알고리즘이 아닌 별도 Server에 의해 동적으로 결정하여 이를 각 Router에 전달하는 방식을 사용한다. 

per-router Control Plane

각각의 Router가 Control Plane을 가져 경로를 계산하는 방식으로 각 라우터간 호환성이 중요하다.

Centralized Control Plane

각각의 Router는 Table은 가지지만 알고리즘은 없는 형태로 Remote Controller에서 생성한 Routing table을 일방적으로 전달받아 저장하는 방식으로 SDN에서 사용하는 방식이다. 

Data Plane

Router Architecture

라우터 하면 위 사진이 빠질 수가 없다. input port로부터 온 패킷을 switching fabric을 통해 적절한 output port와 연결되는 구조로 Control plane이 생성한 routing table을 통해 port를 연결한다. table에서는 Longest Prifix Matching 기술이 사용되는데 엄청 간단한거라 모르면 직접 찾아보기 바란다. 뭐 아무튼 0, 1, *(Don't care) 이 3개로 주소를 표현한다. 

Switching fabrics

저기 위 그림에서 가운데 해당하는 부분으로 여러 방식이 있다.

Memory

input port의 packet을 memory에 저장한 뒤이에 대해 output port에서 access해 가져가는 방식으로 느리다는 단점이 있다. 메모리를 거치기 때문이고 자원을 소모한다는 점에서도 단점이라고 볼 수 있다. 가장 전통적인 방식으로 현재는 거의 사용하지 않는다. 

Bus

하나의 Bus를 공유하는 방식으로 속도는 빠른데 Bus를 공유하다보니 대역폭에 대한 병목현상이 발생할 수 있다.

Crossbar

가장 진화된 방식으로 여러개의 bar가 직물처럼 짜여있어 각 port가 자신만의 경로를 가지고 있어 대역에 대한 제한도 적고 속도도 빠르다. 단점은 비용이 비교적 비싸다는 점인데 비교적 비싼거지 현재는 그렇게 많이 비싼것도 아니다. 

Control plane

Routing의 목적은 good path를 결정하는 것으로 여기서 path는 패킷이 지나는 경로를 말하고 good path는 비용이 가장 적게드는 path를 말한다. 이는 Graph를 통해 Cost 연산이 가능한데 대표적인 알고리즘은 Dijkstra(Link state), Bellman-Ford(Distance vector)가 있다.

Link-state Routing Algorithm(OSPF)

Dijkstra 알고리즘을 사용하는 라우팅 알고리즘으로 중요한 특징은 Router는 모든 edge에 대한 Cost를 알고 있다는 가정을 한다. 이 말은 다시 말하면 주기적으로 Cost에 대한 정보를 모두 가지고 있어야 한다는 의미이고 이는 구현이 어려움과 동시에 자원을 많이 소모한다는 의미이다. 빠르고 전체 토폴로지 정보를 가지기에 루프 발생 가능성도 적다. 하지만 위에서 말했다시피 자원을 많이 소모한다. 

Distance Vector(RIP)

Bellman-Ford 알고리즘을 사용하는 라우팅 알고리즘으로 특징으로는 Router의 정보는 인접한 edge의 Cost에 대한 정보만 가지고 있다는 점이다. 이 의미는 비교적 적은 자원으로도 해당 알고리즘을 구현할 수 있다는 점이지만 단점으로는 상대적으로 느릴 수 밖에 없다. 그리고 전체 토폴로지를 모르기 때문에 재수가 없으면 루프가 발생해버릴 수도 있다.

 

구체적인 Routing 알고리즘은 여기 시험에서는 나오지 않을 것 같다. 3학년 수업 중 컴퓨터 네트워크에서 이미 한번 나오기도 했고 보안에 한정을 하면 이 내용은 보안과는 거리가 멀기 때문에 교수님이 굳이 시험에 내시지는 않을 것 같다. 하지만 중요한 개념이긴 해서 네트워크에 대한 공부를 한다면 꼭 알긴 알아야 한다.

'4학년 1학기 > 네트워크 보안' 카테고리의 다른 글

21. Programmable Data Plane  (1) 2024.06.05
20. SDN(2)  (0) 2024.06.03
18. Container  (1) 2024.06.02
17. Firewall  (0) 2024.06.01
16. Web Attack  (0) 2024.06.01