OpenFow คือ มาตรฐานเปิดที่อนุญาตให้ผู้ใช้งานสามารถนำโปรโตคอลที่สร้างขึ้นเองนำมาใช้งานได้ในระบบเน็ทเวิร์คที่มีการใช้งานในปัจจุบันได้ โดยที่ OpenFlow จะทำงานคล้ายๆกับการเพิ่ม Feature เข้าไปที่อุปกรณ์ switch, router หรือ wireless access point โดยที่ไม่ต้องการให้เจ้าของผลิตภัณฑ์ทำการเปิดเผยขั้นตอนการทำงานภายในของอุปกรณ์ ในปัจจุบัน OpenFlow ได้มีการนำไปใช้งานกับอุปกรณ์เจ้าหลักๆ โดยจำหน่ายอยู่ในรูปแบบของ switch ที่มีการรองรับการทำงานของ OpenFlow
ในอุปกรณ์ router หรือ switch แบบเก่า fast packet forwarding (data plane) และส่วนที่ทำหน้าในการจัดการ routing protocol (control plane) จะอยู่บนอุปกรณ์เดียวกัน การทำงานของ OpenFlow จะทำการแยกทั้งสองส่วนนี้ออกจากกัน โดย data plane จะยังคงทำงานอยู่บนอุปกรณ์เดิมส่วนที่เป็น control plane (software) ที่ทำหน้าที่ในการตัดสินใจเลือกเส้นทางหรือ routing protocol จะถูกแยกไปอยู่บน controller โดยที่อาจจะเป็นเครื่อง server ทั่วๆไปก็ได้ โดยที่ OpenFlow switch และ OpenFlow controller จะทำการติดต่อกันด้วย OpenFlow protocol ด้วย message ที่กำหนดไว้ เช่น การรับและส่ง packet การเปลี่ยนแปลง forwarding table หรือการอ่านค่าสถานะของอุปกรณ์
Data plane ของ OpenFlow switch จะอยู่ในรูปแบบของ clean flow table abstraction โดยที่ในแต่ละตำแหน่งของ Flow table จะประกอบไปด้วยกลุ่มของ packet ที่มีการระบุการทำงานเอาไว้ด้วย เช่น ให้ส่งออกไปที่ interface ไหน มีการ modify field ใดบ้าง หรือให้ทำการ drop packet ทิ้ง กรณีเมื่อ OpenFlow switch ได้รับ packet เข้ามาและยังไม่เคยอยู่ใน Flow table มันจะถูกส่งไปที่ controller เพื่อให้ controller ทำการตัดสินใจว่าจะจัดการกับ packet ที่ได้รับมานี้อย่างไร โดยมันจะสามารถทำการ drop หรือนำไปใส่ไว้ที่ Flow table และกำหนดการทำงานให้กับ OpenFlow switch ว่าจะต้องส่ง packet นี้ออกไปในทิศทางใดในกรณีที่มีการพบ packet แบบนี้อีกในอนาคต
OpenFlow อนุญาตให้ผู้ใช้งานสามารถสร้าง routing และ switching protocol ขึ้นมาใหม่และนำไปใช้งานได้ง่าย โดยมันจะถูกนำไปใช้งานในรูปแบบของ application ในรูปแบบต่างๆ เช่น virtual machine mobility หรือระบบ network ที่มีความปลอดภัยสูง และ mobile network ในยุคถัดไป
แปลและเรียบเรียงเนื้อหาจาก
Ref: http://archive.openflow.org/wp/learnmore/
Original post from GNS3Vault: http://gns3vault.com/network-management/access-list-logging/
Scenario:
The local boyscout needs your help as a network engineer. They want to make sure everytime their router receives an OSPF packet this will be logged on their local router. Think you can help them out?
สถานะการณ์จำลอง:
เจ้าหน้าที่ NOC ต้องการความช่วยเหลือจาก Network engineer อย่างคุณ พวกเข้ต้องการแน่ใจว่าทุกๆครั้งที่ Router ของเขารับ OSPF packet เข้ามามันจะถูก Log อยู่บน Router ของเขา คุณคิดว่าจะช่วยพวกเขาได้ไหม?
Goal:
เป้าหมาย:
IOS:
c3640-jk9o3s-mz.124-16.bin
Topology:
Video Solution:
หมายเหตุ:
สำหรับ Configuration file ต้องทำการสมัครสมาชิกของเวบ GNS3Vault ก่อนจึงจะสามารถทำการโหลดมาใช้งานได้ครับ
Conditional Debug
Frank has heard about a feature called “conditional debug” that sounds interesting to him. It seems that you can use this command to only show the output of certain protocols instead of having your screen flooded with debug information. Think you can teach a fellow network engineer this feature?
สถานะการณ์จำลอง:
แฟรงค์รู้มาว่ามีฟีเจอร์ “conditional debug” ทำให้เขาสนใจมาก โดยฟีเจอร์นี้สามารถใช้คอมมานด์เพื่อแสดงเอาท์พุทของโปรโตคอลที่ต้องการแทนที่จะแสดงผลทั้งหมดออกมาที่หน้าจอ คิดว่าคุณจะสอนฟีเจอร์นี้ให้กับวิศวกรเครือข่ายได้หรือไม่?
เป้าหมาย:
c3640-jk9o3s-mz.124-16.bin
สวัสดีสาวก UnetLab วันนี้ผมมีหัวข้อการนำเสนอเป็น “การทำ Packet capture บน UnetLab” ครับ
เนื่องจาก UnetLab เป็นเครื่องมือที่ใช้ทำการทดสอบ Lab ที่สมบูรณ์มากที่สุดในช่วงที่เขียน Blog วันนี้แต่สิ่งหนึ่งที่ขาดหายไปเมื่อเทียบกับ GNS3 และ IOU-Web คือ การใช้งาน Packet capture เพื่อทำการวิเคราะห์สิ่งที่เกิดขึ้นใน Lab ซึ่งจะทำให้เราสามารถเข้าใจการทำงานของอุปกรณ์ต่างๆได้ดีมากขึ้น หลังจากที่ได้ลองเข้าไปเล่นใน Backend ของ UnetLab มาแล้วสามถึงสามบทความ วันนี้เราจะมาเล่น Backend ของ UnetLab กันอีกรอบแต่เป็นการใช้งานขั้นสูงขึ้นอีกนิดโดยเป็นการประยุกต์ใช้งาน TCPDump เพื่อให้สามารถใช้งาน Packet capture ได้
ขั้นตอนในการทำ Packet capture บน UnetLab แบบคร่าวๆจะมีขั้นตอนดังนี้
ดังนั้นก่อนที่จะเริ่มทำให้โหลดโปรมต่างๆมาเตรียมไว้ให้พร้อมโดยสามารถ Download ได้จาก Link ด้านล่างนี้
หลังจากทราบข้อมูลเบื้องต้นกันแล้วให้เราทำการเริ่มต้นที่ UnetLab ดังนี้
เท่านี้ก็จบบทความในวันนี้แล้ว พบกันใหม่ตอนต่อไปครับ ^^
ต่อเนื่องจากบทความที่แล้วที่มีการติดตั้ง Windows บน UnetLab กันไปแล้ววันนี้เราจะมาเริ่มแหกคอกกันด้วยการติดตั้งอุปกรณ์ที่ UnetLab ไม่มีอยู่ใน Support list กันนั่นคือ Ubuntu server! สำหรับการติดตั้ง Ubuntu รอบนี้จะเป็นการ Import VirtualBox VM เข้ามาใช้งานแทนการติดตั้ง Clean install แบบ Windows ในบทความตอนที่แล้วเพื่อให้ได้แนวคิดในการประยุกต์ใช้งานนั่นเอง ดังนั้นก่อนที่เราจะเริ่มขั้นตอนต่างๆในบทความนี้ได้เราจะต้องมี Ubuntu VM อยู่ก่อนหน้านี้แล้วโดยอาจจะสร้างจาก VMware หรือ VirtualBox ก็ได้ แต่ในตัวอย่างจะใช้ VirtualBox ตามรูปนี้
สำหรับการติดตั้ง Ubuntu server จะใช้ประโยชน์จากส่วนของ Device prefix ของ Windows ในการหลอก UnetLab ว่าสิ่งที่เรากำลังใช้งานอยู่นั้นคือ Windows ไม่ใช่ Ubuntu ดังนั้นการทำแบบนี้จะสามารถหลอกให้ UnetLab ทำการเปิดอุปกรณ์ของเราขึ้นมาใช้งานได้ถึงแม้ว่าอุปกรณ์นั้นจะยังไม่อยู่ใน Support list นั่นเอง สำหรับตัวอย่าง Prefix ของอุปกรณ์ต่างๆมีดังนี้
โดยที่ xxx เป็นการระบุรายละเอียดเพิ่มเติมของ Prefix นั้นๆ เช่น Version software หรือ Windows version ก็ได้ ดังนั้นการที่เราจะใช้งาน Ubuntu เราก็จะต้องเอามาสวมรอยใน Windows โดยการสร้าง Folder prefix เป็น win-ubuntu15.04
มาเริ่มลงมือกันโดยมีขั้นตอนดังนี้
เมื่อทำตามขั้นตอทั้งหมดที่เขียนไว้แล้วเราก็พร้อมที่จะใช้งาน Ubuntu กันแล้ว ให้ลองสร้าง Lab ขึ้นมาใหม่หนึ่ง Lab จากนั้นทำการเลือก Node เป็น Windows เราจะเห็นชื่อที่เราตั้งไว้ตามรูปด้านล่างนี้
ให้นำ Node ไปวางและลอง Start อุปกรณ์ขึ้นมาดูว่าสามารถใช้งานได้หรือไม่ ถ้าไม่มีอะไรผิดพลาดจะได้ผลตรมนี้ครับ
สำเร็จแล้วกับการแหกคอกในครั้งนี้ครับพ้ม ^^
You are working as a network engineer at a Turtle Aquarium based in Florida. Your colleague wants to check the running-configuration of one of the routers in the network but because of the security policy he’s not allowed to use HTTP, TFTP, TELNET or SSH. You can’t break company regulations but maybe you can bend it a little?
คุณทำงานเป็นวิศวกรเครือข่ายที่ Turtle Aquarium ในฟลอริดา เพื่อร่วมงานของคุณต้องการตรวจสอบ running-configuration บนเราท์เตอร์แต่ข้อบังกำหด้านความปลอดภัยระบุว่าเขาไม่สามารถใช้งาน HTTP, FTP, TELNET หรือ SSH ได้ คุณไม่ต้องการละเมิดข้อบังคับของบริษัทบางที่คุณก็มีวิธีทำแบบอ้อมๆใช่มั้ย?
All IP addresses have been preconfigured for you.
Configure router Shell so router Turtle can view its running configuration.
c3640-jk9s-mz.124-16.bin
Login Menu
Scenario:
You are a network teacher specialized in routing and switching. To help your students who are not so familiar with the command-line you want to use one of your routers so it displays a menu everytime they login.
สถานะการณ์จำลอง:
คุณเป็นอาจารย์พิเศษวิชาเราท์ติ้งและสวิทชิ่ง เพื่อช่วยให้นักเรียนที่ไม่คุ้นเคยกับการใช้งานคอมมานไลน์ คุณจะต้องใช้เราท์เตอร์ตัวหนึ่งในการแสดงเมนูในทุกครั้งที่มีการล็อกอิน
Goal:
เป้าหมาย:
IOS
Topology:
Video Solution:
หลังจากตอนที่แล้วเป็นการแนะนำการติดตั้ง Windows บน UnetLab กันไปแล้วแต่ยังไม่ใช่วิธีการที่ถูกต้องเนื่องจากเป็นการสร้างที่มีวิธีการใช้งานที่จำกัดคือสามารถใช้ได้บน Lab ที่ต้องการเท่านั้น ไม่สามารถนำไปใช้งานใน Lab อื่นๆได้อีก วันนี้จะมาเฉลยกันว่าทำไมถึงเป็นแบบนั้นกัน
ก่อนอื่นต้องทำความเข้าใจการทำงานของ UnetLab กันก่อนนิดหน่อยดังนี้ จากรูปด้านล่างนี้จะเห็นว่า Unetlab ใช้งาน QEMU เป็น Hypervisor สำหรับ Virtual Appliance หลายๆตัวรวมทั้ง Windows ด้วย
แต่สิ่งที่มีการเปลี่ยนแปลงและทำให้การติดตั้ง Windows ในบทความที่แล้วใช้งานไม่ได้ใน UnetLab version ปัจจุบัน (0.9.0-54) คือ “Backend” ได้ได้ถูกรื้อใหม่ตั้งแต่ Version 0.9.0-18 (เท่าที่ลองติดตามดูอาจจะผิดพลาดได้นะครับขออภัย)
โดยสิ่งที่เปลี่ยนไปคือการใช้งาน Feature Linked clone ของ QEMU แทนการ Copy image โดยตรงไปที่ Lab ที่เรากำลังใช้งานนั่นเอง!!!
ในกรณีนี้ขอยกตัวอย่างให้เห็นชัดเจนขึ้นโดยการใช้ภาพดังนี้
จากรูปด้านบนจะเป็นการทำงานของ UnetLab version เก่าๆ (คงไม่มีใครใช้งานแล้ว) เมื่อเราทำการสร้าง Lab ใหม่ UnetLab จะทำการ “Copy image” ของ Virtual Appliance “ทั้งก้อน” ไปไว้ที่ Lab ที่สร้างขึ้นมา ในกรณีนี้จะขอเรียก Image ก้อนนี้ว่า “Base Image” ตามรูป สมมติให้ Base Image มีขนาด 2GB สำหรับ PaloAlto และเราต้องการใช้ PaloAlto ใน Lab ที่เราสร้างขึ้น UnetLab จะทำการ Copy Base image ไปที่ Lab จำนวน 2 ครั้งครั้งละ 2GB เพื่อสร้างอุปกรณ์ใน Lab ที่เราสร้างขึ้น ดังนั้นจะเห็นได้ว่าในกรณีที่เรามีการใช้งาน PaloAlto จะต้องรอนานมากกว่าจะเข้าไปใช้งานจาก VNC Console นั่นเอง และในส่วนของการตั้งค่าต่างๆจะถูกเพิ่มเข้าไปในส่วนของ “Configuration Data” ของอุปกรณ์แต่ละตัว ดังนั้นสมมติว่าอุปกรณ์ทั้ง 2 ตัวใช้ Configuration data ตัวละ 200MB ดังนั้นใน Lab นี้จะต้องใช้พื้นที่ในการเก็บ Lab ที่สร้างขึ้นทั้งหมด 4.4GB และต้องใช้เวลาในการ Start Lab ครั้งแรกเป็นเวลานานพอสมควร และวิธีการนี้ไม่สามารถใช้งานได้แล้วที่ UnetLab version ปัจจุบัน
ต่อมาเข้าเรื่องหลักของเราดีกว่าก่อนอื่นลองมาดูรูปประกอบคำอธิบายกันก่อน
การทำงานของ Backend ใน UnetLab version ล่าสุดจะเป็นการใช้งานที่เรียกว่า Linked clone จากรูปด้านบนเราจะต้องมี Base Image ที่สมบูรณ์ก่อน และเมื่อเราทำการสร้าง Lab ในขั้นตอนนี้ UnetLab จะทำการสร้าง Linked clone image ไปที่ Lab ของเรา แต่จากบทความตอนที่แล้วเราทำการสร้าง Base Image ขึ้นมาด้วยคำสั่ง “/opt/qemu-2.0.2/bin/qemu-img create -f qcow2 hda.qcow2 15G” จะเป็นการสร้าง Disk เปล่าขนาด 15G ขึ้นมา และเมื่อทำการสร้าง Lab ที่ Frontend จะเป็นการสร้าง Linked clone ของ Disk เปล่าขึ้นใน Labและการลง Windows จะเป็นการเพิ่มข้อมูลในส่วนของ “Configuration Data” เพิ่มขึ้นมานั่นเอง และนี่คือเหตุผลที่ว่า Windows Image นี้จะไม่สามารถนำไปใช้ต่อที่ Lab อื่นได้นั่นเอง
หลังจากทำความเข้าใจถึงวิธีการทำงานของ backend แล้วก็ถึงเวลาที่จะมาเริ่มสร้าง Windows Base Image เพื่อนำไปใช้งานกันได้แล้วครับ
เริ่มต้นที่ Backend กันเหมือนเดิม
ขั้นตอนการสร้างจะคล้ายๆกับของเดิมดังนี้
ต่อกันที่ Frontend
การใช้งานที่ Frontend ไม่สามารถใช้งานได้ตามขั้นตอนปกติคือ
สุดท้ายคือการพิสูจน์สมมติฐานของเราว่า Linked clone ที่ Unetlab สร้างขึ้นจะมีขนาดเล็กลงกว่าเดิมได้ให้ไม่ให้เข้าไปเช็คไฟล์ Lab ใน “/opt/unetlab/tmp/0/UUID/lab” โดย UUID จะเป็นไฟล์ที่ UnetLab สร้างขึ้นอัตโนมัติ จากการใช้งานตามตัวอย่างนี้จะพบว่ามีการสร้าง Linked clone ของ Windows 7 ขึ้นโดยมีขนาด 101MB ตามรูปด้านล่างนี้ครับ
ตอนนี้จะเป็นการประยุกต์การใช้งาน Backend แบบนึง ในตอนต่อไปเราจะมาลองพลิกแพลงการใช้งาน Backend ขึ้นอีกหนึ่งระดับโดยจะทำการติดตั้งอุปกรณ์ที่ยังไม่มีอยู่ใน UnetLab support list กัน โดยจะใช้ตัวอย่างเป็นการติดตั้ง Ubuntu server กัน คอยติดตามดูนะครับ
จบแล้วคร้าบบบบบบบ ^/\^
You want to make sure your router automatically saves its configuration every day. You are familiar with Cron for Linux and you just heard from a colleague that there is a similar feature for Cisco routers. Kron time!
คุณต้องการที่จะมั่นใจว่าเราท์เตอร์จะทำการเซฟการตั้งค่าอัตโนมัติในทุกๆวัน คุณมีความคุ้นเคยกับ Cron บน Linux และคุณได้ยินจากเพื่อนร่วมงานว่ามีฟีเจอร์ที่เหมือนกันนี้บน Cisco เราท์เตอร์ ตอนนี้ได้เวลาของ Kron แล้ว!
c3640-jk9s-mz.124-16.bin
การใช้งาน Kron ในชีวิตจริงอุปกรณ์ควรจะมีการตั้งค่า NTP ไว้บนอุปกรณ์ด้วย เนื่องจาก Kron จะมีการใช้เวลาเป็นตัวอ้างอิงในการทำงานตามคำสั่งที่กำหนดไว้ ดังนั้นอย่าลืมตั้งค่าเวลาให้อุปกรณ์ทุกครั้งอย่างน้อยให้เป็น Local time ที่ใกล้เคียงกับเวลาจริง หรือทำการเปิดใช้งาน NTP บนอุปกรณ์ สำหรับการตั้งค่า NTP บนอุปกรณ์ Cisco หาอ่านเพิ่มได้จาก Link ในส่วนของ Reference ด้านล่างสุดครับ
show commad
# show kron schedule
# show clock
configure command
(config)#clock set hh:mm:ss [Day of the month] month year
(config)# kron occurrence [WORD] at [hh:mm] [DAY] [oneshot, recurring]
(config-kron-occurrence)# policy-list [WORD]
(config)# kron policy-list [WORD]
(config-kron-policy)# cli [LINE]
debug command
# debug kron all
Kron:
NTP:
Ever since you switched your career from Linux engineer to networking you missed your good old scripting tools. You just heard about network engineer about EEM scripting for Cisco routers and you can’t wait to try it out!
สถานการณ์จำลอง:
ตั้งแต่คุณเปลี่ยนหน้าที่จากวิศวกรด้าน Linux เป็นด้านระบบเครือข่าย คุณยังคงคิดถึง Script เครื่องมือที่ดีในสมัยก่อน เมื่อคุณได้ทราบว่าวิศวกรเครือข่ายเองก็มี EEM Script สำหรับเราท์เตอร์ Cisco เหมือนกัน ดังนั้นคุณก็ไม่รอช้าที่จะลองมันทันที!
เป้าหมาย:
c3640-jk9s-mz.124-16.bin
ใน Lab นี้ตามโจทย์จะให้ทำการ Shutdown interface F1/0 โดยการใช้ EEM Script ในกรณีที่ Interface F0/0 โดน Shutdown ลงไป ลำดับแรกก่อนที่จะสามารถทำ Lab นี้ได้เราจะต้องมีความเข้าใจเกี่ยวกับลำดับการทำงานของ EEM Script ใน Lab นี้ก่อนครับ การทำงานของ EEM Script จะแบ่งเป็น 3 ส่วนใน Lab นี้ได้แก่
https://supportforums.cisco.com/document/117596/cisco-eem-basic-overview-and-sample-configurations
ความเห็นล่าสุด