Understanding Data Center Fabrics - Part 2: Clos Fabric History
Mục lục
- 1. Điểm khởi đầu: patch panel switch trong mạng điện thoại
- 2. Crossbar fabric là gì?
- 3. Vấn đề scale của crossbar cơ khí và câu chuyện Strowger switch
- 4. Cách Strowger switch hoạt động — vì sao số điện thoại có 6, rồi 9-10 chữ số?
- 5. Charles Clos và sự ra đời của Clos fabric (1953)
- 6. Từ crossbar sang packet switch: folded Clos fabric
- 7. Clos fabric biến traffic North-South thành East-West
1. Điểm khởi đầu: patch panel switch trong mạng điện thoại
Để hiểu cách các data center fabric ngày nay được thiết kế, rất hữu ích nếu quay lại lịch sử của các fabric từng dùng để xây mạng điện thoại. Thiết bị nguyên thủy là patch panel switch — loại switch dùng trong mạng điện thoại, nơi operator (tổng đài viên) ngồi nhận cuộc gọi, hỏi người gọi muốn kết nối tới đâu, rồi dùng dây patch nối thủ công hai port lại với nhau. Việc này gọi là "making the circuit". Đây thực chất là một crossbar fabric với thao tác "make" thủ công do con người thực hiện.
Cơ chế "làm mạch" cụ thể ra sao? Switchboard thời kỳ đầu vận hành bằng cord circuit: mỗi cặp dây (cord) có một plug (jack) ở hai đầu. Khi thuê bao nhấc máy, một lá cờ báo (drop) hoặc đèn tín hiệu bật lên đúng vị trí jack của thuê bao đó trên bàn switchboard; operator cắm một đầu cord vào jack của người gọi, hỏi số cần gọi, rồi cắm đầu cord còn lại vào jack của người nhận và bật chuông báo. Vì mỗi cord chỉ phục vụ được đúng một cuộc gọi tại một thời điểm, số cord cần treo sẵn tăng theo số cuộc gọi đồng thời, và số operator cần thuê tăng theo số thuê bao. Đây chính là giới hạn khiến ngành viễn thông sau này buộc phải tìm cách tự động hóa hoàn toàn (xem phần 3).
Tổng đài điện thoại thương mại đầu tiên trên thế giới do George Coy xây dựng, khai trương ngày 28/1/1878 tại New Haven, Connecticut (District Telephone Company), phục vụ 21 thuê bao ngay trong ngày đầu tiên. Switchboard đầu tiên này thô sơ tới mức được Coy ráp từ vật liệu tận dụng — bù-loong xe ngựa, tay cầm ấm trà, cùng loại dây kim loại vốn dùng để làm đồ lót phụ nữ — minh chứng rõ ràng rằng "patch panel switch" ban đầu chỉ là thiết bị chắp vá, rất lâu trước khi được chuẩn hóa thành thiết bị công nghiệp.
2. Crossbar fabric là gì?
Crossbar fabric minh họa bằng các mechanical switch dùng để make/break circuit. Với 4 thiết bị (device 1-4), mỗi thiết bị được chia logic thành send side và receive side trên switch — dù bản thân thiết bị vật lý (như một máy điện thoại) chỉ có một cặp dây, không có khái niệm send/receive riêng biệt.
Kết nối giữa các port được tạo/ngắt thủ công qua patch panel, hoặc được thay thế bằng relay cơ khí (mechanical switch) — không thể thay bằng ống chân không hay transistor. Khi device 1 muốn nói chuyện với device 4, crossbar fabric sẽ đóng relay tương ứng, tạo một mạch điện vật lý trực tiếp giữa hai thiết bị. Đây là một non-blocking fabric.
"Non-blocking" nghĩa là gì và vì sao nó quan trọng đến vậy? Nó nghĩa là bất kỳ cặp thiết bị nào cũng luôn có thể kết nối được với nhau tại cùng một thời điểm, miễn là cả hai đầu đang rảnh — không có chuyện device 1 muốn gọi device 4 nhưng bị "kẹt" chỉ vì device 2 đang gọi device 3 trên cùng một đường chung. Mỗi cặp có hẳn một relay/mạch điện riêng dành cho nó, không ai phải chia sẻ đường truyền với ai. Đây chính là tiêu chuẩn vàng của mọi thiết kế fabric kể từ đó tới nay — kể cả các Clos fabric packet-switch hiện đại ở data center vẫn cố gắng đạt tới (hoặc xấp xỉ) tính chất non-blocking này, vì nếu fabric "blocking" (bị nghẽn khi nhiều luồng tranh nhau một đường), hiệu năng toàn hệ thống sẽ tụt giảm ngay cả khi từng thiết bị riêng lẻ không hề quá tải.
Vấn đề: càng nhiều thiết bị (d1, d2, d3, d4, …), fabric càng phải lớn, relay càng nhiều, tiêu tốn càng nhiều điện năng và không gian vật lý.
Về mặt toán học, đây chính là lý do khiến crossbar cơ khí "không thể scale": với N thiết bị, số crosspoint (relay) cần thiết tăng theo N² — gấp đôi số thiết bị thì số relay cần thiết tăng gấp bốn, không phải gấp đôi. Ví dụ minh họa: một tổng đài N=100 thuê bao cần 100² = 10.000 crosspoint; nếu số thuê bao tăng lên N=10.000 (gấp 100 lần), số crosspoint cần thiết nhảy lên 10.000² = 100.000.000 — gấp 10.000 lần, chứ không phải gấp 100 lần. Đây chính là bức tường vật lý (không gian đặt relay, chi phí dây đồng, điện năng làm nóng cuộn relay) mà không công nghệ cơ khí nào vượt qua nổi chỉ bằng cách "làm relay nhỏ hơn" — bài toán buộc phải giải bằng một kiến trúc khác hẳn, thay vì tối ưu từng relay riêng lẻ.
💡 Hình dung như thế này: crossbar fabric giống một bảng ma trận nút bấm — muốn nối thiết bị A với thiết bị B thì bấm đúng nút nằm ở giao điểm giữa hàng A và cột B để tạo một mạch điện vật lý. Vấn đề là số nút trên bảng tăng gần như theo bình phương số thiết bị: thêm vài thiết bị là bảng phình to rất nhanh — đây chính là lý do người ta phải tìm cách khác, thay vì cứ xây một bảng ma trận khổng lồ.
3. Vấn đề scale của crossbar cơ khí và câu chuyện Strowger switch
Cuối những năm 1800 - đầu 1900, một người tên Almon Brown Strowger (làm nghề undertaker — người mai táng) gặp đúng vấn đề trên tại tổng đài điện thoại ở thị trấn của ông: hệ thống vẫn dùng operator thao tác thủ công qua patch panel crossbar. Strowger nghi ngờ vợ của đối thủ cạnh tranh (người đang làm operator tổng đài) cố tình chuyển các cuộc gọi "cần người mai táng" cho chồng bà thay vì cho ông.
Ông nhận ra crossbar fabric kiểu thủ công không thể scale đủ lớn — thời điểm đó các crossbar fabric còn là những switch cơ khí cồng kềnh, phải kéo thanh gạt (bar) bằng tay với relay lớn để kéo các thanh đó, không đủ nhỏ gọn cho nhu cầu của ông. Đúng như hình dung ở section 2: một tổng đài phục vụ vài nghìn thuê bao mà mỗi thuê bao lại cần một relay riêng cho từng thuê bao khác thì số relay cần thiết sẽ tăng theo bình phương, kéo theo phòng tổng đài chất đầy dây và relay cơ khí, cần rất nhiều operator vận hành thủ công. Vì vậy Strowger phát minh ra Strowger switch (được cấp bằng sáng chế bởi ông và anh trai, sau đó lập công ty để sản xuất) — ý tưởng cốt lõi là để máy móc tự động "bước" tới đúng đích theo số quay, thay vì cần một relay vật lý dành riêng cho mọi cặp thuê bao có thể có.
Cụ thể hơn về mốc thời gian: Strowger được cấp bằng sáng chế Mỹ số 447.918 vào ngày 10/3/1891, mô tả một "automatic telephone exchange" vận hành hoàn toàn bằng electromagnet, không cần operator can thiệp. Ông cùng cộng sự thành lập Strowger Automatic Telephone Exchange Company, và tổng đài thương mại đầu tiên dùng công nghệ này khai trương tại chính quê nhà La Porte, Indiana ngày 3/11/1892, phục vụ khoảng 75 thuê bao trên tổng công suất thiết kế 99 số (cấu trúc gốc là 10×10 = 100 kết nối khả dụng). Nguyên mẫu đầu tiên của ông thô sơ tới mức chỉ là một hộp tròn đựng cổ áo sơ mi (collar box) gắn các cây ghim thẳng làm tiếp điểm — rất lâu sau mới phát triển thành thiết bị điện từ hoàn chỉnh như mô tả ở phần 4.
Vì sao vấn đề scale lại nghiêm trọng tới mức phải phát minh hẳn một công nghệ mới, thay vì chỉ thuê thêm operator? Vì chi phí lao động (một tổng đài lớn cần hàng trăm operator làm việc theo ca liên tục) chỉ tăng tuyến tính theo số thuê bao, trong khi số crosspoint cần thiết cho một crossbar đầy đủ lại tăng theo N² như đã phân tích ở phần trên — nghĩa là chi phí vận hành một tổng đài hoàn toàn thủ công không bao giờ "đuổi kịp" tốc độ tăng trưởng thuê bao về mặt kỹ thuật, dù có thuê bao nhiêu operator đi nữa. Tự động hóa bằng máy móc là cách duy nhất để phá vỡ mối quan hệ N² đó.
Vấn đề tương tự — cần một cơ chế tìm đường (path-finding) thông minh hơn thay vì nối cứng N² đường dây — về sau còn thôi thúc Bell Labs phát triển hệ thống No. 1 Crossbar Switching System, đưa vào vận hành lần đầu tại tổng đài Troy Avenue, Brooklyn, New York vào tháng 2/1938. Thay vì có sẵn một relay cố định cho mọi cặp thuê bao, hệ thống này dùng mạch điều khiển gọi là marker để tự động tìm và thiết lập một đường đi (path) đang rảnh xuyên qua nhiều tầng crossbar nhỏ hơn — chính ý tưởng "tìm đường qua nhiều tầng switch nhỏ thay vì nối cứng toàn bộ" này, mười lăm năm sau, được Charles Clos hình thức hóa bằng toán học trong bài báo năm 1953 (xem phần 5).
4. Cách Strowger switch hoạt động — vì sao số điện thoại có 6, rồi 9-10 chữ số?
Strowger switch gồm các wafer (10 wafer, tương ứng 10 chữ số) và một armature (cần tiếp điểm) di chuyển dọc theo các wafer; trên mỗi wafer có 10 tiếp điểm (contact), và một relay armature khác di chuyển ngang qua các tiếp điểm đó.
Điện thoại quay số (rotary dial) khi đó có mạch điện vật lý nối thẳng tới tổng đài (building distribution frame). Mỗi lần quay số, đường dây bị ngắt-nối liên tục (một lượng điện áp nhỏ trên mạch), và mỗi lần ngắt mạch như vậy sẽ đẩy armature di chuyển: quay chữ số thứ nhất → chọn đúng wafer; quay chữ số thứ hai → armature di chuyển ngang (bằng stepper motor) để chọn đúng kết nối relay ở wafer đó.
Một frame Strowger switch tại tổng đài mà tác giả từng làm việc có thể chạy khoảng 10.000-12.000 line. Có các trunk line nối ra các building distribution frame (BDF), mỗi BDF quản lý khoảng 1.000-2.000 line, và các BDF này lại được xây bằng crossbar fabric dùng mechanical switch.
Cách đấu dây giải thích cho số lượng chữ số trong số điện thoại: mỗi Strowger switch là kiểu 1 vào - 10x10 = 100 kết nối ra. Quay số 1 → chọn đúng wafer; quay số 2 → chọn đúng kết nối trên wafer đó, kết nối này được hàn cứng (hard-wired) tới armature của switch tầng 2. Quay số 3 → chọn wafer ở tầng 2; quay số 4 → chọn kết nối, dẫn tới tầng 3. Quay số 5 → chọn wafer tầng 3; quay số 6 → kết nối thẳng tới máy điện thoại đích. Đây là lý do vì sao có số điện thoại 6 chữ số.
Để có thêm chữ số thứ 9 và 10 (mã vùng — area code): số đầu tiên (số 1) được dành riêng để chuyển hướng sang một bộ Strowger switch thứ hai — đây chính là area code Strowger switch. Quay số 1 sẽ đẩy relay chuyển sang bộ switch phụ này, sau đó quay tiếp 3 chữ số mã vùng sẽ kết nối tới một trunk line, trunk line này lại nối tới một Strowger fabric ba tầng khác giống hệt cấu trúc ở địa phương đích. Sở dĩ gọi đường dài (long distance) tốn tiền là vì các trunk line này khá hiếm và tốn kém để vận hành về mặt điện.
Toàn bộ Strowger switch frame rất phức tạp: có tới bốn bộ switch dành riêng cho việc quay số đường dài/mã vùng, hàng nghìn sợi dây phải hàn nối thủ công cùng vô số tụ điện để bảo vệ các armature và stepper motor khỏi hư hỏng.
Về thuật ngữ kỹ thuật chính xác hơn: cơ chế hai chuyển động này được gọi là two-motion selector — chuyển động thứ nhất (vertical stepping) đẩy cần tiếp điểm (wiper) đi lên theo phương thẳng đứng để chọn đúng "level" (ứng với chữ số hàng chục), chuyển động thứ hai (rotary stepping) xoay wiper theo phương ngang trên chính level đó để chọn đúng 1 trong 10 tiếp điểm (ứng với chữ số hàng đơn vị). Mỗi xung quay số (dial pulse — đĩa quay số ngắt-nối mạch điện đúng bằng số lần tương ứng với giá trị chữ số, riêng số 0 tạo ra 10 xung) đẩy electromagnet nhả cóc (pawl) thêm một nấc trên bánh cóc (ratchet), khiến wiper "bước" thêm một bước — đây là lý do công nghệ này còn được gọi là step-by-step switching.
Một chi tiết đáng chú ý khác: ở các tầng switch phía trước (first selector, second selector) — trước khi tới tầng cuối cùng nối thẳng vào máy thuê bao đích (connector) — switch không chỉ dừng cứng nhắc tại level được chọn bằng dial pulse, mà còn tự động thực hiện rotary hunting: wiper tiếp tục xoay dò qua từng tiếp điểm trên level đó cho tới khi tìm được đúng một trunk line đang rảnh mới dừng lại, bỏ qua các trunk đang bận. Đây chính là hình thức sơ khai nhất của việc "tự động tìm một đường rảnh trong nhiều lựa chọn cùng đích" — ý tưởng sẽ quay lại dưới dạng hiện đại và tinh vi hơn nhiều ở cơ chế ECMP trong các Clos fabric ngày nay (xem phần 7).
💡 Hình dung như thế này: Strowger switch hoạt động như một ổ khóa số cơ khí nhiều tầng — mỗi lần quay một chữ số, cần tiếp điểm "bước" tới đúng vị trí tương ứng, giống hệt cách một số khóa vali xoay từng vòng số để khớp đúng mã. Quay đủ 6 số là 6 lần "bước" liên tiếp để đi từ tổng đài của bạn thẳng tới đúng máy điện thoại đích, không cần operator nào can thiệp tay.
5. Charles Clos và sự ra đời của Clos fabric (1953)
Người giải quyết mớ hỗn độn của Strowger switch là Charles Clos — kỹ sư người Mỹ sinh năm 1905, tốt nghiệp kỹ thuật tại New York University năm 1927, làm việc nhiều năm tại Bell Labs rồi AT&T trước khi nghỉ hưu năm 1970 (tên ông có gốc Pháp, nên đôi khi bị nhầm là người Pháp hoặc bị phát âm kiểu Pháp gần giống "Charlay"). Ý tưởng của ông: thay vì dùng cách đấu dây kiểu Strowger, dùng nhiều crossbar cố định-port, kích thước nhỏ ghép lại với nhau — đây chính là Clos fabric, đặt theo tên ông, công bố qua bài báo nổi tiếng năm 1953.
Trong ngành viễn thông, Clos fabric thường được xây từ các crossbar cố định 4 hoặc 10 port. Đây vẫn là cấu trúc unidirectional (một chiều) với logic send/receive tách biệt như crossbar truyền thống — nếu d1 muốn tới d4, fabric controller sẽ tìm một đường đi (path) còn trống tới d4; nếu đường đó đang bận thì chọn đường khác. Cơ chế "quạt" (fan-out) qua nhiều lớp switch cho phép kết nối rất nhiều thiết bị với nhau. Clos fabric nguyên bản vẫn hỗ trợ được quy mô 10.000-12.000 kết nối, thậm chí lớn hơn — và cũng là một non-blocking fabric.
Cấu trúc Clos fabric có ba tầng (three stages). Về nguyên tắc toán học, Clos fabric luôn có số tầng lẻ — không bao giờ xây 4, 5 tầng hay bất kỳ số tầng chẵn nào. Từ đây hình thành cách gọi quen thuộc: tầng giữa gọi là spine, hai tầng ngoài gọi là leaf (leaf set) — đây chính là nguồn gốc của thuật ngữ spine-leaf fabric. (Nhiều người vẽ leaf ở phía dưới cùng, nhưng cách vẽ trong bài này là leaf ở trên và dưới, spine ở giữa.)
Vì sao ba tầng switch nhỏ lại giải quyết được bài toán N² của crossbar?
Về mặt toán học, một Clos fabric ba tầng được ký hiệu C(n, m, r): có r switch ở tầng leaf đầu vào, mỗi switch có n port hướng vào thiết bị và toàn bộ m port còn lại nối lên đủ m switch tầng spine; tầng leaf đầu ra có cấu trúc đối xứng tương tự. Clos chứng minh trong bài báo 1953 rằng nếu số switch tầng spine thỏa m ≥ 2n − 1, toàn bộ fabric là strictly non-blocking: bất kỳ lúc nào một input đang rảnh muốn nối tới một output đang rảnh, luôn có sẵn ít nhất một đường đi qua spine mà không cần định tuyến lại (rearrange) bất kỳ kết nối nào khác đang chạy. Nếu chấp nhận điều kiện lỏng hơn — rearrangeably non-blocking, cho phép sắp xếp lại một vài kết nối đang chạy để nhường chỗ cho kết nối mới — số switch tầng spine cần thiết chỉ cần thỏa m ≥ n, ít hơn đáng kể so với điều kiện strict. Điểm mấu chốt: tổng số crosspoint trong toàn bộ Clos fabric tăng gần tuyến tính theo số lượng thiết bị, thay vì tăng theo bình phương như một crossbar phẳng duy nhất — đây chính là lý do kiến trúc nhiều-tầng-switch-nhỏ giải được bài toán scale mà cả crossbar cơ khí (phần 2) lẫn Strowger switch (phần 3-4) từng vướng phải.
Cũng chính công thức đệ quy này giải thích vì sao Clos fabric luôn có số tầng lẻ: muốn mở rộng một Clos fabric ba tầng lên quy mô lớn hơn, cách làm phổ biến là thay mỗi switch ở tầng spine bằng chính một Clos fabric ba tầng nhỏ hơn lồng bên trong — mỗi lần "đệ quy" như vậy cộng thêm đúng hai tầng mới (một leaf-in và một leaf-out mới bao quanh spine cũ), nên tổng số tầng luôn nhảy từ 3 lên 5, lên 7, lên 9... và không bao giờ dừng ở một số chẵn.
Thuật ngữ "spine-leaf" mà kỹ sư mạng dùng phổ biến ngày nay không xuất hiện ngay từ bài báo 1953 của Clos — nó chỉ trở nên thông dụng khi ngành data center Ethernet "hồi sinh" ý tưởng Clos vào khoảng đầu-giữa thập niên 2010, khi các vendor (Juniper, Arista, Cisco...) cần một cái tên ngắn gọn, trực quan hơn là "multistage Clos network" để bán thiết kế fabric ba tầng này cho khách hàng doanh nghiệp.
6. Từ crossbar sang packet switch: folded Clos fabric
Khi thay các crossbar fabric bằng router/switch xử lý gói tin (packet switch), mọi thứ thay đổi: gửi packet từ device 1 sang device 2 không còn "chiếm trọn" một mạch điện vật lý nữa — device 1 vẫn có thể gửi traffic sang device 2 trong khi đồng thời gửi sang device 3, và device 2 hay 3 cũng có thể gửi ngược lại. Nói cách khác, kết nối trở thành bi-directional. Thuật ngữ cho cấu trúc này là folded Clos fabric (lưu ý: "folded" đôi khi chỉ được dùng để mô tả cách vẽ sơ đồ, nhưng đúng về mặt kỹ thuật, folded Clos nghĩa là luồng traffic bi-directional).
Vì sao lại gọi là "folded" (gấp lại)? Trong sơ đồ Clos ba tầng gốc (section 5), input và output là hai tầng leaf tách biệt nằm hai bên — traffic đi vào từ một đầu, chạy qua spine, rồi ra ở đầu kia, giống một mạch điện thoại một chiều. Với packet switch hiện đại, một thiết bị (server, switch) vừa gửi vừa nhận trên cùng một port vật lý, nên người ta "gấp" sơ đồ đó lại làm đôi: tầng leaf input và leaf output nay chập thành một tầng leaf duy nhất, còn spine vẫn nằm giữa. Đây chính là kiến trúc spine-leaf hai tầng quen thuộc trong data center ngày nay — mỗi leaf switch vừa có thể nhận traffic từ server, vừa gửi traffic lên spine, và ngược lại, tất cả trên cùng một sợi cáp.
Về mặt hình học cụ thể hơn: phép "gấp" này là lấy sơ đồ Clos ba tầng gốc — leaf-in ở một đầu, spine ở giữa, leaf-out ở đầu kia — gấp đôi lại đúng theo trục dọc đi qua tầng spine, rồi xoay toàn bộ sơ đồ 90 độ. Kết quả: tầng leaf-in và leaf-out, vốn là hai tập switch vật lý tách biệt trong sơ đồ gốc, nay chồng khít lên nhau thành một tầng leaf duy nhất; tầng spine vẫn giữ nguyên vai trò trung tâm nhưng nay thường được vẽ nằm phía trên thay vì ở giữa. Cần nhấn mạnh: đây không phải một phép biến đổi vật lý có thật diễn ra trên switch — nó chỉ là cách vẽ lại sơ đồ cho đúng với thực tế mới, rằng một switch vật lý (leaf) giờ đây vừa đóng vai trò input vừa đóng vai trò output trên cùng một port, nên không cần vẽ thành hai switch tách biệt như trước nữa.
7. Clos fabric biến traffic North-South thành East-West
Trước khi đi tiếp, cần làm rõ hai khái niệm north-south và east-west cho người mới: north-south là traffic đi giữa data center và thế giới bên ngoài (client ở Internet gọi vào server, hay server gọi ra ngoài) — thường được vẽ theo chiều dọc trên sơ đồ mạng. East-west là traffic giữa các server/thiết bị bên trong cùng một data center với nhau (ví dụ microservice A gọi microservice B, hay database replication) — được vẽ theo chiều ngang. Ứng dụng hiện đại (microservices, distributed database, storage replication) sinh ra traffic east-west nhiều gấp nhiều lần traffic north-south, đây là lý do thiết kế fabric ngày nay phải tối ưu cho east-west trước tiên.
Ở phần trước, vấn đề với thiết kế phân cấp truyền thống là traffic east-west tăng vọt, phải kéo lên tận core rồi đưa xuống lại, gây khó khăn cho việc scale — kể cả khi đã route hóa.
Cụ thể hơn, vấn đề với kiến trúc phân cấp ba lớp truyền thống (access - aggregation - core) là mỗi lớp phía trên thường có ít băng thông hơn tổng băng thông của các lớp phía dưới cộng lại — gọi là oversubscription (ví dụ tỷ lệ 20:1, 4:1...) — vì thiết kế này giả định phần lớn traffic là north-south (đi ra ngoài), nên không cần dự phòng đủ băng thông cho traffic đi ngang giữa hai server nằm trên hai access switch khác nhau. Khi traffic đó tăng vọt (east-west), gói tin buộc phải đi vòng lên tận aggregation hoặc core rồi vòng xuống lại — gọi là hiện tượng traffic hairpinning — vừa tốn thêm độ trễ (latency) không cần thiết, vừa dễ làm nghẽn đúng những uplink vốn đã bị oversubscribe.
Với Clos fabric, nếu coi kết nối ra bên ngoài (border leaf / border pod) là một trong các "device" của fabric (ví dụ dev4), thì toàn bộ traffic đi ra ngoài thực chất cũng chỉ là traffic east-west chạy trên chính fabric đó — Clos fabric biến hết mọi traffic north-south thành traffic east-west. Kết quả là fabric có một cách xử lý traffic đồng nhất, không quan tâm traffic là east-west hay north-south, đều được đối xử như nhau.
Điểm nữa là Clos fabric có fan-out rất cao, chính là cơ chế ECMP (equal cost multipath) — nghĩa là giữa hai điểm bất kỳ trong fabric luôn tồn tại nhiều đường đi có chi phí (cost/metric routing) bằng nhau, và router có thể chia traffic ra chạy song song trên tất cả các đường đó thay vì chỉ chọn một đường duy nhất. Càng thêm nhiều đường (path) — tức thêm switch ở tầng spine — khả năng gánh traffic của mạng càng tăng gần như tuyến tính, đây là lý do các data center lớn mở rộng fabric bằng cách thêm spine switch thay vì thay switch cũ bằng switch mạnh hơn.
Về mặt kỹ thuật, ECMP đã được IETF mô tả chính thức từ RFC 2991 và RFC 2992 (Network Working Group, tháng 11/2000) — cơ chế phổ biến nhất là băm (hash) một số trường cố định trong header gói tin (thường là 5-tuple: source/destination IP, source/destination port, protocol) để quyết định traffic của cùng một luồng (flow) luôn đi theo đúng một đường cố định trong số nhiều đường khả dụng, tránh hiện tượng gói tin tới đích sai thứ tự (out-of-order) nếu chia nhỏ ngẫu nhiên theo từng gói. Nhờ đó, tổng băng thông khả dụng giữa hai điểm bất kỳ trong fabric — gọi là bisection bandwidth — tăng gần tuyến tính khi thêm switch tầng spine, và đây chính là lý do các nhà vận hành data center lớn mở rộng fabric bằng cách bổ sung thêm spine switch (và thêm uplink từ leaf lên spine mới) thay vì nâng cấp switch hiện có lên tốc độ cao hơn.
Đây là lịch sử cơ bản của Clos fabric. Phần tiếp theo sẽ nói tới một topology khác — butterfly — là loại thực sự được dùng phổ biến trong các mạng hyperscale, trong khi Clos chủ yếu phù hợp với các mạng quy mô vừa.
Nguồn tham khảo
Nguồn gốc: Understanding Data Center Fabrics, Part 2: Clos Fabric History — kênh Packet Pushers
Ghi chú fact-check (đối chiếu với nguồn chính thức, truy cập 2026-07-13):
- Bài báo gốc của Charles Clos: "A Study of Non-Blocking Switching Networks", Bell System Technical Journal, tháng 3/1953, trang 406-424. Chỉ tìm thấy bằng chứng về đúng một bài báo nổi tiếng này (không tìm thấy bài báo riêng năm 1952) — bài viết đã điều chỉnh câu gốc "vài bài báo năm 1952 và 1953" thành "bài báo năm 1953" cho khớp nguồn. (Bell Labs / Nokia archive, Internet Archive)
- Câu chuyện Almon Strowger (undertaker, nghi ngờ vợ đối thủ cạnh tranh làm operator cố tình chuyển cuộc gọi) khớp với các nguồn lịch sử viễn thông. Mốc thời gian chính xác hơn: Strowger phát minh switch tự động khoảng 1888-1889, được cấp bằng sáng chế năm 1891, lắp đặt thực tế tại La Porte, Indiana năm 1892. (Wikipedia — Almon Brown Strowger, SPARK Museum)
- Thuật ngữ "spine-leaf": không tìm được một nguồn học thuật/vendor duy nhất "khai sinh" chính thức cụm từ này — nó là tên gọi thông dụng hóa của kiến trúc folded Clos khi ngành Ethernet data center hồi sinh ý tưởng của Clos vào thập niên 2010. Bằng chứng sớm nhất tìm được: kỹ sư mạng độc lập Ivan Pepelnjak (ipspace.net) đã trình bày kiến trúc leaf-and-spine trong webinar "Clos Fabric Explained" khoảng giữa năm 2012, trước khi Juniper chính thức đưa thuật ngữ "leaf-and-spine" vào tài liệu sản phẩm Virtual Chassis Fabric tháng 11/2013. Đây là mốc sớm nhất xác minh được, không chắc là lần đầu tiên tuyệt đối thuật ngữ này được dùng. (ipSpace.net blog, 11/2013)
- Charles Clos là kỹ sư người Mỹ (sinh 1905, mất 1988 tại New York), tốt nghiệp New York University năm 1927, làm việc tại Bell Labs/AT&T tới khi nghỉ hưu năm 1970 — 2026-08-17, Meet Charles Clos: The Father of Clos Networks