ในบทความนี้ ผมจะแสดงวิธีการตั้งค่า OpenDaylight เพื่อทำงานร่วมกับอุปกรณ์เครือข่ายและแสดงวิธีการใช้งาน บุรุษไปรษณีย์ และเรียบง่าย เรสท์คอนฟ คำขออุปกรณ์นี้สามารถควบคุมได้ เราจะไม่ทำงานกับฮาร์ดแวร์ แต่เราจะปรับใช้ห้องปฏิบัติการเสมือนขนาดเล็กแทนโดยใช้เราเตอร์ตัวเดียว วีอาร์เน็ตแล็บ มากกว่า Ubuntu 20.04 LTS.
ฉันจะแสดงการตั้งค่าโดยละเอียดก่อนโดยใช้ตัวอย่างของเราเตอร์ จูนิเปอร์ vMX 20.1R1.11แล้วเราเปรียบเทียบกับการตั้งค่า ซิสโก้ xRV9000 7.0.2.
Содержание
- ความรู้ที่จำเป็น
- Часть 1: สนทนาสั้นๆ OpenDaylight (ต่อไปนี้ โอดีแอล), บุรุษไปรษณีย์ и วีอาร์เน็ตแล็บ และทำไมเราต้องการพวกเขา
- Часть 2: คำอธิบายของห้องปฏิบัติการเสมือน
- Часть 3: ปรับแต่ง OpenDaylight
- Часть 4: ปรับแต่ง วีอาร์เน็ตแล็บ
- Часть 5: โดยใช้ บุรุษไปรษณีย์ เชื่อมต่อเราเตอร์เสมือน (จูนิเปอร์ วีเอ็มเอ็กซ์) ถึง โอดีแอล
- Часть 6: รับและเปลี่ยนการกำหนดค่าเราเตอร์โดยใช้ บุรุษไปรษณีย์ и โอดีแอล
- Часть 7: เพิ่ม Cisco xRV9000
- ข้อสรุป
- PS
- บรรณานุกรม
ความรู้ที่จำเป็น
เพื่อไม่ให้บทความกลายเป็นแผ่นงาน ฉันละเว้นรายละเอียดทางเทคนิคบางอย่าง (พร้อมลิงก์ไปยังวรรณกรรมที่คุณสามารถอ่านได้)
ในเรื่องนี้ ฉันขอเสนอหัวข้อที่คุณควรรู้ก่อนอ่าน (แต่แทบไม่จำเป็น):
ตอนที่ 1: ทฤษฎีบางอย่าง
- แพลตฟอร์ม SDN แบบเปิดสำหรับการจัดการและทำให้เครือข่ายทุกประเภทเป็นแบบอัตโนมัติ สนับสนุนโดย มูลนิธิลินุกซ์
- ชวาอยู่ข้างใน
- ขึ้นอยู่กับระดับนามธรรมบริการที่ขับเคลื่อนด้วยแบบจำลอง (MD-SAL)
- ใช้โมเดล YANG เพื่อสร้าง RESTCONF API สำหรับอุปกรณ์เครือข่ายโดยอัตโนมัติ
โมดูลหลักสำหรับการจัดการเครือข่าย เราจะสื่อสารกับอุปกรณ์ที่เชื่อมต่อผ่านมัน จัดการผ่าน API ของตัวเอง
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ OpenDaylight
- เครื่องมือทดสอบ API
- ส่วนต่อประสานที่เรียบง่ายและใช้งานง่าย
ในกรณีของเรา เราสนใจที่จะใช้วิธีนี้ในการส่งคำขอ REST ไปยัง OpenDaylight API แน่นอน คุณสามารถส่งคำขอด้วยตนเองได้ แต่ใน Postman ทุกอย่างดูชัดเจนและเหมาะสมกับจุดประสงค์ของเราอย่างสมบูรณ์แบบ
สำหรับผู้ที่ต้องการขุด: มีการเขียนเอกสารการฝึกอบรมจำนวนมาก (
- เครื่องมือสำหรับการปรับใช้เราเตอร์เสมือนใน Docker
- รองรับ: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR เป็นต้น
- โอเพนซอร์ส
เครื่องดนตรีที่น่าสนใจแต่ไม่ค่อยมีใครรู้จัก ในกรณีของเรา เราจะใช้เพื่อรัน Juniper vMX และ Cisco xRV9000 บน Ubuntu 20.04 LTS ปกติ
คุณสามารถอ่านเพิ่มเติมได้ที่
ตอนที่ 2: ห้องทดลอง
ในบทช่วยสอนนี้ เราจะตั้งค่าระบบต่อไปนี้:
Какэтоработает
- จูนิเปอร์ วีเอ็มเอ็กซ์ เพิ่มขึ้นใน นักเทียบท่า ภาชนะ (โดยวิธี วีอาร์เน็ตแล็บ) และทำหน้าที่เป็นเราเตอร์เสมือนทั่วไป
- โอดีแอล เชื่อมต่อกับเราเตอร์และให้คุณควบคุมได้
- บุรุษไปรษณีย์ เปิดตัวในเครื่องแยกต่างหากและผ่านมันเราส่งคำสั่ง โอดีแอล: เพื่อเชื่อมต่อ / ลบเราเตอร์ เปลี่ยนการกำหนดค่า ฯลฯ
คำอธิบายเกี่ยวกับอุปกรณ์ของระบบ
จูนิเปอร์ วีเอ็มเอ็กซ์ и โอดีแอล ต้องการทรัพยากรค่อนข้างมากสำหรับการทำงานที่เสถียร มีแค่หนึ่งเดียวเท่านั้น วีเอ็มเอ็กซ์ ขอ RAM 6 Gb และ 4 คอร์ ดังนั้นจึงมีการตัดสินใจย้าย "วืด" ทั้งหมดไปยังเครื่องแยกต่างหาก (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). แน่นอนว่าเราเตอร์ไม่ได้ "บิน" แต่ประสิทธิภาพก็เพียงพอสำหรับการทดลองขนาดเล็ก
ส่วนที่ 3: ตั้งค่า OpenDaylight
เวอร์ชันปัจจุบันของ ODL ณ เวลาที่เขียนนี้คือ Magnesium SR1
1) ติดตั้ง Java เปิด JDK 11 (สำหรับรายละเอียดการติดตั้งเพิ่มเติม
ubuntu:~$ sudo apt install default-jdk
2) ค้นหาและดาวน์โหลดบิลด์ล่าสุด โอดีแอล
3) เปิดเครื่องรูดไฟล์เก็บถาวรที่ดาวน์โหลดมา
4) ไปที่ไดเรกทอรีผลลัพธ์
5) เปิดตัว ./bin/karaf
ในขั้นตอนนี้ โอดีแอล ควรเริ่มต้นและเราจะพบว่าตัวเองอยู่ในคอนโซล (พอร์ต 8181 ใช้สำหรับการเข้าถึงจากภายนอกซึ่งเราจะใช้ในภายหลัง)
ถัดไป ติดตั้ง คุณสมบัติ ODLออกแบบมาเพื่อทำงานร่วมกับโปรโตคอล เน็ตคอนเอฟ и เรสท์คอนฟ. เมื่อต้องการทำเช่นนี้ในคอนโซล โอดีแอล เราดำเนินการ:
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-all
นี่คือการตั้งค่าที่ง่ายที่สุด โอดีแอล สมบูรณ์. (ดูรายละเอียดเพิ่มเติมได้ที่
ตอนที่ 4: การตั้งค่า Vrnetlab
การเตรียมระบบ
ก่อนการติดตั้ง วีอาร์เน็ตแล็บ คุณต้องติดตั้งแพ็คเกจที่จำเป็นสำหรับการดำเนินการ เช่น
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt -y install python3-bs4 sshpass make
ubuntu:~$ sudo apt -y install git
ubuntu:~$ sudo apt install -y
apt-transport-https ca-certificates
curl gnupg-agent software-properties-common
ubuntu:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ubuntu:~$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.io
การติดตั้ง Vrnetlab
เพื่อทำการติดตั้ง วีอาร์เน็ตแล็บ โคลนที่เก็บที่เกี่ยวข้องจาก GitHub:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
ไปที่ไดเรกทอรี วีอาร์เน็ตแล็บ:
ubuntu:~$ cd ~/vrnetlab
คุณสามารถดูสคริปต์ทั้งหมดที่จำเป็นในการเรียกใช้ได้ที่นี่ โปรดทราบว่ามีการสร้างไดเร็กทอรีที่เกี่ยวข้องสำหรับเราเตอร์แต่ละประเภท:
ubuntu:~/vrnetlab$ ls
CODE_OF_CONDUCT.md config-engine-lite openwrt vr-bgp
CONTRIBUTING.md csr routeros vr-xcon
LICENSE git-lfs-repo.sh sros vrnetlab.sh
Makefile makefile-install.include topology-machine vrp
README.md makefile-sanity.include veos vsr1000
ci-builder-image makefile.include vmx xrv
common nxos vqfx xrv9k
สร้างอิมเมจของเราเตอร์
เราเตอร์แต่ละตัวที่รองรับ วีอาร์เน็ตแล็บมีขั้นตอนการตั้งค่าเฉพาะของตัวเอง เมื่อไร จูนิเปอร์ วีเอ็มเอ็กซ์ เราเพียงแค่ต้องอัปโหลดไฟล์เก็บถาวร .tgz ด้วยเราเตอร์ (คุณสามารถดาวน์โหลดได้จาก make
:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
การสร้างภาพ วีเอ็มเอ็กซ์ จะใช้เวลาประมาณ 10-20 นาที ได้เวลาไปดื่มกาแฟแล้ว!
ทำไมนานจังคุณถาม?
โอน
"นี่เป็นเพราะเมื่อเริ่ม VCP (Control Plane) เป็นครั้งแรก มันจะอ่านไฟล์ปรับแต่งที่กำหนดว่าจะรันเป็น VRR VCP ใน vMX หรือไม่ ก่อนหน้านี้ การเปิดใช้นี้เสร็จสิ้นระหว่างการเริ่มต้น Docker แต่นั่นหมายความว่า VCP ถูกรีสตาร์ททุกครั้งก่อนที่เราเตอร์เสมือนจะพร้อมใช้งาน ส่งผลให้เวลาบูตนาน (ประมาณ 5 นาที) ตอนนี้การเรียกใช้ VCP ครั้งแรกเสร็จสิ้นระหว่างการสร้างอิมเมจ Docker และเนื่องจากไม่สามารถรันบิลด์ Docker ด้วย - - ตัวเลือกพิเศษ ซึ่งหมายความว่า qemu ทำงานโดยไม่ต้องเร่งความเร็วด้วยฮาร์ดแวร์ KVM ดังนั้นการสร้างจึงใช้เวลานานมาก ในระหว่างกระบวนการนี้ จะมีเอาต์พุตบันทึกจำนวนมาก ดังนั้นอย่างน้อยคุณก็สามารถเห็นได้ว่าเกิดอะไรขึ้น ฉันคิดว่าการสร้างแบบยาวนั้น ไม่น่ากลัวเพราะเราสร้างภาพครั้งเดียวแต่เปิดตัวมากมาย"
หลังจากที่คุณเห็นภาพเราเตอร์ของเราแล้ว นักเทียบท่า:
ubuntu:~$ sudo docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 3 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
เรียกใช้คอนเทนเนอร์ vr-vmx
เราเริ่มต้นด้วยคำสั่ง:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
ต่อไป เราสามารถดูข้อมูลเกี่ยวกับคอนเทนเนอร์ที่ใช้งานอยู่:
ubuntu:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
120f882c8712 b1b2369b453c "/launch.py" 2 minutes ago Up 2 minutes (unhealthy) 22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp jun01
กำลังเชื่อมต่อกับเราเตอร์
สามารถรับที่อยู่ IP ของอินเทอร์เฟซเครือข่ายของเราเตอร์ได้ด้วยคำสั่งต่อไปนี้:
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2
ค่าเริ่มต้น, วีอาร์เน็ตแล็บ สร้างผู้ใช้บนเราเตอร์ vrnetlab/วีอาร์-เน็ตแล็บ9.
กำลังเชื่อมต่อกับ ssh
:
ubuntu:~$ ssh [email protected]
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Model: vmx
Junos: 20.1R1.11
เสร็จสิ้นการตั้งค่าเราเตอร์
ดูคำแนะนำในการติดตั้งเราเตอร์ของผู้จำหน่ายต่างๆ ได้ที่
ตอนที่ 5: บุรุษไปรษณีย์ - เชื่อมต่อเราเตอร์กับ OpenDaylight
การติดตั้งบุรุษไปรษณีย์
หากต้องการติดตั้ง เพียงดาวน์โหลดแอปพลิเคชัน
การเชื่อมต่อเราเตอร์กับ ODL
มาสร้างกันเถอะ PUT ขอ:
- สตริงข้อความค้นหา:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
- เนื้อหาคำขอ (แท็บเนื้อหา):
<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>jun01</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">172.17.0.2</host> <port xmlns="urn:opendaylight:netconf-node-topology">22</port> <username xmlns="urn:opendaylight:netconf-node-topology">vrnetlab</username> <password xmlns="urn:opendaylight:netconf-node-topology">VR-netlab9</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <schema-cache-directory xmlns="urn:opendaylight:netconf-node-topology">jun01_cache</schema-cache-directory> </node>
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin. สิ่งนี้จำเป็นสำหรับการเข้าถึง ODL:
- ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
- ยอมรับแอปพลิเคชัน/xml
- แอปพลิเคชันประเภทเนื้อหา/xml
คำขอของเราได้รับการทำ พวกเราส่ง. หากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง เราควรส่งคืนสถานะ "201 สร้างแล้ว":
คำขอนี้ใช้ทำอะไร
เราสร้างโหนดภายใน โอดีแอล ด้วยพารามิเตอร์ของเราเตอร์จริงที่เราต้องการเข้าถึง
xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"
นี่คือเนมสเปซภายใน XML (XML เนมสเปซ) สำหรับ โอดีแอล ตามที่มันสร้างโหนด
นอกจากนี้ชื่อของเราเตอร์คือ รหัสโหนด, ที่อยู่เราเตอร์ - เจ้าภาพ และอื่น ๆ
บรรทัดที่น่าสนใจที่สุดคือบรรทัดสุดท้าย Schema-แคชไดเร็กทอรี สร้างไดเร็กทอรีที่ดาวน์โหลดไฟล์ทั้งหมด ยางสคีมา เราเตอร์ที่เชื่อมต่อ คุณสามารถพบพวกเขาใน $ODL_ROOT/cache/jun01_cache
.
ตรวจสอบการเชื่อมต่อของเราเตอร์
มาสร้างกันเถอะ GET ขอ:
- สตริงข้อความค้นหา:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
พวกเราส่ง. ควรได้รับสถานะ "200 OK" และรายการอุปกรณ์ที่รองรับทั้งหมด ยางสคีมา:
ความเห็น: หากต้องการดูอย่างหลัง ในกรณีของฉันจำเป็นต้องรอประมาณ 10 นาทีหลังจากการประหารชีวิต PUTจนหมด แผน YANG ยกเลิกการโหลด โอดีแอล. ถึงตรงนี้ เมื่อปฏิบัติอย่างนี้ GET แบบสอบถามจะแสดงสิ่งต่อไปนี้:
ลบเราเตอร์
มาสร้างกันเถอะ ลบ ขอ:
- สตริงข้อความค้นหา:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
ตอนที่ 6: เปลี่ยนการกำหนดค่าเราเตอร์
รับการกำหนดค่า
มาสร้างกันเถอะ GET ขอ:
- สตริงข้อความค้นหา:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
พวกเราส่ง. ควรได้รับสถานะ "200 OK" และการกำหนดค่าเราเตอร์:
สร้างการกำหนดค่า
ตามตัวอย่าง ลองสร้างการกำหนดค่าต่อไปนี้และแก้ไข:
protocols {
bgp {
disable;
shutdown;
}
}
มาสร้างกันเถอะ POST ขอ:
- สตริงข้อความค้นหา:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
- เนื้อหาคำขอ (แท็บเนื้อหา):
<bgp xmlns="http://yang.juniper.net/junos/conf/protocols"> <disable/> <shutdown> </shutdown> </bgp>
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin. - ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
- ยอมรับแอปพลิเคชัน/xml
- แอปพลิเคชันประเภทเนื้อหา/xml
หลังจากส่งแล้ว พวกเขาควรได้รับสถานะ "204 ไม่มีเนื้อหา"
หากต้องการตรวจสอบว่าการกำหนดค่ามีการเปลี่ยนแปลง คุณสามารถใช้แบบสอบถามก่อนหน้านี้ แต่ตัวอย่างเช่น เราจะสร้างอีกรายการหนึ่งที่จะแสดงข้อมูลเกี่ยวกับโปรโตคอลที่กำหนดค่าบนเราเตอร์เท่านั้น
มาสร้างกันเถอะ GET ขอ:
- สตริงข้อความค้นหา:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
หลังจากดำเนินการตามคำขอ เราจะเห็นสิ่งต่อไปนี้:
เปลี่ยนการกำหนดค่า
มาเปลี่ยนข้อมูลเกี่ยวกับโปรโตคอล BGP กันเถอะ หลังจากการกระทำของเราจะเป็นดังนี้:
protocols {
bgp {
disable;
}
}
มาสร้างกันเถอะ PUT ขอ:
- สตริงข้อความค้นหา:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
- เนื้อหาคำขอ (แท็บเนื้อหา):
<protocols xmlns="http://yang.juniper.net/junos/conf/protocols"> <bgp> <disable/> </bgp> </protocols>
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin. - ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
- ยอมรับแอปพลิเคชัน/xml
- แอปพลิเคชันประเภทเนื้อหา/xml
ใช้ก่อนหน้านี้ GET ขอ เราเห็นการเปลี่ยนแปลง:
ลบการกำหนดค่า
มาสร้างกันเถอะ ลบ ขอ:
- สตริงข้อความค้นหา:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
เมื่อถูกเรียก GET ขอข้อมูลเกี่ยวกับโปรโตคอล เราจะเห็นสิ่งต่อไปนี้:
เสริม:
ในการเปลี่ยนการกำหนดค่า ไม่จำเป็นต้องส่งเนื้อหาคำขอในรูปแบบ XML. นอกจากนี้ยังสามารถทำได้ในรูปแบบ JSON.
ในการดำเนินการนี้ ตัวอย่างเช่น ในคิวรี PUT หากต้องการเปลี่ยนการกำหนดค่า ให้แทนที่เนื้อหาคำขอด้วย:
{
"junos-conf-protocols:protocols": {
"bgp": {
"description" : "Changed in postman"
}
}
}
อย่าลืมเปลี่ยนส่วนหัวในแท็บส่วนหัวเป็น:
- ยอมรับใบสมัคร/json
- แอปพลิเคชันประเภทเนื้อหา/json
เมื่อส่งแล้วจะได้ผลลัพธ์ดังนี้ ( ดูคำตอบโดยใช้ GET ขอ):
ตอนที่ 7: การเพิ่ม Cisco xRV9000
เราทุกคนเกี่ยวกับ Juniper ใช่ Juniper หรือไม่ พูดคุยเกี่ยวกับซิสโก้!
ฉันพบ xRV9000 เวอร์ชัน 7.0.2 (สัตว์ร้ายที่ต้องการ RAM 8Gb และ 4 คอร์ ไม่มีให้ใช้ฟรี ดังนั้นโปรดติดต่อ
เรียกใช้คอนเทนเนอร์
กระบวนการสร้างคอนเทนเนอร์ Docker นั้นไม่แตกต่างจากจูนิเปอร์ ในทำนองเดียวกัน เราวางไฟล์ .qcow2 กับเราเตอร์ลงในไดเร็กทอรีที่ตรงกับชื่อ (ในกรณีนี้คือ xrv9k) และดำเนินการคำสั่ง make docker-image
.
หลังจากนั้นไม่กี่นาที เราจะเห็นว่าภาพถูกสร้างขึ้น:
ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-xrv9k 7.0.2 54debc7973fc 4 hours ago 1.7GB
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 4 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
เราเริ่มคอนเทนเนอร์:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
หลังจากนั้นไม่นาน เราพบว่าคอนเทนเนอร์เริ่มทำงานแล้ว:
ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "/launch.py" 4 hours ago Up 4 hours (healthy) 22/tcp, 830/tcp, 5000-5003/tcp, 10000-10099/tcp, 161/udp xrv01
เชื่อมต่อผ่าน ssh:
ubuntu@ubuntu:~$ ssh [email protected]
Password:
RP/0/RP0/CPU0:ios#show version
Mon Jul 6 12:19:28.036 UTC
Cisco IOS XR Software, Version 7.0.2
Copyright (c) 2013-2020 by Cisco Systems, Inc.
Build Information:
Built By : ahoang
Built On : Fri Mar 13 22:27:54 PDT 2020
Built Host : iox-ucs-029
Workspace : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Version : 7.0.2
Location : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () processor
System uptime is 3 hours 22 minutes
กำลังเชื่อมต่อเราเตอร์กับ OpenDaylight
การเพิ่มเกิดขึ้นในลักษณะที่คล้ายกันกับ vMX เราเพียงแค่ต้องเปลี่ยนชื่อ
PUT ขอ:
โทรมาเมื่อสักครู่ GET แบบสอบถามเพื่อตรวจสอบว่าทุกอย่างเชื่อมต่อกัน:
เปลี่ยนการกำหนดค่า
มาตั้งค่าต่อไปนี้:
!
router ospf LAB
mpls ldp auto-config
!
มาสร้างกันเถอะ POST ขอ:
- สตริงข้อความค้นหา:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
- เนื้อหาคำขอ (แท็บเนื้อหา):
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } }
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin. - ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
- ยอมรับใบสมัคร/json
- แอปพลิเคชันประเภทเนื้อหา/json
หลังจากดำเนินการแล้ว พวกเขาควรได้รับสถานะ "204 ไม่มีเนื้อหา"
ตรวจสอบสิ่งที่เราได้รับ
ในการทำเช่นนี้เราจะสร้าง GET ขอ:
- สตริงข้อความค้นหา:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
หลังจากดำเนินการ คุณควรเห็นสิ่งต่อไปนี้:
หากต้องการลบการกำหนดค่าให้ใช้ ลบ:
- สตริงข้อความค้นหา:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
- บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์
Basic Auth
และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
ข้อสรุป
โดยรวมแล้ว อย่างที่คุณสังเกตเห็น ขั้นตอนการเชื่อมต่อ Cisco และ Juniper กับ OpenDaylight นั้นไม่แตกต่างกัน ซึ่งจะเป็นการเปิดขอบเขตความคิดสร้างสรรค์ที่ค่อนข้างกว้าง เริ่มตั้งแต่การจัดการการกำหนดค่าส่วนประกอบเครือข่ายทั้งหมดและสิ้นสุดด้วยการสร้างนโยบายเครือข่ายของคุณเอง
ในบทช่วยสอนนี้ ฉันได้ให้ตัวอย่างที่ง่ายที่สุดของวิธีการโต้ตอบกับอุปกรณ์เครือข่ายโดยใช้ OpenDaylight ไม่ต้องสงสัยเลยว่า แบบสอบถามจากตัวอย่างข้างต้นสามารถซับซ้อนมากขึ้นและตั้งค่าบริการทั้งหมดได้ด้วยการคลิกเมาส์เพียงครั้งเดียว - ทุกอย่างถูกจำกัดด้วยจินตนาการของคุณเท่านั้น *
จะยังคง ...
PS
หากคุณรู้ทั้งหมดนี้แล้วหรือในทางกลับกันได้ผ่านและจมดิ่งลงไปในจิตวิญญาณของ ODL ฉันขอแนะนำให้มองหาการพัฒนาแอปพลิเคชันบนตัวควบคุม ODL คุณสามารถเริ่มต้น
การทดลองที่ประสบความสำเร็จ!
อ้างอิง
Vrnetlab: จำลองเครือข่ายโดยใช้ KVM และ Docker / ไบรอัน ลิงค์เลตเตอร์- ตำรา OpenDaylight / Mathieu Lemay, Alexis de Talhouet, Et al
- ความสามารถในการโปรแกรมเครือข่ายด้วย YANG / Benoît Claise, Loe Clarke, Jan Lindblad
- การเรียนรู้ XML รุ่นที่สอง / Erik T. Ray
- DevOps ที่มีประสิทธิภาพ / เจนนิเฟอร์ เดวิส, ริน แดเนียลส์
ที่มา: will.com