Trong phạm vi luận văn,tôi đã thực hiện nghiên cứu, giải quyết các vấn đề sau, chi tiết giải pháp kỹ thuật sẽđược trình bày trong chương 2:
1. Thay đổi địa chỉ MAC tại lớp liên kết khi gói tin được gửi giữa ứng dụng nội bộ
(mạng LAN) với các ứng dụng bên ngoài thông qua hệ thống cổng biên dịch địa chỉ
mạng.
2. Thay đổi địa chỉ IP của gói tin tại lớp Internet khi gói tin được gửi giữa các ứng dụng nội bộ với các ứng dụng bên ngoài thông qua hệ thống cổng biên dịch địa chỉ
mạng đảm bảo các hệ thống phần mềm khi tích hợp chỉ cần cung cấp một địa chỉ IP duy nhất trong các tương tác với bên ngoài.
3. Thay đổi địa chỉ IP của gói tin tại lớp giao vận với giao thức SCTP, với bản tin khởi tạo liên kết để thiết lập liên kết theo cơ chế multi-homing khi gói tin được gửi từ ứng dụng nội bộ ra ứng dụng bên ngoài thông qua hệ thống cổng biên dịch địa chỉ
mạng.
4. Thay đổi số cổng tại lớp giao vận khi gói tin cần đổi số cổng trong trường hợp các
43
5. Tính toán giá trị tổng kiểm tại lớp Internet (với IPv4) và giá trị tổng kiểm tại lớp giao vận.
Các nội dung nghiên cứu trong luận văn được đã được áp dụng và định hướng áp dụng thực tế với các hệ thống đang được phát triển và triển khai tại tập đoànViettel, như
hệ thống IMS, EPC và hệ thống 5G Core sắp triển khai. Như với hệ thống 5G Core đang
áp dụng triển khai hệ thống biên dịch địa chỉ mạng, các tính năng mà hệ thống cung cấp chính bao gồm: Là cổng biên dịch địa chỉ mạng cho các giao thức ứng dụng: PFCP, GTPv2 với giao thức sử dụng phía dưới là UDP, HTTP với giao thức sử dụng phía dưới là TCP và NGAP với giao thức sử dụng phía dưới là SCTP.
44
CHƯƠNG 2: PHƯƠNG PHÁP ĐỊNH TUYẾN VÀ BIÊN DỊCH ĐỊA CHỈ MẠNG
2.1. Giới thiệu phương pháp
Hệ thống cổng biên dịch địa chỉ mạng (hệ thống màphương pháp được đề xuất áp dụng, đểđơn giản ta sẽ gọi là Hệ thống cổng biên dịch) là một hệ thống phần mềm được sử dụng để cung cấp một nút mạng xử lý tập trung giúp các thành phần ứng dụng nội bộ
giao tiếp với các hệ thống bên ngoài thông qua địa chỉ IP tại nút mạng tập trung đó. Mô hình hoạt động của hệ thống được thể hiện như Hình 2-1. [11][17][18] 10.0.0.1 200.100.10.1 Mạng công cộng Mạng nội bộ Các hệ thống tương tác Các ứng dụng miền nội bộ Cổng biên dịch địa chỉ mạng 150.50.0.1 10.0.0.1 200.100.10.1 ... ... Địa chỉ IP nguồn Địa chỉ IP đích 150.50.0.1 200.100.10.1 ... ... Địa chỉ IP nguồn Địa chỉ IP đích 10.0.0.1 200.100.10.1 ... ... Địa chỉ IP đích Địa chỉ IP nguồn 150.50.0.1 200.100.10.1 ... ... Địa chỉ IP đích Địa chỉ IP nguồn Biên dịch cập nhật địa chỉ IP Ứng dụng nội bộ gửi gói tin
Các ứng dụng tương tác gửi gói tin
HỆ THỐNG PHẦN MỀM SỬ DỤNG CỔNG BIÊN DỊCH ĐỊA CHỈ MẠNG
45
Để thực hiện tính năng định tuyến và biên dịch địa chỉ IP khi nhận được gói tin từ
các thành phần ứng dụng nội bộ và từ các ứng dụng bên ngoài mà hệ thống tương tác thì hệ thống sẽ thực hiện cập nhật lại các thông tin sau:
Hệ thống cập nhật lại địa chỉ MAC tại tầng liên kết dữ liệu theo các địa chỉ MAC nguồn mới là địa chỉ MAC của cổng biên dịch địa chỉ mạng và địa chỉ MAC đích
mới là địa chỉ MAC của nút ứng dụng cần định tuyến tới.
Khi gói tin (các bản tin TCP/UDP và SCTP) nhận từứng dụng miền công cộng, hệ
thống cập nhật lại địa chỉ IP đích tại tầng mạng thành địa chỉ IP đích của nút ứng dụng miền nội bộtương ứng cần gửi đến.
Khi gói tin (các bản tin TCP/UDP và SCTP) nhận từứng dụng miền nội bộ, hệ thống cập nhật lại địa chỉ IP nguồn tại tầng mạng và các địa chỉ IP của link liên kết cho giao thức SCTP tại tầng giao vận của gói tin khởi tạo liên kết trong giao thức SCTP
thành các địa chỉ IP của cổng biên dịch địa chỉ mạng giao tiếp với các ứng dụng miền công cộng.
Hệ thống thay đổi số cổng tại lớp giao vận khi gói tin cần đổi số cổng trong trường hợp các ứng dụng nội bộ mở chung số cổng đểtrao đổi bản tin tại lớp giao vận.
Hệ thống tính toán giá trị tổng kiểm tại lớp Internet (với IPv4) và giá trị tổng kiểm tại lớp giao vận đểđảm bảo giá trị này đúng sau khi các dữ liệu đã được thay đổi.
2.2. Áp dụng phương pháp
46
:Public
applications :IP NAT
:Local applications InitProcessSystem() TCP/UDP/SCTP message natProcessing() TCP/UDP/SCTP message TCP/UDP/SCTP message natProcessing() TCP/UDP/SCTP message loop updateMAC() initNatIP() establishNatCfg() Hình 2-2: Cơ chế hoạt động của hệ thống cổng biên dịch địa chỉ mạng
2.2.1.Bước 1: Khởi tạo tài nguyên xử lý hệ thống (initProcessSystem)
Tại bước này, các tài nguyên được đề cập bao gồm khai báo để gán các các lõi CPU
sử dụng để chạy các luồng xử lý của hệ thống, gồm các luồng xử lý nhận gói tin, các luồng xử lý gói tin, các luồng gửi gói tin. Quản lý các bộ nhớ hàng đợi dùng đểlưu trữ các gói
47
bộ nhớ lưu trữ các gói tin. Cung cấp các thư viện giúp nhận và gửi gói tin xuống/từ cạc
mạng, các thư viện giúp đọc, xử lý các thành phần trong cấu trúc gói tin. Theo đó, nền tảng
dpdk được sử dụng để quản lý và xử lý các tài nguyên nêu trên.
Đầu ra của bước này là các luồng để xử lý các gói tin nhận được từ cạc mạng, các luồng xử lý nghiệp vụ biên dịch và định tuyến cho gói tin, các luồng gửi gói tin ra cạc mạng
để gửi đến nút nghiệp vụđích.
2.2.2.Bước 2:Thiết lập địa chỉ IP của cổng biên dịch địa chỉ mạng (initNatIP)
Đầu vào của bước này làthông tin địa chỉ cạc mạng của hệ thống để hệ thống thiết lập các địa chỉIP tương tác với các ứng dụng miền công cộng và miền nội bộ.
Tại bước này, hệ thống thiết lập địa chỉ IP cho cổng biên dịch địa chỉ mạng trên cạc mạng giao tiếp với ứng dụng bên ngoài và cạc mạng giao tiếp với các thành phần ứng dụng nội bộ. Thông tin để thiết lập địa chỉ IP bao gồm:
Thông tin các địa chỉ MAC, thực hiện khai báo nhiều địa chỉ MAC nếu muốn chạy cạc mạng theo cơ chế bond.
Hệ thống cho phép khai báo nhiều địa chỉ IP cho một cạc mạng, mỗi địa chỉ IP khai báo thì bao gồm các thông tin liên quan sau:
o Địa chỉ IP;
o Thông tin mặt nạ mạng con (subnet mask) của địa chỉ IP;
o Thông tin cổng mạng mặc định (Default Gateway) của địa chỉ IP.
Kết thúc bước này, hệ thống thiết lập được các địa chỉ IP tại cổng biên dịch địa chỉ
mạng, bao gồm địa chỉ IP giao tiếp với các ứng dụng bên ngoài và địa chỉ IP để giao tiếp với các thành phần ứng dụng nội bộ của hệ thống.
2.2.3.Bước 3: Thiết lập bảng cấu hình thông tin định tuyến và biên dịch địa chỉ mạng
(establishNatCfg)
Đầu vào của bước này là các thông tin cấu hình để thiết lập các địa chỉ IP giúp hệ
thống xử lý nghiệp vụđịnh tuyến và biên dịch địa chỉ mạng cho các gói tin trao đổi giữa các ứng dụng miền công cộng với các ứng dụng miền nội bộ. Các thông tin chi tiết được liệt kê trong bảng cấu hình, như minh họa ở Bảng 2-1. Bảng cấu hình này là một ví dụ khai báo một số thông tin định tuyến và biên dịch địa chỉ mạng cho các giao thức TCP/UDP/SCTP.
48 Bảng 2-1: Bảng cấu hình quy tắc định tuyến Địa chỉ IP miền công cộng Địa chỉ IP của cổng biên dịch địa chỉ mạng miền công cộng Số cổng đểđịnh tuyến Cờ định tuyến Đổi port tại cổng biên dịch Số lượng IP miền nội bộ Danh sách địa chỉ IP miền nội bộ Giao thức gói tin sử dụng 200.100.10.1/24 150.50.0.1 20000:30000 1 1 1 10.0.0.1 UDP 200.100.10.1/24 150.50.0.1 30001:40000 1 1 1 10.0.0.2 UDP 200.100.10.1 150.50.0.1 0 1 1 1 10.0.0.2 TCP 200.100.10.1 150.50.0.1 2905 1 0 1 10.0.0.10 SCTP 200.100.10.1 150.50.0.1 2906 1 0 1 10.0.0.11 SCTP Trong đó: Địa chỉ IP miền công cộng:
Để khai báo các địa chỉ IP của các ứng dụng trong miền công cộng của hệ thống giao tiếp với hệ thống cổng biên dịch địa chỉ mạng. Hệ thống cổng biên dịch cho phép khai báo cả dải địa chỉ IP.
Địa chỉ IP của cổng biên dịch địa chỉ mạng miền công cộng:
đây là địa chỉIP được thiết lập tại cổng biên dịch địa chỉ mạng giao tiếp với các ứng dụng trong miền công cộng.
Số cổng đểđịnh tuyến:
Thông tin số cổng tại tầng giao vận của gói tin mà hệ thống sẽ xử lý, khi gói tin
được nhận từứng dụng miền công cộng gửi đến cổng biên dịch với số cổng đích của gói tin tại tầng giao vận sẽđược so sánh với số cổng này, khi cổng biên dịch nhận gói tin từ ứng dụng nội bộ, trường thông tin số cổng nguồn của gói tin tại tầng giao vận sẽlà trường
thông tin liên quan để xử lý so sánh với số cổng này để tìm luật định tuyến cho gói tin. Hệ
thống cho phép khai báo thông tin số cổng để so sánh theo các quy tắc tùy biến sau:
Khai báo là 0 nếu định tuyến cho tất cả các số cổng.
Khai báo theo dải số cổng, ví dụ: 22,80,1000:9999
49
Cờđịnh tuyến:
Xác định việc định tuyến gói tin, có 2 cơ chế: định tuyến xoay vòng (round robin),
và định tuyến đến địa chỉđầu tiên.
Đổi port tại cổng biên dịch:
Hệ thống cho phép hai cơ chế xử lý tại cổng biên dịch, cơ chế giữ nguyên số cổng khi giao tiếp qua cổng biên dịch và cơ chếthay đổi cổng biên dịch khi gói tin gửi qua. Với
cơ chếthay đổi số cổng thì hệ thống sẽ quản lý bảng dữ liệu định tuyến được cập nhật theo dữ liệu ứng dụng xử lý, với cấu trúc như sau:
Bảng 2-2: Bảng lưu trữ dữ liệu ánh xạ cổng dịch chuyển
Địa chỉ IP public Số cổng public Địa chỉ IP Local Số cổng local
200.100.10.1 20000 10.0.0.1 15000
200.100.10.1 20001 10.0.0.1 15001
200.100.10.1 30001 10.0.0.2 15000
200.100.10.1 30002 10.0.0.2 15001
Sốlượng địa chỉ IP miền nội bộ:
Sốlượng địa chỉ IP máy sẽ nhận/gửi gói tin theo quy tắc này.
Danh sách địa chỉ IP mạng nội bộ:
Danh sách địa chỉ IP các máy mạng nội bộ sẽ nhận/gửi gói tin tương tác với Hệ
thống cổng biên dịch theo quy tắc định tuyến được khai báo này. Việc này giúp cho các gói tin sẽ được phân tải xử lý cho cùng một luồng nghiệp vụ khi được gửi qua Hệ thống cổng biên dịch.
Giao thức gói tin sử dụng:
Hệ thống hỗ trợ xử lý các gói tin dùng một trong các giao thức TCP/UDP/SCTP. Với bảng định tuyến Bảng 2-1, hệ thống cho phép tiến hành cập nhật, bổ sung dữ
liệu cho bảng định tuyến theo yêu cầu điều chỉnh, mở rộng của các hệ thống ứng dụng, với
tương tác cập nhật theo thời gian thực (chi tiết các tập lệnh để cập nhật bảng định tuyến
50
Cập nhật bảng cấu hình thông tin định tuyến và biên dịch địa chỉ mạng khi cần thay đổi, bổ sung, mở rộng năng lực của các ứng dụng.
Để mở rộng năng lực xử lý của hệ thống, chẳng hạn mở rộng năng lực của các thành phần xử lý nghiệp vụ cho các giao thức nền TCP/UDP/SCTP (vì hầu hết các ứng dụng hiện
nay thì đều sử dụng giao thức nền là TCP/UDP/SCTP), hệ thống có thể triển khai các ứng
dụng của mình trên nhiều máy khác nhau.
Tại bước này, hệ thống cung cấp kết nối qua giao thức telnet, cho phép thực hiện lệnh telnet để kết nối vào hệ thống, sau đó thực hiện các lệnh để cập nhật bảng thông tin cấu hình định tuyến và biên dịch địa chỉ mạng. Hệ thống cho phép thực hiện các lệnh sau (chi tiết tập lệnh trên hệ thống được trình bày ở mục 3.3):
Thêm mới một quy tắc cấu hình định tuyến và biên dịch địa chỉ mạng: Tương ứng với việc thêm mới một dòng trong Bảng 2-1.
Xóa bỏ một quy tắc cấu hình định tuyến: Tương ứng với việc xóa một dòng trong Bảng 2-1.
Khi cần sửa đổi một quy tắc cấu hình định tuyến đang có: Để làm việc này thì ta sẽ
thực hiện hai bước là xóa cấu hình định tuyến cần sửa đổi, sau đó thêm mới một quy tắc cấu hình định tuyến theo yêu cầu.
Kết thúc bước này, dữ liệu trong bảng cấu hình thông tin định tuyến và biên dịch
địa chỉ mạng được cập nhật theo yêu cầu cập nhật nghiệp vụđịnh tuyến của hệ thống để
tương tác với các hệ thống bên ngoài.
2.2.4.Bước 4: xác định địa chỉ MAC cho các địa chỉ IP tương tác với Hệ thống
(updateMAC)
Để hệ thống gửi được gói tin đi đến đúng máy đích thì:
Với trường hợp hai máy gửi/nhận nằm trong cùng một dải mạng kết nối trực tiếp thông qua một thiết bị định tuyến như switch, khi đó để bản tin định tuyến được đến đích
qua switch thì khi bản tin được gửi đến switch thì switch sẽđịnh tuyến gói tin đến đích dựa
trên thông tin MAC máy đích tại lớp liên kết (link layer).
Với trường hợp máy máy gửi/nhận không nằm trong cùng một dải mạng, các dải
mạng sẽđược kết nối thông qua các gateway. Khi đó đểgói tin định tuyến được đến đúng
51
mà nó kết nối trực tiếp đến, từ đó gói tin sẽ được gửi đến gateway để tiếp đó sẽ được
gateway định tuyến tiếp đến các nút trong chu trình đường đi cần thiết của nó đểđến đích.
Do vậy việc xác định thông tin địa chỉMAC cho các địa chỉ IP của các máy tương
tác với hệ thống có ý nghĩa rất quan trọng trong việc định tuyến được gói tin đến đích. Để
xác định địa chỉ MAC cho các máy, hệ thống sử dụng giao thức phân giải địa chỉ mạng
ARP. Hệ thống sẽ gửi các gói tin ARP (loại bản tin là yêu cầu) cho các địa chỉ IP máy sẽ
giao tiếp để lấy thông tin địa chỉ MAC của chúng. Trong quá trình chạy, hệ thống định kỳ
gửi gói tin ARP (với trường loại hành động là yêu cầu (request)) đến các địa chỉ IP các
máy tương tác, với danh sách được cập nhật theo số lượng trao đổi của hệ thống để cập
nhật thông tin địa chỉ MAC của chúng (vì với cùng một địa chỉIP thì địa chỉ MAC có thể
thay đổi trong quá trình hoạt động).
Khi nhận được gói tin ARP gửi đến, hệ thống kiểm tra:
Nếu là gói tin ARP với trường loại hành động là yêu cầu (request), tức là các nút
mạng tương tác đầu xa muốn lấy thông tin địa chỉ MAC của hệ thống cổng biên dịch địa
chỉ mạng theo IP tương tác của cạc mạng tương ứng, thì hệ thống gửi lại gói tin ARP với
trường loại hành động là phản hồi (reply) cho nút mạng đầu xa yêu cầu để cung cấp thông
tin địa chỉ MAC của hệ thống cổng biên dịch địa chỉ mạng tương ứng với IP được yêu cầu trong gói tin.
Nếu gói tin là ARP với trường loại hành động là phản hồi, tức là máy đầu xa đã gửi lại bản tin ARP phản hồi cho bản tin ARP mà hệ thống yêu cầu trước đóđể cung cấp cho
thông tin địa chỉ MAC tương ứng với địa chỉ IP của chúng, khi đó hệ thống sẽ cập nhật
thông tin địa chỉMAC cho địa chỉ IP máy đầu xa tương ứng.