Cisco LISP (Locator ID Separation Protocol) – Giải Mã Kiến Trúc Định Tuyến Hiện Đại Dùng Trong Enterprise Network
Trong thế giới mạng IP truyền thống, chúng ta đã quen với một mô hình rất đơn giản: mỗi thiết bị được gán một địa chỉ IP, và địa chỉ đó vừa đóng vai trò định danh thiết bị, vừa đóng vai trò giúp hệ thống mạng xác định vị trí của thiết bị để chuyển tiếp gói tin.
Mô hình này đã hoạt động tốt trong nhiều thập kỷ. Tuy nhiên, khi mạng Internet phát triển bùng nổ, cùng với sự mở rộng của doanh nghiệp đa chi nhánh, cloud computing, mobility, virtualization và segmentation, cách tiếp cận truyền thống bắt đầu bộc lộ những giới hạn nghiêm trọng.
Đó chính là lý do Locator ID Separation Protocol (LISP) ra đời.
LISP không đơn thuần là một giao thức định tuyến mới. Đây là một kiến trúc mạng được thiết kế để giải quyết bài toán scalability của routing, đồng thời mang lại khả năng mobility, segmentation và abstraction rất mạnh trong các hệ thống mạng hiện đại .
Bài toán của IP Routing truyền thống
Để hiểu tại sao LISP xuất hiện, trước tiên chúng ta cần nhìn lại cách IP routing truyền thống hoạt động.
Trong mô hình thông thường, địa chỉ IP có hai chức năng cùng lúc.
Thứ nhất, nó định danh thiết bị. Nếu một host có địa chỉ IP 192.168.1.10, đó chính là “identity” của host.
Thứ hai, địa chỉ đó cũng thể hiện vị trí logic của thiết bị trong topology mạng. Router dựa vào thông tin này để quyết định đường đi.
Điều này có nghĩa là identity và location đang bị trộn lẫn trong cùng một thông tin.
Nghe có vẻ bình thường, nhưng đây chính là nguồn gốc của nhiều vấn đề lớn.
Vấn đề 1: Routing Table ngày càng phình to
Internet routing hoạt động dựa trên BGP.
Các router backbone trên Internet phải lưu trữ lượng route khổng lồ. Khi số lượng prefix tăng lên, router cần:
Nguyên nhân lớn nhất là route disaggregation.
Ví dụ, thay vì quảng bá một route summary lớn, nhiều tổ chức quảng bá các prefix nhỏ hơn.
Tại sao?
Vấn đề 2: Multihoming
Giả sử doanh nghiệp kết nối đồng thời với hai ISP:
Doanh nghiệp muốn:
Để làm điều này, họ thường quảng bá prefix của mình đến cả hai ISP.
Kết quả?
Internet phải giữ thêm nhiều route chi tiết thay vì route aggregate.
Route table lại lớn thêm.
Vấn đề 3: Traffic Engineering
Nhiều doanh nghiệp muốn điều khiển lưu lượng inbound.
Ví dụ:
Một cách phổ biến là quảng bá prefix cụ thể hơn.
Ví dụ:
Thay vì:
10.10.0.0/16
thì quảng bá:
10.10.0.0/17
10.10.128.0/17
Kỹ thuật này hoạt động, nhưng lại làm routing table Internet càng lớn.
Vấn đề 4: Mobility
Giả sử một endpoint di chuyển từ site A sang site B.
Trong kiến trúc IP truyền thống:
Khi thiết bị đổi location, IP phải đổi.
Nhưng nếu IP đổi:
Đây là vấn đề cực lớn trong wireless mobility, IoT, roaming users.
Ý tưởng cốt lõi của LISP
LISP giải quyết vấn đề bằng cách tách riêng hai khái niệm:
Identity
và
Location
Thay vì để IP address vừa là identity vừa là location, LISP chia thành hai namespace khác nhau.
Endpoint Identifier (EID)
EID là địa chỉ đại diện cho endpoint.
Ví dụ:
192.168.10.100
EID dùng để nhận diện host.
Host vẫn nghĩ đây là IP bình thường.
Application không biết gì về LISP.
User cũng không biết gì.
Routing Locator (RLOC)
RLOC là địa chỉ của router LISP edge.
Ví dụ:
203.0.113.10
Đây mới là địa chỉ dùng để routing qua underlay network.
Nói cách khác:
Đây là điểm khác biệt lớn nhất của LISP .
Ví dụ trực quan
Giả sử:
Site 1:
Host:
192.168.1.101
Router:
RLOC = 192.168.123.1
Site 2:
Host:
192.168.2.102
Router:
RLOC = 192.168.123.2
Host H1 muốn gửi traffic đến H2.
Trong routing truyền thống:
Router cần route đến:
192.168.2.0/24
Trong LISP:
Router không cần biết route cụ thể đến EID.
Thay vào đó:
Tức là:
192.168.2.102
được ánh xạ thành:
192.168.123.2
LISP là giao thức map-and-encapsulation
Có thể hiểu đơn giản:
DNS dùng để:
hostname → IP
LISP dùng để:
EID → RLOC
Sau khi mapping hoàn tất:
traffic được encapsulate giống tunneling.
Do đó LISP vừa là:
Thành phần kiến trúc LISP
Để LISP hoạt động, có một số thành phần quan trọng.
ITR (Ingress Tunnel Router)
ITR là router nhận traffic từ endpoint nguồn.
Nhiệm vụ:
Có thể hình dung:
ITR = điểm vào tunnel
ETR (Egress Tunnel Router)
ETR là router ở site đích.
Nhiệm vụ:
Có thể hình dung:
ETR = điểm ra tunnel
xTR
Nếu một router làm cả hai vai:
thì gọi là:
xTR
Thực tế enterprise thường dùng mô hình này.
Map Server (MS)
Map Server lưu mapping database:
EID → RLOC
Ví dụ:
192.168.2.0/24 → 192.168.123.2
ETR sẽ đăng ký prefix của mình với MS.
Map Resolver (MR)
MR nhận query từ ITR.
Nếu ITR cần biết:
192.168.2.102 ở đâu?
MR sẽ giúp resolve.
Tương tự DNS resolver.
Proxy ETR (PETR)
Dùng khi LISP site cần gửi traffic đến non-LISP world.
Ví dụ:
Internet.
PETR nhận traffic encapsulated rồi forward tiếp ra mạng thường.
Proxy ITR (PITR)
Dùng cho chiều ngược lại.
Traffic từ non-LISP world vào LISP world.
PITR giúp encapsulate và đưa traffic vào LISP fabric.
Đây là bộ khung cốt lõi của LISP architecture
Trong thế giới mạng IP truyền thống, chúng ta đã quen với một mô hình rất đơn giản: mỗi thiết bị được gán một địa chỉ IP, và địa chỉ đó vừa đóng vai trò định danh thiết bị, vừa đóng vai trò giúp hệ thống mạng xác định vị trí của thiết bị để chuyển tiếp gói tin.
Mô hình này đã hoạt động tốt trong nhiều thập kỷ. Tuy nhiên, khi mạng Internet phát triển bùng nổ, cùng với sự mở rộng của doanh nghiệp đa chi nhánh, cloud computing, mobility, virtualization và segmentation, cách tiếp cận truyền thống bắt đầu bộc lộ những giới hạn nghiêm trọng.
Đó chính là lý do Locator ID Separation Protocol (LISP) ra đời.
LISP không đơn thuần là một giao thức định tuyến mới. Đây là một kiến trúc mạng được thiết kế để giải quyết bài toán scalability của routing, đồng thời mang lại khả năng mobility, segmentation và abstraction rất mạnh trong các hệ thống mạng hiện đại .
Bài toán của IP Routing truyền thống
Để hiểu tại sao LISP xuất hiện, trước tiên chúng ta cần nhìn lại cách IP routing truyền thống hoạt động.
Trong mô hình thông thường, địa chỉ IP có hai chức năng cùng lúc.
Thứ nhất, nó định danh thiết bị. Nếu một host có địa chỉ IP 192.168.1.10, đó chính là “identity” của host.
Thứ hai, địa chỉ đó cũng thể hiện vị trí logic của thiết bị trong topology mạng. Router dựa vào thông tin này để quyết định đường đi.
Điều này có nghĩa là identity và location đang bị trộn lẫn trong cùng một thông tin.
Nghe có vẻ bình thường, nhưng đây chính là nguồn gốc của nhiều vấn đề lớn.
Vấn đề 1: Routing Table ngày càng phình to
Internet routing hoạt động dựa trên BGP.
Các router backbone trên Internet phải lưu trữ lượng route khổng lồ. Khi số lượng prefix tăng lên, router cần:
- nhiều memory hơn
- CPU mạnh hơn
- convergence chậm hơn
- cập nhật routing phức tạp hơn
Nguyên nhân lớn nhất là route disaggregation.
Ví dụ, thay vì quảng bá một route summary lớn, nhiều tổ chức quảng bá các prefix nhỏ hơn.
Tại sao?
Vấn đề 2: Multihoming
Giả sử doanh nghiệp kết nối đồng thời với hai ISP:
- ISP A
- ISP B
Doanh nghiệp muốn:
- redundancy
- failover
- load balancing
Để làm điều này, họ thường quảng bá prefix của mình đến cả hai ISP.
Kết quả?
Internet phải giữ thêm nhiều route chi tiết thay vì route aggregate.
Route table lại lớn thêm.
Vấn đề 3: Traffic Engineering
Nhiều doanh nghiệp muốn điều khiển lưu lượng inbound.
Ví dụ:
- traffic từ châu Á đi ISP A
- traffic từ châu Âu đi ISP B
Một cách phổ biến là quảng bá prefix cụ thể hơn.
Ví dụ:
Thay vì:
10.10.0.0/16
thì quảng bá:
10.10.0.0/17
10.10.128.0/17
Kỹ thuật này hoạt động, nhưng lại làm routing table Internet càng lớn.
Vấn đề 4: Mobility
Giả sử một endpoint di chuyển từ site A sang site B.
Trong kiến trúc IP truyền thống:
- IP address gắn với subnet
- subnet gắn với location
Khi thiết bị đổi location, IP phải đổi.
Nhưng nếu IP đổi:
- session TCP reset
- application gián đoạn
- policy phải cập nhật
Đây là vấn đề cực lớn trong wireless mobility, IoT, roaming users.
Ý tưởng cốt lõi của LISP
LISP giải quyết vấn đề bằng cách tách riêng hai khái niệm:
Identity
và
Location
Thay vì để IP address vừa là identity vừa là location, LISP chia thành hai namespace khác nhau.
Endpoint Identifier (EID)
EID là địa chỉ đại diện cho endpoint.
Ví dụ:
192.168.10.100
EID dùng để nhận diện host.
Host vẫn nghĩ đây là IP bình thường.
Application không biết gì về LISP.
User cũng không biết gì.
Routing Locator (RLOC)
RLOC là địa chỉ của router LISP edge.
Ví dụ:
203.0.113.10
Đây mới là địa chỉ dùng để routing qua underlay network.
Nói cách khác:
- EID = ai
- RLOC = ở đâu
Đây là điểm khác biệt lớn nhất của LISP .
Ví dụ trực quan
Giả sử:
Site 1:
Host:
192.168.1.101
Router:
RLOC = 192.168.123.1
Site 2:
Host:
192.168.2.102
Router:
RLOC = 192.168.123.2
Host H1 muốn gửi traffic đến H2.
Trong routing truyền thống:
Router cần route đến:
192.168.2.0/24
Trong LISP:
Router không cần biết route cụ thể đến EID.
Thay vào đó:
- lookup mapping
- tìm RLOC tương ứng với EID
- encapsulate traffic
- gửi đến đúng router đích
Tức là:
192.168.2.102
được ánh xạ thành:
192.168.123.2
LISP là giao thức map-and-encapsulation
Có thể hiểu đơn giản:
DNS dùng để:
hostname → IP
LISP dùng để:
EID → RLOC
Sau khi mapping hoàn tất:
traffic được encapsulate giống tunneling.
Do đó LISP vừa là:
- mapping protocol
- encapsulation protocol
Thành phần kiến trúc LISP
Để LISP hoạt động, có một số thành phần quan trọng.
ITR (Ingress Tunnel Router)
ITR là router nhận traffic từ endpoint nguồn.
Nhiệm vụ:
- nhận packet từ host
- lookup EID-to-RLOC mapping
- encapsulate packet
- gửi traffic đến ETR
Có thể hình dung:
ITR = điểm vào tunnel
ETR (Egress Tunnel Router)
ETR là router ở site đích.
Nhiệm vụ:
- nhận packet LISP encapsulated
- decapsulate
- forward đến endpoint thật
Có thể hình dung:
ETR = điểm ra tunnel
xTR
Nếu một router làm cả hai vai:
- ITR
- ETR
thì gọi là:
xTR
Thực tế enterprise thường dùng mô hình này.
Map Server (MS)
Map Server lưu mapping database:
EID → RLOC
Ví dụ:
192.168.2.0/24 → 192.168.123.2
ETR sẽ đăng ký prefix của mình với MS.
Map Resolver (MR)
MR nhận query từ ITR.
Nếu ITR cần biết:
192.168.2.102 ở đâu?
MR sẽ giúp resolve.
Tương tự DNS resolver.
Proxy ETR (PETR)
Dùng khi LISP site cần gửi traffic đến non-LISP world.
Ví dụ:
Internet.
PETR nhận traffic encapsulated rồi forward tiếp ra mạng thường.
Proxy ITR (PITR)
Dùng cho chiều ngược lại.
Traffic từ non-LISP world vào LISP world.
PITR giúp encapsulate và đưa traffic vào LISP fabric.
Đây là bộ khung cốt lõi của LISP architecture