Send Netdot-devel mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://osl.uoregon.edu/mailman/listinfo/netdot-devel
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Netdot-devel digest..."


Today's Topics:

   1. [Netdot - Bug #1745] (New) ipv6 addresses on      interfaces on
      nexus 7K not working ([email protected])
   2. [Netdot - Bug #1746] (New) patch : DHCPD Export   Class drops
      free text indentation ([email protected])
   3. University of Michigan documents for review and   comment
      (William Bulley)


----------------------------------------------------------------------

Message: 1
Date: Wed, 27 Mar 2013 13:41:37 -0700
From: [email protected]
Subject: [Netdot-devel] [Netdot - Bug #1745] (New) ipv6 addresses on
        interfaces on nexus 7K not working
To: [email protected], [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8


Issue #1745 has been reported by Wim Vandersmissen.

----------------------------------------
Bug #1745: ipv6 addresses on interfaces on nexus 7K not working
https://osl.uoregon.edu/redmine/issues/1745

Author: Wim Vandersmissen
Status: New
Priority: Normal
Assignee: 
Category: 
Target version: 
Resolution: 


ipv6 addresses on vlan interfaces on nexus 7K weren't showing up
Seems like nexus is giving other values back on OID 1.3.6.1.2.1.4.34.1.5 
(ipAddressType)
The current code uses the wrong field for the ifIndex identifier. It also seems 
that for nexus the ifIndex id is always greater than 150000000

The following code works for me and fixes the issue.
<pre>
--- Device.pm     2012-12-05 17:35:01.000000000 +0100
+++ Device.pm   2013-03-27 14:56:26.000000000 +0100
@@ -1133,10 +1133,15 @@
        if ( $key =~ /^.+\.((?:\d+\.){15}\d+)$/o ) {
            $addr = $self->_octet_string_to_v6($1);
        }
-       if ( $val =~ /^(\d+)\.\d+\.\d+\.([\d\.]+)\.(\d+)$/o ) {
+       if ( $val =~ /^(\d+)\.(\d+)\.\d+\.([\d\.]+)\.(\d+)$/o ) {
            # ifIndex, type, size, prefix length
-           $iid = $1; $len = $3;
-           $pfx = $self->_octet_string_to_v6($2);
+           if ( ($1 == 1)  && ($2 > 150000000)) {
+                $iid=$2;
+            } else {
+                $iid=$1;
+            }
+           $len = $4;
+           $pfx = $self->_octet_string_to_v6($3);
        }
        if ( $iid && $addr && $pfx && $len ){
            next unless (defined $dev{interface}{$iid});
</pre>


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://osl.uoregon.edu/redmine/my/account


------------------------------

Message: 2
Date: Thu, 28 Mar 2013 03:36:01 -0700
From: [email protected]
Subject: [Netdot-devel] [Netdot - Bug #1746] (New) patch : DHCPD
        Export  Class drops free text indentation
To: [email protected], [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=utf-8


Issue #1746 has been reported by Didier Moens.

----------------------------------------
Bug #1746: patch : DHCPD Export Class drops free text indentation
https://osl.uoregon.edu/redmine/issues/1746

Author: Didier Moens
Status: New
Priority: Normal
Assignee: 
Category: 
Target version: 
Resolution: 


When adding multiple lines in the 'Include Text'-field in the DhcpScope form, 
DHCPD export only indents the first line.

The attached patch indents the full free-form text block.



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://osl.uoregon.edu/redmine/my/account


------------------------------

Message: 3
Date: Thu, 28 Mar 2013 14:55:21 -0400
From: William Bulley <[email protected]>
Subject: [Netdot-devel] University of Michigan documents for review
        and     comment
To: Carlos Vicente <[email protected]>
Cc: [email protected], [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"

We have put together some design documents to illustrate our thinking
about networks and of ways to enhance NetDoT to better support networks.

Attached please find a textual/tutorial document written by Dr. Kurt
Hillig.  His document refers to the other attachments (all PDF files).

Notes_On_Nets.txt
Dental_School_Network_Transition.pdf
Pathological_VLANs.pdf
Pathological_VLAN_Table_Structure.pdf
Summary_of_Netdot_Schema_Changes.pdf

We would like to solicit comments, suggestions, criticisms, etc. from
the NetDoT development community about the contents of these files.

Regards,

web...

-- 
William Bulley                     Email: [email protected]

72 characters width template ----------------------------------------->|
-------------- next part --------------
Some Notes on Nets and Databases
================================

What follows is an attempt to: A) describe some of our struggles with and 
needs for tools to manage complex networks; B) provide some examples of 
real-world cases of "pathological" complexity that we have encountered; 
C) stimulate discussion on how network information databases - in particular 
netdot - could/should be structured to meet these needs; and D) describe 
the University of Michigan's current effort and thoughts along these lines 
as a basis on which to start the discussion.


Introduction
============

Networking technology has become increasingly complex as networks have 
evolved; thanks to VLANs, NAT, MPLS, TRILL, load balancing, Q-in-Q, IP  
Anycast, multicast, and other virtualizations and abstractions, there is 
no longer any direct congruency between network topologies at ISO layers 
1-3.  The distinction between routers and switches is murky; routing 
protocols are carrying more information than just routes; Software-Defined 
Networking allows end-users to build their own virtual networks; private 
and public clouds blur the mapping between a "network" and a "customer"; 
virtual servers no longer have a fixed location, making troubleshooting 
challenging at best.

Network information databases are needed to keep track of all of the bits 
and pieces that "keep the trains running on time" - information spanning 
the gamut from "layer 0" (physical location, power sources, conduit runs, 
etc.) through layers 8 ("administrative domains" - VRFs, ASNs, etc.) and 
9 (people - local network/desktop/server administrators, security and 
business contacts, etc.) along with the traditional ISO layers 1-3 that 
network operators are accustomed to thinking about.

Ideally a network information database should have the ability to: 
A) incorporate sanity checks to identify conflicts such as overlapping or 
duplicate IP subnet assignments, duplicate VLAN IDs for different networks 
on the same switch, or OSPF area or IS-IS level mismatches on inter-router 
links; B) discover network topology at layers 1-3 through SNMP or other 
queries to network hardware; C) generate and/or audit/verify device 
configurations for hardware from any vendor; D) audit/verify network 
topology at layers 1-3; E) have the flexibility to embrace new networking 
technologies as they arise without requiring a complete redesign; F) be 
open-source to allow for user-driven fixes and improvements and low-cost 
adoption.

We at the University of Michigan - like many other organizations - have 
been struggling with the problem of increasing complexity in our network.  
To that end we are working toward a replacement for our home-grown network 
information database which is now 10 years old; we have selected netdot 
from the University of Oregon - largely developed by Carlos Vicente - as 
the framework on which to build.

In the course of this work we have found a number of design decisions in
netdot that (as with our old database) limit our ability to document our 
actual network.  Most obvious among these are the identity between "network" 
and "VLAN" - netdot has no explicit "network" object - and the subsequent 
restriction that VLAN IDs must be unique.  In our environment we have:

        Dozens of networks which aren't VLANs - for example point-to-point 
        WAN links.  
        
        Hundreds of distinct networks with identical VLAN IDs - for example 
        each of our 100+ per-building VoIP networks has VLAN ID 2, and 
        thousands of wireless access points are on per-building VLANs 9.  

        Occasional situations where one network has multiple VLAN IDs, 
        sometimes all on the same switch.  

        Multiple independent networks using overlapping RFC1918 address 
        blocks.  

        Networks (and network hardware) behind firewalls doing NAT/PAT, 
        such that the IP addresses/subnets known to the core routers do 
        not match the addresses/subnets configured on the firewalled 
        equipment.  

        IP Anycast-based services with the same IPv4 addresses and /32 
        routes appearing in multiple data centers.  

        Private cloud networks which can serve dozens or hundreds of 
        different customers (i.e. departments or services).  

        Three different routing protocols - OSPF, IS-IS and BGP - in use.

Questions that we would like to be able to ask the database include such 
things as:

        What customers are affected if cable X is cut or router Y crashes?

        Is VLAN Z permitted on all inter-switch trunks that network A 
        should appear on?

        Which OSPF area(s) on which routers does subnet S belong to?

        What network(s) are bridged across MPLS pseudowire P or Q-in-Q 
        tunnel Q?

        What should the IS-IS configuration of router R look like?  What 
        should the spanning tree configuration for network N on switch W 
        look like?  What would these be if the devices were Cisco rather
        than Juniper?

        Which ports on switch W are members of LAG group L and what is the 
        load-distribution algorithm that it uses?

        Which WAN links are members of PPP multilink M on router R?

        Who are the security contacts for the hosts on network N?  Who is 
        responsible for IP address assignments on this network?


Underlying all of these is one fundamental question:  What is a network?

In the early development of networking there was often a one-to-one relation 
between physical and logical components - a network had one router port, 
one set of physical switches on which it was carried, served one "customer" 
(typically a department), resided in a single building, had one (or none) 
VLAN ID, etc.  In current network architectures many of these are no longer 
true; our current thinking at the University of Michigan is that a network 
is a collection of connected objects/entities of multiple types at multiple 
layers, loosely modeled on the ISO network model:

        Layer "0" - Switches, routers, UPSs, patch panels, cables, etc.
        Layer "1" - Physical interfaces and the circuits between them, 
                        virtual interfaces and pseudowire tunnels, etc.
        Layer "2" - VLANs, spanning-tree domains, Q-in-Q tunnels, etc.
        Layer "3" - IP/IPv6 networks (anyone still using IPX or Appletalk?)
        Layer "8" - VRFs, routing domains, ASs, etc.
        Layer "9" - Unit LAN admins, security teams, ISPs, etc.


We have had several conversations with Carlos over the past few months to
refine these ideas, and feel that now is the time for us to expose ourselves 
to the wider netdot development community.



Database Structure
==================

We feel that a network information database should include the following:

1) A master network table, for which the unique identifier of a network 
is its name (i.e. network names must be non-null and unique).  A naming 
convention may or may not be imposed, as users see fit.

(At UM we use names of the form "<type>-<customer>-<location>-<purpose>", 
where one or more elements may be implicit.  For example: "V-RESHALL-MJ-AP" 
is a VLAN-type network that hosts wireless access points in the Mosher-
Jordan residence hall; "S-333MAYNARD" is a serial (T1) link between our 
WAN router and an off-campus router at 333 Maynard St.; "O-LOOP-SEB" is 
the Loopback0 network on the r-SEB router; and "DFW-ITS-AL2DC-WEB-PROD01" 
is a network behind a data center firewall in the Arbor Lakes 2 data center 
which hosts ITS-managed production web servers.)

2) Independent "domain" tables for each layer as described above, with the 
idea that each network can be associated with one or more domains of each 
layer type.  Each domain entry would include a pointer to the network that
it belongs to.

3) "Object" tables for specific entities of each type - routers and 
switches, interfaces, VLANs, IPv4 and IPv6 subnets, spanning-tree 
instances, etc.

4) Mapping tables that associate each domain with the objects of a more 
specific type that belong to that domain - for example each VLAN/device 
tuple and each spanning tree instance (root ID and root priority tuple) 
would be a member of a Layer 2 domain, while our security group would be 
a "layer 9" entity.



Independent of the above structure, we intend to run two parallel database 
instances, one which contains human-entered data - i.e what we think the 
network should be - and the other holding "discovered" data from SNMP or 
other queries - i.e. what the network actually is.  Additional processes 
would then run periodically or on demand to identify any discrepancies 
between the two.

The rationale is that humans - both net admins and programmers - make 
mistakes; we don't trust all of the data entered in the database to be 
correct, and we don't trust device configurations to be correct.  Thus we 
don't want to automatically push configurations from the database to the 
hardware nor update the database automatically from the configurations.


Current Work at the University of Michigan
==========================================

Our first efforts along these lines have focused on layer 2.  In the 
accompanying diagrams you can see 1) a real-world example where we had 
to have multiple VLAN IDs for one network; 2) an idealized drawing of a 
(not ideal!) "pathological" layer 2 configuration; 3) a proposal/example 
of a table structure that can represent this pathological network.

1) Real-world example: Dental School.  The Dental School network had 
well over 1000 devices on several IP subnets on dozens of old non-VLAN- 
aware switches; when the first firewalls were installed they were set up 
as layer 2 devices, since firewalls don't support secondary IP subnets 
on an interface.  The firewall should isolate devices on different subnets 
at layer 3 (since inter-subnet traffic should pass through the firewall to 
reach the router), but it is trivial to configure most computers to recognize 
multiple subnets as local and thus bypass the firewall for internal traffic.

The Dental School received funding for a complete network overhaul - Cat5e 
wiring, new (VLAN-aware) switches with 10GE uplinks from the building 
distribution switches, 10GE links to the campus backbone, and new high- 
performance firewalls.  To meet their security needs under HIPAA we had 
to isolate their internal networks at layer 2 as well as 3.  However this 
upgrade had to be non-disruptive as clinical activity and instruction take 
place year-round; it simply wasn't possible to do a forklift upgrade of the 
entire network over one weekend.

To solve this problem we needed a transitional architecture that would 
at minimum provide layer 3 isolation, allow VLAN-aware and non-VLAN-aware 
switches to coexist, and allow for incremental migration of end devices 
from a shared VLAN to separate VLANs without requiring firewall config 
changes for each move.  The (ugly!) solution was to retain the original 
shared VLAN, add new per-service (and per-subnet) VLANs, and bridge these 
all together in a single layer 2 domain.  As each access switch was replaced, 
the end devices would all initially be placed in the shared VLAN; as time 
permitted the local admins would identify what subnet each device belonged 
on and then change its switch port's VLAN assignment.  Once all devices in 
a subnet had been migrated off the old VLAN, the bridging "kludge" link 
for that subnet/VLAN was removed.  The overall migration took nearly two 
years to complete.

The "Dental_Firewall_Transition" drawing shows the initial, final, and 
transitional configuration of the Dental School network.

2) Pathological VLANs.  The "Pathological_VLANs" drawing shows somewhat 
simplified examples of several different layer 2 topologies that we have 
encountered or expect to in the future.  This includes cases where a 
network can have multiple VLAN IDs on the same device (as in the above 
Dental School example), where different networks can have the same VLAN ID 
on different devices, and where a VLAN is tunneled through a device which 
itself isn't aware of that VLAN's existence.  

3) Table Structure.  This drawing shows the proposed new "L2_DOMAIN" table 
along with some of the changes needed in other netdot tables; the starred 
columns indicate the primary key for each table.  

Not shown in thse drawings are examples of other possible L2 domain types, 
such as point-to-point ethernet, point-to-point WAN links, ATM PVCs and 
SVCs, or non-broadcast multiple-access (NBMA) networks such as frame relay 
or ATM LAN emulation.


In this structure there is no independent "VLAN" table; there are only 
instances of VLANs on devices, and the unique VLAN ID constraint becomes a 
unique VLAN ID/device tuple constraint - in other words different networks
can use the same VLAN ID on different devices, but no single device can have
two networks with the same VLAN ID.  (In this context, multiple virtual 
switches on a physical device would be treated as independent devices.)

At this point our proposed new netdot structure does the following:

A) Replaces the VLAN table with a NETWORK table, with the constraint that 
no two networks can have the same name.

B) Adds several "Layer X Domain" tables to map VLANs, IP subnets, user 
groups, devices, etc., to the networks that use them; for example the 
L2DOMAIN table maps Layer 2 (broadcast) domains to networks.

C) Creates a new VLANDEVICE table to map VLAN IDs to the devices (switches)
that they are present on and to the L2 domain that each of these belongs 
to, and to hold per-device, per-VLAN spanning tree information (e.g. the 
STP bridge ID and priority).

D) Shuffles some STP information among the INTERFACEVLAN, VLANDEVICE and 
STPINSTANCE tables to eliminate duplication of per-device or per-STP 
instance information in various entries.

E) Updates a few other tables as well.

For a more complete description of the modified tables, see the attached 
spreadsheet. 



There is still substantial work needed for the other layers of abstraction;
for that matter there's plenty more work to be done at layer 2.  Thoughts
and comments from the netdot community would be welcome!

For example: The concept of "VLAN Groups" defined as specific ranges of VLAN 
IDs is useless for us; we tried defining set ranges for specific purposes 
long ago, but quickly ran into situations where we had to break the rules. 
Does anyone else use these as currently defined?  Should these be updated, 
eliminated, or left as is?


-- Kurt Hillig, 28 March 2013
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Dental_School_Network_Transition.pdf
Type: application/pdf
Size: 235747 bytes
Desc: not available
Url : 
http://osl.uoregon.edu/pipermail/netdot-devel/attachments/20130328/ef4233fa/attachment.pdf
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Pathological_VLANs.pdf
Type: application/pdf
Size: 64822 bytes
Desc: not available
Url : 
http://osl.uoregon.edu/pipermail/netdot-devel/attachments/20130328/ef4233fa/attachment-0001.pdf
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Pathological_VLAN_Table_Structure.pdf
Type: application/pdf
Size: 534281 bytes
Desc: not available
Url : 
http://osl.uoregon.edu/pipermail/netdot-devel/attachments/20130328/ef4233fa/attachment-0002.pdf
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Summary_of_Netdot_Schema_Changes.pdf
Type: application/pdf
Size: 51489 bytes
Desc: not available
Url : 
http://osl.uoregon.edu/pipermail/netdot-devel/attachments/20130328/ef4233fa/attachment-0003.pdf
 

------------------------------

_______________________________________________
Netdot-devel mailing list
[email protected]
https://osl.uoregon.edu/mailman/listinfo/netdot-devel


End of Netdot-devel Digest, Vol 72, Issue 8
*******************************************

Reply via email to