ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ในบทความนี้ ผมจะแสดงวิธีการตั้งค่า 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: ทฤษฎีบางอย่าง

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

  • แพลตฟอร์ม SDN แบบเปิดสำหรับการจัดการและทำให้เครือข่ายทุกประเภทเป็นแบบอัตโนมัติ สนับสนุนโดย มูลนิธิลินุกซ์
  • ชวาอยู่ข้างใน
  • ขึ้นอยู่กับระดับนามธรรมบริการที่ขับเคลื่อนด้วยแบบจำลอง (MD-SAL)
  • ใช้โมเดล YANG เพื่อสร้าง RESTCONF API สำหรับอุปกรณ์เครือข่ายโดยอัตโนมัติ

โมดูลหลักสำหรับการจัดการเครือข่าย เราจะสื่อสารกับอุปกรณ์ที่เชื่อมต่อผ่านมัน จัดการผ่าน API ของตัวเอง

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ OpenDaylight ที่นี่.

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

  • เครื่องมือทดสอบ API
  • ส่วนต่อประสานที่เรียบง่ายและใช้งานง่าย

ในกรณีของเรา เราสนใจที่จะใช้วิธีนี้ในการส่งคำขอ REST ไปยัง OpenDaylight API แน่นอน คุณสามารถส่งคำขอด้วยตนเองได้ แต่ใน Postman ทุกอย่างดูชัดเจนและเหมาะสมกับจุดประสงค์ของเราอย่างสมบูรณ์แบบ

สำหรับผู้ที่ต้องการขุด: มีการเขียนเอกสารการฝึกอบรมจำนวนมาก (เช่น).

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

  • เครื่องมือสำหรับการปรับใช้เราเตอร์เสมือนใน Docker
  • รองรับ: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR เป็นต้น
  • โอเพนซอร์ส

เครื่องดนตรีที่น่าสนใจแต่ไม่ค่อยมีใครรู้จัก ในกรณีของเรา เราจะใช้เพื่อรัน Juniper vMX และ Cisco xRV9000 บน Ubuntu 20.04 LTS ปกติ

คุณสามารถอ่านเพิ่มเติมได้ที่ หน้าโครงการ.

ตอนที่ 2: ห้องทดลอง

ในบทช่วยสอนนี้ เราจะตั้งค่าระบบต่อไปนี้:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

Какэтоработает

  • จูนิเปอร์ วีเอ็มเอ็กซ์ เพิ่มขึ้นใน นักเทียบท่า ภาชนะ (โดยวิธี วีอาร์เน็ตแล็บ) และทำหน้าที่เป็นเราเตอร์เสมือนทั่วไป
  • โอดีแอล เชื่อมต่อกับเราเตอร์และให้คุณควบคุมได้
  • บุรุษไปรษณีย์ เปิดตัวในเครื่องแยกต่างหากและผ่านมันเราส่งคำสั่ง โอดีแอล: เพื่อเชื่อมต่อ / ลบเราเตอร์ เปลี่ยนการกำหนดค่า ฯลฯ

คำอธิบายเกี่ยวกับอุปกรณ์ของระบบ

จูนิเปอร์ วีเอ็มเอ็กซ์ и โอดีแอล ต้องการทรัพยากรค่อนข้างมากสำหรับการทำงานที่เสถียร มีแค่หนึ่งเดียวเท่านั้น วีเอ็มเอ็กซ์ ขอ RAM 6 Gb และ 4 คอร์ ดังนั้นจึงมีการตัดสินใจย้าย "วืด" ทั้งหมดไปยังเครื่องแยกต่างหาก (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). แน่นอนว่าเราเตอร์ไม่ได้ "บิน" แต่ประสิทธิภาพก็เพียงพอสำหรับการทดลองขนาดเล็ก

ส่วนที่ 3: ตั้งค่า OpenDaylight

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

เวอร์ชันปัจจุบันของ 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

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

การเตรียมระบบ

ก่อนการติดตั้ง วีอาร์เน็ตแล็บ คุณต้องติดตั้งแพ็คเกจที่จำเป็นสำหรับการดำเนินการ เช่น นักเทียบท่า, คอมไพล์, sshpass:

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 ด้วยเราเตอร์ (คุณสามารถดาวน์โหลดได้จาก เว็บไซต์อย่างเป็นทางการ) ไปยังไดเร็กทอรี vmx และรันคำสั่ง 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

เสร็จสิ้นการตั้งค่าเราเตอร์

ดูคำแนะนำในการติดตั้งเราเตอร์ของผู้จำหน่ายต่างๆ ได้ที่ โครงการ GitHub ในไดเรกทอรีที่เกี่ยวข้อง

ตอนที่ 5: บุรุษไปรษณีย์ - เชื่อมต่อเราเตอร์กับ OpenDaylight

การติดตั้งบุรุษไปรษณีย์

หากต้องการติดตั้ง เพียงดาวน์โหลดแอปพลิเคชัน ด้วยเหตุนี้.

การเชื่อมต่อเราเตอร์กับ ODL

มาสร้างกันเถอะ PUT ขอ:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

  1. สตริงข้อความค้นหา:
    PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
  2. เนื้อหาคำขอ (แท็บเนื้อหา):
    <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>
  3. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin. สิ่งนี้จำเป็นสำหรับการเข้าถึง ODL:
    ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab
  4. ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
    • ยอมรับแอปพลิเคชัน/xml
    • แอปพลิเคชันประเภทเนื้อหา/xml

คำขอของเราได้รับการทำ พวกเราส่ง. หากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง เราควรส่งคืนสถานะ "201 สร้างแล้ว":

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

คำขอนี้ใช้ทำอะไร

เราสร้างโหนดภายใน โอดีแอล ด้วยพารามิเตอร์ของเราเตอร์จริงที่เราต้องการเข้าถึง

xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"

นี่คือเนมสเปซภายใน XML (XML เนมสเปซ) สำหรับ โอดีแอล ตามที่มันสร้างโหนด

นอกจากนี้ชื่อของเราเตอร์คือ รหัสโหนด, ที่อยู่เราเตอร์ - เจ้าภาพ และอื่น ๆ

บรรทัดที่น่าสนใจที่สุดคือบรรทัดสุดท้าย Schema-แคชไดเร็กทอรี สร้างไดเร็กทอรีที่ดาวน์โหลดไฟล์ทั้งหมด ยางสคีมา เราเตอร์ที่เชื่อมต่อ คุณสามารถพบพวกเขาใน $ODL_ROOT/cache/jun01_cache.

ตรวจสอบการเชื่อมต่อของเราเตอร์

มาสร้างกันเถอะ GET ขอ:

  1. สตริงข้อความค้นหา:
    GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

พวกเราส่ง. ควรได้รับสถานะ "200 OK" และรายการอุปกรณ์ที่รองรับทั้งหมด ยางสคีมา:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ความเห็น: หากต้องการดูอย่างหลัง ในกรณีของฉันจำเป็นต้องรอประมาณ 10 นาทีหลังจากการประหารชีวิต PUTจนหมด แผน YANG ยกเลิกการโหลด โอดีแอล. ถึงตรงนี้ เมื่อปฏิบัติอย่างนี้ GET แบบสอบถามจะแสดงสิ่งต่อไปนี้:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ลบเราเตอร์

มาสร้างกันเถอะ ลบ ขอ:

  1. สตริงข้อความค้นหา:
    DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

ตอนที่ 6: เปลี่ยนการกำหนดค่าเราเตอร์

รับการกำหนดค่า

มาสร้างกันเถอะ GET ขอ:

  1. สตริงข้อความค้นหา:
    GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

พวกเราส่ง. ควรได้รับสถานะ "200 OK" และการกำหนดค่าเราเตอร์:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

สร้างการกำหนดค่า

ตามตัวอย่าง ลองสร้างการกำหนดค่าต่อไปนี้และแก้ไข:

protocols {
    bgp {
        disable;
        shutdown;
    }
}

มาสร้างกันเถอะ POST ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. เนื้อหาคำขอ (แท็บเนื้อหา):
    <bgp xmlns="http://yang.juniper.net/junos/conf/protocols">
    <disable/>
    <shutdown>
    </shutdown>
    </bgp>
  3. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
  4. ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
    • ยอมรับแอปพลิเคชัน/xml
    • แอปพลิเคชันประเภทเนื้อหา/xml

หลังจากส่งแล้ว พวกเขาควรได้รับสถานะ "204 ไม่มีเนื้อหา"

หากต้องการตรวจสอบว่าการกำหนดค่ามีการเปลี่ยนแปลง คุณสามารถใช้แบบสอบถามก่อนหน้านี้ แต่ตัวอย่างเช่น เราจะสร้างอีกรายการหนึ่งที่จะแสดงข้อมูลเกี่ยวกับโปรโตคอลที่กำหนดค่าบนเราเตอร์เท่านั้น

มาสร้างกันเถอะ GET ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

หลังจากดำเนินการตามคำขอ เราจะเห็นสิ่งต่อไปนี้:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

เปลี่ยนการกำหนดค่า

มาเปลี่ยนข้อมูลเกี่ยวกับโปรโตคอล BGP กันเถอะ หลังจากการกระทำของเราจะเป็นดังนี้:

protocols {
    bgp {
        disable;
    }
}

มาสร้างกันเถอะ PUT ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. เนื้อหาคำขอ (แท็บเนื้อหา):
    <protocols xmlns="http://yang.juniper.net/junos/conf/protocols">
    <bgp>
        <disable/>
    </bgp>
    </protocols>
  3. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
  4. ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
    • ยอมรับแอปพลิเคชัน/xml
    • แอปพลิเคชันประเภทเนื้อหา/xml

ใช้ก่อนหน้านี้ GET ขอ เราเห็นการเปลี่ยนแปลง:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ลบการกำหนดค่า

มาสร้างกันเถอะ ลบ ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

เมื่อถูกเรียก GET ขอข้อมูลเกี่ยวกับโปรโตคอล เราจะเห็นสิ่งต่อไปนี้:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

เสริม:

ในการเปลี่ยนการกำหนดค่า ไม่จำเป็นต้องส่งเนื้อหาคำขอในรูปแบบ XML. นอกจากนี้ยังสามารถทำได้ในรูปแบบ JSON.

ในการดำเนินการนี้ ตัวอย่างเช่น ในคิวรี PUT หากต้องการเปลี่ยนการกำหนดค่า ให้แทนที่เนื้อหาคำขอด้วย:

{
    "junos-conf-protocols:protocols": {
        "bgp": {
            "description" : "Changed in postman" 
        }
    }
}

อย่าลืมเปลี่ยนส่วนหัวในแท็บส่วนหัวเป็น:

  • ยอมรับใบสมัคร/json
  • แอปพลิเคชันประเภทเนื้อหา/json

เมื่อส่งแล้วจะได้ผลลัพธ์ดังนี้ ( ดูคำตอบโดยใช้ GET ขอ):

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

ตอนที่ 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 ขอ:
ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

โทรมาเมื่อสักครู่ GET แบบสอบถามเพื่อตรวจสอบว่าทุกอย่างเชื่อมต่อกัน:
ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

เปลี่ยนการกำหนดค่า

มาตั้งค่าต่อไปนี้:

!
router ospf LAB
 mpls ldp auto-config
!

มาสร้างกันเถอะ POST ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. เนื้อหาคำขอ (แท็บเนื้อหา):
    {
        "processes": {
            "process": [
                {
                    "process-name": "LAB",
                    "default-vrf": {
                        "process-scope": {
                            "ldp-auto-config": [
                                null
                            ]
                        }
                    }
                }
            ]
        }
    }
  3. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.
  4. ในแท็บส่วนหัว คุณต้องเพิ่มสองส่วนหัว:
    • ยอมรับใบสมัคร/json
    • แอปพลิเคชันประเภทเนื้อหา/json

หลังจากดำเนินการแล้ว พวกเขาควรได้รับสถานะ "204 ไม่มีเนื้อหา"

ตรวจสอบสิ่งที่เราได้รับ
ในการทำเช่นนี้เราจะสร้าง GET ขอ:

  1. สตริงข้อความค้นหา:
    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
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

หลังจากดำเนินการ คุณควรเห็นสิ่งต่อไปนี้:

ระบบอัตโนมัติของบริการเครือข่ายหรือวิธีสร้างห้องปฏิบัติการเสมือนจริงโดยใช้ OpenDaylight, Postman และ Vrnetlab

หากต้องการลบการกำหนดค่าให้ใช้ ลบ:

  1. สตริงข้อความค้นหา:
    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
  2. บนแท็บการให้สิทธิ์ คุณต้องตั้งค่าพารามิเตอร์ Basic Auth และเข้าสู่ระบบ/รหัสผ่าน: admin/admin.

ข้อสรุป

โดยรวมแล้ว อย่างที่คุณสังเกตเห็น ขั้นตอนการเชื่อมต่อ Cisco และ Juniper กับ OpenDaylight นั้นไม่แตกต่างกัน ซึ่งจะเป็นการเปิดขอบเขตความคิดสร้างสรรค์ที่ค่อนข้างกว้าง เริ่มตั้งแต่การจัดการการกำหนดค่าส่วนประกอบเครือข่ายทั้งหมดและสิ้นสุดด้วยการสร้างนโยบายเครือข่ายของคุณเอง
ในบทช่วยสอนนี้ ฉันได้ให้ตัวอย่างที่ง่ายที่สุดของวิธีการโต้ตอบกับอุปกรณ์เครือข่ายโดยใช้ OpenDaylight ไม่ต้องสงสัยเลยว่า แบบสอบถามจากตัวอย่างข้างต้นสามารถซับซ้อนมากขึ้นและตั้งค่าบริการทั้งหมดได้ด้วยการคลิกเมาส์เพียงครั้งเดียว - ทุกอย่างถูกจำกัดด้วยจินตนาการของคุณเท่านั้น *

จะยังคง ...

PS

หากคุณรู้ทั้งหมดนี้แล้วหรือในทางกลับกันได้ผ่านและจมดิ่งลงไปในจิตวิญญาณของ ODL ฉันขอแนะนำให้มองหาการพัฒนาแอปพลิเคชันบนตัวควบคุม ODL คุณสามารถเริ่มต้น ด้วยเหตุนี้.

การทดลองที่ประสบความสำเร็จ!

อ้างอิง

  1. Vrnetlab: จำลองเครือข่ายโดยใช้ KVM และ Docker / ไบรอัน ลิงค์เลตเตอร์
  2. ตำรา OpenDaylight / Mathieu Lemay, Alexis de Talhouet, Et al
  3. ความสามารถในการโปรแกรมเครือข่ายด้วย YANG / Benoît Claise, Loe Clarke, Jan Lindblad
  4. การเรียนรู้ XML รุ่นที่สอง / Erik T. Ray
  5. DevOps ที่มีประสิทธิภาพ / เจนนิเฟอร์ เดวิส, ริน แดเนียลส์

ที่มา: will.com

เพิ่มความคิดเห็น