Extensive Message Protocol (XMPP) is an open standard protocol based on XML (Extensible Markup Language). XMPP is designed to transport instant messages (IM) between entities and to detect online presence. It supports authentication of IM application and secure transport of messages over SSL/TLS. In XMPP entities can be bots, physical users, servers, devices or components. It’s really a powerful tool that has great potential for system administrators to add to their toolbox because:
- XMPP is powerful
- XMPP with Python is only 12 lines of code – trust me, it’s easy!
- XMPP only requires a single query for multiple nodes
- Status message can be used to track host presence
The Power of XMPP
For those of you that are not familiar with XMPP, it not only supports one-to-one messaging between entities but it also supports multi-party messaging (which enables an entity to join a chat room for the exchange of messages with several participants). The messages can be text messages embedded in XML format but XML can also be used to send control messages between entities as we will see with the presence stanza in a bit.
XMPP is widely used; Google uses it (for its Hangout application -- formerly google chat) and so does Yahoo and MSN. At Cisco, we use Cisco Jabber extensively to communicate internally. The XMPP client function is now integrated in the Cisco Nexus 5000 series with the release 5.2(1)N1(7) and the Nexus 6000 series with the release of 7.0(0)N1(1). XMPP is an integral part of the single console access for Dynamic Fabric Automation (DFA) which is a powerful framework described in my previous blog.
The new Data Center Network Manager (DCNM) 7.0(1) is delivered as an OVA file that can be deployed quickly on an existing VMware-enabled server. Although DCNM comes with a lot of features that simplify the deployment of the Data Center fabric, we can pick and choose any service we want to use independently -- which is great since DCNM comes with Cisco Jabber XCP and is license free. If you already have a XMPP service installed (like Openfire or ejabberd), it will not be a problem because everything discussed here is valid on any standard XMPP implementation.
On NX-OS devices, the XMPP feature is activated by configuring ‘feature fabric access’ and is part of the Enhanced L2 license (ENHANCED_LAYER2_PKG). Once activated, the switch becomes a XMPP client that needs to be registered on the server. In order to register it, XMPP requires the use of fully qualified domain names (FQDNs) to identify the domain server. If the switch does not have access to a DNS service, I recommend that you use the switch management network for messaging and a static host–to–IP address mapping in the switch configuration.
The switch will use its hostname to login to the XMPP service. If your XMPP server does not support auto-registration, you will need to register the switch and the rooms in the XMPP database beforehand. The DCNM OVA requires users and groups to be created via the CLI, and example of this user and group creation is:
[root@dcnm-ova ~]# appmgr add_user xmpp -u leaf0 -p cisco123
[root@dcnm-ova ~]# appmgr add_user xmpp -u leaf1 -p cisco123
User added. Read More »
Tags: Cisco Data Center Fabric, Cisco Nexus, DCNM, instant messaging (IM), NX-OS, open standard protocol, XML, XMPP, xmpp with python
As a product manager, I am happy and excited to tell you that Cisco Mobility Services Engine (MSE) now supports REST based APIs. Why am I happy and excited you ask? MSE’s REST based APIs allow web app developers to rapidly develop location aware apps with ease. Let me walk you through this new feature at a high level, and my colleague will take you through a closer look feature blog next week.
Mobility Services Engine and API support
For readers who are not familiar with the Cisco Mobility Service Engine and the APIs, here’s the gist:
- Cisco Mobility Services Engine (MSE) works in conjunction with Cisco Wireless LAN Controller (WLC) and Cisco Aironet Access Points (APs) and computes real time location for all Wi-Fi end-points using RSSI based triangulation algorithms.
- MSE stores real time and historical location of Wi-Fi clients in its database making it a gold mine of data for indoor location. (Remember that GPS technology is not effective for indoor location)
- This rich store of indoor location data is now available to app developers to query through a REST based API over a secure HTTPS connection.
What can I do with MSE REST APIs?
MSE REST APIs allow web developers to query MSE location database using the HTTP(S) GET method. HTTP response payload can be received in XML or JSON format. Here is a list of resources that are accessible over the REST API. Read More »
Tags: API, Cisco, cmx, connected mobile experiences, HTTP(S) GET, location, location based services, map, mobility services, mobility services engine, mse, real time location, REST, rtls, web developer, XML
Every year I decorate my home’s front door for the holidays, it’s very simple just evergreens, some pine cones, maybe some sticks with berries. It takes about a day, I get up early the first Sunday of December and drive around the rural areas where I live and clip greens. I look for interesting items maybe red or blue berries, cool pine cones, maybe some tall grasses that have a decorative look to them. I been doing this for about 14 years and have learned how to be more efficient by using the right tools and preparing the day before.
I make sure the wire frames that I hang the greens in are in a good state of repair, I get out my warm gear since I’ll be outside all day, setup my van so I have a place to put the clippings. I even coat all my fingertips with a product called nu-skin since the greens can be pretty sharp and at the end of the day my hands are beat up. My preparation and implementation methods have evolved over the years and I think now I have it down to a science, the results of my efforts are shown below with before and after pictures.
What I found was that the right tools really do make a difference, my first time I had clippers that weren’t sharp enough, clothes that weren’t warm enough, and I was so frustrated when I was finished that I swore I would never do it again. The end result however was so nice and received so many compliments that the next year I tried it again but did it a little smarter. I used the right tools for the job.
The right tools will always help but you have to know how to use them and then sometimes you have to use them a lot to get comfortable. When it comes to XML the tool that I found does a great job is xmlstarlet. One of the features of Cisco’s UCS Manager is the ability to send a system inventory email using Callhome. The inventory email can be sent automatically on a regular basis with the minimal interval of a day. The UCS inventory email contains all sorts of useful information
- IP addresses
- Serial Numbers
- Firmware Levels
- Fabric Interconnects
- Associated Service Profiles
This information and more can be retrieved from the Callhome email. What follows is a detailed breakdown of an xmlstartlet command to mine the UCS inventory information from the Callhome inventory email.
Read More »
Tags: Callhome, Parsing, UCS, XML