Content routing là quá trình IPFS tìm các peer trong mạng lưới mà có nắm giữ CID cần truy xuất. Các subsystem sử dụng trong quá trình content routing là:
Kademlia Distributed Hash Table (DHT)
IPFS sử dụng một bảng băm phân tán (Distributed Hash Table - DHT) có tên là Kademlia để ánh xạ các CID với các peer sở hữu. Do phân tán nên không có một node đơn lẻ nào nắm giữ toàn bộ bảng.
DHT có thể có dạng như sau:

Ví dụ, khi một node A đăng tải dữ liệu C bất kỳ lên IPFS, nó sẽ thông báo cho các node khác biết rằng nó đang nắm giữ dữ liệu C bằng cách thêm vào DHT một entry ánh xạ từ CID của dữ liệu C sang địa chỉ của node A.
Một node B khác nếu muốn tải dữ liệu C thì cần truy cập vào DHT, tìm địa chỉ IP đang lưu trữ dữ liệu C và tải trực tiếp về từ địa chỉ IP đó.
Bitswap
Là một giao thức message-based hoạt động trong mạng ngang hàng dùng để truyền tải và định tuyến dữ liệu. Với giao thức này, một node có thể truy vấn xem các peer của nó có active hay không hoặc kiểm tra xem các peer này có CID mà node đang tìm hay không mà không cần duyệt qua hết DHT1.
Giao thức này còn hỗ trợ sử dụng các wantlist. Cơ chế như sau: các node sử dụng giao thức Bitswap khi muốn truy xuất một tập tin thì nó sẽ gửi một wantlist có chứa các CID của các block mà lưu trữ tập tin đó đến các peer khác.
Dạng đơn giản của wantlist có dạng như sau:
wantlist {
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy, WANT,
QmTudJSaoKxtbEnTddJ9vh8hbN84ZLVvD5pNpUaSbxwGoa, WANT,
...
}Mỗi node sẽ lưu lại wantlist của các peer trong mạng. Nếu một node N nhận được block B mà peer P muốn, chẳng hạn như peer P, N sẽ gửi block B cho P.
Delegated Routing Over HTTP
Nếu một node không có đủ tài nguyên để tự triển khai chức năng định tuyến hoặc muốn xây dựng một hệ thống IPFS với cơ chế định tuyến custom thì nó có thể giao việc này cho một router ủy quyền sử dụng giao thức HTTP/HTTPS.
mDNS
Để phân giải địa chỉ IP một cách nhanh chóng và hiệu quả của các peer ở trong local network mà không cần một nameserver, IPFS sử dụng giao thức Multicast Domain Name System (mDNS).
Resources
Footnotes
-
Tham khảo thêm cơ chế hoạt động ở đây Bitswap | IPFS Docs ↩