টুল দিয়ে DDM পড়া: CLI, ethtool, SNMP, OpenConfig
একই A2h বাইট আপনার কাছে পৌঁছায় নানা পথে: সুইচের CLI, Linux NIC, SNMP পোলার, স্ট্রিমিং টেলিমেট্রির পাইপলাইন কিংবা প্রোগ্রামারের কাঁচা হেক্স ডাম্পের মাধ্যমে। এই পেজে আছে হাতে-কলমে ব্যবহারের নির্দেশিকা: কমান্ড, OID ও পাথ, আর সামনের টুল নিজে ডিকোড করতে না পারলে কাঁচা ডাম্প হাতে ডিকোড করার উপায়।
সুইচ ও রাউটারের CLI
| প্ল্যাটফর্ম | DDM কমান্ড | মন্তব্য |
|---|---|---|
| Cisco IOS / IOS-XE | show interfaces transceiver detail | মানের পাশেই থ্রেশহোল্ড দেখায়; শনাক্তকরণ তথ্যের জন্য show idprom interface |
| Cisco NX-OS | show interface ethernet1/1 transceiver details | QSFP-এর জন্য লেন অনুযায়ী |
| Cisco IOS-XR | show controllers optics 0/0/0/0 | অ্যালার্ম ও লেনের টেবিল অন্তর্ভুক্ত |
| Juniper Junos | show interfaces diagnostics optics xe-0/0/0 | থ্রেশহোল্ড ও অ্যালার্মের অবস্থা অন্তর্ভুক্ত |
| Arista EOS | show interfaces ethernet 1 transceiver dom | … transceiver detail থ্রেশহোল্ডও যোগ করে |
| Huawei VRP | display transceiver interface XGigabitEthernet0/0/1 verbose | — |
| MikroTik RouterOS | /interface ethernet monitor sfp1 | sfp-temperature, sfp-tx-power, sfp-rx-power, sfp-tx-bias-current |
| Dell OS10 | show interface ethernet 1/1/1 transceiver | — |
| NVIDIA Cumulus / Onyx | l1-show swp1 / show interfaces ethernet 1/1 transceiver | মডিউলের বিস্তারিত তথ্যের জন্য mlxlink -d <dev> -p <port> -m |
| SONiC | show interfaces transceiver eeprom -d Ethernet0 | sfputil show eeprom -d; … presence, … lpmode |
শনাক্তকরণ তথ্যভিত্তিক সমতুল্য কমান্ড এবং কী দেখতে হবে: সুইচে অপটিক্স যাচাই করা।
Linux: ethtool
ethtool -m eth0 # ডিকোড করা শনাক্তকরণ তথ্য ও DDM (ড্রাইভার মডিউলের EEPROM সমর্থন করলে)
ethtool -m eth0 raw on hex on # কাঁচা ডাম্প: A0h 0x0000–0x00ff পরিসরে, A2h 0x0100–0x01ff পরিসরে (SFP)
ethtool -m eth0 hex on offset 256 length 128 # শুধু A2h-এর লোয়ার পেজ
ethtool --show-fec eth0 # FEC মোড
ethtool -S eth0 | grep -i fec # fec_corrected_blocks / fec_uncorrectable_blocks
QSFP/CMIS মডিউলে ডাম্প ড্রাইভারের দেখানো পেজ-ভিত্তিক বিন্যাস অনুসরণ করে (লোয়ার পেজ, আপার 00h, তারপর সমর্থিত হলে 01h/02h/03h/10h/11h পেজ)। ethtool SFF-8472 ও SFF-8636 পুরোপুরি ডিকোড করে, আর CMIS ডিকোড করে কার্নেলের সংস্করণ অনুযায়ী আংশিকভাবে।
কাঁচা A2h ডাম্প হাতে ডিকোড করা
A2h-এর লোয়ার পেজ ethtool -m … raw on hex on ডাম্পে থাকে 0x0100 অফসেটে। লাইভ পরিমাপকৃত মান শুরু হয় A2h-এর 96 নম্বর বাইট থেকে, ডাম্পে যা 0x0160 অফসেট:
0x0160: 1a 80 80 e8 1b 58 0f a0 03 e8 ...
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
তাপমাত্রা Vcc বায়াস Tx Rx
| বাইট | কাঁচা মান | রূপান্তর | মান |
|---|---|---|---|
| 96–97 তাপমাত্রা | 1A 80 = 6784 (চিহ্নযুক্ত) | ÷ 256 | 26.5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 µV | 3.300 V |
| 100–101 Tx বায়াস | 1B 58 = 7000 | × 2 µA | 14.0 mA |
| 102–103 Tx পাওয়ার | 0F A0 = 4000 | × 0.1 µW = 400 µW; 10·log10(0.400) | −3.98 dBm |
| 104–105 Rx পাওয়ার | 03 E8 = 1000 | × 0.1 µW = 100 µW | −10.0 dBm |
এই রূপান্তরগুলো ধরে নেয় ইন্টারনাল ক্যালিব্রেশন (A0h-এর 92 নম্বর বাইটের বিট 5); এক্সটারনাল ক্যালিব্রেশনে আগে A2h 56–91-এর ক্যালিব্রেশন ধ্রুবকগুলো প্রয়োগ করুন (ক্যালিব্রেশন)। থ্রেশহোল্ড একই ফরম্যাটে থাকে A2h 0–39-এ; স্ট্যাটাস/কন্ট্রোল ও ফ্ল্যাগ থাকে 110–117-এ (থ্রেশহোল্ড ও অ্যালার্ম)। QSFP-তে মডিউলের পরিমাপকৃত মান লোয়ার পেজের 22–27 বাইটে, লেনের পরিমাপকৃত মান 34–57 বাইটে; CMIS-এ লোয়ার পেজের 14–25 এবং পেজ 11h-এর 154–201 (প্রতি লেনের ডায়াগনস্টিকস)।
SNMP
স্ট্যান্ডার্ড: ENTITY-SENSOR-MIB (RFC 3433)
বেশিরভাগ প্ল্যাটফর্ম প্রতিটি DDM মান ফিজিক্যাল সেন্সর হিসেবে দেখায়:
| অবজেক্ট | OID | অর্থ |
|---|---|---|
| entPhySensorType | 1.3.6.1.2.1.99.1.1.1.1 | 4 ভোল্ট DC, 5 অ্যাম্পিয়ার, 8 সেলসিয়াস, 14 dBm |
| entPhySensorScale | 1.3.6.1.2.1.99.1.1.1.2 | 8 = একক, 7 = মিলি, 6 = মাইক্রো… |
| entPhySensorPrecision | 1.3.6.1.2.1.99.1.1.1.3 | মানের দশমিক স্থান সংখ্যা |
| entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | রিডিং |
| entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 ঠিক আছে, 2 অনুপলব্ধ, 3 অকার্যকর |
সেন্সরের ইনডেক্স ENTITY-MIB (entPhysicalDescr, entPhysicalContainedIn) ব্যবহার করে একটি পোর্টের সঙ্গে মেলানো হয়। টাইপ 14 (dBm), স্কেল 8, প্রিসিশন 2 এবং মান −1234 হলে তার অর্থ −12.34 dBm।
ভেন্ডরের MIB
| ভেন্ডর | MIB / উদাহরণ অবজেক্ট |
|---|---|
| Cisco | CISCO-ENTITY-SENSOR-MIB entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4), থ্রেশহোল্ড entSensorThresholdTable-এ |
| Juniper | JUNIPER-DOM-MIB: jnxDomCurrentRxLaserPower (…2636.3.60.1.1.1.1.5, 0.01 dBm), jnxDomCurrentTxLaserBiasCurrent (.6), jnxDomCurrentTxLaserOutputPower (.7), jnxDomCurrentModuleTemperature (.8) |
| Arista, Dell ও আরও অনেকে | শুধু ENTITY-SENSOR-MIB |
| Huawei | HUAWEI-ENTITY-EXTENT-MIB-এর অপটিক্যাল অবজেক্ট (Rx/Tx পাওয়ার, বায়াস, তাপমাত্রা) |
| MikroTik | MIKROTIK-MIB mtxrOpticalTable (Rx/Tx পাওয়ার, তাপমাত্রা, ভোল্টেজ, বায়াস) |
ওপেন-সোর্স NMS (LibreNMS, Zabbix-এর টেমপ্লেট, Observium) এগুলো নিজে থেকেই খুঁজে নিয়ে গ্রাফ আঁকে; Prometheus একই OID দিয়ে snmp_exporter ব্যবহার করে।
স্ট্রিমিং টেলিমেট্রি (gNMI / OpenConfig)
openconfig-platform-transceiver মডিউলকে ফিজিক্যাল চ্যানেলসহ একটি কম্পোনেন্ট হিসেবে মডেল করে:
/components/component[name=Ethernet1/1]/transceiver/state/… ভেন্ডর, পার্ট নম্বর, সিরিয়াল নম্বর, ফর্ম ফ্যাক্টর
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/input-power/instant
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/output-power/instant
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/laser-bias-current/instant
/components/component[name=…]/state/temperature/instant
প্রতিটি লিফ স্যাম্পলিং ব্যবধানে instant, avg, min, max মান বহন করে। SAMPLE মোডে 10–60 s ব্যবধানে সাবস্ক্রাইব করুন; প্রচলিত পাইপলাইন হলো gnmic → Prometheus/InfluxDB → Grafana। ভেন্ডরের নিজস্ব মডেল (Cisco, Juniper, Arista) একই ডেটা নিজেদের পাথে দেখায় এবং সাধারণত FEC কাউন্টার ও অ্যালার্মের অবস্থাও যোগ করে।
Windows ও অন্যান্য হোস্ট
Windows-এ DDM পড়ার নিজস্ব কোনো টুল নেই; NIC নির্মাতার ইউটিলিটি (সার্ভার অ্যাডাপ্টারের) কখনো কখনো মডিউলের ডেটা দেখায়। FreeBSD সমর্থিত ড্রাইভারে ifconfig <if> -v দিয়ে SFP-এর শনাক্তকরণ তথ্য ও DDM দেখায়। যে হোস্ট মডিউল পড়তে পারে না, সেখানে বিকল্প হলো টেস্ট বেঞ্চ।
পোলিংয়ের হার ও রীতিনীতি
- মডিউলের পরিমাপকৃত মান সেকেন্ডে কয়েকবার হালনাগাদ হয়; ট্রেন্ড দেখার জন্য প্রতি 1–5 মিনিটে একবার পোল করাই যথেষ্ট, আর তাতে টু-ওয়্যার বাসের ওপর চাপও কম পড়ে।
- কিছু প্ল্যাটফর্ম সব মডিউল-রিড একটিমাত্র ম্যানেজমেন্ট CPU দিয়ে পর পর চালায়; শত শত পোর্টে ঘন ঘন SNMP ওয়াক চালালে তা ধীর হয়ে যেতে পারে বা টাইমআউট হতে পারে।
- হোস্ট যে বাস পোল করছে, তাতে কখনো দ্বিতীয় মাস্টার (প্রোগ্রামারের ক্লিপ, ইন-ব্যান্ড টুল) চালাবেন না (টু-ওয়্যার ইন্টারফেস)।
উৎসগুলোর তুলনা
CLI, SNMP ও টেলিমেট্রি একই বাইট পড়ে; এগুলোর মধ্যে dB-এর কয়েক দশমাংশের পার্থক্য সময়ের ব্যবধানের ফল, ত্রুটি নয়। একই মডিউলের ক্ষেত্রে হোস্টের রিডিং আর টেস্ট বেঞ্চের রিডিংয়ের পার্থক্য বুঝে নেওয়া দরকার: তাপমাত্রা, Vcc ও ক্যালিব্রেশন সামলানোর পদ্ধতি সংখ্যাগুলো বদলে দেয় (নির্ভুলতা ও সীমাবদ্ধতা)।
CodingBox-এ
CodingBox হলো টেস্ট বেঞ্চ থেকে দেখার পথ: DDM স্ক্রিন ডিকোড করা পরিমাপকৃত মান ও ফ্ল্যাগ দেখায়, আর কাঁচা বাইট থাকে মাত্র এক ক্লিক দূরে, EEPROM editor স্ক্রিনে। CSV এক্সপোর্ট সেই একই ড্যাশবোর্ডে ডেটা জোগায়, যেগুলো SNMP বা টেলিমেট্রি থেকে ডেটা নেয়; ফলে ইনকামিং পরিদর্শন থেকে ডিকমিশনিং পর্যন্ত মডিউলের ইতিহাস একটিই থাকে (মনিটরিং)।