Hiểu về hầm VXLAN linh hoạt có thể lập trình (Programmable Flexible VXLAN Tunnels)

Hiểu về hầm VXLAN linh hoạt có thể lập trình (Programmable Flexible VXLAN Tunnels)

Bắt đầu từ Junos OS phiên bản 19.1R1, Juniper hỗ trợ tunnel linh hoạt (flexible tunnels) trong môi trường trung tâm dữ liệu (data center) với các đặc điểm sau:

  • Triển khai một hoặc nhiều controller.
  • Sử dụng giao thức VXLAN (Virtual Extensible LAN) làm giao thức đóng gói tầng overlay.

**Lưu ý: Tính năng flexible tunnel hỗ trợ đóng gói và giải đóng gói VXLAN qua cả IPv4 và IPv6.

Trong mô hình này, một hoặc nhiều thiết bị Juniper có thể hoạt động như gateway biên của trung tâm dữ liệu (data center edge gateway), đóng vai trò kết nối với các host nội bộ của trung tâm dữ liệu. Hình 1 minh họa một kiến trúc đơn giản trong đó có một controller và một edge gateway được triển khai.

Hình 1: Môi trường Hầm VXLAN Linh Hoạt Đơn Giản

Các controller trong môi trường trung tâm dữ liệu cho phép bạn lập trình các thành phần của tunnel linh hoạt vào các thiết bị gateway thông qua Juniper Extension Toolkit (JET) APIs, bao gồm:

  • Các route tĩnh IPv4 hoặc IPv6
  • Các profile encapsulation cho tunnel
  • Các profile de-encapsulation cho tunnel

Để biết thêm chi tiết về JET APIs, tham khảo tài liệu JET API Guide.

Các phần sau cung cấp thêm thông tin về tunnel linh hoạt:

Lợi ích của Tunnel Linh Hoạt Có Thể Lập Trình (Programmable Flexible Tunnels)

Các controller trong môi trường trung tâm dữ liệu của bạn kết hợp với JET APIs cho phép bạn lập trình một số lượng lớn tunnel linh hoạt vào thiết bị gateway. Phương pháp mới này cho phép các edge gateway giao tiếp với rất nhiều host trong trung tâm dữ liệu.

  • Encapsulation profile và de-encapsulation profile cho một tunnel linh hoạt thường được định nghĩa riêng biệt và không cần phải đối xứng nhau.
  • Một static route cho một host cụ thể trong trung tâm dữ liệu sẽ được ánh xạ đến một encapsulation profile tương ứng. Lưu lượng đến host đó sẽ được đóng gói (encapsulated) trong một tunnel riêng biệt.
  • Ngược lại, de-encapsulation không gắn trực tiếp với một static route cụ thể. Thay vào đó, lưu lượng từ một hoặc nhiều host trong trung tâm dữ liệu có các đặc điểm phù hợp với một de-encapsulation profile có thể được gom (aggregate) vào một tunnel duy nhất.

Cơ chế này giúp giảm số lượng de-encapsulation profile cần thiết, đồng thời tối ưu hóa hiệu suất sử dụng tunnel linh hoạt và profile hiện có.

Programmable Flexible Tunnels, Flexible Routes và Tunnel Profiles

Hình 2 minh họa một topology mẫu có hỗ trợ tunnel linh hoạt. Trong kiến trúc này:

  • Edge gateway của trung tâm dữ liệu kết nối với các máy ảo (VM) thông qua môi trường VXLAN overlay.
  • Khi truyền tải lưu lượng Layer 3 qua mạng IPv4 hoặc IPv6 bên dưới (underlay), gateway và hypervisor (hoặc thiết bị chuyên dụng) quản lý VM sẽ hoạt động như các VTEP (Virtual Tunnel Endpoints).

Các VTEP sẽ:

  • Đóng gói (encapsulate) các gói tin bằng header VXLAN,
  • Loại bỏ (de-encapsulate) header khỏi các gói tin,
  • Sau đó chuyển tiếp gói tin tới đích.

Hình 2: Thành Phần Của Tunnel Linh Hoạt và Luồng Lưu Lượng (Flexible Tunnel Components and Traffic Flows)

 

Để hỗ trợ một tunnel linh hoạt (flexible tunnel), cần có các thành phần sau:

  • Giao diện Tunnel Linh Hoạt (Flexible Tunnel Interface). Đây là một giao diện logic Layer 3 trên thiết bị gateway, hỗ trợ cả hai họ giao thức IPv4 và IPv6. Để cấu hình giao diện tunnel linh hoạt, bạn cần sử dụng cú pháp tunnel và family tại cấp cấu hình: [edit interfaces unit logical-unit-number]. Để biết thêm chi tiết, tham khảo: Flexible Tunnel Interfaces Overview.
  • Route Linh Hoạt (Flexible Route). Một flexible route bao gồm các thành phần sau: 
    • Static route: Chứa thông tin về profile encapsulation của tunnel, cùng với các thuộc tính khác. 
    • Tunnel encapsulation profile: Xác định thông tin tunnel, bao gồm giao diện tunnel linh hoạt sẽ được sử dụng. 
  • Tunnel de-encapsulation profile: Thường tách biệt với profile encapsulation và chỉ xác định một tập con các thuộc tính cần thiết cho profile encapsulation.

Lập trình các cấu hình tunnel bằng API. Bạn có thể lập trình static route và ánh xạ encapsulation profile cho route đó bằng file API: rib.service.proto

Toàn bộ cấu hình cho encapsulation profile có thể được định nghĩa bằng file: flexible_tunnel_profile.proto. Cấu hình chi tiết cho de-encapsulation profiles cũng dùng file: flexible_tunnel_profile.proto. Việc thêm, sửa, xóa hàng loạt các profile này được thực hiện thông qua: flexible_tunnel_service.proto. File flexible_tunnel_service.proto cũng cho phép bạn xem thông tin của một de-encapsulation profile cụ thể.

Tham khảo đầy đủ thông tin tại: JET API Guide.

Lệnh CLI để kiểm tra thông tin tunnel. Để hiển thị thông tin về các profile encapsulation và de-encapsulation trên thiết bị Juniper gateway, sử dụng lệnh: show route detail, show route extensive. Để hiển thị thông tin về các de-encapsulation profiles, dùng: show flexible-tunnels profiles

Bảng định tuyến và các tuyến (Routes and Routing Tables)

Các tuyến (routes) liên quan đến profile encapsulation và profile de-encapsulation của tunnel có mục đích sử dụng khác nhau, do đó được lưu trữ trong các bảng định tuyến (routing table) khác nhau trên thiết bị gateway. Bảng 1 dưới đây cung cấp tóm tắt về các loại tunnel profile, các tuyến liên quan đến từng profile, và các bảng định tuyến (routing tables) tương ứng:

Bảng 1: Tóm tắt về Tunnel Profiles, Routes và Routing Tables

Tunnel Profile (Profile Hầm)Routes (Tuyến)Route Purpose (Mục đích Tuyến)Routing Table (Bảng Định Tuyến)Ghi chú
Tunnel encapsulation profileFlexible route (tuyến tĩnh + profile encapsulation được ánh xạ)Dùng để chuyển tiếp lưu lượng đến các host trong trung tâm dữ liệuBảng định tuyến (RIB) do cấu hình API xác định
Tunnel de-encapsulation profileTuyến nội bộ được tạo tự động (automatically generated internal route)Dùng để ánh xạ profile de-encapsulation với tuyến, từ đó có thể tải xuống bảng định tuyến nội bộBảng định tuyến nội bộ tên là __flexible_tunnel_profiles__.inet.0Khi nhận gói tin đã được encapsulate từ host trong DC, bảng này dùng để tra cứu và ánh xạ đúng profile de-encapsulation tương ứng với gói tin đó.

Luồng Lưu Lượng của Tunnel Linh Hoạt (Flexible Tunnel Traffic Flows)

Tính năng tunnel linh hoạt hỗ trợ các luồng lưu lượng IPv4 và IPv6 theo quy trình sau:

  • Khi thiết bị gateway nhận gói tin có địa chỉ đích trùng với một tuyến linh hoạt (flexible route) trong bảng định tuyến. Thiết bị sẽ hoạt động như một VTEP nguồn (source VTEP) và thực hiện:

Encapsulate (đóng gói) gói tin theo các thông số được xác định trong encapsulation profile.
Các tham số encapsulation có thể bao gồm nhưng không giới hạn ở:

    • Loại encapsulation
    • Tiền tố nguồn (source prefix)
    • Địa chỉ đích
    • Giao diện tunnel linh hoạt (flexible tunnel interface)
    • VXLAN Network Identifier (VNI)
    • Chuyển tiếp gói tin tới máy ảo đích (VM) thông qua giao diện tunnel linh hoạt đã chỉ định trong encapsulation profile.
    • Áp dụng các tính năng đầu ra (output features) được cấu hình trên flexible tunnel interface, ví dụ: Thống kê (statistics), Lấy mẫu (sampling), Gương hóa (mirroring), Bộ lọc (filters).
  • Khi thiết bị gateway nhận gói tin đã được encapsulate và có nội dung khớp với một de-encapsulation profile. Thiết bị sẽ hoạt động như một VTEP đích (destination VTEP) và thực hiện:
    • Giải đóng gói (de-encapsulate) gói tin.
    • Áp dụng các tính năng đầu vào (input features) đã cấu hình trên flexible tunnel interface.
    • Chuyển tiếp gói tin đến đích cuối thông qua flexible tunnel interface được chỉ định trong de-encapsulation profile.

Chuẩn bị thiết bị Gateway

Trước khi tiến hành lập trình các tunnel linh hoạt bằng JET APIs, bạn cần kích hoạt gRPC (Remote Procedure Calls) trên các thiết bị gateway bằng lệnh sau:

set system services extension-service request-response grpc ssl

Sau khi bật gRPC, thiết bị gateway đã sẵn sàng để nhận các yêu cầu dịch vụ định tuyến và tunnel thông qua kết nối bảo mật từ các ứng dụng JET.

Để biết thông tin đầy đủ về cách chuẩn bị thiết bị gateway tương tác với JET APIs, vui lòng tham khảo tài liệu JET API Guide.

Hiểu hành vi của Tunnel Linh Hoạt (Flexible Tunnel Behavior)

Cần lưu ý các điểm sau liên quan đến chức năng của tunnel linh hoạt:

  • Nếu một tuyến tĩnh (static route) được ánh xạ tới một giao diện tunnel linh hoạt chưa được cấu hình, tuyến đó sẽ không hoạt động cho đến khi giao diện được cấu hình hoàn chỉnh.
  • Nếu một hoặc nhiều tuyến linh hoạt (flexible routes) được ánh xạ đến một giao diện tunnel linh hoạt đã bị xóa, thì các tuyến đó cũng sẽ bị vô hiệu hóa và loại bỏ khỏi Packet Forwarding Engine.
  • Nếu giao diện tunnel linh hoạt bị mất kết nối, chưa cấu hình, hoặc offline, thì lưu lượng cần encapsulate hoặc de-encapsulate sẽ bị loại bỏ một cách an toàn (gracefully discarded).
  • Mỗi tuyến tĩnh phải ánh xạ duy nhất tới một encapsulation profile. Nói cách khác, mỗi tuyến chỉ được gán một profile encapsulation, không hỗ trợ ánh xạ nhiều tuyến tĩnh đến cùng một profile encapsulation.
  • Khi thêm hoặc chỉnh sửa de-encapsulation profile bằng file flexible_tunnel_service.proto, nếu xảy ra xung đột với một profile khác, thao tác sẽ thất bại và thông báo lỗi sẽ được cung cấp.
    Xung đột xảy ra khi một hoặc nhiều giá trị sau bị trùng lặp:
    • UDP destination port (Cổng UDP đích)
    • Source prefix (Tiền tố nguồn)
    • Source prefix length (Độ dài tiền tố nguồn)
    • VNI (VXLAN Network Identifier)

Giới Hạn của Tunnel Linh Hoạt (Flexible Tunnel Limitations)

Tính năng flexible tunnel hiện có các hạn chế sau:

  • Không hỗ trợ các tính năng tra cứu nguồn, bao gồm (nhưng không giới hạn) reverse-path forwarding (RPF) và kiểm tra địa chỉ MAC, trên các bảng định tuyến chứa flexible routes.
  • Mỗi flexible route có một profile encapsulation làm next-hop, thay vì một địa chỉ IP. Do đó:
    • Không hỗ trợ các tính năng next-hop như cân bằng tải (load balancing) giữa các encapsulation profiles.
  • Flexible tunnels không có chức năng control plane. Nghĩa là:
    • Không thể chạy các giao thức hoặc tính năng control plane (như OSPF, BGP, v.v.) qua các tunnel này.
    • Mọi xử lý đều được thực hiện ở forwarding plane.

Chúc các bạn thực hiện thành công. Hi vọng bài viết này sẽ giúp ích cho các bạn trong công việc. Nếu bạn có vấn đề gì thắc mắc đừng ngần ngại liên hệ với chúng tôi theo thông tin dưới đây để được hỗ trợ thêm.

Hẹn gặp lại các bạn trong các bài viết tiếp theo!

CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH

• Địa chỉ: Số 23E4 KĐT Cầu Diễn, Tổ 7, Phú Diễn, Bắc Từ Liêm, Hà Nội

• Điện thoại: 02432012368

• Hotline: 098 115 6699

• Email: info@datech.vn

• Website: https://datech.vn