Tuesday, February 7. 2012
... bleiben noch sechs Veranstaltungen (man kann sich noch anmelden). Der Event in Düsseldorf war schon mal ein guter Auftakt. Viele Leute da, viele Fragen gehabt in den Kaffeepausen. Morgen nun Stuttgart ...
Fand meinen Vortrag ein wenig holprig, zuviel Reuse, bin irgendwie nicht in den Flow gekommen. Habe meinen Vortrag aber für die nächsten Veranstaltungen noch ein wenig umgebaut. Und bevor jemand fragt: Ja ... die Slideanzahl ist noch zweistellig  Hab doch nur 30 Minuten ....
PS: Mag mal jemand den Flughafenbetreibern in DUS sagen, das ein Hinweisschild ganz nett wäre, das es da einen Starbucks oben bei der Besucherterasse gibt? Ich bin stumpf dran vorbeigelaufen.
Thursday, February 2. 2012
Ich möchte nochmal auf die nächste Woche startende Veranstaltungsreihe zum Thema Solaris 11 hinweisen. Es gibt zwar schon viele Anmeldungen aber ich will "die Hütte voll sehen"  . Mehr Informationen sowie eine Agenda dazu findet ihr hier.
Monday, January 23. 2012
Im Februar läuft eine Reihe von Events in Deutschland und der Schweiz zum Thema Solaris 11. Die Events versprechen technisch sehr interessant werden, da die Sprecher jeweils sehr tief in der Materie sind. Über Detlef Drewanz - der bei allen Events dabei ist - muss ich seit dem Containerleitfaden genauso wie über Uli Gräf (der an einigen, aber nicht allen Orten spricht) wohl nichts mehr sagen. Christian Christian Ritzka und Elke Freymann sind ausgewiesene Experten zum Thema OpsCenter. Und ja .. ich halte auch einen Vortrag über Datamanagement in Solaris 11. Und da ich schon zweimal die Frage gesehen habe: Die Veranstaltung ist kostenfrei
| | | 08:30 - 09:00 | Registrierung | | 09:00 - 09:15 | Begrüßung | | 09:15 - 10:00 | Was ist neu in Oracle Solaris 11 Viele Features, die im Rahmen der Solaris 10 Entwicklung in Solaris 11 Express eingeflossen sind, finden sich auch in Solaris 11 wieder. Diese Präsentation gibt einen Überblick über die neusten Features. | | 10:00 - 11:00 | Oracle Solaris 11 Installation Die wohl herausragendste Eigenschaft von Oracle Solaris 11 ist das neue Package System IPS und der Autoinstaller, die die Installation und das Management von Oracle Solaris 11 vereinfachen. Lernen Sie die neuen Techniken kennen und lassen Sie sich zeigen, wie einfach das Patchen unter Oracle Solaris 11 ist. | | 11:00 - 11:30 | Pause | | 11:30 - 12:30 | Oracle Virtualisierung In Oracle Solaris 11 sind umfangreiche Virtualisierungstechniken integriert. Lernen Sie alles über die neue Netzwerk Virtualisierung in Oracle Solaris 11 und wie sie komplette multi-tier HW Infrastrukturen in einer einzelnen Maschine zusammen mit dem Oracle Virtual Machine framework und Solaris Zonen realisiert werden kann.
| | 12:30 - 13:30 | Mittagessen | | 13:30 - 14:15 | Management von IT Infrastrukturen Virtualisierung heist nicht nur "Hypervisor". In diesem Vortrag zeigen wir, wie sich virtualisierte Oracle Solaris 11 Umgebungen zentral verwalten lassen. | | 14:15 - 14:45 | Das Solaris Schulungsprogramm Oracle University stellt zusammen mit unseren Schulungspartnern ein umfassendes Programm zur Vertiefung von Solaris Wissen zur Verfügung. In diesem Vortrag werden die Ausbildungpfade, Kurse und Zertifizierungen für Solaris 11 beleuchtet und verfügbare Lernformen vorgestellt. | | 14:45 - 15:15 | Pause | | 15:15 - 15:45 | Oracle Solaris 11 Datamanagement Oracle Solaris 11 hat umfassende Datamanagement Funktionen integriert. Lernen Sie die neusten ZFS features wie Data Encryption und Deduplikation kennen und wie Sie diese Funktionen über die CIFS-Integration im Kernel auch anderen Plattformen zur Verfügung stellen können. | | 15:45 - 16:15 | Panel, Q&A
| | 16:15 - 16:45 | Erfrischungen, Zeit zur Diskussion mit den Experten |
Die genaue Agenda mit den Sprechern in den einzelnen Orten und eine Möglichkeit zur Anmeldung findet ihr auf den Eventseiten:
Um zahlreiches Erscheinen wird gebeten!
Tuesday, January 10. 2012
Brendan Gregg wrote a really interesting article about tracing ZFS: Activity of the ZFS ARC. Really worth a read.
Sunday, January 8. 2012
Buffer Extermination? WTF? Normally i'm seeing wait events like "buffer busy", "log sync" or "db file sequential read" when doing my research in Oracle installation in Top5 events when i'm called because of a situation where the performance is not quite at the level the customer wants. I was sitting in front of the console of an system still using 10g as it's database.
I want to add, that the performance problem had its root somewhere else and was quickly found, however this log wait sparked my interest. A much simpler reason. It was the curiosity afterwards, why there were peaks in the wait event statistics in regular intervals with this wait event i never saw before.
"Buffer exterminate"? WTF ... again. Sounds dangerous. Never saw that before in that list, and than my brain rotated … what the heck is "Buffer Exterminate", i have an idea, something is ringing in my head, but somehow my long-term memory management unit of my brain was unable to stage this information in to current working set. Okay … ask Dr. Google.
Metalink [ID 259137.1] is of great help here. The "buffer exterminate" wait occurs (and can only occur), when the buffer cache is shrunk dynamically and a session wants to access data that is in the granule of the buffer that is chosen by Oracle for removal from the buffer cache. The session wanting the block has to wait until the buffer to be removed has been freed to read it from disk then. You can't simply read the block from disk without waiting, as the block in the granule may represent a new state of the block than the one on the disk an simply reading the one from the disk would yield just outdated data. So you can just wait until the granule has been released.
Before you ask, what a granule is: Oracle doesn't allocate memory in the SGA bytewise, but in so called granules. A granule is 4 MB of memory, when your SGA is up to 1 GB when the instance starts. It's 16 MB when your SGA is larger than 1GB at startup.
In Oracle DB 10g, there is a feature called "Automatic Shared Memory Management". The idea is, that Oracle itself monitors the load and configures the layout of the SGA. I think of automatic means as a very good feature. It's like with manual and automatic gearboxes. Surely, a good driver can accelerate faster with a manual gearbox than with an automatic gearbox, however an automatic gearbox is faster and better than 99% of all drivers. That said, given the existence of behaviour patterns explained by the Dunning-Kruger-effect (h/t to Chris Colomb for hinting me to this interesting phenomenon), 99% of drivers think are part of the 1%. This is especially epidemic in Germany. But back to the issue. It's the same with tuning of systems
You activate the ASMM by setting the parameter SGA_TARGET to a value unequal to zero. Now the system sizes the buffer cache ( DB_CACHE_SIZE), shared pool ( SHARED_POOL_SIZE), large pool ( LARGE_POOL_SIZE) and Java pool ( JAVA_POOL_SIZE) automatical within the limit set by SGA_TARGET. If one of the other parameters controling one of the mentioned memory areas is set to a value other than 0, the value is assume as the minimum amount of memory.
Of course: When you have fixed SGA_TARGET and you want to grow one part, another has to shrink. It's obvious that you can't do shrinking simply by throwing the block out of the memory. There may be dirty blocks in that granule(changed blocks that weren't written to disk so far by the database writer to the database file, just to the redo logs).
This works really good and this relieves the admin from investing time to find good values for some of the most important SGA parameters.
However if your database tries to move memory back and forth from one kind of shared memory to another tens of times per hour this is surely not without impact on your database performance. I had such a situation in this case. The system started to move around memory in minute intervals just to move it back a minute or two later. As most automatic systems they will work perfectly within their specification, but you may hit a situation where tries to get most out of a situation with restricted resources, where the SGA is confronted with the situation that all components want more memory and as soon you remove memory from one parts, the other part cries and wants its memory back. That's similar to the argument with your significant other about what's the half of the blanket. Better have two blankets  Or to get back to the topic: Have enough SGA ...
How do you find out, how many resizing operations took place? You can look that up by a select statement as described in this blog:
select START_TIME, component, oper_type, oper_mode,status, initial_size/1024/1024 "INITIAL", target_size/1024/1024 "TARGET", FINAL_SIZE/1024/1024 "FINAL", END_TIME from v$sga_resize_ops order by start_time, component;
With this statement you will see the recent history of resizings.
In this case a slight increase (4 gigs) of the target size of the SGA moved the system away from growing and shrinking the buffers back and forth. And not a single "buffer extermination" was seen afterwards and no peaks in the wait time statistics and the number of resizing ops was down to one per hour. And that was more than okay.
Other solutions would be the deactivation of ASMM (by setting SGA_TARGET to zero) and configuring everything manually(doing it the old way) or setting some reasonable minima for the values controlled by ASMM. Important to know: In the amount specified SGA_TARGET is not only the amount of memory for the four parts mentioned before, it's for the complete SGA. So the amount of memory used for other parts of the SGA than those managed by ASMM has to deducted from the SGA_TARGET size. And this reduced amount of SGA is available for the SGA areas managed by ASMM.
Sunday, January 1. 2012
Okay … it's 2012 … and according to some people the world will end this year. However what's really happening? It's the mayan version of the Y2038 problem. While the signed 32 bit integer will send us to the 70ies on 03:14:07 UTC on Tuesday, 19 January 2038, the same happens on 22. December 2012. The mayan calender will send us from 13.0.0.0.0 to 0.0.0.0.0. And sorry, there is more potential in the Y2038 problem to kill us all as in the mayan calendar because nobody used the mayan calendar in embedded systems for nuclear weapons, nuclear power stations, isolation fields for strangelets created in the LHC (  ) , air traffic control. With 32 bit signed integer i'm not so sure
Friday, December 30. 2011
The year almost over. As usual at this time i'm finalizing my tax declaration at the moment. But nevertheless i wanted to write a short article about the last year.
The year started quite bad. In March i had a really bad argument with a good friend and we didn't talked a word since that. Albeit my communication habits could have been better in that days, i assume the writing were on the wall before that day in march and it was just a matter of when, not if, when the argument broke loose.
But starting in June the world just gone downhill for me. It started with the events that finally led to the state the blog currently is. That is really a large thorn sitting in the flesh hurting me all the time. However the consequences were inevitable.
The job had two really great satisfying moments for me with larger successful projects, and a number of others were i was able to help others to find problems. That was really and deeply satisfying moments.
Other things weren't that well as well: Just two main ones … in my vacation i was ill at the weekend and needed almost the complete vacation to get really rid of that nasty bug, and then just 2 days in the job again i broke my ankle and had a torn ankle ligament. While it was painful at least my body seems still to have its good regeneration capabilties in regard of injuries. I don't need painkillers any longer and i'm just wearing the aircast orthotic device at the moment. 24 days is not that bad.
On the good side: My house is almost completed … perhaps 3 month of work in the evening left. So i will have more time to other things soon: Like really pursuing new opportunities - career as well as personal - , finding a new hobby in the year one after almost two years of construction work that rules out any other free time things. Like reading through the heap of books that piled up this year, to get rid of several kilos. Finding a new car in February. Thinking of a nice S60 at the moment. Trying not to break my bones again. And perhaps a longer vacation abroad this year.
I wish you all a good transition into the next year and successful 2012.
Wednesday, December 28. 2011
Work in Progress - this entry will change often in the next days and weeks
A few days^H^H^H^Hweeks ago, i wrote about simulating the cloud that is most often tagged with the name "network" or "intranet" and sometimes "internet" . This would not be c0t0d0s0.org without an article to explain how you can configure this. This article will explain how you simulate a complete network on a single host with routers, switches, dynamic routing protocols and so on
Scope
At first i want to set the expectations right. I don't want to simulate a cloud in the sense of cloud computing here. I'm thinking about something more complex:
I'm talking about the simulation of this cloud, that often hides a lot of complexities and traps in architectural diagrams.
A word of caution first
This article uses a invisible feature. You don't see that it's there because it isn't in the man page, it isn't in the help output of the dladm command. But it's there. It's the commands dladm create/modify-simnet. As it's undocumented i assume it just can disappear without any notice, because it's not there. Don't complain here when it disappears, don't complain at Oracle. Of course no support. You know the game. Consider it as an artifact. As a diagnosis socket labeled "Only for factory use". Consider it as the testing wiring existing in every technical product that's just use for the testing when the product leaves the factory. Never ever use it in production.
Why i'm writing about this "feature" here? Because it's useful. Because there are a multitude of hints that this function exists. All of them are public. The zonestat documentation mentions a "simnet" type at docs.oracle.com and from there you are just a google away from the PSARC case 2009/200. And the source code at src.opensolaris.org shows it as well. From there it's just curiosity to find everything else out that is used in this text.
About this article
I stumbled the first time over this command when i searched for something in the dladm source at src.opensolaris.org. A month ago my former colleague Brian Utterback remembered me of this and i though "let's check if this is still working". And to my astonishment it still worked.
Writing this article takes virtually forever. Because of my broken ankle i took painkillers and that made me somewhat drownsy. And this drownsyness slowed down everything. Thus i decided to create this article under your observation to get it finally out of the door. Thus it's work in progress.
simnet
I just write about simnet. What are simnets? I just want to point you to the PSARC case for indepth information. It's available on opensolaris.org in the caselog. But in short: Simnets are simulated networks. It's a mechanism to test networking protocols. And in this example we will use it exactly for this purpose. Testing networking.
Okay, let's assume you are admin of FUBAR Inc. You want to recreate your network in a box. You have offices in Hamburg, London, Singapore, New York and San Francisco. In each office you have a multi-legged router, connecting to a switch for the internal network with servers an clients, the other interfaces of the switch are connecting to the other routers. As an image says more than 1000 words i will just summarize the network with this figure.

Configuring it
Of course the and the servers will be zones. However we have to recreate the network topology as well. And that's the point where we use the the simnet non-feature.
We need a the switches in our offices first. Those are really easy to configure
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-bridge london
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-bridge hamburg
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-bridge singapore
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-bridge newyork
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-bridge sanfrancisco
Now i need some switchports. At first i create some switch ports in order to connect the switch to the router.
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonsw1_255
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sanfranciscosw1_255
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet newyorksw1_255
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgsw1_255
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet singaporesw1_255
Now i create some additional switchports to connect servers.
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonsw1_1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonsw1_2
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgsw1_1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet singaporesw1_1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet newyorksw1_1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sanfranciscosw1_1
Ports meant for the bridge are nice, however they should be connected with the bridge.
root@cloudinabox:/opt/cloudsimulation/zones# dladm add-bridge -l londonsw1_1 -l londonsw1_2 -l londonsw1_255 london
root@cloudinabox:/opt/cloudsimulation/zones# dladm add-bridge -l hamburgsw1_1 -l hamburgsw1_255 hamburg
root@cloudinabox:/opt/cloudsimulation/zones# dladm add-bridge -l singaporesw1_1 -l singaporesw1_255 singapore
root@cloudinabox:/opt/cloudsimulation/zones# dladm add-bridge -l sanfranciscosw1_1 -l sanfranciscosw1_255 sanfrancisco
root@cloudinabox:/opt/cloudsimulation/zones# dladm add-bridge -l newyorksw1_1 -l newyorksw1_255 newyork
Let's now create all the interfaces we need for the routers.
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonrouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgrouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgrouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgrouter3
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet newyorkrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet newyorkrouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sinrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sinrouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sinrouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sforouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sforouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sforouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sforouter3 >
And of course we need interfaces for all the servers
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonsrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet londonsrv2
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet hamburgsrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet singaporesrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet sanfranciscosrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm create-simnet newyorksrv1
Now we have to create logical cables … lots of them. At first the routers with their switches.
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p londonsw1_255 londonrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p hamburgsw1_255 hamburgrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p singaporesw1_255 sinrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p newyorksw1_255 newyorkrouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p sanfranciscosw1_255 sforouter0
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p hamburgrouter1 londonrouter1
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p sforouter1 hamburgrouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p sinrouter1 hamburgrouter3
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p sforouter3 sinrouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p newyorkrouter1 sforouter2
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p hamburgsw1_1 hamburgsrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p singaporesw1_1 singaporesrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p newyorksw1_1 newyorksrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p londonsw1_1 londonsrv1
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p londonsw1_2 londonsrv2
root@cloudinabox:/opt/cloudsimulation/zones# dladm modify-simnet -p sanfranciscosw1_1 sanfranciscosrv1
Uff … on the networking side this is all.
The active configuration should look something like that ...
root@cloudinabox:/home/jmoekamp# dladm show-link
LINK CLASS MTU STATE OVER
net1 phys 1500 unknown --
net2 phys 1500 up --
net0 phys 1500 unknown --
london0 bridge 1500 up londonsw1_1 londonsw1_2 londonsw1_255
hamburg0 bridge 1500 up hamburgsw1_1 hamburgsw1_255
singapore0 bridge 1500 up singaporesw1_1 singaporesw1_255
newyork0 bridge 1500 up newyorksw1_1 newyorksw1_255
sanfrancisco0 bridge 1500 up sanfranciscosw1_1 sanfranciscosw1_255
londonsw1_255 simnet 1500 up londonrouter0
sanfranciscosw1_255 simnet 1500 up sforouter0
newyorksw1_255 simnet 1500 up newyorkrouter0
hamburgsw1_255 simnet 1500 up hamburgrouter0
singaporesw1_255 simnet 1500 up sinrouter0
londonsw1_1 simnet 1500 up londonsrv1
londonsw1_2 simnet 1500 up londonsrv2
hamburgsw1_1 simnet 1500 up hamburgsrv1
singaporesw1_1 simnet 1500 up singaporesrv1
newyorksw1_1 simnet 1500 up newyorksrv1
sanfranciscosw1_1 simnet 1500 up sanfranciscosrv1
londonrouter0 simnet 1500 up londonsw1_255
londonrouter1 simnet 1500 up hamburgrouter1
hamburgrouter0 simnet 1500 up hamburgsw1_255
hamburgrouter1 simnet 1500 up londonrouter1
hamburgrouter2 simnet 1500 up sforouter1
hamburgrouter3 simnet 1500 up sinrouter1
newyorkrouter0 simnet 1500 up newyorksw1_255
newyorkrouter1 simnet 1500 up sforouter2
sinrouter0 simnet 1500 up singaporesw1_255
sinrouter1 simnet 1500 up hamburgrouter3
sinrouter2 simnet 1500 up sforouter3
sforouter0 simnet 1500 up sanfranciscosw1_255
sforouter1 simnet 1500 up hamburgrouter2
sforouter2 simnet 1500 up newyorkrouter1
sforouter3 simnet 1500 up sinrouter2
londonsrv1 simnet 1500 up londonsw1_1
londonsrv2 simnet 1500 up londonsw1_2
hamburgsrv1 simnet 1500 up hamburgsw1_1
singaporesrv1 simnet 1500 up singaporesw1_1
sanfranciscosrv1 simnet 1500 up sanfranciscosw1_1
newyorksrv1 simnet 1500 up newyorksw1_1
Zone Creation
Okay, now we have to create the zones.
mkdir -p /opt/cloudsimulation/zones
zfs create rpool/zones
zfs set mountpoint=/zones rpool/zones
We create a lot of controlfiles first. With this controlfiles we will feed zonecfg later on. I created the /opt/cloudsimulation/zones directory to hold them. Of course it's useful to have an own ZFS filesystem in order to enable the zone creation process to simply copy the data needed by a zone by creating a clone of a filesystem.
/opt/cloudsimulation/zones/templateserver
create -b
set zonepath=/zones/templateserver
set brand=solaris
set autoboot=false
set ip-type=exclusive
/opt/cloudsimulation/zones/londonrouter:
create -b
set zonepath=/zones/londonrouter
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=londonrouter0
end
add net
set configure-allowed-address=true
set physical=londonrouter1
end
/opt/cloudsimulation/zones/hamburgrouter
create -b
set zonepath=/zones/hamburgrouter
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=hamburgrouter0
end
add net
set configure-allowed-address=true
set physical=hamburgrouter1
end
add net
set configure-allowed-address=true
set physical=hamburgrouter2
end
add net
set configure-allowed-address=true
set physical=hamburgrouter3
end
/opt/cloudsimulation/zones/singaporerouter:
create -b
set zonepath=/zones/singaporerouter
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=sinrouter0
end
add net
set configure-allowed-address=true
set physical=sinrouter1
end
add net
set configure-allowed-address=true
set physical=sinrouter2
end
/opt/cloudsimulation/zones/sanfranciscorouter:
create -b
set zonepath=/zones/sanfranciscorouter
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=sforouter0
end
add net
set configure-allowed-address=true
set physical=sforouter1
end
add net
set configure-allowed-address=true
set physical=sforouter2
end
add net
set configure-allowed-address=true
set physical=sforouter3
end
/opt/cloudsimulation/zones/newyorkrouter:
create -b
set zonepath=/zones/newyorkrouter
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=newyorkrouter0
end
add net
set configure-allowed-address=true
set physical=newyorkrouter1
end
Whois is wondering about the sfo and sin IATA shorthands that i've used instead of the long names in other "cities". Quagga doesn't seem to like interface names longer than 16 characters.
Okay. Now we have to create all the zones. That's easy. As i said, i will just feed the control files into zonecfg with the -f option.
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z templateserver -f /opt/cloudsimulation/zones/templateserver
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z templaterouter -f /opt/cloudsimulation/zones/templaterouter
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z londonrouter -f /opt/cloudsimulation/zones/londonrouter
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z singaporerouter -f /opt/cloudsimulation/zones/singaporerouter
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z hamburgrouter -f /opt/cloudsimulation/zones/hamburgrouter
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z sanfranciscorouter -f /opt/cloudsimulation/zones/sanfranciscorouter
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z newyorkrouter -f /opt/cloudsimulation/zones/newyorkrouter
Okay, at first we install the template zone. We do a full install here. and that's pretty much the only purpose … to have one installed baseline zone as providing the starting point for all other zones. This may take a while. Depending on your system you may opt for a coffee or two.
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z templateserver install
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T184237Z.templateserver.install
Image: Preparing at /zones/templateserver/root
Install Log: /system/volatile/install.4469/install_log
AI Manifest: /tmp/manifest.xml.oBayTi
SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
Zonename: templateserver
Installation: Starting ...
Creating IPS image
Installing packages from:
solaris
origin: http://pkg.oracle.com/solaris/release/
DOWNLOAD PKGS FILES XFER (MB)
Completed 167/167 32062/32062 175.8/175.8
PHASE ACTIONS
Install Phase 44313/44313
PHASE ITEMS
Package State Update Phase 167/167
Image State Update Phase 2/2
Installation: Succeeded
Note: Man pages can be obtained by installing pkg:/system/manual
done.
Done: Installation completed in 1423,641 seconds.
Next Steps: Boot the zone, then log into the zone console (zlogin -C)
to complete the configuration process.
Log saved in non-global zone as /zones/templateserver/root/var/log/zones/zoneadm.20111217T184237Z.templateserver.install
We never boot this one, it's just to ease the next steps.
Okay, now we prepare the real zones. You don't have to to the next steps, however they relief you from login into each zones and going to the same dialog windows. We will use a simple trick to circumvent the need to go through each sysconfig dialog in each router we will use a simple trick. You can create a xml file containing the necessary data and pass it to the cloning of the zone.
Important: I want to make the resulting xml file as generic as possible, thus i won't configure networking via this process, albeit this is possible. As it's a CUI, i will guide you through this dialog with some pictures.
root@cloudinabox:/opt/cloudsimulation/zones# sysconfig create-profile -o template.xml






After leaving the last screen, you should yield a file with content similar to this:
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="profile" name="sysconfig">
<service version="1" type="service" name="system/config-user">
<instance enabled="true" name="default">
<property_group type="application" name="root_account">
<propval type="astring" name="login" value="root"/>
<propval type="astring" name="password" value="$5$35worB11$/EeCnO5t2zOHhasRQeWeVyWuGLFFUFLQGmOhKPX82m2"/>
<propval type="astring" name="type" value="role"/>
</property_group>
<property_group type="application" name="user_account">
<propval type="astring" name="login" value="radmin"/>
<propval type="astring" name="password" value="$5$XztZ799F$GVL48echivvJcPl.BRcVvnn3/M8Z7L6LhmyVPP04J/2"/>
<propval type="astring" name="type" value="normal"/>
<propval type="astring" name="description" value="routeradm"/>
<propval type="count" name="gid" value="10"/>
<propval type="astring" name="shell" value="/usr/bin/bash"/>
<propval type="astring" name="roles" value="root"/>
<propval type="astring" name="profiles" value="System Administrator"/>
<propval type="astring" name="sudoers" value="ALL=(ALL) ALL"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="system/timezone">
<instance enabled="true" name="default">
<property_group type="application" name="timezone">
<propval type="astring" name="localtime" value="UTC"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="system/environment">
<instance enabled="true" name="init">
<property_group type="application" name="environment">
<propval type="astring" name="LANG" value="C"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="system/identity">
<instance enabled="true" name="node">
<property_group type="application" name="config">
<propval type="astring" name="nodename" value="jamphfhn"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="system/keymap">
<instance enabled="true" name="default">
<property_group type="system" name="keymap">
<propval type="astring" name="layout" value="German"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="system/console-login">
<instance enabled="true" name="default">
<property_group type="application" name="ttymon">
<propval type="astring" name="terminal_type" value="sun-color"/>
</property_group>
</instance>
</service>
<service version="1" type="service" name="network/physical">
<instance enabled="true" name="default">
<property_group type="application" name="netcfg"/>
</instance>
</service>
</service_bundle>
Before you ask, the password for radmin and root is n0mn0mn0m. And the jamphfhn just stands for "just a meaningless placeholder for hostname".
Okay, i will create another template zone. This is because a routing zone will have some special properties that a zone acting as a server doesn't need and i don't want such properties in the server zones.
At first i just take the template.xml script and substitute the hostname. I could simply do it via vi, but for a tutorial a simple shell line is more efficient.
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/templaterouter/ > templaterouter.xml
I use the newly created file as an input for the zone clone command.
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z templaterouter clone -c /opt/cloudsimulation/zones/templaterouter.xml templateserver
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T193101Z.templaterouter.clone
Log saved in non-global zone as /zones/templaterouter/root/var/log/zones/zoneadm.20111217T193101Z.templaterouter.clone
As the system just creates a zfs clone the command should return after a small period of time. Now we can log into the console of the zone with zlogin.
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z templaterouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C templaterouter
[Connected to zone 'templaterouter' console]
Hostname: unknown
Hostname: templaterouter
templaterouter console login: radmin
Password:
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@templaterouter:~$
radmin@templaterouter:~$ sudo bash
Password:
Dec 17 19:36:33 templaterouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
root@templaterouter:/home/radmin#
I wrote earlier, that the template for the router contains some additional stuff. At first i need a telnet client. It will get obvious why i need it later on:
root@templaterouter:/home/radmin# pkg install pkg://solaris/network/telnet
Packages to install: 1
Create boot environment: No
Create backup boot environment: No
DOWNLOAD PKGS FILES XFER (MB)
Completed 1/1 8/8 0.1/0.1
PHASE ACTIONS
Install Phase 22/22
PHASE ITEMS
Package State Update Phase 1/1
Image State Update Phase 2/2
Okay, now let's install quagga. Quagga is a suite of daemons to implement dynamic routing protocols:
root@templaterouter:/home/radmin# pkg install quagga
Packages to install: 1
Create boot environment: No
Create backup boot environment: No
Services to change: 3
DOWNLOAD PKGS FILES XFER (MB)
Completed 1/1 89/89 2.7/2.7
PHASE ACTIONS
Install Phase 132/132
PHASE ITEMS
Package State Update Phase 1/1
Image State Update Phase 2/2
Loading smf(5) service descriptions: 2/2
Okay, now we have to configure some basics that are equal to all the router in the network.
At first we activate forwarding. With this activation, you enable the operating system to accept packets on one interface
root@templaterouter:/home/radmin# routeadm -e ipv4-forwarding
ipv4-routing tells the system to startup routing protocol daemons. When you have a default router configured it's disabled, when there isn't one this setting is enabled per default.
root@templaterouter:/home/radmin# routeadm -e ipv4-routing
Okay, now we have to do some quagga configurations. I want to use quagga with OSPF, so there are two important services for me. Zebra and ospf. Zebra is the layer, that the quagga suite used to interact with the system. Why is it called Zebra? I assume it's history, the old GNU routing protocol daemon suite was called zebra, quagga is the follow-on project as zebra is now a defunct software development project. What do we configure here.
Both daemons offer a command line for interfaction with the daemon. We configure both just to react from 127.0.0.1 (aka localhost). The zebra daemon has it's console on port 2602, the ospf daemon listens on port 2601. And this both ports are the reason we need telnet on our routers. You access the consoles via telnet.
root@templaterouter:/home/radmin# routeadm -m zebra:quagga vty_port="2602"
root@templaterouter:/home/radmin# routeadm -m ospf:quagga vty_port="2601"
root@templaterouter:/home/radmin# routeadm -m zebra:quagga vty_address="127.0.0.1"
root@templaterouter:/home/radmin# routeadm -m ospf:quagga vty_address="127.0.0.1"
With this command we tell Solaris to use ospf as the routing protocol for ipv4 purposes.
root@templaterouter:/home/radmin# routeadm -s routing-svcs=ospf:quagga -e ipv4-routing
Now we have to activate the new setting
root@templaterouter:/home/radmin# routeadm -u
You should now get some weired SMF error messages that some services couldn't start up. that's normal because there are no configuration files available for the quagga suite. Don't think about it, just shut the zone down now.
root@cloudinabox:/home/jmoekamp# zoneadm -z templaterouter halt
Okay, now we have derived our template for the router zones from the generic template for zones. We use this template for installing all the router zones now.
Okay, i just wrote about quagga config files. I want to prepare them now in order to be able just to copy them into the zones before starting them up and thus to circumvent the error messages. We need a lot of them.
- London
/opt/cloudsimulation/zones/zebra.london.conf
hostname londonrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/zebra.log
line vty
/opt/cloudsimulation/zones/ospfd.london.conf
hostname londonrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/ospf.log
!
!
!
interface lo0
!
interface londonrouter0
!
interface londonrouter1
!
router ospf
redistribute connected
network 10.1.1.0/24 area 0.0.0.0
!
line vty
!
- Hamburg
/opt/cloudsimulation/zones/zebra.hamburg.conf
hostname hamburgrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/zebra.log
line vty
/opt/cloudsimulation/zones/ospfd.hamburg.conf
hostname hamburgrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/ospf.log
!
!
!
interface lo0
!
interface hamburgrouter0
!
interface hamburgrouter1
!
interface hamburgrouter2
!
interface hamburgrouter3
!
router ospf
redistribute connected
network 10.1.1.0/24 area 0.0.0.0
network 10.1.2.0/24 area 0.0.0.0
network 10.1.3.0/24 area 0.0.0.0
!
line vty
!
- Singapore
/opt/cloudsimulation/zones/zebra.singapore.conf
!
! Zebra configuration saved from vty
! 2011/12/12 20:20:13
!
hostname sinrouter
password nomnomnom
enable password nomnomnom
log file /var/adm/quagga/zebra.log
!
interface lo0
!
line vty
!
/opt/cloudsimulation/zones/ospfd.singapore.conf
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/ospf.log
!
interface lo0
!
interface sinrouter0
!
interface sinrouter1
!
interface sinrouter2
!
router ospf
redistribute connected
network 10.1.2.0/24 area 0.0.0.0
network 10.1.4.0/24 area 0.0.0.0
!
line vty
!
- San Francisco
/opt/cloudsimulation/zones/zebra.sanfrancisco.conf
hostname sforouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/zebra.log
line vty
/opt/cloudsimulation/zones/ospfd.sanfrancisco.conf
!
! Zebra configuration saved from vty
! 2011/12/11 04:30:44
!
hostname sforouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/ospf.log
!
!
!
interface lo0
!
interface sforouter0
!
interface sforouter1
!
interface sforouter2
!
interface sforouter3
!
router ospf
redistribute connected
network 10.1.5.0/24 area 0.0.0.0
network 10.1.4.0/24 area 0.0.0.0
network 10.1.3.0/24 area 0.0.0.0
!
line vty
!
- New York
/opt/cloudsimulation/zones/zebra.newyork.conf
hostname newyorkrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/zebra.log
line vty
/opt/cloudsimulation/zones/ospfd.newyork.conf
!
! Zebra configuration saved from vty
! 2011/12/11 04:30:44
!
hostname newyorkrouter
password nomnomnom
enable password nonnomnom
log file /var/adm/quagga/ospf.log
!
!
!
interface lo0
!
interface newyorkrouter0
!
interface newyorkrouter1
!
router ospf
redistribute connected
network 10.1.5.0/24 area 0.0.0.0
!
line vty
!
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/londonrouter/ > londonrouter.xml
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z londonrouter clone -c /opt/cloudsimulation/zones/londonrouter.xml templaterouter
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T205338Z.londonrouter.clone
Log saved in non-global zone as /zones/londonrouter/root/var/log/zones/zoneadm.20111217T205338Z.londonrouter.clone
root@cloudinabox:/opt/cloudsimulation/zones# cp zebra.london.conf /zones/londonrouter/root/etc/quagga/zebra.conf
root@cloudinabox:/opt/cloudsimulation/zones# cp ospfd.london.conf /zones/londonrouter/root/etc/quagga/ospfd.conf
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z londonrouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C londonrouter
[Connected to zone 'londonrouter' console]
londonrouter console login: radmin
Password:
Last login: Sat Dec 17 19:35:39 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@londonrouter:~$ sudo bash
Password:
Dec 17 20:57:58 londonrouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
root@londonrouter:/home/radmin#
# ipadm create-ip londonrouter0
# ipadm create-ip londonrouter1
# ipadm create-addr -T static -a 10.0.10.254/24 londonrouter0/v4
# ipadm create-addr -T static -a 10.1.1.254/24 londonrouter1/v4
# svcadm restart zebra
# svcadm restart ospf
root@londonrouter:/home/radmin# dladm show-link
LINK CLASS MTU STATE OVER
londonrouter0 simnet 1500 up ?
londonrouter1 simnet 1500 up ?
root@londonrouter:/home/radmin# ipadm show-addr
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
londonrouter0/v4 static ok 10.0.10.254/24
londonrouter1/v4 static ok 10.1.1.254/24
lo0/v6 static ok ::1/128
root@londonrouter:/home/radmin# telnet localhost 2601
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to londonrouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al
User Access Verification
Password:
londonrouter> show ip ospf interface
lo0 is up
ifindex 1, MTU 8232 bytes, BW 0 Kbit
OSPF not enabled on this interface
londonrouter0 is up
ifindex 3, MTU 1500 bytes, BW 0 Kbit
OSPF not enabled on this interface
londonrouter1 is up
ifindex 2, MTU 1500 bytes, BW 0 Kbit
Internet Address 10.1.1.254/24, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 10.1.1.254, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.1.1.254, Interface Address 10.1.1.254
No backup designated router on this network
Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
Hello due in 2.263s
Neighbor Count is 0, Adjacent neighbor count is 0
londonrouter> exit
Connection to londonrouter closed by foreign host.
root@londonrouter:/home/radmin# telnet localhost 2602
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to londonrouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
londonrouter> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
C>* 10.0.10.0/24 is directly connected, londonrouter0
O 10.1.1.0/24 [110/10] is directly connected, londonrouter1, 00:04:28
C>* 10.1.1.0/24 is directly connected, londonrouter1
C>* 127.0.0.0/8 is directly connected, lo0
londonrouter>exit
root@londonrouter:/home/radmin# ~.
[Connection to zone 'londonrouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/hamburgrouter/ > hamburgrouter.xml
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z hamburgrouter clone -c /opt/cloudsimulation/zones/hamburgrouter.xml templaterouter
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T212009Z.hamburgrouter.clone
Log saved in non-global zone as /zones/hamburgrouter/root/var/log/zones/zoneadm.20111217T212009Z.hamburgrouter.clone
root@cloudinabox:/opt/cloudsimulation/zones# cp ospfd.hamburg.conf /zones/hamburgrouter/root/etc/quagga/ospfd.conf
root@cloudinabox:/opt/cloudsimulation/zones# cp zebra.hamburg.conf /zones/hamburgrouter/root/etc/quagga/zebra.conf
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z hamburgrouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C hamburgrouter
[Connected to zone 'hamburgrouter' console]
Hostname: hamburgrouter
hamburgrouter console login: radmin
Password:
Last login: Sat Dec 17 19:35:39 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@hamburgrouter:~$ sudo bash
Password:
Dec 17 21:23:45 hamburgrouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
root@hamburgrouter:/home/radmin#
root@hamburgrouter:/home/radmin# ipadm create-ip hamburgrouter0
root@hamburgrouter:/home/radmin# ipadm create-ip hamburgrouter1
root@hamburgrouter:/home/radmin# ipadm create-ip hamburgrouter2
root@hamburgrouter:/home/radmin# ipadm create-ip hamburgrouter3
root@hamburgrouter:/home/radmin# ipadm create-addr -T static -a 10.0.11.254/24 hamburgrouter0/v4
root@hamburgrouter:/home/radmin# ipadm create-addr -T static -a 10.1.1.1/24 hamburgrouter1/v4
root@hamburgrouter:/home/radmin# ipadm create-addr -T static -a 10.1.3.1/24 hamburgrouter2/v4
root@hamburgrouter:/home/radmin# ipadm create-addr -T static -a 10.1.2.1/24 hamburgrouter3/v4
root@hamburgrouter:/home/radmin# svcadm restart ospf
root@hamburgrouter:/home/radmin# ipadm show-addr
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
hamburgrouter0/v4 static ok 10.0.11.254/24
hamburgrouter1/v4 static ok 10.1.1.1/24
hamburgrouter2/v4 static ok 10.1.3.1/24
hamburgrouter3/v4 static ok 10.1.2.1/24
lo0/v6 static ok ::1/128
root@hamburgrouter:/home/radmin# netstat -nr
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
10.0.10.0 10.1.1.254 UG 1 0
10.0.11.0 10.0.11.254 U 2 0 hamburgrouter0
10.1.1.0 10.1.1.1 U 3 9 hamburgrouter1
10.1.2.0 10.1.2.1 U 2 0 hamburgrouter3
10.1.3.0 10.1.3.1 U 2 0 hamburgrouter2
127.0.0.1 127.0.0.1 UH 2 0 lo0
Routing Table: IPv6
Destination/Mask Gateway Flags Ref Use If
--------------------------- --------------------------- ----- --- ------- -----
::1 ::1 UH 2 0 lo0
root@hamburgrouter:/home/radmin#
root@hamburgrouter:/home/radmin# telnet localhost 2602
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to hamburgrouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
hamburgrouter> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O>* 10.0.10.0/24 [110/20] via 10.1.1.254, hamburgrouter1, 00:01:04
C>* 10.0.11.0/24 is directly connected, hamburgrouter0
O 10.1.1.0/24 [110/10] is directly connected, hamburgrouter1, 00:01:09
C>* 10.1.1.0/24 is directly connected, hamburgrouter1
O 10.1.2.0/24 [110/10] is directly connected, hamburgrouter3, 00:01:09
C>* 10.1.2.0/24 is directly connected, hamburgrouter3
O 10.1.3.0/24 [110/10] is directly connected, hamburgrouter2, 00:01:09
C>* 10.1.3.0/24 is directly connected, hamburgrouter2
C>* 127.0.0.0/8 is directly connected, lo0
hamburgrouter> exit
Connection to hamburgrouter closed by foreign host.
root@hamburgrouter:/home/radmin#
root@hamburgrouter:/home/radmin# ~.
[Connection to zone 'hamburgrouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/singaporerouter/ > singaporerouter.xml
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z singaporerouter clone -c /opt/cloudsimulation/zones/singaporerouter.xml templaterouter
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T223455Z.singaporerouter.clone
Log saved in non-global zone as /zones/singaporerouter/root/var/log/zones/zoneadm.20111217T223455Z.singaporerouter.clone
root@cloudinabox:/opt/cloudsimulation/zones# cp ospfd.singapore.conf /zones/singaporerouter/root/etc/quagga/ospfd.conf
root@cloudinabox:/opt/cloudsimulation/zones# cp zebra.singapore.conf /zones/singaporerouter/root/etc/quagga/zebra.conf
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z singaporerouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C singaporerouter
[Connected to zone 'singaporerouter' console]
singaporerouter console login: radmin
Password:
Last login: Sat Dec 17 19:35:39 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@singaporerouter:~$ sudo bash
Password:
Dec 17 22:37:58 singaporerouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
ipadm create-ip sinrouter0
ipadm create-ip sinrouter1
ipadm create-ip sinrouter2
ipadm create-addr -T static -a 10.0.12.254/24 sinrouter0/v4
ipadm create-addr -T static -a 10.1.2.254/24 sinrouter1/v4
ipadm create-addr -T static -a 10.1.4.1/24 sinrouter2/v4
root@singaporerouter:/home/radmin# svcadm restart zebra
root@singaporerouter:/home/radmin# svcadm restart ospf
root@singaporerouter:/home/radmin# telnet localhost 2602
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to singaporerouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
sinrouter> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O>* 10.0.10.0/24 [110/20] via 10.1.2.1, sinrouter1, 00:00:34
O>* 10.0.11.0/24 [110/20] via 10.1.2.1, sinrouter1, 00:00:34
C>* 10.0.12.0/24 is directly connected, sinrouter0
O>* 10.1.1.0/24 [110/20] via 10.1.2.1, sinrouter1, 00:00:35
O 10.1.2.0/24 [110/10] is directly connected, sinrouter1, 00:00:44
C>* 10.1.2.0/24 is directly connected, sinrouter1
O>* 10.1.3.0/24 [110/20] via 10.1.2.1, sinrouter1, 00:00:35
O 10.1.4.0/24 [110/10] is directly connected, sinrouter2, 00:00:44
C>* 10.1.4.0/24 is directly connected, sinrouter2
C>* 127.0.0.0/8 is directly connected, lo0
sinrouter> exit
Connection to singaporerouter closed by foreign host.
root@singaporerouter:/home/radmin# ~.
[Connection to zone 'singaporerouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/sanfranciscorouter/ > sanfranciscorouter.xml
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z sanfranciscorouter clone -c /opt/cloudsimulation/zones/sanfranciscorouter.xml templaterouter
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T224355Z.sanfranciscorouter.clone
Log saved in non-global zone as /zones/sanfranciscorouter/root/var/log/zones/zoneadm.20111217T224355Z.sanfranciscorouter.clone
root@cloudinabox:/opt/cloudsimulation/zones# cp ospfd.sanfrancisco.conf /zones/sanfranciscorouter/root/etc/quagga/ospfd.conf
root@cloudinabox:/opt/cloudsimulation/zones# cp zebra.sanfrancisco.conf /zones/sanfranciscorouter/root/etc/quagga/zebra.conf
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z sanfranciscorouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C sanfranciscorouter
[Connected to zone 'sanfranciscorouter' console]
sanfranciscorouter console login: radmin
Password:
Last login: Sat Dec 17 19:35:39 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@sanfranciscorouter:~$ sudo bash
Password:
Dec 17 22:46:49 sanfranciscorouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
ipadm create-ip sforouter0
ipadm create-ip sforouter1
ipadm create-ip sforouter2
ipadm create-ip sforouter3
ipadm create-addr -T static -a 10.0.13.254/24 sforouter0/v4
ipadm create-addr -T static -a 10.1.3.254/24 sforouter1/v4
ipadm create-addr -T static -a 10.1.5.1/24 sforouter2/v4
ipadm create-addr -T static -a 10.1.4.254/24 sforouter3/v4
root@sanfranciscorouter:/home/radmin# telnet localhost 2602
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to sanfranciscorouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
sforouter> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O>* 10.0.10.0/24 [110/20] via 10.1.3.1, sforouter1, 00:00:25
O>* 10.0.11.0/24 [110/20] via 10.1.3.1, sforouter1, 00:00:25
O>* 10.0.12.0/24 [110/20] via 10.1.4.1, sforouter3, 00:00:25
C>* 10.0.13.0/24 is directly connected, sforouter0
O>* 10.1.1.0/24 [110/20] via 10.1.3.1, sforouter1, 00:00:26
O>* 10.1.2.0/24 [110/20] via 10.1.3.1, sforouter1, 00:00:26
* via 10.1.4.1, sforouter3, 00:00:26
O 10.1.3.0/24 [110/10] is directly connected, sforouter1, 00:00:26
C>* 10.1.3.0/24 is directly connected, sforouter1
O 10.1.4.0/24 [110/10] is directly connected, sforouter3, 00:00:35
C>* 10.1.4.0/24 is directly connected, sforouter3
O 10.1.5.0/24 [110/10] is directly connected, sforouter2, 00:00:35
C>* 10.1.5.0/24 is directly connected, sforouter2
C>* 127.0.0.0/8 is directly connected, lo0
sforouter> exit
Connection to sanfranciscorouter closed by foreign host.
root@sanfranciscorouter:/home/radmin# ~.
[Connection to zone 'sanfranciscorouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/newyorkrouter/ > newyorkrouter.xml
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z newyorkrouter clone -c /opt/cloudsimulation/zones/newyorkrouter.xml templaterouter
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111217T225139Z.newyorkrouter.clone
Log saved in non-global zone as /zones/newyorkrouter/root/var/log/zones/zoneadm.20111217T225139Z.newyorkrouter.clone
root@cloudinabox:/opt/cloudsimulation/zones# cp ospfd.newyork.conf /zones/newyorkrouter/root/etc/quagga/ospfd.conf
root@cloudinabox:/opt/cloudsimulation/zones# cp zebra.newyork.conf /zones/newyorkrouter/root/etc/quagga/zebra.conf
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z newyorkrouter boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C newyorkrouter
[Connected to zone 'newyorkrouter' console]
newyorkrouter console login: radmin
Password:
Last login: Sat Dec 17 19:35:39 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@newyorkrouter:~$ sudo bash
Password:
Dec 17 22:54:33 newyorkrouter sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
ipadm create-ip newyorkrouter0
ipadm create-ip newyorkrouter1
ipadm create-addr -T static -a 10.0.14.0/24 newyorkrouter0/v4
ipadm create-addr -T static -a 10.1.5.254/24 newyorkrouter1/v4
root@newyorkrouter:/home/radmin# telnet localhost 2602
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to newyorkrouter.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.8).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
newyorkrouter> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O>* 10.0.10.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:22
O>* 10.0.11.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:22
O>* 10.0.12.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:22
O>* 10.0.13.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:22
C>* 10.0.14.0/24 is directly connected, newyorkrouter0
O>* 10.1.1.0/24 [110/30] via 10.1.5.1, newyorkrouter1, 00:00:23
O>* 10.1.2.0/24 [110/30] via 10.1.5.1, newyorkrouter1, 00:00:23
O>* 10.1.3.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:23
O>* 10.1.4.0/24 [110/20] via 10.1.5.1, newyorkrouter1, 00:00:23
O 10.1.5.0/24 [110/10] is directly connected, newyorkrouter1, 00:00:25
C>* 10.1.5.0/24 is directly connected, newyorkrouter1
C>* 127.0.0.0/8 is directly connected, lo0
newyorkrouter> exit
Connection to newyorkrouter closed by foreign host.
root@newyorkrouter:/home/radmin# ~.
[Connection to zone 'newyorkrouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C newyorkrouter
[Connected to zone 'newyorkrouter' console]
root@newyorkrouter:/home/radmin#
root@newyorkrouter:/home/radmin#
root@newyorkrouter:/home/radmin# ping 10.0.10.254
10.0.10.254 is alive
root@newyorkrouter:/home/radmin# traceroute 10.0.10.254
traceroute: Warning: Multiple interfaces found; using 10.1.5.254 @ newyorkrouter1
traceroute to 10.0.10.254 (10.0.10.254), 30 hops max, 40 byte packets
1 10.1.5.1 (10.1.5.1) 0.116 ms 0.083 ms 0.038 ms
2 10.1.3.1 (10.1.3.1) 0.072 ms 0.048 ms 0.041 ms
3 10.0.10.254 (10.0.10.254) 0.065 ms 0.077 ms 0.047 ms
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C sanfranciscorouter
[Connected to zone 'sanfranciscorouter' console]
root@sanfranciscorouter:/home/radmin#
root@sanfranciscorouter:/home/radmin#
root@sanfranciscorouter:/home/radmin# ipadm disable-if sforouter1
ipadm: persistent operation not supported for disable-if
root@sanfranciscorouter:/home/radmin# ipadm disable-if -t sforouter1
root@sanfranciscorouter:/home/radmin# ~.
bash: ~.: command not found
root@sanfranciscorouter:/home/radmin# ~.
[Connection to zone 'sanfranciscorouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C newyorkrouter
[Connected to zone 'newyorkrouter' console]
root@newyorkrouter:/home/radmin# traceroute 10.0.10.254
traceroute: Warning: Multiple interfaces found; using 10.1.5.254 @ newyorkrouter1
traceroute to 10.0.10.254 (10.0.10.254), 30 hops max, 40 byte packets
1 10.1.5.1 (10.1.5.1) 0.114 ms 0.141 ms 0.132 ms
2 10.1.4.1 (10.1.4.1) 0.072 ms 0.046 ms 0.041 ms
3 10.1.2.1 (10.1.2.1) 0.065 ms 0.066 ms 0.048 ms
4 10.0.10.254 (10.0.10.254) 0.073 ms 0.068 ms 0.052 ms
root@newyorkrouter:/home/radmin# ~.
[Connection to zone 'newyorkrouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones#
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C sanfranciscorouter
[Connected to zone 'sanfranciscorouter' console]
root@sanfranciscorouter:/home/radmin#
root@sanfranciscorouter:/home/radmin# ipadm enable-if -t sforouter1
root@sanfranciscorouter:/home/radmin#
root@sanfranciscorouter:/home/radmin# ~.
[Connection to zone 'sanfranciscorouter' console closed]
root@cloudinabox:/opt/cloudsimulation/zones#
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C newyorkrouter
[Connected to zone 'newyorkrouter' console]
root@newyorkrouter:/home/radmin# traceroute 10.0.10.254
traceroute: Warning: Multiple interfaces found; using 10.1.5.254 @ newyorkrouter1
traceroute to 10.0.10.254 (10.0.10.254), 30 hops max, 40 byte packets
1 10.1.5.1 (10.1.5.1) 0.361 ms 0.044 ms 0.037 ms
2 10.1.3.1 (10.1.3.1) 0.061 ms 0.046 ms 0.042 ms
3 10.0.10.254 (10.0.10.254) 0.070 ms 0.052 ms 0.048 ms
root@newyorkrouter:/home/radmin# ~.
[Connection to zone 'newyorkrouter' console closed]
Put something like this into the file /opt/cloudsimulation/zones/londonsrv1
zonecfg -z londonsrv1 export
create -b
set zonepath=/zones/londonsrv1
set brand=solaris
set autoboot=false
set ip-type=exclusive
add net
set configure-allowed-address=true
set physical=londonsrv1
end
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/londonsrv1/ > londonsrv1.xml
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z londonsrv1 -f londonsrv1
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z londonsrv1 clone -c /opt/cloudsimulation/zones/londonsrv1.xml templateserver
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111218T043435Z.londonsrv1.clone
Log saved in non-global zone as /zones/londonsrv1/root/var/log/zones/zoneadm.20111218T043435Z.londonsrv1.clone
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z londonsrv1 boot
root@cloudinabox:/opt/cloudsimulation/zones# zlogin -C londonsrv1
[Connected to zone 'londonsrv1' console]
londonsrv1 console login: radmin
Password:
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@londonsrv1:~$ sudo bash
Password:
Dec 18 04:53:49 londonsrv1 sudo: radmin : TTY=console ; PWD=/home/radmin ; USER=root ; COMMAND=/usr/bin/bash
root@londonsrv1:/home/radmin# ipadm create-ip londonsrv1
root@londonsrv1:/home/radmin# ipadm create-addr -T static -a 10.0.10.10/24 londons
rv1/v4
root@londonsrv1:/home/radmin# route -p add default 10.0.10.254
add net default: gateway 10.0.10.254
add persistent net default: gateway 10.0.10.254
root@londonsrv1:/home/radmin# ping 10.0.10.254
10.0.10.254 is alive
root@londonsrv1:/home/radmin# traceroute 10.0.13.254
traceroute to 10.0.13.254 (10.0.13.254), 30 hops max, 40 byte packets
1 10.0.10.254 (10.0.10.254) 0.238 ms 0.051 ms 0.044 ms
2 10.1.1.1 (10.1.1.1) 0.098 ms 0.057 ms 0.053 ms
3 10.0.13.254 (10.0.13.254) 0.072 ms 0.059 ms 0.061 ms
root@londonsrv1:/home/radmin# ~.
[Connection to zone 'londonsrv1' console closed]
root@cloudinabox:/opt/cloudsimulation/zones# cat template.xml | sed s/jamphfhn/newyorksrv1/ > newyorksrv1.xml
root@cloudinabox:/opt/cloudsimulation/zones# cat londonsrv1 | sed s/londonsrv1/newyorksrv1/ > newyorksrv1
root@cloudinabox:/opt/cloudsimulation/zones# vi newyorksrv1
root@cloudinabox:/opt/cloudsimulation/zones# zonecfg -z newyorksrv1 -f newyorksrv1
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z newyorksrv1 clone -c /opt/cloudsimulation/zones/newyorksrv1.xml templateserver
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20111218T050558Z.newyorksrv1.clone
Log saved in non-global zone as /zones/newyorksrv1/root/var/log/zones/zoneadm.20111218T050558Z.newyorksrv1.clone
root@cloudinabox:/opt/cloudsimulation/zones# zoneadm -z newyorksrv1 boot
root@cloudinabox:/home/jmoekamp# zlogin -C newyorksrv1
[Connected to zone 'newyorksrv1' console]
newyorksrv1 console login: radmin
Password:
Last login: Sun Dec 18 05:38:10 on console
Oracle Corporation SunOS 5.11 11.0 November 2011
radmin@newyorksrv1:~$ sudo bash
Password:
root@newyorksrv1:/home/radmin# ipadm create-ip newyorksrv1
root@newyorksrv1:/home/radmin# ipadm create-addr -T static -a 10.0.14.10/24 new
yorksrv1/v4
root@newyorksrv1:/home/radmin# route -p add default 10.0.14.254
add net default: gateway 10.0.14.254
add persistent net default: gateway 10.0.14.254
root@newyorksrv1:/home/radmin# ping 10.0.14.254
10.0.14.254 is alive
root@newyorksrv1:/home/radmin# traceroute 10.0.10.10
traceroute to 10.0.10.10 (10.0.10.10), 30 hops max, 40 byte packets
1 10.0.14.254 (10.0.14.254) 0.132 ms 0.051 ms 0.044 ms
2 10.1.5.1 (10.1.5.1) 0.068 ms 0.085 ms 0.058 ms
3 10.1.3.1 (10.1.3.1) 0.070 ms 0.057 ms 0.054 ms
4 10.1.1.254 (10.1.1.254) 0.110 ms 0.063 ms 0.058 ms
5 10.0.10.10 (10.0.10.10) 0.085 ms 0.069 ms 0.065 ms
root@newyorksrv1:/home/radmin#
Switches for Hamburg-MAN
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw1_250
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw1_251
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw2_250
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw2_251
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw3_250
root@cloudinabox:/home/jmoekamp# dladm create-simnet hamburgsw3_251
root@cloudinabox:/home/jmoekamp# dladm modify-simnet -p hamburgsw2_250 hamburgsw1_251
root@cloudinabox:/home/jmoekamp# dladm modify-simnet -p hamburgsw3_250 hamburgsw2_251
root@cloudinabox:/home/jmoekamp# dladm modify-simnet -p hamburgsw1_250 hamburgsw3_251
root@cloudinabox:/home/jmoekamp# dladm create-bridge hamburgharbour
root@cloudinabox:/home/jmoekamp# dladm create-bridge hamburgairport
root@cloudinabox:/home/jmoekamp# dladm add-bridge -l hamburgsw1_250 -l hamburgsw1_251 hamburg
root@cloudinabox:/home/jmoekamp# dladm add-bridge -l hamburgsw2_250 -l hamburgsw2_251 hamburgairport
root@cloudinabox:/home/jmoekamp# dladm add-bridge -l hamburgsw3_250 -l hamburgsw3_251 hamburgharbour
root@cloudinabox:/home/jmoekamp# dladm show-bridge -l hamburgharbour
LINK STATE UPTIME DESROOT
hamburgsw3_250 fo
Saturday, December 24. 2011
I wish you all a few quiet days with your loved ones and may all you wishes come true!
Friday, December 16. 2011
Ankle is really hurting. A big thank you to the pharmaceutical industry for providing pain killers. However i would like to concentrate a little bit better again. However things are getting better day by day ...
Friday, December 16. 2011
Just thought, that our perception of the world is heavily influenced by the representations of it ... like a map. Just to demonstrate, a question: Assume you are a pilot. You are flying from Frankfurt to San Francisco. You are a lazy pilot and you are allowed by air traffic control to set the shortest direct course on the autopilot and don't touch it again. What is the initial heading you are setting? Just answer with the first thought! No degrees needed ... just something like west,east,south our southeast.
Saturday, December 10. 2011
Damned, now i have a lot of time ... because of a mismatch between the real number of residual steps and the perceived number of residual steps on a stairway. Now i'm a proud owner of a fractured ankle join (the doc is not totally sure if it's a ankle ligament injury as well, next x-ray middle of next week will show it). Can't need that right now ...
Saturday, December 10. 2011
In the past i wrote quite often about a thing that i call systemic features, when features start to fit together seamlessly in order to create possibilities more than the sum of the features. One of the systemic features is the simulation of the cloud. I don't talk about that thing that most people connect in mind with the word cloud (the grid with a credit card checkout  ), but the cloud-like icon in many architectural diagrams called "Network" or "Internet" that sits between the client and the application that often resembles the "a wonder happens here" box in many architectures.
It's not new: I talked about this mid November at the DOAG conference in Nuremberg. And i've playing around with this at customers an privately for a while now.
Many customers have networks as large and as complex as the internet part of a smaller country perhaps 15 years ago. The interesting question is: How can you test your application for it's resiliency against failures in this cloud shaped icon. How does your application react, when your network is doing its high availability magic.
And interestingly Solaris 11 can help you here. The thoughts behind this are pretty simple.
- A router is a computer that runs an operating environment that is tailormade to do network stuff, but at the end it's a computer with a OS (yeah, i know, hardware offloading makes this a little bit more complex, but at the end it's that way)
- A zone is a virtual operating environment.
- Each zone can have it's own set of routes.
- Each zone can have it's own set of firewall rules.
- Each zone can have it's own set of processes.
- Routing protocols are not more than processes collecting information from the network and configuring the routing table.
- You can install a vast array of dynamic routing protocols on a zone.
- I can have up to 8192 zones (given enough memory)
- In Solaris 11 i can emulate switches (etherstubs)
- I can limit bandwidths in Solaris 11 out-of-the-box with crossbow
When i'm combining all this features i can set up a vast array of zones doing nothing else taking each incoming packet on a interface, routing it on a multitude of ways between each other, and send it out on a outgoing interface. Even when the system in your environment are placed in many separate networks of your network you can still use a system with many networking cards or something called server-on-a-stick (single high-bandwidth connection to a vlan-trunking capable switch and using the switch ports as a fan-out).
So in order to emulate a complex corporate network, all i have to do is configuring a lot of etherstubs, configuring many vnics, replicate the physical bandwidths with the maxbw setting on the vnics, set up a lot of zones, perhaps translate the ACL of the routers into firewall rules for firewall functionality of Solaris, installting the routing daemons and configure it similar to the configuration of the routers (in regard of timeouts and so on).
Now i can test, how my applications react, when the network starts to converge against a new topology because of the failures of some lines. I can test, to which topology my network will converge after an line outage (which is nothing more than a deny-all firewall rule). I can test the impact, when the network converges that way, that my traffic flows over a 2 MBit/s line instead of a 155 MBit/s line. For even more complex failure modes i can even use the htbx driver to introduce additional latencies, packet drop or packet reorderung as shown in this article. In essence you can emulate your complete internal network in a single box and with Zones and Crossbow in Solaris 11 it's so low overhead (at the end it is still just one kernel) that you can really emulate the reality and not a simplyfied view, as you don't have emulate via separate hardware or many independent operating system instances in virtual machines.
At the end you could simply use a single Solaris system, put it between all your test systems and use this solaris system as a emulation device for your corporate network. It's simulating the cloud-shaped icon in your architectural diagrams.
Monday, December 5. 2011
Vor der Acquisition von Sun durch Oracle gab es ja die Sun SE University. Dieses Format gibt es wieder. Vom 13. bis 14. Dezember 2011 findet die erste Oracle PARTNER SE University in Fulda statt. Diese Veranstaltung ist für Partner System Engineers gedacht, von denen ich weiss, das eine Reihe hier mitlesen. Mehr Informationen findet ihr hier
Saturday, December 3. 2011
The newest revision (the rev valid as of December, 2nd) of the document "Partitioning - Topic: Server/Hardware Partitioning" naming the technologies allowing you just to license a subset of the available processors in a system for a Oracle software has been modified: Oracle VM for SPARC is now explicitly named as a hard partitioning technology.
|