Skip to main content

1. Tổng quan & Kiến trúc tổng thể

Mục lục


Section 1 — Tổng quan: Contrail là gì?

Mental Model — Hiểu bằng hình ảnh

Hãy tưởng tượng một tòa nhà văn phòng lớn.

Tòa nhà có nhiều công ty thuê (tenant). Mỗi công ty cần mạng nội bộ riêng — họ không muốn máy tính của mình "nhìn thấy" máy tính của công ty khác, dù tất cả đều đang dùng chung hệ thống dây cáp vật lý của tòa nhà.

Trước khi có Contrail: kỹ thuật viên mạng phải đi từng tầng, cắm cable, cấu hình switch thủ công cho từng công ty.

Sau khi có Contrail: admin chỉ cần vào web portal, bấm "Tạo mạng cho Công ty A, 20 máy, cô lập với Công ty B" — hệ thống tự làm hết trong vài giây.

Simple Explanation

Contrail là gì?

Contrail là một phần mềm SDN (Software-Defined Networking) — nó thay thế việc cấu hình mạng thủ công bằng cách tự động hóa toàn bộ qua phần mềm.

Thay vì mạng được định nghĩa bởi cáp vật lý và cấu hình trên từng switch, Contrail tạo ra virtual network — mạng ảo tồn tại hoàn toàn trong phần mềm, có thể tạo/xóa/thay đổi trong tích tắc. Bên dưới lớp mạng ảo này vẫn có một underlay network thật — hạ tầng switch/router/cáp vật lý nối các server với nhau bằng IP thuần túy — Contrail không thay thế lớp đó, mà xây overlay chạy trên nó.

Về tên gọi: Contrail bắt nguồn từ startup Contrail Systems, được Juniper Networks mua lại cuối 2012 và ra mắt thành sản phẩm thương mại Contrail Networking cuối 2013. Bản mã nguồn mở song song mang tên Tungsten Fabric (dưới Linux Foundation Networking) đã được đưa vào trạng thái archived — tài nguyên dự án chỉ còn giữ truy cập đến 01/08/2024, dù cộng đồng vẫn tự maintain fork riêng. Về phía thương mại, kiến trúc Contrail tiếp tục sống dưới tên Cloud-Native Contrail Networking (CN2, ra mắt 05/2022, Kubernetes-native), hiện là sản phẩm của HPE Juniper Networking sau khi HPE hoàn tất mua lại Juniper Networks. Kiến trúc mô tả xuyên suốt loạt bài này là kiến trúc gốc — vẫn là nền tảng khái niệm cho CN2, dù cách triển khai thực tế ở các bản mới đã chuyển sang microservices/Kubernetes operator.

Tại sao cần Contrail?

Nhìn vào một data center truyền thống, bạn sẽ va ngay phải mấy vấn đề quen thuộc:

  • VLAN (chuẩn IEEE 802.1Q) chỉ có 4096 giá trị, thực tế dùng được 4094 → không đủ cho hàng nghìn tenant.
  • Cấu hình thủ công → chậm, error-prone, không scale.
  • Switch vật lý phải biết MAC của từng VM → bảng MAC khổng lồ.
  • Thêm tenant mới → phải config lại nhiều thiết bị vật lý.

Contrail giải quyết bằng cách:

  • Dùng overlay network (tunnel trên IP) thay VLAN → hàng triệu tenant.
  • Centralized controller tự động cấu hình → không cần chạm thiết bị vật lý.
  • Switch vật lý chỉ cần biết IP của server → bảng forwarding đơn giản.
Traditional VLAN vs Contrail OverlayTraditional (VLAN-based)Manual per-switch configNew tenant = touch every deviceMax 4096 VLANsNot enough for large multi-tenant DCSwitch learns every VM MACMAC table grows huge, slow to convergeProvisioning: hours to daysContrail (Overlay SDN)Centralized controller configNew tenant = API call onlyMPLS Label + Route TargetMillions of isolated tenantsSwitch only knows server IPsSimple forwarding table, scales flatProvisioning: seconds

Detailed Technical Explanation

Contrail là open-standard based, proactive overlay SDN solution. Từ "proactive" ở đây có nghĩa là: routes và forwarding state được đẩy xuống từ controller trước khi có traffic — không cần đợi flow đầu tiên để học, khác hẳn flood-and-learn truyền thống.

Từ "open-standard" cũng quan trọng không kém: Contrail dùng BGP, MPLS, XMPP — những giao thức có sẵn, được nhiều vendor khác hỗ trợ, chứ không phải một proprietary protocol khép kín như OpenFlow. Về bản chất, Contrail là một triển khai L3VPN/EVPN dựa trên BGP (theo mô hình RFC 4364 và RFC 7432) — cùng họ công nghệ VPN mà các nhà mạng dùng để tách traffic nhiều khách hàng trên chung một hạ tầng MPLS, chỉ khác là áp dụng cho VM/container thay vì site khách hàng vật lý. XMPP (Extensible Messaging and Presence Protocol) vốn được thiết kế cho chat/tin nhắn — Contrail mượn nó vì đặc tính kết nối long-lived, hai chiều, kiểu publish/subscribe, rất hợp để Control Node liên tục đẩy route mới xuống hàng nghìn vRouter mà không cần polling liên tục.

Tất cả networking features (switching, routing, security, load balancing) được chuyển từ hardware vật lý vào software trong hypervisor kernel, quản lý từ central orchestration system.

Điều này cho phép:

  • Physical switches không cần lưu trạng thái VM hay tenant.
  • Scale tốt vì switch chỉ forward IP giữa các server.
  • Agility cao vì thay đổi mạng = thay đổi config phần mềm.

Hai use case chính

1. Cloud Networking (Private/Public IaaS):

MarketVí dụĐặc điểm
Enterprise Private CloudNội bộ công ty< 4K tenant, thường dùng VMware
IaaS/Public CloudAmazon, RackspaceHàng nghìn tenant, cần overlay
SaaSSalesforce, GoogleBuild-Your-Own

Trong tất cả trường hợp: nhiều tenant share cùng physical resource, mỗi tenant có logical resources riêng và cô lập với nhau.

2. NFV (Network Functions Virtualization):

Virtualize các network service như:

  • Firewall, IDS/IPS
  • DPI (Deep Packet Inspection)
  • Caching, WAN optimizer
  • Load balancer

Thay vì mua hardware appliance (đắt, chậm triển khai), chạy các chức năng này trong VM. Contrail điều phối việc traffic đi qua đúng chuỗi service.

Common Pitfalls

  • Nhầm lẫn: Contrail không phải là một switch hay router vật lý.
  • Nhầm lẫn: Contrail không thay thế underlay network — nó chạy trên underlay network.
  • Nhầm lẫn: "Logically centralized" không có nghĩa là single point of failure — controller được phân tán vật lý.

Section 2 — Hai thành phần chính

Mental Model

Hãy tưởng tượng hệ thống điều không khí trong tòa nhà.

Contrail SDN Controller = Trung tâm điều khiển — có nhiệm vụ nhận lệnh từ quản lý tòa nhà ("phòng 3A cần 22°C"), tính toán cách đạt được điều đó, và gửi lệnh đến từng thiết bị điều hòa.

Contrail vRouter = Máy điều hòa trong từng phòng — nhận lệnh từ trung tâm và thực thi. Không có não, chỉ làm theo chỉ dẫn.

Nếu trung tâm điều khiển tạm thời mất liên lạc → máy điều hòa vẫn chạy theo setting cuối cùng (headless mode).

Simple Explanation

Contrail gồm hai phần:

1. SDN Controller = Bộ não

  • Nhận yêu cầu từ người dùng (qua OpenStack hoặc API).
  • Tính toán xem cần cấu hình gì.
  • Gửi cấu hình xuống vRouter.
  • Chạy trên nhiều server để đảm bảo không chết.

2. vRouter = Cánh tay thực thi

  • Chạy trong kernel của mỗi compute server.
  • Nhận cấu hình từ controller.
  • Thực sự forward packet giữa các VM.
  • Thêm/bỏ encapsulation cho overlay network.

Trên một cluster Contrail đang chạy, cách nhanh nhất để thấy hai thành phần này còn sống hay không là lệnh contrail-status, chạy được trên cả controller node lẫn compute node:

contrail-status
# Output minh họa (rút gọn)
== Contrail Control ==
control: active
nodemgr: active
named: active
dns: active

== Contrail Analytics ==
collector: active
nodemgr: active
query-engine: active

== Contrail Config ==
api: active
nodemgr: active
schema: active
svc-monitor: active

== Contrail vRouter ==
agent: active
nodemgr: active

(Output minh họa — cấu trúc và tên field đúng theo lệnh thật, số liệu cụ thể chỉ mang tính ví dụ.)

Ba khối Contrail Control / Contrail Analytics / Contrail Config chính là ba loại node bên trong SDN Controller — sẽ được mổ xẻ chi tiết ở phần sau. Khối Contrail vRouter là agent chạy trên từng compute node. Trạng thái active nghĩa là process đang chạy và tự báo cáo khỏe mạnh; bất kỳ dòng nào khác active (ví dụ initializing, failed) là dấu hiệu cần kiểm tra ngay.

Kiến trúc tổng hợp

Contrail Architecture OverviewSDN ControllerConfig NodeREST API / CassandraSchema TransformerControl NodeBGP / XMPPRoute Distribution (IBGP)Analytics NodeCollector / NoSQLQuery EngineOpenStackNova / NeutronNeutron PluginCompute NodevRouter AgentUser Space — XMPP clientvRouter ForwardingKernel — Encap/DecapVMVMVMGateway RouterMX / QFXBGP + NETCONFUnderlay IP NetworkToR / Spine Switches — IP Forwarding OnlyRESTXMPPSandeshBGP

Ba interface của Controller

Controller có 3 loại interface:

InterfaceHướngGiao thứcĐối tác
NorthboundController ↔ OrchestratorREST API (HTTPS)OpenStack, CloudStack, OSS/BSS
SouthboundController ↔ Network ElementXMPP (vRouter), BGP+NETCONF (router/switch)vRouter, MX gateway
East-WestController ↔ ControllerBGPController khác (peering)

Contrail vs Open vSwitch (OVS)

Tính năngOVS (vSwitch)Contrail vRouter
L2 switching
L3 routingHạn chế✓ đầy đủ
Overlay (tunnel)
Control planeOpenFlow / manualXMPP từ controller
Route distributionKhôngBGP-like qua XMPP
Multi-tenant VRFHạn chế✓ per-VN routing instance

What Happens If This Breaks?

Thành phần failẢnh hưởngRecovery
Controller fail hoàn toànTraffic đang chạy tiếp tục (vRouter dùng state cũ). Không thể tạo VM mới hoặc thay đổi cấu hình.Restart controller; vRouter tự resync
vRouter Agent failvRouter forwarding plane chạy "headless" theo state cũ. Traffic tiếp tục. Không xử lý được flow mới đúng cách.Agent tự restart, resync từ controller
vRouter Forwarding Plane failTraffic bị gián đoạn trên server đó. VMs mất kết nối mạng.Restart kernel module; agent cài lại state

Đã biết Controller và vRouter là hai mảnh ghép chính của Contrail — nhưng bản thân Controller không phải một khối đơn nhất. Phần tiếp theo mổ xẻ ba loại node cấu thành nên nó: Configuration, Control và Analytics — mỗi loại đảm nhận một vai trò rất khác nhau.


Nguồn tham khảo

  • Encapsulation mặc định của Contrail là MPLS-over-GRE/UDP dùng MPLS label 20-bit, không phải VXLAN VNI 24-bit; scale đa tenant thực tế đến từ BGP Route Target chứ không bị giới hạn bởi độ rộng của một trường VNI cố định — VXLAN Encapsulation in Juniper Contrail, truy cập 08/2026
  • Contrail là triển khai L3VPN/EVPN dựa trên BGP theo mô hình RFC 4364 (BGP/MPLS IP VPNs) và RFC 7432 (BGP MPLS-Based EVPN) — VXLAN Encapsulation in Juniper Contrail, truy cập 08/2026
  • Juniper mua lại Contrail Systems tháng 12/2012; Contrail Networking trở thành sản phẩm thương mại chính thức cuối 2013 — Yahoo Finance, truy cập 08/2026
  • Tungsten Fabric (bản mã nguồn mở của Contrail) đã được Linux Foundation Networking đưa vào trạng thái archived, tài nguyên dự án chỉ giữ truy cập đến 01/08/2024 — The New Stack, LF Networking – TungstenFabric Archives, truy cập 08/2026
  • CN2 (Cloud-Native Contrail Networking) ra mắt 05/2022, hiện là sản phẩm của HPE Juniper Networking sau khi HPE hoàn tất mua lại Juniper Networks — RCR Wireless, HPE Juniper Networking — CN2 product page, truy cập 08/2026