Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021)
Hướng tiếp cận DPDK trong tối ưu hiệu năng
xử lý bảo mật gói tin trên hệ thống gNodeB 5G
Nguyễn Chí Kiên*, Bùi Việt Hùng, Phạm Ngọc Hải, Phạm Xuân Trà, Nguyễn Thị Huyền Trang, Phạm
Kim Anh Dũng
Trung tâm vô tuyến băng rộng – Tổng cơng ty Cơng nghiệp Cơng nghệ cao Viettel
Email:
tính toàn vẹn sẽ gồm NIA1, NIA2 và NIA3 được dựa
trên SNOW3G UIA2 [4], AES CMAC 128bit [7], ZUC
EIA3 [6].
Tất cả các thuật tốn bảo mật trên đều đã có những
thư viện C để thực hiện bằng phần mềm thông thường,
và đây cũng cách tiếp cận truyền thống để xử lý bảo mật.
Tuy nhiên với độ phức tạp tăng dần thuật tốn cùng với
u cầu cao về mặt băng thơng, các thuật toán bảo mật
khi được thực hiện bằng các thư viện C có sẵn, đã thể
hiện rõ các nhược điểm. Thách thức lớn nhất khi xử lý
bảo mật chính là đảm bảo tính logic của thuật tốn,
nhưng vẫn đảm bảo được hiệu năng của hệ thống. Ví dụ
với một thuật tốn mã hóa thơng dụng ở mạng Internet
được áp dụng vào mạng di động 5G là NEA2 (AES CTR
128), mỗi bản tin sẽ được băm thành 128bit để thực hiện
mã hóa như trong Hình 1. Thuật tốn AES được viết tắt
từ Advanced Encryption Standard, hay còn được biết
đến với cái tên gốc là Rijindael[8], là một thuật tốn mã
hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn
mã hóa. AES sẽ làm việc với khối dữ liệu (đầu vào và
đầu ra) 128bit và khóa có độ dài 128bit. Từ khóa ban
đầu, AES sẽ tạo ra các khóa con cho từng khối để thực
hiện mã hóa. Mỗi khối dữ liệu 128bit đầu vào sẽ được
chia thành 16bytes (mỗi byte sẽ bao gồm 8 bits) để tạo
thành một ma trận 4x4 để thực hiện mã hóa. Trên một vi
xử lý Pentium Pro, việc mã hóa bằng thuật tốn AES u
cầu 18 clock cycles[8] (thời gian của một chu kỳ CPU)
trên mỗi byte. Điều này sẽ tương đương với việc xử lý
AES với thông lượng 11MBps cho 200MHz, tức khoảng
880Mbps cho 2.00Ghz của hệ thống trạm gNodeB 5G
hiện tại. Với yêu cầu xử lý phức tạp như vậy, việc sử
dụng phần mềm thư viện C để bảo mật, nhưng vẫn đảm
bảo được yêu cầu về xử lý những giao thức khác và băng
thơng của 5G là điều bất khả thi.
Do đó, hướng tiếp cận Data Plane Development Kit
trong việc tối ưu hiệu năng xử lý bảo mật gói tin 5G là
điều tất yếu cần phải có. DPDK là một bộ thư viện mã
nguồn mở được Intel phát triển, nó cung cấp các API
làm việc với phần cứng để phục vụ giảm tải gói tin.
Ngồi ra, khi làm việc với DPDK, phần ứng dụng sẽ bỏ
qua các thủ tục ở kernel (như độ trễ của các system call,
cơ chế polling kernel). DPDK còn tối ưu hiệu năng bằng
việc sử dụng hugepage (một tính năng của Linux dùng
để cấp một đơn vị vùng nhớ lớn hơn bình thường trên
Tóm tắt — Trong bối cảnh 5G (hệ thống mạng di động thế
hệ thứ 5) đang từng bước trở thành hạ tầng số cốt lõi phục
vụ cho công cuộc chuyển đổi số cho xã hội số, nền kinh tế
số và chính phủ số, việc bảo đảm an tồn thơng tin cho
mạng 5G là một vấn đề tất yếu cho các quốc gia trên thế
giới, cũng như Việt Nam. Tổ chức toàn cầu về xây dựng
các tiêu chuẩn cho trạm gốc 5G - 3GPP đã đưa ra những
thuật toán bảo mật phức tạp hơn so với thế hệ trước để
đảm bảo an tồn thơng tin cho trạm gốc 5G. Với độ phức
tạp trong các khâu xử lý của từng thuật toán như vậy, cách
phát triển xây dựng giao thức bảo mật truyền thống cho
mạng 5G đã bộc lộ rất nhiều khuyết điểm, đặc biệt là ở
phần tải của CPU. Vì vậy, cách tiếp cận này đã không đảm
bảo được thông lượng của mạng 5G, các kết quả cho thấy
nó chỉ có thể đảm bảo được mức thơng lượng của mạng
4G hoặc kém hơn. Và để có thể đáp ứng được tiêu chuẩn
tốc độ nhanh hơn khoảng 10 lần so với mạng 4G hiện nay,
tức khoảng 10Gbps. Ở bài báo này, chúng tơi sẽ trình bày
một cách tiếp cận hoàn toàn mới bằng DPDK (Data Plane
Development Kit), để giải quyết việc xử lý độ phức tạp
trong việc bảo mật gói tin, nhưng vẫn đảm bảo được
những yêu cầu rất cao về mặt băng thông của hệ thống
trạm gNodeB 5G.
Keywords – DPDK, xử lý bảo mật, mã hóa, trạm thu phát
sóng 5G, NG-RAN.
I.
GIỚI THIỆU
Chuẩn 5G đã định nghĩa giao diện thế hệ mới cho
Mạng truy cập RAN (gọi là NG – Next Generation
RAN) được cấu thành từ 3 thành phần chính gồm: CU
(Central Unit), DU (Distribute Unit) và RU (Radio
Unit). [1]
Các giao thức bảo mật 5G sẽ được thực hiện trên CU,
cụ thể là tại giao thức Packet Data Convergence Protocol
(PDCP). Trong khi mã hóa là phương thức bảo mật
chung cho cả mặt phẳng CP – Control Plane (đường điều
khiển, cấu hình) và UP – User Plane (đường dữ liệu
người dùng), thì việc bảo vệ tính tồn vẹn dữ liệu sẽ
được áp dụng cho CP [2]. Các thuật tốn mã hóa và bảo
vệ tính tồn vẹn ở PDCP sẽ được phát triển dựa trên lý
thuyết của những thuật toán bảo mật theo chuẩn thế giới.
Theo chuẩn 3GPP [3], các thuật tốn bảo mật mã hóa
gồm NEA1, NEA2 và NEA3 tương ứng được phát triển
dựa trên các thuật toán SNOW3G UE2 [4], AES CTR
128 [5], ZUC EEA3 [6]. Tương tự, các thuật toán bảo vệ
ISBN 978-604-80-5958-3
284
Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021)
RAM), để trao đổi gói tin giữa ứng dụng và phần cứng.
Điều cuối cùng và cũng là quan trọng nhất của DPDK
trong tối ưu hiệu năng bảo mật, đó là DPDK cung cấp
các Poll Mode Driver (PMD) đặc thù để làm việc các
phần cứng chuyên dụng cho việc xử lý mã hóa, hay bảo
vệ tính tồn vẹn. Trong các phần tiếp theo, chúng tôi sẽ
mô tả hướng áp dụng DPDK vào giao thức PDCP để
thực hiện bảo mật cũng như kết quả mà DPDK mang lại.
thủ tục được đề ra theo chuẩn ở PDCP, các vấn đề gửi
nhận gói tin hay việc xóa gói tin cũng phải được đảm
bảo đồng bộ. Về quá trình gửi nhận các Queue riêng biệt
sẽ được phát triển dựa trên cấu trúc linked list riêng biệt,
theo từng luồng xử gửi nhận ở cả CP và UP. Từ đó, đảm
bảo xử lý đúng thủ tục bảo mật cho từng gói tin. Ngồi
ra, các biến, struct global cũng sẽ được định nghĩa thêm
để quản lí gói tin giữa khối xử lý bảo mật và thực thể
PDCP.
Bài báo sẽ bao gồm hai phần chính: Mơ hình hệ
thống và đánh giá hiệu năng hệ thống. Trong đó, phần
mơ hình hệ thống sẽ mô tả cách mà DPDK được áp dụng
vào hệ thống trạm gNodeB 5G, cụ thể là tại lớp PDCP
(Packet Data Convergence Protocol). Từ đó chúng tơi sẽ
tập trung khái qt việc xử lí bảo mật một gói tin theo
giao thức mạng 5G. Ở phần đánh giá hiệu năng hệ thống,
các kết quả đánh giá sẽ được trình bày để thể hiện sự
khác biệt giữa cách tiếp cách truyền thống và tiếp cận
theo DPDK. Ngoài ra, kết quả cũng sẽ cho thấy được
tiềm năng của phương pháp cho hệ thống trạm thu phát
sóng gNodeb 5G.
B. Q TRÌNH XỬ LÝ GIỮA KHỐI BẢO MẬT
VÀ THIẾT BỊ PHẦN CỨNG XỬ LÝ BẢO MẬT
Ở phần này, chúng tơi sẽ trình bày về cấu hình các
tham số cũng như cách giao tiếp giữa khối bảo mật và
các thiết bị phần cứng. Sẽ có hai tham số chính để cấu
hình cho một gói tin trước khi đưa vào phần cứng xử lý,
đó là: session context và Initialization Vector (IVs). Đối
với session context, đây là tổng hợp tất các cấu hình bất
biến cho một đường dữ liệu của một thiết bị User
Equipment (UE). Nó bao gồm các tham số cấu hình như
chuỗi xử lý bảo mật đang thực hiện, key bảo mật (là
chuỗi 128bit được cấu hình từ lớp trên theo chuẩn
3GPP), thuật toán bảo mật, đường dữ liệu downlink hay
uplink. Trong đó chuỗi xử lý bảo mật là chuỗi các
phương thức cần thực hiện cho gói tin. Các chuỗi bảo
mật sẽ được khai báo, nối với nhau qua một con trỏ next
được khởi tạo trong một session context như trong hình
3.
Hình 1. Mơ hình thuật tốn NEA2 (AES CTR 128)
II.
MƠ HÌNH HỆ THỐNG
A. MƠ HÌNH ÁP DỤNG DPDK Ở GIAO THỨC
PDCP
Trong hệ thống trạm gNode 5G, PDCP là một lớp
giao thức giao tiếp với mạng lõi và nằm ở khối CU. Các
gói tin đầu vào PDCP sẽ được thực hiện lần lượt qua các
giao thức đã được chuẩn 3GPP đề ra cho PDCP[3].
Những giao thức đó bao gồm: đánh số thứ tự cho gói,
nén tiêu đề, thực hiện bảo mật và thêm tiêu đề PDCP sau
khi hoàn thành. Tương tự nhưng ngược lại với thực thể
truyền tin PDCP, thì PDCP khi nhận sẽ loại bỏ tiêu đề
PDCP, thực hiện giải mã, giải nén tiêu đề và sắp xếp lại
thứ tự bản tin.
Phần xử lý bảo mật sẽ được tách riêng thành một khối
độc lập, một thread riêng chạy song song với với PDCP.
Các gói tin sẽ được vào các queue nối giữa hai thread,
khối xử lý bảo mật có nhiệm vụ nhận các packet từ
queue để xử lý vào gửi lại cho PDCP sau khi hoàn thành
như
Hình
2.
Hình 2: Mơ hình xử lý tại PDCP khi áp dụng DPDK
Khối bảo mật sẽ thực hiện cấu hình các tham số, các
bối cảnh cần thiết cho từng gói tin trước khi thực hiện
bảo mật. Sau khi gói tin đã sẵn sàng, khối bảo mật sẽ gọi
các API của DPDK để đưa vào phần cứng xử lý thông
qua PMD. Khối này cũng có nhiệm vụ lấy các gói tin đã
được xử lý thông qua các API DPDK, và đưa về đúng
các thực thể PDCP để có xử lý tiếp các giao thức còn lại.
Để đảm bảo việc đồng bộ giữa hai thread, và xử lý đúng
ISBN 978-604-80-5958-3
Hình 3: Cấu trúc của một session context
285
Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021)
Một session context sẽ được cấp vùng nhớ qua API
DPDK rte_cryptodev_sym_session_create() và được
khởi tạo sau khi cấu hình các tham số qua API DPDK
rte_cryptodev_sym_session_init()
Trong khi session context là tham số bất biến thì IV sẽ
là một tham số thay đổi theo từng gói tin. IVs là một
tham số không quá xa lạ với bất kì những thuật tốn mã
hóa dữ liệu nào nói chung, và những thuật tốn bảo mật
nói riêng ở 5G. Đây có thể coi là một biến private, mà
chỉ ở hai thiết bị đầu cuối có thể tự ngầm hiểu cho nhau
theo một quy luật riêng mà chúng quy định. Khác với
key, hai điểm đầu cuối đều sẽ được cấu hình key từ ban
đầu. Theo chuẩn 3GPP, giá trị IVs này sẽ được tạo dựa
trên những tham số của một gói tin 5G như count, bearer
Id, direction. Tùy thuộc vào từng thuật toán mà giá trị
IVs này sẽ được khởi tạo khác nhau. Tồn bộ q trình
xử lý này được mơ tả trong hình 4.
bộ thư viện Multi-buffer do Intel[10] phát triển, từ đó
DPDK có thể giao tiếp và làm việc với phần cứng AES
NI trên các bộ xử lý kiến trúc Intel như hình 5.
Hình 5: Kiến trúc xử lý bảo mật với phần cứng AESNI MB
PMD
Để giao tiếp với AESNI Crypto thì Intel đã cung cấp
nhiều thư viện API khác nhau để thực hiện. Tuy nhiên,
để DPDK hỗ trợ đầy đủ các thuật toán bảo mật cho hệ
thống thu phát sóng 5G thì chỉ AESNI MB là đáp ứng
đủ[11].
III.
Hình 4: Q trình xử lý gói tin với phần cứng bảo mật dữ liệu
Sau khi gói tin đi vào, khối bảo mật sẽ tìm session
context đã được tạo trước đó cho gói tin này. Một struct
đặc biệt OP để giao tiếp với Crypto PMD sẽ được khởi
tạo qua API rte_crypto_op_alloc(). Struct này được
dùng để chứa session context, IVs và gói tin cần bảo
mật. Sau khi giá trị IVs được khởi tạo và đưa vào OP
cùng với những tham số khác, OP sẽ được đưa vào
Crypto
PMD
để
xử
lý
qua
API
rte_cryptodev_enqueue_burst(). Các gói tin sẽ được
đưa ra ngồi theo API rte_cryptodev_dequeue_burst(),
nếu q trình xử lý thành cơng thì chuyển gói tin về lại
PDCP và giải phóng OP.
C. PHẦN CỨNG HỖ TRỢ BẢO MẬT MẠNG DI
ĐỘNG 5G THEO DPDK.
Như đã đề cập, DPDK sẽ cung cấp các PMD riêng
biệt để làm việc với từng phần cứng khác nhau. Dựa trên
hệ thống trạm gNodeB 5G hiện tại, thì phần cứng có thể
đảm bảo xử lý được tồn bộ các thuật tốn bảo mật theo
chuẩn 3GPP đó là: AESN-NI Multi Buffer Crypto Poll
Mode Driver (AESNI MB PMD).
AESNI MB PMD là phần cứng bảo mật phát triển
dựa trên các tập hợp các lệnh tiêu chuẩn AES NI
(Advanced Encryption Standard New Instruction) do
Intel phát triển. Nó là một mơ đun được tích hợp trên
nhiều bộ xử lý khác nhau trên kiến trúc x86 cho bộ vi xử
lý của Intel và AMD vào tháng 3, 2008[9]. Mặc dù AES
NI ban đầu được thiết kế để xử lý các thuật toán bảo mật
AES, tuy nhiên DPDK đã phát triển và cung cấp các API
để AES NI có thể xử lý được các thuật tốn cịn lại thuộc
mạng 5G. Hệ thống trạm gNodeB 5G phải được cài một
ISBN 978-604-80-5958-3
ĐÁNH GIÁ HIỆU NĂNG HỆ THỐNG
Đầu tiên, để đánh giá khả năng xử lý tối đa của phần
cứng bảo mật bằng API DPDK. Chúng tôi thực hiện phát
triển một ứng dụng đơn giản, độc lập với các giao thức
PDCP. Ứng dụng sẽ thực hiện nhận gói tin và xử lý bảo
mật theo key và IVs được cấu hình mặc định. Thơng tin
về mức độ xử lý như tốc độ băng thơng, số gói tin xử lý
mỗi giây sẽ được thống kế đánh giá.
Tiếp theo, hiệu năng xử lý bảo mật sẽ đánh giá trực
tiếp trên hệ thống trạm gNodeB 5G của Viettel. Các kết
quả sẽ được so sánh giữa việc sử dụng bảo mật bằng
phần mềm và bảo mật sau khi được tích hợp với DPDK.
Crypto Device
Multi-buffer library
version
DPDK Version
CPU
RAM
Thuật toán đánh giá
AESNI MB PMD
0.54
20.11.1 (LTS)
Intel (R) Xeon (R) CPU E5-2620 0 @
2.00GHz.
32Gb
NEA2 (AES CTR 128 Bits)
Bảng 1: Thông tin hệ thống được dùng để đánh giá
Ở bài đánh giá đầu tiên, chúng tôi đã phát triển thêm
một ứng dụng đơn giản để tạo dữ liệu và gửi liên tục qua
ứng dụng xử lý bảo mật. Các thống kế kết quả được tính
tốn trên ứng dụng nhận, tức là ứng dụng bảo mật được
thể hiện qua Bảng 2.
Test
case
Throughput Rx
của khối bảo mật
Throughput Tx
của khối bảo mật
Số gói tin
downlink/giây
1
1.28 Gbps
1.28 Gbps
119890 gói tin
2
3.8 Gbps
3.8 Gbps
354709 gói tin
3
5.7 Gbps
~5.7 Gbps
531519 gói tin
4
9.8 Gbps
~9.8 Gbps
917323 gói tin
Bảng 2: Kết quả của bài đánh giá khi chạy riêng khối
bảo mật
Kết quả tối đa đạt được khi đánh giá riêng phần xử lí bảo
mật (chỉ thực hiện nhận, mã hóa bản tin và gửi đi) với
286
Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021)
các giao thức tại PDCP là xấp xỉ 10Gbps. Đây cũng là
giới hạn tối đa của card mạng khi gửi nhận. Tuy nhiên
với kết quả trên cũng đã chứng minh được rằng, việc sử
dụng DPDK để giảm tải xử lý bảo mật đã đảm bảo được
những yêu cầu khắt khe về tốc độ băng thông của mạng
5G.
Ở bài đánh giá tiếp theo, chúng tôi thực hiện so sánh
kết quả giữa việc xử lý bảo mật trên hệ thống trạm 5G.
Với kết quả ở Hình 6 có thể thấy với mức tải 400Mbps,
thì khối bảo mật khi xử lý bằng thư viện C thông thường
đã bị quá tải, và không thể đạt được các mức thông lượng
cao hơn. Tải CPU với phương pháp thông thường tăng
rất lớn khi mức thông lượng tăng dần. Trong khi đó, dù
ở mức tải 1.8Gbps thì CPU load ở khối bảo mật chỉ tốn
khoảng 25% cho thuật toán NEA2 khi sử dụng DPDK.
Ngồi ra, khi mức thơng lượng tăng dần lên từ 200Mbps
lên 1.8Gbps thì tải CPU cũng khơng tăng quá đáng kể.
mật. Từ đó cho ra những kết quả về sự khác biệt rõ rệt
giữa phương pháp bảo mật truyền thống và bảo mật theo
DPDK. Với phương pháp bảo mật thơng thường thì kết
quả việc xử lí gói tin rất kém, và tải của CPU thường
xuyên bị quá tải. Ở những bài đánh giá cao tải, cách bảo
mật này thậm chí cịn ảnh hưởng trực tiếp đến hiệu năng
của cả hệ thống. Dẫn đến các thiết bị di động bị ngắt kết
nối và không thể tiếp tục dùng dịch vụ. Trong khi đó,
với hướng tiếp cận mới bằng DPDK, tải ở CPU đã được
cải thiện đáng kể và thông lượng đạt được rất cao. Kết
cũng quả cho thấy, mức thông lượng được đánh giá bằng
DPDK ngang với thông lượng hiện tại của hệ thống
mạng 5G, được cấu hình khơng dùng chức năng bảo
mật. Điều này đã chức mình được rằng, hiệu năng của
cả hệ thống đã hoàn toàn được đảm bảo khi áp dụng
DPDK cho việc bảo mật.
Bài báo cũng đã đưa ra kết quả khi đánh giá riêng
phần cứng bảo mật. Các kết quả về mặt thông lượng đã
cho thấy việc áp dụng DPDK trong bảo mật, hoàn toàn
đảm bảo được những thách thức về mặt tiêu chuẩn của
mạng 5G. Tuy nhiên, với giới hạn hiện tại của hệ thống
trạm gNodeB 5G trong bài đánh giá, các kết quả khi
được tích hợp DPDK vẫn chưa thể hiện được hết tối đa
khả năng xử lý của phần cứng. Việc tích hợp DPDK vào
hệ thống trạm gNodeB 5G để phục vụ bảo mật dữ liệu,
vẫn sẽ cần được nâng cấp và tối ưu ở những nghiên cứu
tiếp theo.
TÀI LIỆU THAM KHẢO
Hình 6: Kết quả đánh giá tải CPU ở khối bảo mật bằng hệ mô
phỏng UE
3GPP 5G, “5G; NG-RAN; Architecture description,” ETSI TS
138 401 V15.2.0, July. 2018.
[2] 3GPP 5G, “5G; Security architecture and procedures for 5G
System” ETSI TS 133 501 V15.2.0 Oct.2018
[3] 3GPP 5G, “5G; NR; Packet Data Convergence Protocol
(PDCP)” ETSI TS 138 323 V15.2.0 Sept.2018
[4] Ghizlane Orhanou, Said El Hajji, Youssef Bentaleb, “SNOW
3G Stream Cipher Operation and Complexity Study”
Contemporary Engineering Sciences, Vol. 3 (PDF) 2010
[5] Jin Hyung Park, Dong Hoon Lee, “FACE: Fast AES CTR mode
Encryption Techniques based on the Reuse of Repetitive Data”
(PDF) 2018
[6] Gautham Sekar, “The Stream Cipher Core of the 3GPP
Encryption Standard 128-EEA3: Timing Attacks and
Countermeasures” Aug.2011
[7] Dworkin, Morris (2016). "Recommendation for Block Cipher
Modes of Operation: The CMAC Mode for Authentication"
(PDF).
[8] Daemen, Joan; Rijmen, Vincent (March 9, 2003). "AES
Proposal: Rijndael" (PDF). National Institute of Standards and
Technology. Archived (PDF) Retrieved 21 February 2013.
[9] "Intel Software Network". Intel. Archived from the original on
7 April 2008. Retrieved 2008-04-05.
[10] Jim Guiford, Sean Gulley, Erdinic Ozturk, Kirik Yap, Vinodh
Gopal,
Wajdi
Feghali,
“Fast
Multi-buffer
IPsec
Implementations on Intel®” (PDF) Dec.2012
[11] DPDK, “Crypto Device Supported Functionality Matrices”,
Document
dpdk.
/>[12] IEEE, “Requirements and challenges of 5G cellular systems”,
Published 27-28 Feb.2016
[1]
Kết quả đánh giá cũng tương tự với hệ xử lý với UE thật
như Hình 7.
Hình 7: Kết quả đánh giá tải CPU ở khối bảo mật bằng hệ
UE thật
IV.
KẾT LUẬN
Hệ thống mạng di động 5G đang ngày càng phổ biến
và thách thức những giới hạn mới của mạng di động. Do
đó, để có thể đảm bảo được những tiêu chuẩn về tốc độ
băng thông 5G, nhưng vẫn thực hiện được các giao thức
bảo mật dữ liệu phức tạp, thì việc áp dụng DPDK vào hệ
thống để giảm tải là một điều tất yếu cần phải có.
Bài báo đã mơ tả kĩ thuật hướng tiếp cận DPDK,
cũng như phương pháp để lớp giao thức PDCP của hệ
thống trạm 5G có thể giao tiếp được với phần cứng bảo
ISBN 978-604-80-5958-3
287