MST PVSTP interoperation
Hello,
I've read the "understanding MSTP article" from cisco's website and I have several uncertainties.
These have deepened even more after performing several experiments.
I've setup a test scenario with the following configuration:
C1 Cisco PVST ---- C2 MST ---- C3 MST non-cisco switch (doesn't know PVSTP)
C1 has vlans 1-10 for which it must necessarily be root bridge
C2 must be root bridge for all other vlans
C3 will transport 1-10 + the other vlans
C1 can not be migrated to MST while C2 if possible should interoperate with the non-cisco MST enabled switch.
What I have done:
Setup 1:
C2 mst root bridge for all vlans
C3 learnt of C2 being the root bridge
C1 the PVST also learnt this (as far as I've read all communication with the PVST is done via the IST-CST instance)
Although this worked just fine, unfortunately it wasn't what I was searching for.
Setup 2:
C1 -- C2
C1 lower priority for vlans 1-10 (disabled spanning tree on the other vlans / or removed them from the trunk to C2 if not required to be present there)
C2 reported:
SPANTREE-2-ROOTGUARD_UNBLOCK: Root guard blocking port ...
And the port was shown as blocked in both the IST0 and the other MSTIs.
I've also tried the alternate configuration (not recommended) from:
http://www.cisco.com/warp/public/473/147.html#alternate_configuration
without any luck.
Disabling PVSTP on the C1 interface to C2 of course made the C2 port to be removed from blocking as expected.
I have several questions in regard to this:
a) Why are both IST0 and the boundary ports for the MSTIs placed in Blocking ?
b) According to that article shouldn't there be a way to have the PVST be root bridge for all the instances present on it ?
c) What alternate setup could there be possible to achieve the redundancy desired while maintaining C1 root bridge for vlans 1-10
C2 root bridge for the others
C3 interoperability with C2 (C3 only knows MST and RSTP)
Any advice would be greatly appreciated.
Thanks,
Mihai
Hi Mihai,
The code was designed especially to prevent what you are trying to do:-( The problem is that C2 is only running one instance at the boundary to C1, the CIST. So for each of its ports leading to C1 it can only block all vlans or forward all the vlans.
If C1 is root for certain vlans, C2 will have to block one of its port to C1 for those vlans. This means that C2 can only block ALL its vlans to C1, considering the rule stated above.
On the other hand, if C2 is the root for the CIST, it will need to put both its ports to C1 in forwarding, which means put ALL the vlans to forwarding on both ports.
You clearly see the contradiction, and that's what the inconsistency you are getting is trying to show.
Why do you need C1 to be root for some vlans? Is that for some load balancing issues? Because you can achieve load balancing without having C1 being the root.
The only solution to your problem seems to have C2 run PVST considering your constraints. It would be much better if you could move C1 to MST and have it participate in the same region as C2 of course...
Regards,
Francois
Similar Messages
-
Migrating from Rapid-PVST+ to MST
We wish to migrate our Rapid-PVST+ network of around 25 switches to MST but for reasons that we believe are valid we do not want to start with the core switches. We want to convert one part of our network first that is connected to the core with a single trunk link.
We are refering to this document: Understanding Multiple Spanning Tree Protocol (802.1s) and in particular the section headed 'Alternate Configuration (Not Recommended)'. We can accomodate the drawbacks of this scenario, and in any case it will only be a temporary setup unitl we complete the migration.
Under 'Invalid Configuration' it states that "If the PVST+ bridge is the root, this bridge must be the root for all VLANs (including the CST, which always runs on VLAN 1, regardless of the native VLAN, when the CST runs PVST+)". My question is if this is strictly correct (the border bridge MUST be the root for all the VLANs) or if the PVST+ sub-section as a whole must contain the root (e.g. the next PVST+ bridge in the topology would also be valid if its priority were high enough)?
DanielHi Daniel,
Let me start by explaining what is the problem with MSTP/PVST+ interoperation. Things to watch out for are direct consequences of the interoperation limitations so it is vital to understand what is going on.
When MSTP region is connected to an (R)PVST+ region, it tries to speak (R)PVST+ and process received (R)PVST+ BPDUs. This process is called PVST Simulation. However, there are major difficulties in this process: the (R)PVST+ uses per-VLAN semantics while MSTP runs instances with VLANs simply mapped onto them. The role and state of an MSTP boundary port is always determined by the IST ( = MSTI0) instance talking to the outside world, and is simply inherited by all instances running in the MSTP region. That means that if the port is discarding in IST, it is discarding in all instances (and hence all VLANs). If the port is forwarding in IST, it is forwarding in all instances (and hence all VLANs). The same goes for every role/state combination. This fact makes it impossible to do any per-VLAN semantics on an MSTP boundary port. Even if you tried to map incoming (R)PVST+ BPDUs into appropriate instances, you could arrive to an unsolvable situation where the port should be discarding for one VLAN and forwarding for another, although they are both mapped to the same MSTP instance.
These limitations are the guidelines according to which the PVST Simulation works. Because the MSTP boundary port should use only IST data when speaking to the outside world (that is how MSTP boundary port should operate according to IEEE specifications), PVST Simulation makes use of it: it takes the IST data and replicates it into PVST+ BPDUs sent out for all VLANs defined on the switch. In other words, an MSTP boundary port speaking to PVST+ region sends one PVST+ BPDU for each VLAN that is defined on the switch, using IST data as the contents of this BPDU. Essentially, this makes the entire MSTP region look like a single huge switch identically configured for each and every VLAN, with the configuration simply taken from the IST.
Doing this is easy. However, the opposite process is much more constraining: an MSTP boundary port tries to process every received PVST+ BPDU using the IST instance. This is where the troubles begin. If all received PVST+ BPDUs are supposed to allow stable and unambiguous determination of the MSTP boundary port role and state, they must be identical, i.e. the same Root Bridge ID, the same Sending Bridge ID, same Root Path Cost, same Sending Port ID, perhaps even the same timers in each received PVST+ BPDU (sorry for the "perhaps" word here - the PVST Simulation is practically undocumented and these are only my experiences - some areas are still white). Failure to meet this requirement, i.e. receiving two or more differing PVST+ BPDUs on an MSTP boundary port, results in PVST Simulation inconsistency and into permanent blocking of that port until the conflicting PVST+ BPDUs cease to be received.
Note that this requirement of receiving identical PVST+ BPDUs is impossible to achieve with current Catalyst switches: every recent Catalyst switch is using Extended System ID, i.e. it inserts the VLAN ID into the Bridge ID when creating a BPDU for a particular VLAN. Even if you configured the PVST+ region so that a single switch was the root bridge for all VLANs, its PVST+ BPDUs would still differ because each of them would carry a different Extended System ID in the RBID/SBID field.
The only way to prevent these problems is to make sure that the MSTP region is considered as the root switch for all VLANs. Because it is the IST whose data is visible outside the MSTP region, this can be accomplished by configuring the bridge priority on the IST root bridge so low that it beats all switches in the PVST+ region and thereby becomes the root bridge for all VLANs.
Now to your questions:
We are refering to this document: Understanding Multiple Spanning Tree Protocol (802.1s) and in particular the section headed 'Alternate Configuration (Not Recommended)'. We can accomodate the drawbacks of this scenario, and in any case it will only be a temporary setup unitl we complete the migration.
That document is a perfect reference. However, it does not describe the troubles related to the PVST Simulation because it does not take the Extended System ID into account. In fact, the scenario with the PVST+ region containing the root bridge for all VLANs is not possible to accomplish with current Catalyst switches. It is ironical that by striving for compatibility between MSTP and Cisco (R)PVST+, Cisco has actually created a situation where it is very easy to be incompatible. So in my opinion, you cannot accomodate for such a setup - you can not afford having a root switch in the PVST+ region because that would most probably lead to MSTP boundary ports being blocked due to PVST Simulation inconsistency.
I shall stress that these problems are created in particular by the PVST Simulation. Switches running pure IEEE STP/RSTP do not cause these problems because they run a single (R)STP instance for all VLANs. An MSTP boundary port can talk to a single external (R)STP always without problems - a single (R)STP can never produce two conflicting BPDUs. It is as easy as that. It is the overdone striving for compatibility with PVST+ BPDUs that is causing these troubles.
Under 'Invalid Configuration' it states that "If the PVST+ bridge is the root, this bridge must be the root for all VLANs (including the CST, which always runs on VLAN 1, regardless of the native VLAN, when the CST runs PVST+)". My question is if this is strictly correct (the border bridge MUST be the root for all the VLANs) or if the PVST+ sub-section as a whole must contain the root (e.g. the next PVST+ bridge in the topology would also be valid if its priority were high enough)?
It is not the border bridge exactly that must be the root bridge for all VLANs. As I explained earlier, the MSTP region talks to the outside world using IST data. If the MSTP region is to become a root bridge for all VLANs, then the IST root bridge priority must be the lowest among all PVST+ bridges. The IST root bridge itself can perfectly be an internal switch somewhere deep inside the MSTP region.
The same would be valid if the PVST+ region was to become the region containing the root bridge for all VLANs. This root bridge can be any switch inside the PVST+ region, not just a boundary switch. However, this would require, among other things, deactivating the Extended System ID which is not possible.
Please feel welcome to ask further!
Best regards,
Peter -
can u tell me how about interoperability among cst,pvst,cst,mst
Hello,
This document was helpful to me in understanding the concepts: "Configuration example to migrate Spanning Tree from PVST+ to MST"
http://www.cisco.com/en/US/products/hw/switches/ps708/products_configuration_example09186a00807b075f.shtml
Hope it helps you too!
Regards, Martin -
Is there a way to open a .mst file created in the student edition with MULTISIM 9
When a student builds a file with MultiSIM 9, the circuit is created as a .msm file. When the student goes home to work, they can open a .msm file with a student version, 2001 for example, but any change to the file can only be saved as a .mst file. As soon as the file is saved as a .mst file, we have not found a way to open the file with the educational version of MultiSIM 9. Is there any way to convert these files? This makes it very difficult for a student to work at home for a project between or prior to labs.
ThanksJKR,
Unfortunately, the ".mst" extension is supposed to be open only by Textbook editions of Multisim. Not even a Power Pro version would be able to open it.
I'm not sure the specifics of your case, but I guess that you open/saved the circuit on your textbook edition and that converted the file extension, is that right?...
Well, as far as I know the textbook editions are meant to be 'demo' type of releases, so is limited in many features. You should be OK with a Student edition though -- which is not the one commonly found in textbooks.
Nestor
National Instruments -
Hi
Machine/OS: SGI VWS 540, 256MB RAM, Win2000
Oracle: Oracle 8i (8.1.6)/Enterprise Edition Release 2
Problem:
I want to bind to a CORBA object (pureCORBA bank example) from c++.
I found in the FAQ an article about the interoperability with c++. I downloaded an archieve with all the necessary code. But....
I won't compile. It has been tested on Visibroker 3.2, but now i get compilation errors... (GIOP::ObjectKey CORBA::OctetSequence convertion).
Is there an update of this article that uses 8i 8.1.6 and Visibroker 3.4 (that ships with 8.1.6). I compile it using MS VC++ 6.0 SP 4.
I can make the current files compile, but then get a link error (login.lib uses stuff already defined in msvcrt.lib ....)
Thank you
Bart De LathouwerHi
Machine/OS: SGI VWS 540, 256MB RAM, Win2000
Oracle: Oracle 8i (8.1.6)/Enterprise Edition Release 2
Problem:
I want to bind to a CORBA object (pureCORBA bank example) from c++.
I found in the FAQ an article about the interoperability with c++. I downloaded an archieve with all the necessary code. But....
I won't compile. It has been tested on Visibroker 3.2, but now i get compilation errors... (GIOP::ObjectKey CORBA::OctetSequence convertion).
Is there an update of this article that uses 8i 8.1.6 and Visibroker 3.4 (that ships with 8.1.6). I compile it using MS VC++ 6.0 SP 4.
I can make the current files compile, but then get a link error (login.lib uses stuff already defined in msvcrt.lib ....)
Thank you
Bart De Lathouwer -
Working on ETL tools interoperability using Common Warehouse Model (CWM)
Hi All,
Its just a piece of information and not a question.
I have been working on proving the ETL tools interoperability using Common Warehouse Metamodel(CWM), an OMG standard. The whole concept is to take out the metadata from an ETL tool say OWB and put it into CWM Metadata Repository and this metadata can be used for building the same project in any other tool say Informatica or may be in the same ETL tool.
The main thing in this process is to map each ETL tool with the CWM concepts and then using Model to Model Tranformations(Technologies like Xtend) one can set up a communication between different ETL tools.
Till now I have worked with OWB only. I, with my team, have extracted all information from an OWB project (which has medium level of complexity like two oracle modules(schemas) and few tables, views and mappings with various operators) and put it in CWM repository and extracted it back from CWM MDR to OWB itself. We haven't worked with any other ETL tool because of the unavailablity of any other ETL tool with us. We will be working with Pentaho kettle in near future and try to prove the whole process as two way communication.
The whole process can be described in steps as below :
1. Creation of a manual OWB Ecore model(model representaion in Eclipse Modelling Framework) which gives all dependencies and reletionships in OWB objects like Project,OracleModule etc.
2. Creation of CWM ecore model from Rational Rose mdl which has been provided by OMG on their site.
3. Generation of Java code(Gen Model) from the above mentioned ecore model(It is needed to create an object from OWB).
4. Extraction of project from OWB using public views which has been exposed by OWB itself. You can refer to [http://download.oracle.com/docs/cd/B31080_01/doc/owb.102/b28225/toc.htm|http://download.oracle.com/docs/cd/B31080_01/doc/owb.102/b28225/toc.htm] link for OWB public views and other APIs.
5. (Actually Step 4 is a part of this step only )Writing a Java code which has JDBC connection for accessing OWB public views and Ecore model as imported java files(Step 3 has been done for this part only). This java code will return an OWB project object(instance of the Ecore model) which will be used in further steps.
6. Writing an Xtend code to do a model to model tranformation from OWB to CWM.
7. Writing an Open Architecture Workflow to combine all the steps in one step which will take the output of java code(step 5) and put it into Xtend Code(step 6) and then will take the output of Xtend code and give it to the XMIWriter(an OAW component) to write an XMI which is actually a CWM Ecore Model instance.
8. Saving above XMI(CWM model instance) to the CWM MDR using Hibernate and Teneo.
In the same way we can extract metadata from CWM MDR and put it into OWB. But the only problem with OWB is that we cannot persist OWB object in OWB repositories as OWB tables are very cryptic and tough to understand. So for that we have used TCL scripts(OMB Plus scripts) to create a project in OWB using OWB ecore instance. You can refer to the above oracle documentation link for TCL scripts.
Let me know if I can assist you if you are working on the same.
You can mail me for any queries. My email id is [email protected].
Thanks,
DeepakHi
1. Why do we need to install another standalone HTTP server in a separate home? Where do we use that server?
DA: The separate HTTP server is for the Workflow Monitor, which is not necessary (it has some use cases mind you).
2. To make the OWB work correctly while using ETL features, do we always need to run Workflow Configuration Assistant, because I wasn't able to generate code from OWB editor after building a mapping while Workflow Configuration Assistant wasn't running.
DA: Not necessary, what error did you get? Mappings can be designed, deployed and executed without Workflow. Workflow can be used for orchestrating the the mappings (ie .running a bunch of them in a specific order with others tasks).
3. Whenever I try to save my work in OWB, I get an error , message : Preference.properties (Access is denied). Though it saves my work but I don't understand why I am getting this error. It looks like OWB is trying to access some Property from the Preferences (Tools menu) but can't access.
DA: It sounds like the directory where you have installed OWB does not have permissions for the OS user you are executing it. Is the install user different from the execution user? Either run using the installed user, or change the permissions of the directories (grant the executing user write permissions under all directories under owb).
4. I also get error while closing the Mapping Editor :-
DA. same issue as 3.
Cheers
David -
So back in October, I purchased a brand new Macbook Pro Retina (MBPr), fully loaded with top of the line specs. I was soooo excited to have Thunderbolt 2 tech which Intel AND Apple describes as having DisplayPort 1.2a compatibility - which up to this point is unfortunately NOT the case. The point of the information/questions and requests in this article is to engage a conversation about the issues of not having MST support after Apple falsely mislead their consumers to think otherwise - especially when it is clear the MBPr is capable. Please read on...
Apple advertises that the Thunderbolt 2 ports on BOTH the MBPr and the new Mac Pro (NMP) will have 4K Display support with the famed 20gb/sec Ports (DisplayPort 1.2 only requires a little above 17gb/sec). Now that the 10.9.1 update has been released, we have failed to see MST or Multi-Stream Transport enabled on the MBPr Late 2013. Now, as for the New Mac Pro- it DOES have MST enabled in 10.9.1 with the AMD GPUs. For all of you out there that's questioning what this means, short answer is basically the Mac Pro will be able to power a 4K Monitor at 60Hz through the Thunderbolt 2 Port but the New MBPr is stuck with only HDMI 1.4 support which tops out at 4K 30Hz. 30Hz is unacceptable for anything but movies or a photo slideshow. At 30Hz the cursor will jump across the screen, eliminating any of the benefits of 4K.
BUT it gets worse...
Apple can be seen advertising that the new MBPr 15" model can power a 4K monitor THROUGH the Thunderbolt 2 Port here: http://www.apple.com/thunderbolt - This article quotes the following:
"Now with Thunderbolt 2 built into the new Mac Pro and MacBook Pro with Retina display, you can connect the latest 4K desktop displays and get double the bandwidth for your peripherals. And the two generations of Thunderbolt technology are compatible with each other."
Does this not let the consumer assume that the newest MBPr will be able to drive a 4K display through the Thunderbolt 2 Port? I would say yes it does, but at the time I wrote this, the TB2 Ports can't power a 4K display because, as previously stated, MST is disabled in Mavericks for the 15" MBPr Late 2013.
NOW, later on Apple posted the following article on 4K support here: http://support.apple.com/kb/HT6008
4K support on the MacBook Pro (Retina, Late 2013)
MacBook Pro supports 4K displays and Ultra HD TVs at the following resolutions and refresh rates with the built-in HDMI port:
3840 x 2160 at 30 Hz refresh rate
4096 x 2160 at 24 Hz refresh rate (mirroring is not supported at this resolution)
In the article above the New Mac Pro is listed as having support for a 4K Display with the Thunderbolt 2 Port (or MST DisplayPort 1.2a Technology) at 60Hz with no problem. This leads myself and many others to believe that MST will NEVER be enabled on the newest MacBook Pro Retina with Nvidia GPUs. Yes, 4K IS supported but ONLY through the HDMI 1.4 port, which has the limitation of only 30hz. This two-faced advertising is extremely upsetting to a LOT of people, including myself.
Interestingly enough, THIS IS NOT a hardware issue. If one ventures into Windows 8.1 via Bootcamp and connects a 4K Display via the Thunderbolt 2 (or through DP1.2) Port, the Display registers at 60Hz, thus proving that the Thundberbolt 2 Hub Controller is completely capable of MST DisplayPort functionality. Clearly this a driver issue with Apple, Nvidia or Intel or any combination. What Apple has done here is forcing any professional that desires stable and clear 4K technology through their MacBook Pro Retina to do so only using Windows 8.1 on their own machines! Definitely an oxymoron if you ask me...
Later on when the Mac Pro was ready for ordering, Apple placed the Sharp PN-K321 as a compatible option for a 4K Display. On the Store page featuring the (over three thousand dollar) Sharp 4K display, located here http://store.apple.com/us/product/HD971LL/A/sharp-32-pn-k321-4k-ultra-hd-led-mon itor?fnode=53 Apple states the following:
"Note that 4K DisplayPort operation is only compatible with the new Mac Pro (Late 2013)."
All of that being said, and I'm terribly sorry for my wordy ranting...
This brings me to a final two requests to ANYONE reading this post:
a) Has anyone working with the new 10.9.2 Beta Update seen evidence that DisplayPort 1.2 capabilities will be enabled for the new MacBook Pro Retina (Nvidia 750M) with the promised "Graphics Driver Updates" within the next Mavericks update?
and
b) To others that purchased or were/are thinking of purchasing a new MacBook Pro Retina with TB2 Ports: If you are just as upset as me about this crushing blow to consumers that just purchased a $3,000 laptop that were promised something that wasn't delivered - I urge you please, write to Apple and let them know they are making a mistake. You can do this though the support page or through http://www.apple.com/feedback
Thank you for your precious time, and if anyone has anything to contribute to this issue, please jump in....GOOD NEWS!
The Mavericks 10.9.3 update adds official support for Thunderbolt 2, 4K!
I'm not sure if you will be able to daisy chain anything to the 4K display. I've read that the design of Thunderbolt 2 includes support for DisplayPort 1.2 multi-stream (MST), which allows this type of daisy chaining with 4K, but we don't know if Apple has this supported on it's machines. Apparently it's been buggy in development because the graphics driver needs to work correctly with the Thunderbolt 2 host controller. I'm sure they will work it out if they haven't already.
The above is all via found information on this topic, but you can follow some more discussion here:
http://forums.macrumors.com/showthread.php?t=1713876
One more note on Thunderbolt worth sharing: always keep your fastest peripherals closer to the computer in the chain. If you have a TB1 device directly connected to the computer, anything further down the chain will be limited to TB1 speed/capability regardless of it's native speed. Always connect TB2 devices first, and save anything TB1 for the end of the chain. -
Berkeley DB Java Edition (JE) and JRuby Interoperability
I finally got around to doing a quick test of calling Berkeley DB Java Edition (JE) from JRuby (JRuby is a 100% pure-Java implementation of Ruby).
Before we get to JE and JRuby you probably want to know the answer to this question: "Why you would want to run Ruby on a JVM?" The answer is threefold:
1. Ruby Performance. A large amount of effort has been put into tuning contemporary JVMs (e.g. Hotspot, Java 6, etc.) and Ruby programmers (through JRuby) can benefit from these tuning efforts. The JRuby guys have set a goal to make JRuby the fastest Ruby implementation available and Sun is certainly throwing their weight behind that effort.
2. Portability. JRuby is a Ruby interpreter that runs anywhere a Java 5 JVM runs. You download it as a single tar.gz and it will run pretty much anywhere.
3. Legacy Code. JRuby makes legacy Java apps and libraries available to Ruby programmers (did you ever think you'd see the word "legacy" next to the word "Java"?).
JE interoperability with JRuby is important because it means that Ruby programmers now have a simple, embeddable, ACID storage engine (JE) available to them.
To test this interoperability, I cobbled together a simple Ruby test program which does the following:
* Opens an Environment, Database, and Transaction
* Creates 10 records with keys 1..10 and marshaled Ruby Time instances as the corresponding data. This uses the Ruby Marshal package for the data binding and the JE Integer binding on the key side. There's no reason why you couldn't use different marshaling packages or methods for keys and data.
* Commits the transaction,
* Performs a Cursor scan to read those 10 records and prints out the Time instances, and
* Searches for and reads the record with key 5 (an arbitrary key) and prints out the Time instance that is the corresponding data
By the way, hats off to the JRuby developers: all of this code "just worked", out of the box, and most of my two hour investment was spent learning enough basic Ruby to make it all work. If you already know Ruby and JE, then demonstrating this interoperability would take you all of about 10 minutes.
This was all done at the "base API" level of JE and no modifications to JE were required. I used Transactions in my code, but there's no reason that you need to. Mark and I have been talking about how to integrate JE's Direct Persistence Layer (DPL) with JRuby and we think it can be done with some remodularization of some of the DPL code. This is exciting because it would provide POJO ACID persistence to Ruby programmers.
Linda and I have been talking about whether it makes sense to possibly use Ruby as a scripting platform for JE in the future. Given how easy it was to bring up JE and JRuby, this certainly warrants some further thought.
The Ruby code and corresponding output is shown below. By the way, if you see something that I didn't do "The Ruby Way", feel free to let me know.
I'd love to hear about your experiences with JE and JRuby. Feel free to email me a charles.lamb at <theobviousdomain dot com>.
require 'java'
module JESimple
require 'date'
# Include all the Java and JE classes that we need.
include_class 'java.io.File'
include_class 'com.sleepycat.je.Cursor'
include_class 'com.sleepycat.je.Database'
include_class 'com.sleepycat.je.DatabaseConfig'
include_class 'com.sleepycat.je.DatabaseEntry'
include_class 'com.sleepycat.je.Environment'
include_class 'com.sleepycat.je.EnvironmentConfig'
include_class 'com.sleepycat.je.OperationStatus'
include_class 'com.sleepycat.je.Transaction'
include_class 'com.sleepycat.bind.tuple.IntegerBinding'
include_class 'com.sleepycat.bind.tuple.StringBinding'
# Create a JE Environment and Database. Make them transactional.
envConf = EnvironmentConfig.new()
envConf.setAllowCreate(true)
envConf.setTransactional(true)
f = File.new('/export/home/cwl/work-jruby/JE')
env = Environment.new(f, envConf);
dbConf = DatabaseConfig.new()
dbConf.setAllowCreate(true)
dbConf.setSortedDuplicates(true)
dbConf.setTransactional(true)
db = env.openDatabase(nil, "fooDB", dbConf)
# Create JE DatabaseEntry's for the key and data.
key = DatabaseEntry.new()
data = DatabaseEntry.new()
# Begin a transaction
txn = env.beginTransaction(nil, nil)
# Write some simple marshaled strings to the database. Use Ruby
# Time just to demonstrate marshaling a random instance into JE.
for i in (1..10)
# For demonstration purposes, use JE's Binding for the key and
# Ruby's Marshal package for the data. There's no reason you
# couldn't use JE's bindings for key and data or visa versa or
# some other completely different binding.
IntegerBinding.intToEntry(i, key)
StringBinding.stringToEntry(Marshal.dump(Time.at(i * 3600 * 24)),
data)
status = db.put(txn, key, data)
if (status != OperationStatus::SUCCESS)
puts "Funky status on put #{status}"
end
end
txn.commit()
# Read back all of the records with a cursor scan.
puts "Cursor Scan"
c = db.openCursor(nil, nil)
while (true) do
status = c.getNext(key, data, nil)
if (status != OperationStatus::SUCCESS)
break
end
retKey = IntegerBinding.entryToInt(key)
retData = Marshal.load(StringBinding.entryToString(data))
dow =
puts "#{retKey} => #{retData.strftime('%a %b %d')}"
end
c.close()
# Read back the record with key 5.
puts "\nSingle Record Retrieval"
IntegerBinding.intToEntry(5, key)
status = db.get(nil, key, data, nil)
if (status != OperationStatus::SUCCESS)
puts "Funky status on get #{status}"
end
retData = Marshal.load(StringBinding.entryToString(data))
puts "5 => #{retData.strftime('%a %b %d')}"
db.close
env.close
end
Cursor Scan
1 => Fri Jan 02
2 => Sat Jan 03
3 => Sun Jan 04
4 => Mon Jan 05
5 => Tue Jan 06
6 => Wed Jan 07
7 => Thu Jan 08
8 => Fri Jan 09
9 => Sat Jan 10
10 => Sun Jan 11
Single Record Retrieval
5 => Tue Jan 06In my previous post (Berkeley DB Java Edition in JRuby), I showed an example of calling JE's base API layer and mentioned that Mark and I had been thinking about how to use the DPL from JRuby. Our ideal is to be able to define classes in Ruby, annotate those class definitions with DPL-like annotations, and have the JE DPL store them. There are a number of technical hurdles to overcome before we can do this. For instance, Ruby classes defined in JRuby do not map directly to underlying Java classes; instead they all appear as generic RubyObjects to a Java method. Granted, it would be possible for the DPL to fish out all of the fields from these classes using reflection, but presently it's just not set up to do that (hence the modification to the DPL that I spoke about in my previous blog entry). Furthermore, unlike Java, Ruby allows classes to change on the fly (add/remote new fields and methods) causing more heartburn for the DPL unless we required that only frozen Ruby classes could be stored persistently.
On thinking about this some more, we realized that there may be a way to use the DPL from JRuby, albeit with some compromises. The key to this is that in JRuby, if a Java instance is passed back to the "Ruby side" (e.g. through a return value or by calling the constructor for a Java class), it remains a Java instance, even when passed around in JRuby (and eventually passed back into the "Java side"). So what if we require all persistent classes to be defined (i.e. annotated) on the Java side? That buys us the standard DPL annotations (effectively the DDL), freezes the classes that the DPL sees, and still lets us benefit from the POJO persistence of the DPL. All of this can be done without modification to JE or the DPL using the currently available release. I cooked up a quick example that builds on the standard "Person" example in the DPL doc and included the code below.
require 'java'
module DPL
require 'date'
# Include all the Java and JE classes that we need.
include_class 'java.io.File'
include_class 'com.sleepycat.je.Environment'
include_class 'com.sleepycat.je.EnvironmentConfig'
include_class 'com.sleepycat.persist.EntityCursor'
include_class 'com.sleepycat.persist.EntityIndex'
include_class 'com.sleepycat.persist.EntityStore'
include_class 'com.sleepycat.persist.PrimaryIndex'
include_class 'com.sleepycat.persist.SecondaryIndex'
include_class 'com.sleepycat.persist.StoreConfig'
include_class 'com.sleepycat.persist.model.Entity'
include_class 'com.sleepycat.persist.model.Persistent'
include_class 'com.sleepycat.persist.model.PrimaryKey'
include_class 'com.sleepycat.persist.model.SecondaryKey'
include_class 'com.sleepycat.persist.model.DeleteAction'
include_class 'persist.Person'
include_class 'persist.PersonExample'
# Create a JE Environment and Database. Make them transactional.
envConf = EnvironmentConfig.new()
envConf.setAllowCreate(true)
envConf.setTransactional(true)
f = File.new('/export/home/cwl/work-jruby/JE')
env = Environment.new(f, envConf);
# Open a transactional entity store.
storeConfig = StoreConfig.new();
storeConfig.setAllowCreate(true);
storeConfig.setTransactional(true);
store = EntityStore.new(env, "PersonStore", storeConfig);
class PersonAccessor
attr_accessor :personBySsn, :personByParentSsn
def init(store)
stringClass = java.lang.Class.forName('java.lang.String')
personClass = java.lang.Class.forName('persist.Person')
@personBySsn = store.getPrimaryIndex(stringClass, personClass)
@personByParentSsn =
store.getSecondaryIndex(@personBySsn, stringClass, "parentSsn");
end
end
dao = PersonAccessor.new(store)
dao.init(store)
personBySsn = dao.personBySsn
person = Person.new('Bob Smith', '111-11-1111', nil)
personBySsn.put(person);
person = Person.new('Mary Smith', '333-33-3333', '111-11-1111')
personBySsn.put(person);
person = Person.new('Jack Smith', '222-22-2222', '111-11-1111')
personBySsn.put(person);
# Get Bob by primary key using the primary index.
bob = personBySsn.get("111-11-1111")
puts "Lookup of Bob => #{bob.name}, #{bob.ssn}"
children = dao.personByParentSsn.subIndex(bob.ssn).entities()
puts "\nRetrieving children of Bob"
while (true) do
child = children.next()
break if child == nil
puts "#{child.name}, #{child.ssn}"
end
children.close()
store.close
env.close
end -
How to get handle to a MST bean for a particular row in an advanced table
Hi
Requirement:
My advanced table has 2 columns, the 1st one has a LOV and the 2nd one is a switcher which toggles from LOV to MST depending on the value in the 1st column.
Implementation Steps:
1) Trap LOV event in 1st column and pass row index to the AM
2) Get the VO row from the row index (EVENT_SOURCE_ROW_REFERENCE), set the switcher attribute to MST/LOV depending on Business Logic
3) Get the view attribute value of the 2nd column (to which LOV/MST is mapped).
My LOV/MST gets rendered correctly on the page. However, when the LOV renders in the 2nd column, the view attribute is correctly populated in the LOV. But the MST renders with no value.
I understand that the MST loses value on form submission and that this value needs to be set in the PR of the CO. For that how do I get a handle to the MST bean of the particular row?
This is urgent!!
Thanks
RituPointers?
Anyway I can make the MST in the row return the correct view attribute? -
Mac/Windows interoperability
Dear nice people
I am attempting to optimise a small business environment (see specifications below) containing a mix of Macs and PCs currently using a Windows Server 2012 on a GBit ethernet (1000BASE-T) infrastructure. The Macs are not being backed up. I am considering locating a Firewire 800 supported RAID based mass storage device, such as the G-Technology 4TB G-RAID Professional High-Performance Dual-Drive Hard Drive, centrally to the three Macs and in addition to the Windows Server, because:
TimeMachine would backup Applications, folders, files and settings on each Mac allowing simple full restoration from a clean OS install
The storage device is a plug-and-play device for these Macs and the staff are not IT literate
TimeMachine can be configured easily on their Macs to such a device by the staff
These Macs do not have Thunderbolt
Connectivity is easy via Firewire 800
If the staff just use the device for TimeMachine backups only, that is a good result. They may find that FW800 is faster that GBit ethernet on what appears to me to be a slow Windows server anyway, so staff may use the storage device to store Mac critical business files instead of on the Windows server: their choice
If I assume that the above is reasonable, I have some questions arising. If you are able to answer one but not all questions, please clearly state which question you are addressing
Do I need to be concerned if the staff create an FW800 ring instead of a daisy chain when connecting to each other and/or the storage device?
Is an FW800 ring actually desirable - i.e. faster?
How can I address the backup needs of the two isolated Macs (see specifications below) which would be more than 5m from the storage device? (My understanding is that FW800 cables are generally 2m and that the specification supports 3m max).
(in 3 above) I realise I could specify an FW800 hub. Can you recommend such a hub for this scenario?
Each Mac would have a GBit ethernet connection to Windows and a FW800 connection to the storage device. Is multiple network connections such as this supported on OS X (specifically 10.8.4)?
Do I have any hardware interoperability issues given the age of some of the Macs? Specifically, is the FW800 specification the same on the 2008 and 2012 Macs?
Thank you in advance
Grytr
Specifications
Hardware & OS
8 x PC
1 x Mac Pro 5,1 (mid 2012) 16GB 10.8.4
1 x Mac Pro 3,1 (early 2008) 10GB 10.8.4
1 x iMac 8,1 (20 inch early 2008) 2GB 10.8.4
The above three Macs are within 3m of each other and all Macs and PCs connected to Windows Server using 1000BASE-T
2 x iMac 8,1 (24 inch early 2008) 2GB 10.8.4 approx 5m or more from the above Macs connected to Windows Server using 1000BASE-T.
Applications
A mix of native Mac applications such as MS Office, Sketchup Pro 2013, Adobe CS6 and VectorWorks 2013 (with very large models) plus Windows 7 Professional 64-bit applications running under Parrallels Desktop 9 for Mac such as SAGE 50 Accounts Professional and Rental Desk NX. At the moment, business critical PC & Mac files are stored on the Windows Server but the Macs are not backed up.All options are easy to remove, so don't worry about that. Also, just in case you are worried about viruses, spyware, etc. they will not spread to OS X if you get infected.
You really have 3 options:
Boot Camp
The installer does all the work for you, installs the drivers when Windows is finished installing, and it's generally very easy. The nice thing about this option is you have a real version of Windows. When you reboot into Windows, you ARE running Windows, just like any other laptop running Windows. The downside is that you have to reboot every time you need a Windows app.
VMware Fusion
This is a great option as well. Also easy to install. If you just use Fusion, it creates an entire "Windows machine" as a single file within OS X. If it gets infected or there is an issue, you can just delete the file. You can also make a backup of the "machine" and restore it if there are problems. Also, you can use Fusion WITH Boot camp, and get the best of both worlds. This is what I do. That way, if you need to boot into Windows, you restart and do it. If you just need to run a few programs, you can use Fusion and run them from inside of OSX, all on the same installation of Windows. Fusion just uses your Boot camp partition as its machine.
Parallels
Pretty much the same as Fusion, and you can use the Boot camp partition for this one as well.
I would really recommend using Boot camp and Fusion together, but if you don't see any need to actually boot into Windows, and you only need a few programs now and then, Fusion will work fine.
Updates are still necessary, by the way. The windows install is just as vulnerable as any other Windows machine, unfortunately, but again, it won't spread to OSX.
All three options are very easy to remove. Boot camp has an uninstall routine that will wipe out Windows and repartition the hard drive back to full size in about 2 or 3 minutes!!
And yes, you need a full version of Windows. -
Issue with Java - PHP interoperability
Hi,
There are some converts written in PHP that can take raw wikipedia data and output a good HTML. I wanted to make use of these in my Java code.
So in my Java Web App, I wanted to run the PHP parser, get hold of the InputStream and push it to my ServletOutputStream.
Code Snippet:
String command="php testparser.php Anarchism.wikimarkup";
proc = Runtime.getRuntime().exec(command);
InputStream in = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}But the problem here is that the PHP Process never stops and hence the Buffer never ends. THe program is waiting in infinite loop in readLine().
Please let me know if anyone has tried this and whats a better way to handle interoperability between PHP and Java.
Thanks,
PhaniPhanikumar_Bhamidipati wrote:
Yeah, I had a look at the document. But as per my understanding, the way the PHP engine runs is different from normal execs. I don't see how it can 'run different' and in my experience it doesn't. PHP sends output to stdout and stderr and reads from stdin. When PHP terminates it will close stdout and stderr and, if you have followed the recommendations in the reference, your readLine() will return 'null'.
Because the same code ran fine when I automated unzipping a set of files using "bunzip2" command.If you read the article it explains a possible reason for this BUT until you implement the recommendations you will not know what is wrong.
>
I tried using Process.waitFor() method as well, but the result is same (Infinite Loop).This almost certainly is nothing to do with Process.waitFor() and probably everything to do with buffers filling (probably stderr).
Until you post the code with the recommendations implemented that exhibits the same blocking problem it is a waste of time anyone responding further. -
I get the following error message and I looked it up in the knowledge base, and there was a solution for fixing the error message. However, I have no idea what they are talking about. I have downloaded the Customization Wizard, but I have no clue what the following means:
A) Create a new transform
B) Open your previously created .mst file
I went into the C Drive and opened Program Files. I found the Adobe folder, but I couldn't find an .mst file anywhere. Am I completely lost??? Below is the knowledge base solution:
Error: "There is a problem With Adobe Acrobat/Reader..." when you view a PDF in a browser (Acrobat and Adobe Reader 8 on Windows)
Issue
When you try to view a PDF in Internet Explorer, you see the error message, "There is a problem With Adobe Acrobat/Reader. Please exit Adobe Acrobat/Reader and try again." When you click OK to the error, the PDF opens outside of the browser.
Reason
When you use the Adobe Customization Wizard to create a transform for Adobe Acrobat 8 or Adobe Reader 8, and you choose the option to "Make Acrobat the default viewer if both Acrobat and Reader are installed", or "Make Reader the default viewer if both Acrobat and Reader are installed", an error occurs if the computer does not have Acrobat or Reader already installed.
Solution
Create a new transform and re-deploy Acrobat or Adobe Reader.
Start the Adobe Customization Wizard 8.
Open your previously created .mst file.
Under Installation Options, select "Installer will decide which product will be the default".
Save the transform.
Re-deploy Acrobat or Adobe Reader.
Additional Information
When you create a transform in Adobe Customization Wizard 8, the installation options allow you to set the default viewer for PDF files. "Installer will decide which product will be the default" is the default setting and should be used when you are uncertain if the target machine has a version of Acrobat or Adobe Reader that won't be removed as part of the installation process. When installed silently using this option, Acrobat will always be configured as the default viewer.I think you are headed down the wrong path. The Customization Wizard is what you use to push out Reader to several hundred computers. An MST is a package or transform file that is used to accomplish this task. Unless you are an IT person and are trying a deployment of Reader this solution does not fit your situation.
-
Nexus 4001i and MST tons of log errors
Went looking through my Nexus 4001i logs today, and started noticing a bunch of STP role and port change messages:
2013 Jul 5 14:40:31 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/1 instance MST0000 role changed to designated
2013 Jul 5 14:40:31 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port port-channel2 instance MST0000 role changed to alternate
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port port-channel1 instance MST0000 role changed to root
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/14 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/14 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/13 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/13 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/12 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/12 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/11 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/11 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/10 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/10 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/9 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/9 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/8 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/8 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/7 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/7 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/6 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/6 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/5 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/5 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/4 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/4 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/3 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/3 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/2 removed as MST Boundary port
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-PORT_ROLE: Port Ethernet1/2 instance MST0000 role changed to designated
2013 Jul 5 14:40:32 N4k-SLOT7-SW1 %STP-6-MST_PORT_BOUNDARY: Port Ethernet1/1 removed as MST Boundary port
After going through a variety of configuration validations, spanning-tree root and priority validations as well as making sure the instances and revisions between the various MST speaking switches (all of the Nexus gear including Nexus 5596 which are vPC peers, 4001i's which connect via vPC's to the 5596's, and Catalyst 3110X's which also use MST, but only have one uplink at this time to the 5596's not in a vPC setup).
None of the other devices appear to be experiencing this problem.
I am quite confused as to what is going on, and cannot figure out why the 4001i is wigging out like this.
A quick output of MST::
N4k-SLOT7-SW1# show spanning-tree mst
##### MST0 vlans mapped: 801-3109,3111-4094
Bridge address 6073.5c8d.7e82 priority 24576 (24576 sysid 0)
Root address 0023.04ee.be03 priority 16384 (16384 sysid 0)
port Po1 path cost 0
Regional Root address 0023.04ee.be03 priority 16384 (16384 sysid 0)
internal cost 500 rem hops 19
Operational hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured hello time 2 , forward delay 15, max age 20, max hops 20
Interface Role Sts Cost Prio.Nbr Type
Po1 Root FWD 500 32.4096 P2p
Po2 Altn BLK 1000 64.4097 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
##### MST1 vlans mapped: 2-499,600-800,3110
Bridge address 6073.5c8d.7e82 priority 24577 (24576 sysid 1)
Root address 0023.04ee.be03 priority 16385 (16384 sysid 1)
port Po1 cost 500 rem hops 19
Interface Role Sts Cost Prio.Nbr Type
Po1 Root FWD 500 128.4096 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
##### MST2 vlans mapped: 1,500-599
Bridge address 6073.5c8d.7e82 priority 24578 (24576 sysid 2)
Root address 0023.04ee.be03 priority 16386 (16384 sysid 2)
port Po2 cost 1000 rem hops 19
Interface Role Sts Cost Prio.Nbr Type
Po2 Root FWD 1000 128.4097 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
N4k-SLOT7-SW1# show spanning-tree detail | i occur|from|exec
MST0000 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 1 last change occurred 3:48:09 ago
from port-channel1
MST0001 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 1 last change occurred 3:48:07 ago
from port-channel1
MST0002 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 1 last change occurred 3:48:07 ago
from port-channel2
(topology change was due to testing rapid-PVST for this switch, and then putting it back, the previous change occured 555 hours ago).
N4k-SLOT9-SW2# show spanning-tree
MST0000
Spanning tree enabled protocol mstp
Root ID Priority 16384
Address 0023.04ee.be03
Cost 0
Port 4096 (port-channel1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24576 (priority 24576 sys-id-ext 0)
Address 2c54.2ded.b704
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Root FWD 500 128.4096 P2p
Po2 Altn BLK 1000 128.4097 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
MST0001
Spanning tree enabled protocol mstp
Root ID Priority 16385
Address 0023.04ee.be03
Cost 500
Port 4096 (port-channel1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24577 (priority 24576 sys-id-ext 1)
Address 2c54.2ded.b704
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Root FWD 500 128.4096 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
MST0002
Spanning tree enabled protocol mstp
Root ID Priority 16386
Address 0023.04ee.be03
Cost 1000
Port 4097 (port-channel2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24578 (priority 24576 sys-id-ext 2)
Address 2c54.2ded.b704
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po2 Root FWD 1000 128.4097 P2p
Eth1/1 Desg FWD 2000 128.129 Edge P2p
Eth1/2 Desg FWD 2000 128.130 Edge P2p
Eth1/3 Desg FWD 2000 128.131 Edge P2p
Eth1/4 Desg FWD 2000 128.132 Edge P2p
Eth1/5 Desg FWD 2000 128.133 Edge P2p
Eth1/6 Desg FWD 2000 128.134 Edge P2p
Eth1/7 Desg FWD 2000 128.135 Edge P2p
Eth1/8 Desg FWD 2000 128.136 Edge P2p
Eth1/9 Desg FWD 2000 128.137 Edge P2p
Eth1/10 Desg FWD 2000 128.138 Edge P2p
Eth1/11 Desg FWD 2000 128.139 Edge P2p
Eth1/12 Desg FWD 2000 128.140 Edge P2p
Eth1/13 Desg FWD 2000 128.141 Edge P2p
Eth1/14 Desg FWD 2000 128.142 Edge P2p
N4k-SLOT9-SW2# show spanning-tree detail | i occur|from|exec
MST0000 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 18758 last change occurred 4:01:03 ago
from port-channel1
MST0001 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 45742 last change occurred 4:01:02 ago
from port-channel1
MST0002 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 21007 last change occurred 599:47:47 ago
from port-channel2
N4k-SLOT9-SW2#
N5596-DC-SW1# show spanning-tree
MST0000
Spanning tree enabled protocol mstp
Root ID Priority 16384
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16384 (priority 16384 sys-id-ext 0)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Desg FWD 1000 128.4096 P2p
Po2 Desg FWD 200 128.4097 (vPC) P2p
Po3 Desg FWD 200 128.4098 (vPC) P2p
Po57 Desg FWD 200 128.4152 (vPC) P2p
Po100 Desg FWD 1000 128.4195 (vPC peer-link) Network P2p
Eth1/15 Desg FWD 2000 128.143 Edge P2p
Eth1/16 Desg FWD 2000 128.144 Edge P2p
MST0001
Spanning tree enabled protocol mstp
Root ID Priority 16385
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16385 (priority 16384 sys-id-ext 1)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po2 Desg FWD 200 128.4097 (vPC) P2p
Po3 Desg FWD 200 128.4098 (vPC) P2p
Po57 Desg FWD 200 128.4152 (vPC) P2p
Po100 Desg FWD 1000 128.4195 (vPC peer-link) Network P2p
MST0002
Spanning tree enabled protocol mstp
Root ID Priority 16386
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16386 (priority 16384 sys-id-ext 2)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Desg FWD 1000 128.4096 P2p
Eth1/15 Desg FWD 2000 128.143 Edge P2p
Eth1/16 Desg FWD 2000 128.144 Edge P2p
N5596-DC-SW1# show spanning-tree detail | i occur|from|exec
MST0000 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 44578 last change occurred 4:11:57 ago
from port-channel2
MST0001 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 98707 last change occurred 4:11:55 ago
from port-channel2
MST0002 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 4 last change occurred 4:11:55 ago
from port-channel1
N5596-DC-SW2# show spanning-tree
MST0000
Spanning tree enabled protocol mstp
Root ID Priority 16384
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16384 (priority 16384 sys-id-ext 0)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Desg FWD 1000 128.4096 P2p
Po2 Desg FWD 200 128.4097 (vPC) P2p
Po3 Desg FWD 200 128.4098 (vPC) P2p
Po57 Desg FWD 200 128.4152 (vPC) P2p
Po100 Root FWD 1000 128.4195 (vPC peer-link) Network P2p
Eth1/9 Desg FWD 20000 128.137 P2p
Eth1/15 Desg FWD 2000 128.143 Edge P2p
Eth1/16 Desg FWD 2000 128.144 Edge P2p
MST0001
Spanning tree enabled protocol mstp
Root ID Priority 16385
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16385 (priority 16384 sys-id-ext 1)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po2 Desg FWD 200 128.4097 (vPC) P2p
Po3 Desg FWD 200 128.4098 (vPC) P2p
Po57 Desg FWD 200 128.4152 (vPC) P2p
Po100 Root FWD 1000 128.4195 (vPC peer-link) Network P2p
Eth1/9 Desg FWD 20000 128.137 P2p
MST0002
Spanning tree enabled protocol mstp
Root ID Priority 16386
Address 0023.04ee.be03
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 16386 (priority 16384 sys-id-ext 2)
Address 0023.04ee.be03
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
Po1 Desg FWD 1000 128.4096 P2p
Eth1/9 Desg FWD 20000 128.137 P2p
Eth1/15 Desg FWD 2000 128.143 Edge P2p
Eth1/16 Desg FWD 2000 128.144 Edge P2p
N5596-DC-SW2# show spanning-tree | i occur|from|exec
N5596-DC-SW2# show spanning-tree detail | i occur|from|exec
MST0000 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 44234 last change occurred 4:12:45 ago
from port-channel100
MST0001 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 97804 last change occurred 4:12:43 ago
from port-channel100
MST0002 is executing the mstp compatible Spanning Tree protocol
Number of topology changes 49801 last change occurred 599:58:06 ago
from Ethernet1/9
Except from MST configs:
Nexus 4001i switches:
vlan 1,301-499
vlan 500
fip-snooping enable
vlan 600-800
spanning-tree mode mst
spanning-tree pathcost method long
spanning-tree mst 0-2 priority 24576
spanning-tree mst configuration
revision 1
instance 1 vlan 2-499,600-800,3110
instance 2 vlan 1,500-599
Nexus 5596 switches:
N5596-DC-SW1
spanning-tree mode mst
spanning-tree pathcost method long
spanning-tree mst 0-2 priority 16384
spanning-tree pseudo-information
mst 0-2 root priority 16384
mst 0-2 designated priority 16384
spanning-tree mst configuration
revision 1
instance 1 vlan 2-499,600-800,3110
instance 2 vlan 1,500-599
N5596-DC-SW2
spanning-tree mode mst
spanning-tree pathcost method long
spanning-tree mst 0-2 priority 16384
spanning-tree vlan 3110 priority 24576
spanning-tree pseudo-information
mst 0-1 designated priority 20480
mst 2 designated priority 16384
vlan 1-499,501,600-800 designated priority 20480
spanning-tree mst configuration
revision 1
instance 1 vlan 2-499,600-800,3110
instance 2 vlan 1,500-599
5596's vPC configs
N5596-DC-SW1
vpc domain 3
peer-switch
role priority 100
peer-keepalive destination 192.168.92.223 source 192.168.92.222
auto-recovery
N5596-DC-SW2
vpc domain 3
peer-switch
role priority 200
peer-keepalive destination 192.168.92.222 source 192.168.92.223
auto-recovery
Quick rundown of connections between devices:
Nexus 4001's connect to Nexus 5596's for ethernet data via twinax cables in a four port vPC between both Nexus 5596's.
Nexus 4001's connect to one Nexus 5596 a piece for FCoE two port LACP port channel. (hence the two instances, and vlan 1,500-599 in the same instance)
Catalyst 3110X connects via one Fiber-Optic connection to the N5596-DC-SW2, eventually will have two in a port-channel
Also keep in mind I corrected a priority conflict between the 3110X and Nexus 5596's earlier last month, which would explain all of the topology changes.
I can provide any other information if it is useful. I am just confused!I identified the problem.
Refer to
http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_2/nx-os/interfaces/configuration/guide/if_vPC.html
for more information.
The problem I encountered was self-inflicted.
Using the spanning-tree pseudo-information command creates a psuedo priority setup that if implemented after the global spanning-tree commands sits alongside the spanning-tree priority and vlan definitions. This is intended to allow for non-vPC VLANs to have their own spanning-tree definitions separate of the spanning-tree environment for the vPC vlans. I am not sure the best way to describe it, but if you are not running a hybrid vPC setup (where you have vPC member VLANs and non-vPC VLANS with a separate link between the 5596's for the non-vPC VLANs) this setup would help you ensure you have a stable spanning-tree and prevent unnecessary blocking.
When I enabled this command, I applied it to the vPC VLAN's as well, and that caused the Nexus 4001i's vPC links to constantly change port role, and update all of the edge ports subsequently. While I didn't see a performance impact to end hosts (not much traffic is on the Nexus DataCenter environment yet), I did get a torrent of logs as shown above.
Once I removed the spanning-tree pseudo-information, the switches quieted down and spanning-tree stabilized on the Nexus 4001i's.
I will revisit the configuration though for trunks not using vPC if it is needed. -
Adobe.mst file works in XP, but not in Windows 7
I have a little problem with customizing adobe in windows 7.
I have created a MST file in adobe costomization wizard 9, using XP, and when deploying it on a windows 7 client, it just deploy the msi file.
this is what i run:
msiexec.exe /qn ALLUSERS=2 /m MSIJDGEJ /norestart /i "AdbeRdr930_nb_NO.msi" TRANSFORMS="AdbeRdr930_nb_NO.mst"
Do i have to create the MST file from a windows 7 client?
BestNevermind, turns out that FF just didn't close properly when I was editing that file, after forcing it to close using taskmanager and starting again that userchrome.css worked just fine. Bug in closing the FF in this case.
-
Shared Calendar Interoperability (2013 / 2007)
Hello,
We have two Exchange servers in our Organization, a 2007 where most mailboxes reside, and a 2013 where we are slowly doing a one off user migration here and there to test the waters so to speak.
We have users that constantly have/had problems with Outlook freezing on send, or other connectivity issues. These are our first target people to move to the new server. I have one user who I moved yesterday who is trying to share a calendar
she calls "Managers Schedules" to other managers. She created this calendar and keep in mind she is on the 2013 server now. She shared it with reviewer permissions to 4 other employees but those 4 others are still on the 2007 server.
The other people are getting an email with links to view the calendar but they say that they cannot open it. The person sending this is also getting a message that they should publish the calendar. When they click yes to that, IE opens up
to Outlook Web Access???? I said lets just see what happens if you log into OWA. She did and it gave her some options to make the calendar public or private and it gave her two links to copy. Now I was able to open the one link... it downloaded
an ical file, however I am on the 2013 server. No one else can open the links.
So long story short, is there any kind of interoperability between shared calendars on Exchange 2007 and 2013 (vice versa)? Or am I going to have to move these 4 other users to the new server, which in turn will likely cause a chain reaction since
they are managers and have access to their employees email inboxes as additional mailboxes in Outlook.Hi,
We can’t directly share the calendar which is not the default calendar for a user. Generally, we would share a custom calendar by the following steps:
Right-click the custom Calendar, click Share > E-mail Calendar. Then the calendar would be added as an attachment in a message.
When the recipients receive the message, click Open this Calendar, a window would be prompted out to ask if add this Internet Calendar to Outlook. You should only open Calendars from sources you know and trust.
Please e-mail calendar in Outlook Online mode by the steps above. Then check whether the issue persists.
Regards,
Winnie Liang
TechNet Community Support
Maybe you are looking for
-
To set reason for rejection for 3rd party order materials
Hello, I have created the sales order with normal and 3 party materials, with reference to this order i have created the purchase order and delivered normal materials. after some period i am trying to put the reason for rejection code for 3 rd party
-
Now that I've installed my new windows CS6, all my .psd files have the 'generic icons' windows give to files they don't recognize. Everything else has normal icons (i.e. Illustrator files) but the Photoshop files are blank. This is true whether I'm
-
Edited mesh object--now can't redo clipping mask!!!
I edited the color properties of a mesh object that had a shaped clipping mask. Now I'd like to reapply the mask, but Illustrator, in its uniquely enigmatic fashion, will not allow that option in the layers palette. Any ideas on what could possibly b
-
Dynamic slideshow with pictures and Flash Video
I want to make a dynamic slideshow that shall include both pictures and Flash Video. The user shall only have to put the files (images/video) into a folder (for example with FTP or an admin-utility) and then the Flash slideshow should present theese
-
Dynamically find ClientID in javascript
Hello, I have a requirement to find the ADF's component( Output Text ) Client ID dynamically in my Javascript code . The Javascript is called during initial loading , I cannot have an event associated with output text that can get me clientID by "get