- Biểu đồ này hiển thị trực quan toàn bộ các lớp và thành phần của stack mạng Linux
- Biểu đồ bao gồm nhiều công nghệ ảo hóa khác nhau như ảo hóa, container Linux, mô phỏng, paravirtualization
- Bao gồm toàn bộ cấu trúc phân lớp từ socket mạng đến stack mạng (trên: TCP, UDP / dưới: GRO, RPS, RFS, GSO)
# Thành phần chính
- Stack mạng
- Lớp trên của stack mạng (TCP, UDP)
- Lớp dưới của stack mạng (GRO, RPS, RFS, GSO)
- Bộ lập lịch mạng
- NetFilter và điều khiển lưu lượng
- Bao gồm các giao diện mạng khác nhau như giao diện Bridge, Bond, Tap
- Driver thiết bị
- Hàng đợi (Queue)
- NAPI
- IRQ handler
- Các chức năng mạng được tăng tốc trên NIC
- Tính năng offload checksum, VLAN, VxLAN, GRE, TSO, LRO, RSS
# Đặc điểm và thông tin bổ sung
- Mỗi lớp đều cung cấp mẹo tối ưu hóa và thông tin thống kê đi kèm
- Kết nối chi tiết toàn bộ luồng tổng thể đến card mạng
- Biểu đồ này là một phần của tài liệu “Operativni sustavi i računalne mreže - Linux u primjeni” và có giá trị cao khi dùng làm tư liệu tham khảo chuyên môn
1 bình luận
Ý kiến trên Hacker News
Cảm thấy thực sự cần có nhiều tài liệu chất lượng cao như thế này hơn.
Trong nhiều năm tôi đã không thể tận dụng
iptablesmột cách đúng đắn.Tôi đã mua sách và thử nhiều ví dụ khác nhau trên blog, nhưng vì không hiểu cái gì hoạt động ra sao nên không thể dùng cho đúng.
Rồi tôi tìm thấy một sơ đồ (flowchart) cho thấy quá trình gói tin đi qua kernel, và nhờ đó tôi biết được chính xác thứ tự các rule chain được áp dụng cũng như các giá trị
sysctlđược phản ánh ở đâu.Nhờ sơ đồ này mà tôi có thể tự viết rule theo đúng ý mình, đồng thời chọn được các rule phù hợp có tính đến cả hiệu năng hoạt động.
Chỉ một sơ đồ thôi mà thực sự như thay đổi cả thế giới, mọi thứ đều hoạt động đúng ngay từ lần thử đầu tiên.
Tôi đã trực tiếp cảm nhận được sức mạnh to lớn của một sơ đồ tốt.
Không biết có phải sơ đồ này là cái ở đây không.
Tôi cũng nhất định muốn nhắc đến target
TRACE, thứ cho phép ghi log chính xác gói tin đã khớp với rule nào trong firewall.Đây thực sự là công cụ thiết yếu trong các firewall quy mô lớn.
Tôi muốn hỏi liệu bạn có thể chia sẻ sơ đồ đó không.
Tôi cũng muốn thực sự trải nghiệm thế giới của
iptables.Bản thân tôi cũng đã không hiểu
iptablestrong một thời gian rất dài.Rồi tôi biết đến FreeBSD và
pf tables, và giờ tôi cảm thấy mình như một kỹ sư mạng.Tất nhiên việc học vẫn đòi hỏi thời gian và công sức, nhưng quá trình học rất ăn khớp và tôi có thể học bằng cách dần dần tích lũy thêm nhiều điều hơn.
Tôi khuyên bất kỳ ai cũng nên tự mình thử sức.
Tài liệu chính thức về firewall của FreeBSD cũng rất đáng tham khảo.
Gần đây cuốn The Book of PF bản lần thứ 4 cũng đã được xuất bản.
Nếu ai quan tâm, tôi muốn cho biết tác giả của sơ đồ này cũng đã làm một sơ đồ luồng disk I/O của Linux.
Có thể xem sơ đồ disk I/O tại đây.
Tất cả các sơ đồ này đều bắt nguồn từ cuốn sách của tác giả có tên Operativni sustavi i računalne mreže - Linux u primjeni.
Nguyên bản cuốn sách cũng được công khai.
Xin dành một tràng pháo tay cho công trình xuất sắc và tận tâm của tác giả.
Không biết cuốn sách này có bản dịch tiếng Anh không.
Sơ đồ disk I/O quá xuất sắc.
Cảm ơn vì đã chia sẻ.
Linux Kernel map cũng là tài liệu thật sự tuyệt vời, nên rất đáng tham khảo.
[Liên kết Linux Kernel map](https://commons.wikimedia.org/wiki/File:Linux_kernel_map.png)
Xin gửi lời cảm ơn đến Hrvoje Horvat vì đã tạo ra sơ đồ chi tiết như vậy.
Nhờ đó việc học network stack có lẽ sẽ dễ dàng hơn nhiều.
Cuốn sách của tác giả, "Operativni sustavi i računalne mreže - Linux u primjeni", thậm chí còn khiến tôi cảm thấy đáng để học tiếng Croatia.
Xin chúc mừng việc xuất bản cuốn sách, và một lần nữa cảm ơn vì đóng góp quý giá này.
Liên kết sách
Công trình của tác giả hay đến mức khó mà tin nổi.
Tôi thực lòng mong có một bản dịch tiếng Anh.
Tôi nghĩ đây là một tài liệu thật sự tuyệt vời.
Nếu ai đó phát triển được một công cụ trực quan hóa có thể tự động tạo ra những sơ đồ như thế này thì sẽ còn thú vị hơn nữa, nhưng có lẽ trên thực tế điều đó gần như bất khả thi.
Dù vậy, các công cụ như Mermaid hay PlantUML có thể phần nào thể hiện được những miền tương tự, còn PGF/TikZ thì có thể là đối tượng đáng để thử thách theo hướng sinh văn bản thay vì sinh hình ảnh.
Tôi cũng muốn nhắc đến việc trong môi trường container, tương tự như trên VM, cũng có thể dùng TCP/IP stack riêng.
Nếu dùng
slirp4netnsthì container sẽ có networking riêng, còn nếu dùngpastathì nó sẽ trực tiếp tận dụng TCP/IP stack của kernel.Nếu tò mò thì có thể xem sơ đồ ở liên kết này, giải thích khá chi tiết.
Tôi chưa từng học network stack một cách bài bản, nhưng vì đã dùng Linux suốt hàng chục năm nên phần lớn cấu trúc của stack giờ đã trở nên quen thuộc, điều đó khiến tôi thấy khá thú vị.
Không biết có thể xem sơ đồ dưới dạng file
svgkhông.Nó chỉ được nhúng trong PDF nên tôi thấy hơi khó đọc.
Đây là một hình minh họa đã được đơn giản hóa.
Thực ra nó thậm chí còn chưa đi vào
iptableshaynftables.iptablesthật chăm chú, sẽ có cảm giáciptablescũng đang nhìn lại bạn.