پرو ہوسٹر > بلاگ > انتظامیہ > نیٹ ورک سروسز کی آٹومیشن یا OpenDaylight، Postman اور Vrnetlab کا استعمال کرتے ہوئے ایک ورچوئل لیبارٹری بنانے کا طریقہ
نیٹ ورک سروسز کی آٹومیشن یا OpenDaylight، Postman اور Vrnetlab کا استعمال کرتے ہوئے ایک ورچوئل لیبارٹری بنانے کا طریقہ
اس مضمون میں، میں آپ کو دکھاؤں گا کہ سیٹ اپ کیسے کریں۔ اوپن ڈے لائٹ نیٹ ورک کے سازوسامان کے ساتھ کام کرنے کے لئے، اور یہ بھی دکھائیں کہ کس طرح استعمال کرنا ہے۔ ڈاکیا اور سادہ RESTCONF درخواستوں، اس سامان کو کنٹرول کیا جا سکتا ہے. ہم ہارڈ ویئر کے ساتھ کام نہیں کریں گے، لیکن اس کے بجائے ہم ایک ہی راؤٹر کے ساتھ چھوٹی ورچوئل لیبارٹریز تعینات کریں گے۔ Vrnetlab ختم Ubuntu 20.04 LTS.
میں روٹر کی مثال کا استعمال کرتے ہوئے پہلے تفصیلی ترتیبات دکھاؤں گا۔ Juniper vMX 20.1R1.11، اور پھر ہم اس کا موازنہ ترتیب سے کرتے ہیں۔ Cisco xRV9000 7.0.2.
مواد
مطلوبہ علم
1 حصہ: مختصر گفتگو اوپن ڈے لائٹ (اس کے بعد او ڈی ایل۔), ڈاکیا и Vrnetlab اور ہمیں ان کی ضرورت کیوں ہے؟
2 حصہ: ورچوئل لیبارٹری کی تفصیل
3 حصہ: اپنی مرضی کے مطابق بنائیں اوپن ڈے لائٹ
4 حصہ: اپنی مرضی کے مطابق بنائیں Vrnetlab
5 حصہ: کا استعمال کرتے ہوئے ڈاکیا ورچوئل راؤٹر کو جوڑیں (جونیپر وی ایم ایکس) کو۔ او ڈی ایل۔
6 حصہ: کا استعمال کرتے ہوئے روٹر کنفیگریشن حاصل کریں اور تبدیل کریں۔ ڈاکیا и او ڈی ایل۔
7 حصہ: Cisco xRV9000 شامل کریں۔
حاصل يہ ہوا
PS
کتابیات
مطلوبہ علم
مضمون کو شیٹ میں تبدیل نہ کرنے کے لیے، میں نے کچھ تکنیکی تفصیلات (لٹریچر کے لنکس کے ساتھ جہاں آپ ان کے بارے میں پڑھ سکتے ہیں) کو چھوڑ دیا ہے۔
اس سلسلے میں، میں آپ کو ایسے عنوانات پیش کرتا ہوں جنہیں پڑھنے سے پہلے جاننا اچھا ہوگا (لیکن تقریباً ضروری نہیں):
ہر قسم کے نیٹ ورکس کو منظم اور خودکار کرنے کے لیے ایک کھلا SDN پلیٹ فارم، جس کی حمایت کی گئی ہے۔ لینکس فائونڈیشن
جاوا اندر
ماڈل پر مبنی سروس ایبسٹریکشن لیول (MD-SAL) پر مبنی
نیٹ ورک ڈیوائسز کے لیے خودکار طور پر RESTCONF APIs بنانے کے لیے YANG ماڈلز کا استعمال کرتا ہے۔
نیٹ ورک مینجمنٹ کے لیے اہم ماڈیول۔ اس کے ذریعے ہی ہم منسلک آلات کے ساتھ بات چیت کریں گے۔ اس کے اپنے API کے ذریعے منظم۔
آپ OpenDaylight کے بارے میں مزید پڑھ سکتے ہیں۔ یہاں.
API ٹیسٹنگ ٹول
سادہ اور استعمال میں آسان انٹرفیس
ہمارے معاملے میں، ہم OpenDaylight API کو REST درخواستیں بھیجنے کے ایک ذریعہ کے طور پر اس میں دلچسپی رکھتے ہیں۔ آپ بلاشبہ دستی طور پر درخواستیں بھیج سکتے ہیں، لیکن پوسٹ مین میں سب کچھ بالکل واضح نظر آتا ہے اور ہمارے مقاصد کے مطابق ہوتا ہے۔
ان لوگوں کے لئے جو کھودنا چاہتے ہیں: اس پر بہت سارے تربیتی مواد لکھے گئے ہیں (مثال کے طور پر).
ڈوکر میں ورچوئل راؤٹرز کی تعیناتی کا ٹول
سپورٹ کرتا ہے: Cisco XRv، Juniper vMX، Arista vEOS، Nokia VSR، وغیرہ۔
کھلا ماخذ
ایک بہت ہی دلچسپ لیکن کم معلوم آلہ۔ ہمارے معاملے میں، ہم اسے جونیپر vMX اور Cisco xRV9000 کو باقاعدہ Ubuntu 20.04 LTS پر چلانے کے لیے استعمال کریں گے۔
جونیپر وی ایم ایکس میں بڑھتا ہے میں Docker کنٹینر (ذریعہ Vrnetlab) اور سب سے عام ورچوئل راؤٹر کے طور پر کام کرتا ہے۔
او ڈی ایل۔ روٹر سے منسلک ہے اور آپ کو اسے کنٹرول کرنے کی اجازت دیتا ہے۔
ڈاکیا ایک الگ مشین پر لانچ کیا اور اس کے ذریعے ہم کمانڈ بھیجتے ہیں۔ او ڈی ایل۔: روٹر کو جوڑنے / ہٹانے کے لیے، کنفیگریشن کو تبدیل کرنا، وغیرہ۔
سسٹم کے آلے پر تبصرہ
جونیپر وی ایم ایکس и او ڈی ایل۔ ان کے مستحکم آپریشن کے لیے کافی وسائل درکار ہیں۔ بس ایک vMX 6 جی بی ریم اور 4 کور مانگتا ہے۔ لہذا، تمام "ہیوی ویٹ" کو ایک الگ مشین میں منتقل کرنے کا فیصلہ کیا گیا (ہیولٹ پیکارڈ انٹرپرائز مائیکرو سرور ProLiant Gen8، Ubuntu 20.04 LTS)۔ روٹر، کورس کے، اس پر "اڑ" نہیں ہے، لیکن کارکردگی چھوٹے تجربات کے لئے کافی ہے.
حصہ 3: OpenDaylight ترتیب دیں۔
اس تحریر کے وقت ODL کا موجودہ ورژن میگنیشیم SR1 ہے۔
1) انسٹال کریں۔ جاوا اوپن جے ڈی کے 11 (مزید تفصیلی تنصیب کے لیے یہاں)
ubuntu:~$ sudo apt install default-jdk
2) تازہ ترین تعمیر تلاش کریں اور ڈاؤن لوڈ کریں۔ او ڈی ایل۔اس وجہ سے
3) ڈاؤن لوڈ کردہ آرکائیو کو ان زپ کریں۔
4) نتیجے میں آنے والی ڈائریکٹری پر جائیں۔
5) لانچ کریں۔ ./bin/karaf
اس قدم پر او ڈی ایل۔ شروع کرنا چاہئے اور ہم خود کو کنسول میں تلاش کریں گے (پورٹ 8181 باہر سے رسائی کے لئے استعمال کیا جاتا ہے، جسے ہم بعد میں استعمال کریں گے)۔
اگلا، انسٹال کریں او ڈی ایل کی خصوصیاتپروٹوکول کے ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے۔ NETCONF и RESTCONF. کنسول میں ایسا کرنے کے لیے او ڈی ایل۔ ہم عملدرآمد کرتے ہیں:
ہر ایک راؤٹر جو تعاون یافتہ ہے۔ Vrnetlab، اس کا اپنا منفرد سیٹ اپ طریقہ کار ہے۔ کب جونیپر وی ایم ایکس ہمیں صرف روٹر کے ساتھ .tgz آرکائیو اپ لوڈ کرنے کی ضرورت ہے (آپ اسے یہاں سے ڈاؤن لوڈ کر سکتے ہیں۔ سرکاری ویب سائٹ) vmx ڈائریکٹری میں جائیں اور کمانڈ چلائیں۔ make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
تصویر بنانا vMX تقریباً 10-20 منٹ لگیں گے۔ یہ کافی لینے کا وقت ہے!
"اس کی وجہ یہ ہے کہ جب پہلی بار VCP (کنٹرول پلین) شروع ہوتا ہے، تو یہ ایک کنفگ فائل پڑھتا ہے جو اس بات کا تعین کرتا ہے کہ آیا یہ vMX میں VRR VCP کے طور پر چلے گا۔ اس سے پہلے یہ لانچ Docker کے آغاز کے دوران کیا گیا تھا، لیکن اس کا مطلب یہ تھا کہ VCP ورچوئل راؤٹر کے دستیاب ہونے سے پہلے ہمیشہ ایک بار دوبارہ شروع کیا جاتا تھا، جس کے نتیجے میں بوٹ کا طویل وقت ہوتا ہے (تقریباً 5 منٹ) - مراعات یافتہ آپشن، اس کا مطلب ہے کہ qemu KVM ہارڈویئر ایکسلریشن کے بغیر کام کرتا ہے اور اس طرح تعمیر میں کافی وقت لگتا ہے۔ اس عمل کے دوران، بہت سارے لاگ آؤٹ پٹ ہوتے ہیں، اس لیے کم از کم آپ دیکھ سکتے ہیں کہ کیا ہو رہا ہے۔ میرے خیال میں یہ ایک طویل تعمیر ہے۔ اتنا خوفناک نہیں ہے کیونکہ ہم ایک بار ایک تصویر بناتے ہیں، لیکن ہم بہت سی لانچ کرتے ہیں۔"
اس کے بعد آپ ہمارے روٹر کی تصویر دیکھ سکتے ہیں۔ میں Docker:
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 ایڈریس درج ذیل کمانڈ سے حاصل کیا جا سکتا ہے۔
طے شدہ، Vrnetlab روٹر پر صارف بناتا ہے۔ vrnetlab/VR-netlab9.
کے ساتھ جڑ رہا ہے۔ 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: پوسٹ مین - راؤٹر کو اوپن ڈے لائٹ سے جوڑیں۔
پوسٹ مین کی تنصیب
انسٹال کرنے کے لیے، بس ایپلیکیشن ڈاؤن لوڈ کریں۔ اس وجہ سے.
روٹر کو ODL سے جوڑنا
آئیے تخلیق کرتے ہیں۔ رکھ درخواست:
استفسار کا سلسلہ:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
یہ اندرونی نام کی جگہیں ہیں۔ XML (XML نام کی جگہ) کے لئے او ڈی ایل۔ جس کے مطابق یہ نوڈ بناتا ہے۔
مزید، بالترتیب، روٹر کا نام ہے node-id, راؤٹر کا پتہ - میزبان اور اسی طرح.
سب سے دلچسپ لائن آخری ہے۔ سکیما کیشے ڈائرکٹری ایک ڈائریکٹری بناتا ہے جہاں تمام فائلیں ڈاؤن لوڈ ہوتی ہیں۔ یانگ سکیما منسلک راؤٹر. آپ انہیں اس میں تلاش کر سکتے ہیں۔ $ODL_ROOT/cache/jun01_cache.
روٹر کا کنکشن چیک کر رہا ہے۔
آئیے تخلیق کرتے ہیں۔ حاصل کریں درخواست:
استفسار کا سلسلہ:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
ہم بھیجتے ہیں. "200 اوکے" کی حیثیت اور آلے کے ذریعہ تعاون یافتہ سبھی کی فہرست موصول ہونی چاہئے۔ یانگ سکیما:
تبصرہ: مؤخر الذکر کو دیکھنے کے لیے، میرے معاملے میں پھانسی کے بعد تقریباً 10 منٹ انتظار کرنا ضروری تھا۔ رکھسب تک یانگ اسکیما پر اتارنا او ڈی ایل۔. اس مقام تک، جب یہ انجام دے رہے ہیں۔ حاصل کریں استفسار درج ذیل کو ظاہر کرے گا:
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
حصہ 6: روٹر کی ترتیب کو تبدیل کریں۔
ترتیب حاصل کرنا
آئیے تخلیق کرتے ہیں۔ حاصل کریں درخواست:
استفسار کا سلسلہ:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
ہم بھیجتے ہیں. اسٹیٹس "200 اوکے" اور روٹر کنفیگریشن حاصل کرنا چاہیے:
ایک ترتیب بنائیں
مثال کے طور پر، آئیے درج ذیل کنفیگریشن بنائیں اور اس میں ترمیم کریں:
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
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
ہیڈرز ٹیب پر، آپ کو دو ہیڈر شامل کرنے کی ضرورت ہے:
درخواست/xml قبول کریں۔
مواد کی قسم کی درخواست/xml
بھیجنے کے بعد، انہیں "204 کوئی مواد نہیں" کا درجہ ملنا چاہیے۔
یہ چیک کرنے کے لیے کہ کنفیگریشن بدل گئی ہے، آپ پچھلی استفسار استعمال کر سکتے ہیں۔ لیکن مثال کے طور پر، ہم ایک اور بنائیں گے جو صرف روٹر پر کنفیگر کیے گئے پروٹوکولز کے بارے میں معلومات ظاہر کرے گا۔
آئیے تخلیق کرتے ہیں۔ حاصل کریں درخواست:
استفسار کا سلسلہ:
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 اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
درخواست پر عمل کرنے کے بعد، ہم مندرجہ ذیل دیکھیں گے:
ترتیب کو تبدیل کریں۔
آئیے BGP پروٹوکول کے بارے میں معلومات کو تبدیل کرتے ہیں۔ ہمارے اعمال کے بعد، یہ اس طرح نظر آئے گا:
protocols {
bgp {
disable;
}
}
آئیے تخلیق کرتے ہیں۔ رکھ درخواست:
استفسار کا سلسلہ:
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
بھیجنے کے بعد، ہمیں درج ذیل نتیجہ ملے گا (ہم استعمال کرتے ہوئے جواب کو دیکھتے ہیں۔ حاصل کریں درخواست):
حصہ 7: Cisco xRV9000 شامل کرنا
ہم سب جونیپر کے بارے میں کیا ہیں، ہاں جونیپر؟ آئیے سسکو کے بارے میں بات کرتے ہیں!
مجھے xRV9000 ورژن 7.0.2 ملا (ایک ایسا جانور جس کو 8 جی بی ریم اور 4 کور کی ضرورت ہے۔ یہ آزادانہ طور پر دستیاب نہیں ہے، لہذا رابطہ کریں سسکو) - آئیے اسے چلائیں۔
کنٹینر چلانا
ڈوکر کنٹینر بنانے کا عمل عملی طور پر جونیپر سے مختلف نہیں ہے۔ اسی طرح، ہم راؤٹر کے ساتھ .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 کے ساتھ بالکل اسی طرح ہوتا ہے۔ ہمیں صرف نام بدلنے کی ضرورت ہے۔ رکھ درخواست:
تھوڑی دیر بعد کال کریں۔ حاصل کریں یہ چیک کرنے کے لیے استفسار کریں کہ سب کچھ منسلک ہے:
ترتیب کو تبدیل کریں۔
آئیے درج ذیل کنفیگریشن ترتیب دیں:
!
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
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
ہیڈرز ٹیب پر، آپ کو دو ہیڈر شامل کرنے کی ضرورت ہے:
درخواست قبول کریں/json
مواد کی قسم کی درخواست/json
اس کے نفاذ کے بعد، انہیں "204 کوئی مواد نہیں" کا درجہ ملنا چاہیے۔
آئیے چیک کریں کہ ہمیں کیا ملا۔
ایسا کرنے کے لیے، ہم بنائیں گے حاصل کریں درخواست:
استفسار کا سلسلہ:
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 اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
اجازت دینے والے ٹیب پر، آپ کو پیرامیٹر سیٹ کرنا ہوگا۔ Basic Auth اور لاگ ان/پاس ورڈ: ایڈمن/ایڈمن۔
حاصل يہ ہوا
مجموعی طور پر، جیسا کہ آپ نے دیکھا ہو گا، سسکو اور جونیپر کو OpenDaylight سے جوڑنے کے طریقہ کار میں فرق نہیں ہے - اس سے تخلیقی صلاحیتوں کے لیے کافی وسیع گنجائش کھل جاتی ہے۔ نیٹ ورک کے تمام اجزاء کے کنفیگریشن مینجمنٹ سے شروع ہو کر آپ کے اپنے نیٹ ورک کی پالیسیوں کی تخلیق کے ساتھ اختتام پذیر ہوتا ہے۔
اس ٹیوٹوریل میں، میں نے آسان ترین مثالیں دی ہیں کہ آپ اوپن ڈے لائٹ کا استعمال کرتے ہوئے نیٹ ورک کے آلات کے ساتھ کیسے تعامل کر سکتے ہیں۔ بلا شبہ، مندرجہ بالا مثالوں سے استفسارات کو زیادہ پیچیدہ بنایا جا سکتا ہے اور ماؤس کے ایک کلک سے پوری خدمات کو ترتیب دیا جا سکتا ہے - سب کچھ صرف آپ کے تخیل سے محدود ہے*
جاری رکھنا ...
PS
اگر آپ کو یہ سب کچھ اچانک معلوم ہو گیا ہے یا، اس کے برعکس، آپ ODL کی روح میں دھنس چکے ہیں، تو میں تجویز کرتا ہوں کہ ODL کنٹرولر پر ایپلی کیشنز تیار کرنے کی طرف دیکھیں۔ آپ شروع کر سکتے ہیں۔ اس وجہ سے.