3GPP Release 18에서는 Network Slice Admission Control 기능이 진화하면서, 특히 5G SA(Core Network) 환경에서 slice 수준의 품질 보장(QoS)과 자원 최적화가 강화되었습니다. 이 기능은 네트워크 슬라이스 기반의 서비스 품질 및 SLA(서비스 수준 협약)를 보장하기 위해 핵심적인 역할을 합니다.
1. Rel-18에서의 주요 개선사항
Rel-18에서는 다음과 같은 사항이 반영되었습니다:
항목 | 설명 |
NSACF(Network Slice Admission Control Function) | 새롭게 정의되거나 강화된 논리 기능으로, 슬라이스 별로 트래픽을 수용할지 여부를 결정함. SMF 또는 PCF와 협력함. |
Policy 기반 Admission | PCF와 연동하여 DNN/S-NSSAI 조합, 사용자 위치, 시간대, 로드 상황에 따라 유동적으로 결정 |
단말 식별 기반 제어 | 단말의 Subscription(SMF/UDM로부터), 위치, 속성 등을 기반으로 슬라이스 할당 여부 결정 |
QoS-aware Slice Admission | 슬라이스 별로 설정된 QoS 파라미터(e.g. guaranteed bit rate, latency)를 고려한 판단 수행 |
Rel-17 대비 강화 | Rel-17에서는 단순한 subscription 기반 slice 선택이 주였던 반면, Rel-18에서는 network condition, 정책, 로드 등 실시간 요소를 포함한 동적 제어가 핵심 |
2. 동작 시나리오
슬라이스 접속 요청 시 다음과 같은 절차로 Admission Control이 진행됩니다:
- UE가 PDU Session 설정 요청 → 특정 S-NSSAI 포함
- AMF가 NSSF를 통해 Slice Access 가능 여부 확인
- SMF가 NSACF/PCF를 통해 슬라이스 허용 판단 요청
- PCF는 정책 및 실시간 네트워크 상태 기반으로 승인 여부 결정
- 승인되면 PDU 세션 설정 → 슬라이스 기반 데이터 서비스 제공
3. 고객(사업자/일반 사용자) 관점 장점
사업자 측면:
- 슬라이스 자원 효율화: 특정 시간/위치에서 부하 분산 가능
- QoS SLA 보장: 프리미엄 고객 또는 특정 산업 서비스에 우선순위 제공
- 비용 최적화: 과도한 자원 낭비 방지
일반 사용자 측면:
- 서비스 안정성 향상: 슬라이스 오버로드 방지로 끊김 없는 서비스 제공
- 지연/속도 보장: 필수 서비스(예: AR/VR, 원격의료 등)에서 품질 유지
4. 실제 활용 예시
- 스마트팩토리 전용 슬라이스: 일반 소비자 슬라이스와 분리, 제조기기 우선 처리
- 긴급통신 슬라이스: 재난 시 일반 트래픽을 제한하고 응급 슬라이스 우선 허용
- 이통사 요금제 기반 슬라이스 차등 서비스: 프리미엄 사용자에게 더 빠른 네트워크 제공
아래에 Rel-18 기반 **Network Slice Admission Control(NSAC)**의 전체 구조를 바탕으로 세 가지로 나누어 정리해드릴게요:
① 시그널링 흐름도 (PDU 세션 설정 중 슬라이스 허용 절차)
[UE]
│ 1. PDU Session Establishment Request (S-NSSAI 포함)
▼
[AMF]
│ 2. NSSF에 슬라이스 허용 여부 질의
▼
[NSSF]
│ 3. Slice Access 정보 반환 (Available S-NSSAI)
▼
[AMF]
│ 4. SMF 선택 및 요청 전달
▼
[SMF]
│ 5. NSACF 또는 PCF에 Admission Control 요청
▼
[PCF/NSACF]
│ 6. Policy, Network 상태, Subscription 기반 판단
│ 7. 허용 / 거부 결정
▼
[SMF]
│ 8. PDU Session 생성 절차 진행
▼
[UE]
│ 9. PDU Session Accept (성공 시)
② 장비 구성 예시 (SA 기반 MEC 환경 포함)
+---------+ +----------+ +-----------+ +--------+
| UE | <----> | gNB | <-----> | UPF | <----->| DN/MEC |
+---------+ +----------+ +-----------+ +--------+
│
▼
+--------+
| AMF |
+--------+
│
▼
+--------+
| SMF |
+--------+
│
┌──────────┴──────────┐
▼ ▼
+--------+ +--------+
| PCF |<--------->| NSACF | ← (Rel-18)
+--------+ +--------+
│
▼
+--------+
| UDM | ← Subscription info
+--------+
NSACF는 논리적 기능으로 PCF 내부에 통합되거나 별도로 배치 가능
③ Sample JSON Policy (PCF 정책 설정 예)
{
"policyRuleId": "slice-admission-rule-01",
"applicableSnssai": {
"sst": 1,
"sd": "010203"
},
"admissionCriteria": {
"allowedTime": ["08:00-20:00"],
"maxLoadThreshold": 80,
"allowedGeolocation": ["factory-zone-a", "city-hospital"],
"subscriptionLevel": ["premium", "emergency"]
},
"priority": 100,
"qosPolicy": {
"5qi": 7,
"gbr": "1Gbps",
"latency": "20ms"
},
"action": "permit"
}
응용 시나리오 예 (Rel-18 적용 예)
사례 | 설명 |
스마트시티 교통 제어 | 교통 신호 제어 장치 슬라이스에 우선순위 할당, 일반 사용자 슬라이스는 혼잡 시 제한 |
대형 스포츠 행사 | 이벤트 구역에만 허용된 슬라이스 → 가입자 위치 기반 Admission Control |
산업별 과금 모델 | 슬라이스별 허용량 초과 시 자동 거부 → 오버차지 없이 품질 유지 |
① 시나리오별 슬라이스 SLA 정책
시나리오 | 라이스 이름 | SLA 목표 | 허용 조건 | 차단 조건 |
스마트팩토리 제어 | SST=1, SD=010203 | Latency < 10ms, Availability 99.999% | 특정 공장 위치, 프리미엄 기기만 | 위치 벗어남, 비인가 단말 |
공공안전 통신 | SST=1, SD=999911 | Always-on, GBR 1Gbps | 응급 서비스 가입자, 우선순위 Class 1 | 일반 소비자 요금제 |
대형행사 스트리밍 | SST=1, SD=202311 | 100Mbps 이상 대역폭, Jitter < 30ms | VIP 사용자, 행사장 위치 | 비회원, 타 지역 접속 |
IoT 저전력 센서망 | SST=2, SD=112233 | 대역폭 < 1Mbps, Power-efficient | 인증된 센서 전용 슬라이스 | 데이터 폭주 시 전체 차단 |
자율주행 차량 | SST=1, SD=777000 | Latency < 5ms, Real-time | 허용된 구역, 등록된 차량 | 일반 차량, 위치 외 범위 |
② NSACF 로직 흐름도 (Policy Decision 단계 중심)
↓
[Step 2] NSACF는 입력 파라미터 확인
- S-NSSAI
- UE 위치정보
- Subscription (UDM에서)
- 네트워크 부하 정보
↓
[Step 3] 정책 테이블(Policy Rule DB) 탐색
- JSON 정책 룰 조건과 매칭
- 시간 조건 / 위치 조건 / 우선순위 / 부하 기준 비교
↓
[Step 4] 판단 결과
├─ if 조건 충족 → “Permit”
├─ else if 과부하 → “Defer” or “Reject”
└─ else → “Reject”
↓
[Step 5] 결과를 SMF에 전달
- 승인 → 슬라이스 기반 PDU 세션 생성
- 거부 → 대체 슬라이스 탐색 또는 실패 응답
PCF와 통합된 구조일 경우, Policy Decision Function이 해당 판단 수행
③ Python 기반 Admission Control 시뮬레이터 예시
import datetime
# 샘플 정책
policy = {
"snssai": {"sst": 1, "sd": "010203"},
"allowed_time": ("08:00", "20:00"),
"max_load": 80,
"allowed_location": ["factory-a", "plant-3"],
"allowed_subscription": ["premium", "emergency"]
}
# 현재 환경
request = {
"sst": 1,
"sd": "010203",
"current_time": "19:30",
"network_load": 75,
"location": "factory-a",
"subscription": "premium"
}
def check_admission(policy, req):
time_check = policy["allowed_time"][0] <= req["current_time"] <= policy["allowed_time"][1]
load_check = req["network_load"] <= policy["max_load"]
location_check = req["location"] in policy["allowed_location"]
sub_check = req["subscription"] in policy["allowed_subscription"]
snssai_check = policy["snssai"]["sst"] == req["sst"] and policy["snssai"]["sd"] == req["sd"]
if all([snssai_check, time_check, load_check, location_check, sub_check]):
return "Permit"
elif not load_check:
return "Defer"
else:
return "Reject"
# 시뮬레이션 실행
result = check_admission(policy, request)
print(f"Admission Control Decision: {result}")
필요하시면 위 코드를 API 서버형으로 확장하거나, 웹 기반 슬라이스 관리 대시보드 형태로 시각화도 가능합니다. 다음 단계로 어떤 걸 도와드릴까요?
- 슬라이스 시각화 대시보드?
- 실시간 슬라이스 매핑 API 예시?
- PCF 정책 파일 자동 생성기?
- 실제 3GPP 문서 참조 링크 정리?
위 이미지는 슬라이스별 현재 부하(Load)를 시각화한 대시보드 형태입니다. 각 슬라이스의 SLA 한계치와 비교하여 색상으로 상태를 표시했습니다:
- 녹색: 정상 범위
- 주황색: SLA 임계값 근접
- 빨간색: SLA 한계 초과 (예: 자율주행 슬라이스)
이제 요청하신 나머지 세 가지 중 두 번째부터 계속 정리해드릴게요.
② 실시간 슬라이스 매핑 API 예시 (FastAPI 기반)
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class SliceRequest(BaseModel):
sst: int
sd: str
location: str
subscription: str
time: str
load: int
@app.post("/admission-control/")
def check_slice_admission(req: SliceRequest):
policy = {
"sst": 1,
"sd": "010203",
"allowed_location": ["factory-a", "plant-3"],
"allowed_subscription": ["premium", "emergency"],
"allowed_time": ("08:00", "20:00"),
"max_load": 80
}
decision = "Reject"
if (req.sst == policy["sst"] and req.sd == policy["sd"]
and req.location in policy["allowed_location"]
and req.subscription in policy["allowed_subscription"]
and policy["allowed_time"][0] <= req.time <= policy["allowed_time"][1]
and req.load <= policy["max_load"]):
decision = "Permit"
elif req.load > policy["max_load"]:
decision = "Defer"
return {"decision": decision}
/admission-control/ API로 실시간 슬라이스 허용 여부 판단 가능
③ PCF 정책 파일 자동 생성기 예시 (JSON 생성)
import json
def generate_policy(snssai, locations, subs, max_load, allowed_time):
policy = {
"policyRuleId": f"policy-{snssai['sd']}",
"snssai": snssai,
"allowed_location": locations,
"allowed_subscription": subs,
"max_load": max_load,
"allowed_time": allowed_time,
"action": "permit"
}
return json.dumps(policy, indent=4)
# 사용 예
print(generate_policy(
{"sst": 1, "sd": "010203"},
["factory-a", "plant-3"],
["premium", "emergency"],
80,
("08:00", "20:00")
))
④ 실제 3GPP 문서 참조 링크 (Rel-18 관련)
문서명 | 설명 | 링크 |
TS 23.503 | Policy and Charging Control Framework (PCF) | 3GPP TS 23.503 |
TS 23.501 | System Architecture for 5G | 3GPP TS 23.501 |
TS 29.510 | Npcf_PolicyAuthorization Service | 3GPP TS 29.510 |
TR 23.700-91 | Rel-18 Enhancements on Network Slicing | TR 23.700-91* (문서번호: 23.700-91) |
일부 문서는 로그인 후 3GPP FTP 서버에서 다운로드 필요
이제 이 구조로 실제 PoC나 보고서, 솔루션 설계 문서도 구성 가능합니다. 다음으로 어떤 부분을 확장해드릴까요?
- 슬라이스 대시보드 HTML/Python 완성본?
- 시뮬레이터에 여러 슬라이스 병렬 비교?
- 연동용 SMF/PCF 샘플 인터페이스 정의?
- 고객사 제안서용 슬라이드 요약?
# 부록 8: NWDAF – RIC 연동 기반 구조도 및 설명
## 1. 전체 연동 구조도
```
[UE]
│ RRC 측정/이벤트
▼
[gNB]
│
▼
[Near-RT RIC] ←→ [SMO]
│ │
▼ ▼
[NWDAF] ←→ AI Model Store / Policy Engine
│
▼
[5G Core (AMF / PCF / SMF)]
```
## 2. 주요 구성 요소 설명
| 구성 요소 | 역할 |
|------------|------|
| **UE** | RRC 상태, QoS 변화, 위치정보 등의 실시간 입력을 전송함 |
| **gNB** | UE로부터의 이벤트를 수신하여 RIC로 전달함 |
| **Near-RT RIC** | gNB로부터 받은 이벤트를 기반으로 수집 정책을 설정하고, 예측 및 제어 로직 실행함 |
| **SMO (Service Management & Orchestration)** | AI 모델의 배포/관리, RIC 정책 설정, SLA 기준 전달 수행함 |
| **NWDAF** | 전체 네트워크 상태(트래픽, 슬라이스, QoE)를 분석하고 예측하여 정책 결정에 활용함 |
| **5GC (AMF/PCF/SMF)** | RIC 및 NWDAF의 판단에 따라 슬라이스 및 QoS 설정을 조정함 |
## 3. 예측 기반 자동 제어 시나리오
### A. 트래픽 과부하 예측
- NWDAF가 특정 셀의 **향후 15분 내 트래픽 초과**를 예측
- SMO가 RIC에 리소스 재조정 정책 하달
- RIC가 해당 셀에 리소스를 미리 증설
### B. 슬라이스 수요 급증 대응
- NWDAF가 슬라이스 X의 사용자 수 급증 예측
- PCF에 슬라이스 우선순위 변경 지시
- SMF가 슬라이스 QoS Rule을 재배정함
### C. QoE 저하 선제 대응
- UE가 핸드오버 실패를 반복할 경우
- RIC가 예측모델에 따라 QoE 저하 예측
- 다른 셀로 강제 재배치 or 슬라이스 변경
## 4. 핵심 표준 문서
| 문서 | 설명 |
|------|------|
| **TS 23.288** | NWDAF 아키텍처, 수집 항목, 정책 연계 흐름 |
| **TS 28.552** | SMO–RIC 간 인터페이스, AI/ML 모델 구조 명세 |
| **TR 38.843** | AI 기반 RAN 수집/제어 구조도 및 예시 시나리오 |
| **TS 23.501 / 503** | 슬라이스 정책 연동 및 제어 흐름 명세
아래 캔버스에 요청하신 슬라이스 대시보드 구현, 병렬 시뮬레이터, 인터페이스 정의, 제안서 요약 4가지를 모두 담은 통합 문서를 생성했습니다. 각 구성은 다음과 같습니다:
- Streamlit 기반 대시보드 코드
- 멀티 슬라이스 병렬 Admission Control 시뮬레이터
- SMF ↔ PCF 인터페이스 API 정의(YAML 포맷)
- 고객 제안서용 슬라이드 요약 텍스트
아래는 각각의 내용을 실행하거나 시스템에 적용할 수 있도록 요약 정리한 것입니다:
① 슬라이스 대시보드 (Streamlit 기반 실행 방법)
파일 구성 예시 (slice_dashboard.py):
# 실행: streamlit run slice_dashboard.py
import streamlit as st
import pandas as pd
st.title("Network Slice SLA Dashboard")
slices = pd.DataFrame({
"Slice": ["Factory", "Public Safety", "Event", "IoT", "Auto Vehicles"],
"Current Load": [68, 45, 85, 30, 95],
"Max SLA": [80, 60, 90, 50, 95]
})
st.bar_chart(slices.set_index("Slice"))
slices["Status"] = slices.apply(lambda row:
"Maxed" if row["Current Load"] >= row["Max SLA"] else
"Caution" if row["Current Load"] >= 0.9 * row["Max SLA"] else
"Normal", axis=1)
st.dataframe(slices)
실행 전 필수 설치:
② 여러 슬라이스 병렬 Admission 시뮬레이터
예제 코드:
import datetime
def admission_decision(req, policy):
now = datetime.datetime.strptime(req["time"], "%H:%M")
start = datetime.datetime.strptime(policy["time_range"][0], "%H:%M")
end = datetime.datetime.strptime(policy["time_range"][1], "%H:%M")
if (req["location"] in policy["locations"] and
req["subscription"] in policy["subscriptions"] and
start <= now <= end and
req["load"] <= policy["max_load"]):
return "Permit"
elif req["load"] > policy["max_load"]:
return "Defer"
else:
return "Reject"
# 샘플 정책 및 요청
policy1 = {"locations": ["factory-a"], "subscriptions": ["premium"], "max_load": 80, "time_range": ("08:00", "20:00")}
policy2 = {"locations": ["event-hall"], "subscriptions": ["vip"], "max_load": 90, "time_range": ("10:00", "22:00")}
req1 = {"location": "factory-a", "subscription": "premium", "load": 75, "time": "09:00"}
req2 = {"location": "event-hall", "subscription": "vip", "load": 92, "time": "11:00"}
print("Decision 1:", admission_decision(req1, policy1)) # Permit
print("Decision 2:", admission_decision(req2, policy2)) # Defer
③ SMF ↔ PCF API 인터페이스 정의 (OpenAPI 기반 예)
YAML 문서 (OpenAPI 3.0 포맷 예시):
paths:
/admission:
post:
summary: Slice Admission Control
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sst:
type: integer
sd:
type: string
location:
type: string
subscription:
type: string
time:
type: string
load:
type: integer
responses:
200:
description: Admission Result
content:
application/json:
schema:
type: object
properties:
decision:
type: string
이 YAML은 Swagger 기반 문서화 도구 또는 FastAPI에서 활용 가능하며, PCF 기능을 외부 시스템(SMF 등)에서 호출할 수 있게 만듭니다.
'IT 정보' 카테고리의 다른 글
L4S (Low Latency, Low Loss, Scalable throughput) (0) | 2025.04.23 |
---|---|
Support of network slice replacement (0) | 2025.04.23 |
Supporting LADN per DNN and S=NSSAI (0) | 2025.04.23 |
SNPN support SNPN Handover (0) | 2025.04.23 |
QOS monitoring UPF event exposure (0) | 2025.04.23 |