Kỹ thuật lập trình C++ cho các thành phần trong mạng truy cập vô tuyến

MỤC LỤC

GIỚI THIỆU ĐƠN VỊ THỰC TẬP

Các dịch vụ cung cấp

Trong suốt hơn 25 năm phát triển ứng dụng viễn thông được đánh giá cao, TMA đã cung cấp cho khách hàng các Dịch vụ Toàn diện và Giải pháp Sẵn có để tăng tốc sẵn sàng thị trường của họ.

TRèNH BÀY Vấ̀ CÁC THÀNH PHẦN Cể TRONG MẠNG RADIO ACCESS NETWORK

Traditional RAN và Open RAN

Traditional RAN là một kiến trúc mạng di động truyền thống được sử dụng trong các hệ thống viễn thông di động, bao gồm cả mạng di động 2G (GSM), 3G (UMTS), và 4G (LTE). Đây là một kiến trúc được phát triển từ các thế hệ mạng di động trước đó và đã được triển khai rộng rãi trong nhiều năm. Mặc dù Traditional RAN đã phục vụ tốt trong nhiều năm và được triển khai rộng rãi trên toàn cầu, nhưng nó cũng có một số hạn chế.

Như đã đề cập trong phần trước, nó có thể hạn chế khả năng tùy chỉnh, đòi hỏi sự phụ thuộc vào một số nhà cung cấp duy nhất và có thể làm tăng chi phí triển khai và vận hành mạng. Do đó, các nhà mạng và nhà cung cấp dịch vụ đang tìm cách chuyển đổi sang các kiến trúc mạng di động mới hơn như OpenRAN để tận dụng lợi ích của kiến trúc mở và tích hợp chức năng. OpenRAN sử dụng kiến trúc mở, nghĩa là các thành phần trong mạng di động được tách rời và độc lập hơn, cho phép tích hợp các sản phẩm từ nhiều nhà cung cấp khác nhau.

OpenRAN sử dụng "functional disaggregation," nghĩa là các chức năng truyền thống như BBU và RRH được tách rời và thực hiện bởi các phần cứng và phần mềm độc lập. Kiến trúc mở cho phép sự tương thích và tương tác giữa các thành phần từ nhiều nhà cung cấp, tạo điều kiện thuận lợi cho việc chọn lựa và kết hợp các sản phẩm tối ưu từ nhiều nguồn. Có thể được xây dựng dựa trên phần cứng thương mại từ nhiều nhà cung cấp khác nhau.

Được thiết kế dựa trên các tiêu chuẩn mở, tức là phần mềm có thể được cung cấp bởi nhiều nhà cung cấp khác nhau. Có thể an toàn hơn vì nó dựa trên các tiêu chuẩn mở và có thể được xây dựng với các tính năng bảo mật. Khó mở rộng khi nhu cầu tăng Có thể dễ dàng mở rộng hơn vì nó không bị ràng buộc với phần cứng hoặc phần mềm chuyên dụng.

OpenRAN được coi là một trong những xu hướng quan trọng trong phát triển hạ tầng mạng di động hiện nay. Nó có tiềm năng mang lại lợi ích về chi phí, linh hoạt, có khả năng tùy chỉnh và có thể giúp tăng cường hiệu suất và khả năng phục vụ trong mạng di động.

Kiến trúc 5G O-RAN (Open Radio Access Network)

Có thể dễ bị tấn công vì nó dựa trên phần cứng và phần mềm độc quyền. - WG1 - Architecture and Interfaces (Kiến trúc và Giao diện): Tập trung vào mô hình kiến trúc tổng thể của O-RAN và định nghĩa các giao diện giữa các thành phần trong mạng. - WG2 - Non-Real Time RAN Intelligent Controller (non-RT RIC) (Bộ Điều Khiển Thông Minh RAN không thời gian thực): Phát triển các chức năng quản lý chính sách, phân tích RAN và quản lý chức năng dựa trên trí tuệ nhân tạo cho O-RAN không thời gian thực (> 500ms).

- WG3 - Near-Real Time RAN Intelligent Controller (near-RT RIC) (Bộ Điều Khiển RAN Gần Thời gian thực): Chịu trách nhiệm phát triển các chức năng quản lý tài nguyên sóng vô tuyến (RRM) trong khoảng thời gian gần thời gian thực (< 500ms) với trí tuệ nhân tạo tích hợp. Bao gồm cân bằng tải, quản lý nguồn tài nguyên sóng, quản lý chất lượng dịch vụ và điều khiển liền mạch. - WG4 - Open Fronthaul: Tập trung vào việc định nghĩa và phát triển các giao diện phần mềm và giao thức cho kết nối trước trong O-RAN.

- WG6 - Cloudification and orchestration (Đám mây hóa và triển khai): Tập trung vào việc định nghĩa các yêu cầu, tiêu chuẩn và hướng dẫn về đám mây hóa và quản lý trong O-RAN. - WG8 - O-DU Hardware (Phần cứng O-DU): Tập trung vào việc phát triển yêu cầu phần cứng và hướng dẫn cho O-DU (O-RAN Distributed Unit). Kiến trúc 5G O-RAN là một kiểu kiến trúc mạng di động mở và tách rời, trong đó các thành phần mạng được phân tách và tương tác thông qua các giao diện phần mềm tiêu chuẩn.

Kiến trúc này giúp tăng cường hiệu suất và linh hoạt của mạng 5G, cũng như khuyến khích sự đổi mới và tăng cường sự cạnh tranh trong ngành viễn thông.

Hình 3. 2. Mô tả kiến trúc mạng O-RAN
Hình 3. 2. Mô tả kiến trúc mạng O-RAN

Máy ảo và ứng dụng của chúng 1. Máy ảo

    Hệ điều hành này đi kèm với một bộ ứng dụng đa dạng, bao gồm trình duyệt web, trình soạn thảo văn bản, trình quản lý tập tin và nhiều hơn nữa.

    Makefile

    # Quy tắc để tạo các tập tin đối tượng từ các tập tin mã nguồn. # Quy tắc để xây dựng chương trình thực thi từ các tập tin đối tượng. Trong ví dụ trên, Makefile định nghĩa mục tiêu là chương trình thực thi my_program và các tập tin mã nguồn cần thiết là main.c, foo.c và bar.c.

    Biên dịch bằng trình biên dịch gcc và thêm các tùy chọn biên dịch được lưu trữ trong biến CFLAGS. Khi chạy lệnh make, Makefile sẽ tự động xác định các phụ thuộc giữa các tập tin và biên dịch các tập tin mã nguồn thành các tập tin đối tượng. Sau đó, nó sẽ xây dựng chương trình thực thi my_program từ các tập tin đối tượng.

    Multithread

      Để đảm bảo rằng các luồng có thể chạy song song ngay sau khi tạo, hàm sleep(.1) được gọi sau mỗi lệnh pthread_create để ngắn chặn chương trình chờ trong 0.1 giây. Khi tất cả các luồng threads đã hoàn tất, biến toàn cục stopLogging được đặt thành true để dừng quá trình ghi log trong luồng fileThread và thông báo cho luồng fileThread bằng hàm logCondition.notify_one(). Triển khai một lớp ChatServer trong C++ để thực hiện một ứng dụng máy chủ cho phòng chat (chatroom) sử dụng ngôn ngữ lập trình C++ và các hàm hỗ trợ thư viện socket.

      Hàm setupServer() - Hàm này thực hiện thiết lập socket cho máy chủ, bao gồm tạo socket, gắn địa chỉ và cổng vào socket, ràng buộc (bind) socket, và lắng nghe các kết nối từ máy khách. Hàm receiveMessages() - Hàm này được thực thi trong một luồng riêng (detach) và thực hiện việc nhận các tin nhắn từ máy khách và sau đó gửi lại cho tất cả các máy khách khác. Hàm loadChatHistory() - Hàm này được gọi khi máy khách mới kết nối để tải lịch sử trò chuyện (chat history) từ tập tin ChatHistory.txt và gửi nó đến máy khách.

      Điều khiển luồng (thread) - Trong hàm acceptConnections(), sau khi chấp nhận kết nối từ máy khách, máy chủ sẽ tạo một luồng riêng (thread) để xử lý tin nhắn từ máy khách đó. Việc này cho phép máy chủ có thể chấp nhận nhiều kết nối từ các máy khách cùng một lúc và đồng thời xử lý các tin nhắn của từng máy khách một cách độc lập. Tương tác với tập tin "ChatHistory.txt" - Tập tin ChatHistory.txt được sử dụng để lưu trữ lịch sử trò chuyện, giúp máy khách mới kết nối có thể nhận được lịch sử trò chuyện từ các máy khách khác đã kết nối trước đó.

      Cụ thể, các tin nhắn sẽ được ghi vào tập tin này trong hàm saveChatMessage() và được đọc ra và gửi tới máy khách mới kết nối trong hàm loadChatHistory(). Hàm run() - Hàm này thực hiện việc chạy máy khách: kết nối tới máy chủ, yêu cầu đăng nhập tên, tải lịch sử trò chuyện, tạo một luồng riêng để nhận tin nhắn từ máy chủ và chờ người dùng nhập và gửi tin nhắn. Hàm loadChatHistory()- Hàm này được gọi khi máy khách kết nối để tải lịch sử trò chuyện từ tập tin "ChatHistory.txt" và hiển thị lịch sử này lên màn hình.

      Kết quả chạy chương trình Socket programming – Kết nối client A đến server Tương tự khi ‘Client B’ đăng nhập, server cũng sẽ nhận được thông tin và hiển thị thông báo. Nếu có client khác đăng nhập trùng tên với một client đang tham gia room chat, client đó không thể tham gia vào cuộc trò chuyện và server cũng sẽ thông báo client đã đăng nhập trùng tên. RAN là một phần quan trọng của hệ thống viễn thông, đóng vai trò cực kỳ quan trọng trong việc cung cấp kết nối không dây giữa các thiết bị di động và mạng trung tâm.

      Tổng kết lại, đề tài nghiên cứu về kỹ thuật lập trình C/C++ cho các thành phần trong mạng Radio Access Network đã đem lại những kiến thức quý giá và hiểu biết sâu sắc về mạng 5G và công nghệ viễn thông.

      Hình 4. 3. Kết quả chương trình multithread để xử lý ghi log
      Hình 4. 3. Kết quả chương trình multithread để xử lý ghi log