본문
RFC7665: Service Function Chaining (SFC) Architecture #1
1. 소개
단대단 서비스의 제공에는 다양한 서비스 기능들이 포함되는 경우가 많다. 여기에는 방화벽이나 NAT등의 기존 네트워크 서비스 및 특정 어플리케이션들을 위한 기능들이 포함되는데, 이러한 기능들을 순서대로 묶은 서비스의 정의 또는 인스턴스화, 그리고 이들을 거쳐가는 트래픽들을 잘 조종하는 (Steering) 과정을 서비스 기능 체이닝(SFC, Service Function Chaining)이라 한다. 이 문서에서는 네트워크에서 SFC를 생성하고 유지하는데 사용되는 구조를 기술하며, 여기에는 구조적인 컨셉, 원칙, 컴포넌트 들에 대한 내용이 포함된다. SFC는 하나 이상의 서비스 기능들로 구성된 서비스의 구현을 가능하게 한다. RFC7498에서는 단대단 서비스 기능 체인의 배치와 관련된 이슈, 서비스를 이루는 서비스 기능들의 추상적 조합과 그 조합순서, 그리고 해당되는 서비스 기능으로 트래픽을 잘 Steering하는 등의 전반적인 내용이 기술되어 있다.
현재 사용되는 서비스 기능 배치 모델은 네트워크 토폴로지나 물리적 자원과 밀접하게 결합되어있기 떄문에 상대적으로 정적이고, 이로인하여 통신사업자들이 새로운 서비스를 도입하거나 동적으로 서비스 기능 체인을 생성하는데에 한계를 안겨준다. 따라서 SFC구조에 바탕을 둔 새로운 모델에서는 토폴로지 독립성과 구성 복잡성을 지원하며 기존 서비스 배치의 문제점을 해결하고자 한다.
1.1 범위
본 문서에서는 포워딩 토폴로지에 독립적인 SFC 구조를 정의한다. 이 구조에서, 패킷은 네트워크에 들어올때(ingress) SFC를 위한 서비스 기능들을 위하여 분류되고(classified), 각각의 기능들에 순서대로 처리되기 위하여 전달된다(forward) 패킷은 이 과정에서 다시 재분류 될 수도 있다. SFC 구조는 특정 네트워크나 배치시나리오에 독립적으로 작성되었으므로, 유무선 네트워크 또는 데이터센터 어디든지 적용가능하다. 단, 현재 문서에서 기술된 SFC구조는 하나의 네트워크 관리 도메인에 사용된다는 가정이 존재한다. 물론 도메인을 아우르는 환경에서도 SFC 구조를 활용할 수도 있겠지만, 그것은 추후에 고려해볼 사항이다.
1.2 가정
- 서비스 기능에 대해서는 규정된 정의라든가 특성등을 고려하지 않는다. 따라서 SFC구조에서는 각각의 서비스 기능들이 일종의 '처리 장치'라고 가정한다.
- 어떠한 관리 도메인에있어서든, 공통적이거나 반드시 들어가야한다고 정의된 서비스 기능은 존재하지 않는다. 해당 관리도메인에서 사용되는 서비스 기능들이라함은, 현재 활성화된 서비스에 포함된 기능들을 의미하며 그것은 시간이나 네트워크 환경에 따라 달라질 수 있다.
- 서비스 기능들을 체이닝하는데 사용되는 공통/표준 로직은 존재하지 않는다. 해당 서비스를 제공하기 위하여 필요한 서비스 기능들의 (순서있는) 집합은 각각의 관리 주체에 따라 다를 수 있다.
- 서비스 기능들의 체이닝과 이들의 작동조건은 서비스 기능을 수행하는 각각의 관리주체에 따라 다르다.
- 몇몇 서비스 기능 체이닝 정책은 관리 도메인내에서 동시에 적용되어 다양한 비즈니스 요구사항을 만족시키는데 사용된다.
- 언더레이방식은 서비스 기능 전달자(SFF, Service Function Forwarders)들을 서로 연결하는데 사용된다. 이때 대역폭이나 지연시간, 지터(Jitter)등의 요구사항을 만족하는한, 그중에서 어떤 방식을 사용하든 상관없다.
- 서비스에 관여하는 노드들에서 Forwarding Information Bases (FIBs)이나 Routing Information Bases (RIBs)가 어떻게 구성되는지에 대해서는 관여하지 않는다.
1.4 용어정의
- 네트워크 서비스: 통신사업자에 의해 제공되는 서비스로서, 하나 이상의 서비스 기능을 사용하여 사용자에게 제공된다. 이 문서에서 서비스라고 지칭하는것은 네트워크 서비스를 의미하는것으로 이해해도 좋다.
- 분류(Classification): 해당하는 어플리케이션에 필요한 네트워크 서비스 기능들을 위하여 트래픽 플로우를 정책과 대조해 놓은 것이다. 이때 정책은 사용자별/네트워크별/서비스별로 다양하다. 분류작업을 하는 장비를 분류자(Classifier)라 한다.
- 서비스 기능 체인(SFC, Service Function Chain): 서비스 기능 체인은 분류 과정에서 선택된 패킷/프레임/플로우를 위하여 필요한 서비스 기능들과 기능들의 조합 순서를 정의한다. 서비스 기능들중 하나로 방화벽을 예로들 수 있다. 서비스 기능들의 순서는 일직선으로 진행되지 않을 수 있는데, 이를 통하여 SFC구조는 서비스 체인 순서에 유연성을 부여하거나 하나이상의 기 정의된 가지(Branch)를 재사용할 수 있다. 본 문서에서는 서비스 기능 체인을 줄여서 서비스 체인이라 언급하기도 한다.
- 서비스 기능(SF, Service Function): 해당 패킷에 대한 특정한 처리를 수행하는 기능을 의미한다. 서비스 기능은 프로토콜 스택의 네트워크 레이어나 응용 레이어와같은 다양한 위치에서 작동할 수 있다. 서비스 기능은 논리적인 컴포넌트로써, 가상 장비 또는 물리 네트워크 장비내에 구현될 수 있으며, 하나 이상의 서비스 기능들은 동일한 네트워크 장비내에서 작동할 수도 있다. 동일한 관리 도메인 내에서 동일한 서비스 기능들이 여러개 존재할 수도 있다. 기능들은 부가가치 서비스 제공에도 사용될 수 있는데, 그 예로 방화벽, WAN 가속기, DPI, 로드밸런서, NAT, HOST_ID 인젝션, HTTP 헤더추가, TCP 최적화 기능등이 있다. 서비스 기능은 SFC를 인지할 수 있거나(SFC 캡슐화를 바탕으로 정보 수신하고 기능을 수행) 혹은 인지하지 못할수도(SFC 캡슐화를 사용하지 않는채로 데이터가 전달) 있다. 이는 각각 'SFC 인지(SFC Aware)', 'SFC 무지(SFC Unaware)'로 표현되기도 한다.
- 서비스 기능 전달자(SFF, Service Function Forwarder): 서비스 기능 전달자는 서로 연결된 서비스 기능들간에 트래픽을 전달하는 역할을 수행한다. 이는 SFC 캡슐내에 들어있는 정보를 바탕으로 그 기능이 수행되며, 또한 서비스 기능으로부터 오는 트래픽을 처리하는 역할 또한 수행한다. 필요하거나 지원되는 경우 SFF는 트래픽을 분류자로 전달하거나 트래픽을 또다른 SFF로 전달하고, 또한 서비스 기능 경로(SFP, Service Function Path)를 종료시키는데 사용되기도 한다.
- 메타데이터(Metadata): 분류자와 서비스 기능, 그리고 서비스기능들간에 정보를 교환하는데 사용된다.
- 서비스 기능 경로(SFP, Service Function Path): 서비스 기능 경로는 특정 서비스 기능을을 거쳐가야하는 패킷을 위하여 지정된 경로를 규정해 놓은 것이다. 물론 정확한 위치를 향해 패킷의 경로가 설정되어야하지만, 이를 좀 덜 명확하게 정의할 수도 있다. SFP는 완전히 추상화된 서비스 기능들의 순차적인 체인으로써 정의될 수도 있으며 또한 정확히 어떤 SFF/SF으로 패킷이 흘러가야하는지와 같이 명확하게 정의될 수도 있다. 이로써 통신사업자들은 특정 SFF/SF를 선택하는데 있어 경로 정의에 대한 유연성을 부여할 수 있다.
- SFC 캡슐(SFC Encapsulation): SFC 캡슐는 SFF와 SFC를 인지하는 기능에서 서비스 기능 경로를 판별하는데 사용된다. SFC 캡슐은 네트워크 패킷을 전달하는데 사용되는것은 아니다. 서비스 기능 경로를 판별하는 기능에 더하여 SFC 캡슐은 데이터 프레인 정보를 포함하는 메타데이터를 전송하는데 활용되기도 한다.
- 표현된 서비스 경로(RSP, Rendered Service Path): 서비스 기능경로에서, 패킷은 네트워크의 특정 장소에서 다른 특정장소로 전송되며 SFF/SF들을 순차적으로 방문한다. 이와같이 특정 SFF/SF에 방문하는 실제적인 순서는 표현된 서비스 경로(RSP)라 불린다.
- SFC 프록시(SFC Proxy): SFC에 무지한 서비스 기능을 대신하여 SFC 캡슐을 제거하거나 추가하는 역할을 수행한다.
==============================
오랜만에 RFC 번역을 하려다보니 어색한부분이 많다. 특히 앞부분에서 내맘대로 용어를 풀어쓰다보면 나중에 용어 정의부분에서 '앞에 풀어쓴걸 다시 공식용어로 바꿔서 쓸까..' 하는 고민을 하게된다. 아무튼 SDN/NFV에서 공통으로 자주사용되는 개념인 서비스 체이닝에 관하여 공유하고자 글을 작성하였다. 딱 '서비스 체이닝'하면 전혀 모르는사람도 대충 엮는 개념이구나 하는데 굳이 일일히 RFC를 번역하는게 의미가 있나 싶기도 하지만, 번역하면서 보면 저자들이 어떤생각을 하고 만들었는지 좀 더 몸으로 익혀지는 느낌이라...
댓글