แผนภาพสแต็กเครือข่าย Linux แบบครบถ้วน (2024)
(zenodo.org)- แผนภาพนี้แสดง สแต็กเครือข่าย Linux ทั้งหมดในเชิงชั้นและส่วนประกอบอย่างเป็นภาพ
- แผนภาพนี้รวมเทคโนโลยีเสมือนหลายประเภท เช่น virtualization, Linux containers, emulation, paravirtualization เป็นต้น
- ครอบคลุมโครงสร้างชั้นทั้งหมดตั้งแต่ ซ็อกเก็ตเครือข่าย จนถึง สแต็กเครือข่าย (ชั้นบน: TCP, UDP / ชั้นล่าง: GRO, RPS, RFS, GSO)
# ส่วนประกอบหลัก
- สแต็กเครือข่าย
- ชั้นบน ของสแต็กเครือข่าย (TCP, UDP)
- ชั้นล่าง ของสแต็กเครือข่าย (GRO, RPS, RFS, GSO)
- องค์ประกอบของ Network Scheduler
- NetFilter และการควบคุมทราฟฟิก
- รวมถึง อินเทอร์เฟซเครือข่าย ที่หลากหลาย เช่น Bridge, Bond, Tap
- ไดรเวอร์อุปกรณ์
- คิว (Queue)
- NAPI
- ตัวจัดการ IRQ
- ฟังก์ชันเครือข่ายที่เร่งด้วย NIC
- Checksum Offload, VLAN, VxLAN, GRE, TSO, LRO, RSS ฯลฯ
# คุณสมบัติและข้อมูลเสริม
- แต่ละชั้นมี เคล็ดลับการปรับแต่ง และ ข้อมูลสถิติ ให้พร้อมใช้งานพร้อมกัน
- เชื่อมโยงอย่างละเอียดถึงแนวทางการไหลโดยรวมที่ต่อเนื่องไปยัง การ์ดเครือข่าย
- แผนภาพนี้เป็นส่วนหนึ่งของหนังสือ “Operativni sustavi i računalne mreže - Linux u primjeni” และมีคุณค่าในการใช้งานเป็นแหล่งข้อมูลอ้างอิงเชิงวิชาชีพ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
รู้สึกว่าเอกสารคุณภาพสูงแบบนี้ควรมีให้เห็นกันมากขึ้นอีกมาก ฉันไม่สามารถใช้งาน IP tables ได้อย่างมีประสิทธิภาพมาหลายปี เคยซื้อหนังสือและลองตัวอย่างหลากหลายจากบล็อกแล้ว แต่ไม่เข้าใจว่ามันทำงานอย่างไร จึงยังใช้งานไม่เป็น แล้วฉันพบแผนภาพ (flowchart) ที่แสดงขั้นตอนที่แพ็กเก็ตผ่านเคอร์เนล ซึ่งช่วยให้เห็นลำดับที่แน่นอนที่กฎแต่ละ chain ถูกนำไปใช้ และเห็นได้ว่าค่า sysctl ถูกนำมาใช้ที่ไหน ด้วยแผนภาพนี้ ฉันสามารถเขียนกฎตามต้องการได้เอง และเลือกกฎที่เหมาะสมได้โดยพิจารณาประสิทธิภาพการทำงานด้วย แผนภาพเพียงชิ้นเดียวดูเหมือนเปลี่ยนโลกของฉันในทันที ใช้งานได้ถูกต้องตั้งแต่พยายามครั้งแรก ได้ประสบการณ์ตรงว่าพลังของแผนภาพที่ดีมีมากจริงๆ
อยากรู้ว่านี่คือแผนภาพเดียวกับ ที่นี่ หรือเปล่า
อยากเน้นถึง target TRACE ที่บันทึกลงล็อกว่าแพ็กเก็ตตรงกับกฎใดของไฟร์วอลล์อย่างแม่นยำ ในไฟร์วอลล์ขนาดใหญ่เป็นเครื่องมือที่แทบจะจำเป็นมากจริงๆ
อยากขอให้แชร์แผนภาพนี้หน่อย ฉันเองก็อยากได้ประสบการณ์กับโลกของ iptables อย่างแท้จริง
ฉันเองก็ไม่เข้าใจ IP tables มานานมาก ต่อมาได้รู้จัก FreeBSD และ pf tables จนตอนนี้รู้สึกเหมือนวิศวกรเครือข่าย แน่นอนว่าต้องใช้เวลาและความพยายามในการศึกษา แต่การเรียนรู้เข้ากับฉันได้ดี และค่อยๆ เพิ่มความรู้ได้เรื่อยๆ แนะนำให้ทุกคนลองท้าทายตัวเองด้วยตัวเอง เอกสารทางการเกี่ยวกับไฟร์วอลล์ของ FreeBSD ก็อ่านได้ด้วย และล่าสุดยังมีการเผยแพร่หนังสือ The Book of PF เล่ม 4 ด้วย
หากมีใครสนใจอยากบอกว่าผู้เขียนแผนภาพนี้ยังทำแผนภาพการไหลของ Linux Disk I/O ด้วย แผนภาพ Linux Disk I/O ที่นี่ สามารถดูได้ แผนภาพทั้งหมดนี้เริ่มต้นมาจากหนังสือของผู้เขียนชื่อ "Operativni sustavi i računalne mreže - Linux u primjeni" ต้นฉบับของหนังสือ ก็ถูกเผยแพร่ให้เข้าถึงได้ด้วย ชมเชยงานของผู้เขียนที่ยอดเยี่ยมและเป็นมิตร
อยากถามว่ามีฉบับแปลอังกฤษของหนังสือนี้หรือไม่
แผนภาพ Linux Disk I/O สุดยอดมาก ขอบคุณที่แชร์ให้ครับ
Linux Kernel map ก็เป็นข้อมูลที่ยอดเยี่ยม ควรเอามาอ้างอิงเช่นกัน [ลิงก์ Linux Kernel map](https://commons.wikimedia.org/wiki/File:Linux_kernel_map.png)
ขอขอบคุณ Hrvoje Horvat ที่สร้างแผนภาพละเอียดเช่นนี้ ทำให้การเรียน Network stack ของฉันง่ายขึ้นมาก หนังสือของผู้เขียน "Operativni sustavi i računalne mreže - Linux u primjeni" ก็น่ารู้สึกว่ามีคุณค่าพอที่จะเรียนภาษาครัวเฮาเตียน ขอแสดงความยินดีในการตีพิมพ์หนังสือและขอบคุณอีกครั้งสำหรับการมีส่วนร่วมที่มีค่าทุกครั้ง ลิงก์หนังสือ
งานของผู้เขียนยอดเยี่ยมจนแทบไม่อยากเชื่อ สุจริตใจมากที่อยากให้มีฉบับแปลอังกฤษ
คิดว่าเป็นแหล่งข้อมูลที่ดีมาก ถ้ามีใครพัฒนาเครื่องมือ visualization ที่สร้างแผนภาพแบบนี้อัตโนมัติได้คงจะน่าตื่นเต้นมาก แต่ในความเป็นจริงคงเกือบเป็นไปไม่ได้
ต้องการเน้นว่าคอนเทนเนอร์ยังสามารถใช้ TCP/IP stack ของตัวเองได้ในลักษณะใกล้เคียง VM ถ้าใช้ slirp4netns คอนเทนเนอร์จะมีการทำงานเครือข่ายของตัวเอง และในทางตรงกันข้ามถ้าใช้ pasta จะใช้ TCP/IP stack ของเคอร์เนลโดยตรง หากสนใจสามารถดู diagram ในลิงก์นี้ เพื่อรายละเอียดเพิ่มเติม
แม้จะไม่ได้เรียน Network stack แบบเป็นทางการเป็นพิเศษ แต่หลังจากใช้ Linux มานานหลายสิบปี ทำให้โครงสร้างสแต็กส่วนใหญ่ค่อนข้างคุ้นเคยและรู้สึกประหลาดใจ
อยากรู้ว่ามีวิธีดูแผนภาพเป็นไฟล์ svg หรือไม่ ตอนนี้มีเฉพาะใน PDF ทำให้การอ่านยาก
เป็นแผนภาพที่ย่อให้เรียบง่าย
ในความเป็นจริงยังไม่รวม iptables หรือ nftables