[Ninux-Calabria] simulazioni su routing a terra

Stefano De Carlo stefanauss a gmail.com
Gio 19 Dic 2013 04:38:15 CET


Il 19/12/2013 00:37, Giuseppe De Marco ha scritto:
> Qualche considerazione sulle sperimentazioni condotte con Stefano oggi.

Aggiungo le mie, facendo anche io mente locale in broadcast.
Essenzialmente le sperimentazioni di oggi hanno confermato che il bridge
untagga e stagga la VLAN a seconda della direzione del pacchetto, il che
ci conferma a sua volta che anche nodi che non sanno in vita loro cos'è
una VLAN potranno comunicare coi nodi che fanno routing a terra con le VLAN.

La chiave per capire il tutto è acce{r,t}tare che il bridge non
inoltra/smista/replica i pacchetti che arrivano alle interfacce che ne
fanno parte (come potrebbe essere lecito supporre se si pensa ai bridge
più comuni fatti di interfacce fisiche pure, dove questa semplificazione
regge) ma li
- prende sull'interfaccia fisica
- li *scarta* per poi
- *ricrearli* in base alla destinazione
- e li decide se taggare o meno.

Ho creato una simulazione in CORE dei risultati di oggi. (l'allego)
Se seguite con tcpdump -i <interfaccia> -l -e icmp i vari ping che vi
vengono in mente notate come il tag appaia/scompaia in corrispondenza
del bridge.
Particolarmente significativo è il ping 10.87.4.1 > 10.87.3.1, dove si
vede che il pacchetto arriva con una VLAN ed esce con un'altra. Anche se
non è coinvolto il bridge, fa capire che è una decisione di routing
(stesso principio del tag/untag di cui si parlava prima).
@Peppe, gli indirizzi sono diversi in CORE ma è tutto equivalente.
@Tutti, il routing è fatto a mano, non c'era bisogno e non abbiamo
toccato OLSR.

Accantoniamo per un momento la questione per cui, qualsiasi
configurazione troviamo che ci soddisfi, dobbiamo poi trovare il modo di
replicarla in una maniera che AirOS reputi educata e rispettosa e senza
hack.
Prossimi passi/questioni aperte:
- Il "Network Mode" da cui partire in AirOS è Router o Bridged?
- Il Bridge ath0/eth0.x (WLAN/VLAN-di-traffico-olsr) deve avere un suo
indirizzo IP (come negli esperimenti odierni) oppure no?
- integrare il tutto in OpenWRT (VLAN già partizionate sul 1043ND, no
problem su questo)

Stefanauss.

-------------- parte successiva --------------
node n1 {
    type router
    model router
    network-config {
	hostname M5
	!
	interface eth1
	!
	interface eth0
	!
    }
    canvas c1
    iconcoords {249.0 178.0}
    labelcoords {249.0 210.0}
    services {zebra IPForward UserDefined}
    interface-peer {eth0 n2}
    custom-config {
	custom-config-id service:UserDefined
	custom-command UserDefined
	config {
	files=('start.sh', )
	cmdup=('sh start.sh', )
	}
    }
    custom-config {
	custom-config-id service:UserDefined:start.sh
	custom-command start.sh
	config {
	#!/bin/sh
	
	ifconfig eth0 up
	# ifconfig eth0 172.17.87.10/16
	
	vconfig add eth1 5
	vconfig add eth1 7
	
	ifconfig eth1.5 up
	ifconfig eth1.7 up
	
	#ifconfig eth1.5 172.17.87.5/16
	ifconfig eth1.7 10.87.3.5/24
	
	brctl addbr br0
	brctl addif br0 eth0
	brctl addif br0 eth1.5
	ifconfig br0 up
	ifconfig br0 172.17.87.5/16
	
	ip route add default via 172.17.87.15
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute
	custom-command DefaultRoute
	config {
	files=('defaultroute.sh', )
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute:defaultroute.sh
	custom-command defaultroute.sh
	config {
	#!/bin/sh
	# auto-generated by DefaultRoute service (utility.py)
	
	
	
	}
    }
    custom-config {
	custom-config-id service:zebra
	custom-command zebra
	config {
	files=('/usr/local/etc/quagga/Quagga.conf', 'quaggaboot.sh', '/usr/local/etc/quagga/vtysh.conf', )
	}
    }
    custom-config {
	custom-config-id service:zebra:/usr/local/etc/quagga/Quagga.conf
	custom-command /usr/local/etc/quagga/Quagga.conf
	config {
	interface eth0
	!
	}
    }
    interface-peer {eth1 n3}
}

node n2 {
    type router
    model router
    network-config {
	hostname NanoBridge
	!
	interface eth1
	!
	interface eth0
	!
    }
    canvas c1
    iconcoords {490.0 173.0}
    labelcoords {486.0 210.0}
    interface-peer {eth0 n1}
    custom-config {
	custom-config-id service:UserDefined
	custom-command UserDefined
	config {
	files=('start.sh', )
	cmdup=('sh start.sh', )
	}
    }
    custom-config {
	custom-config-id service:UserDefined:start.sh
	custom-command start.sh
	config {
	#!/bin/sh
	
	ifconfig eth0 up
	ifconfig eth0 172.17.87.15/16
	ifconfig eth1 up
	ifconfig eth1 10.87.4.15/24
	
	ip route add default via 172.17.87.5
	}
    }
    services {zebra OSPFv2 OSPFv3 vtysh IPForward UserDefined}
    interface-peer {eth1 n4}
}

node n3 {
    type lanswitch
    network-config {
	hostname M5
	!
    }
    canvas c1
    iconcoords {135.0 271.0}
    labelcoords {135.0 295.0}
    interface-peer {e0 n1}
    interface-peer {e1 n5}
}

node n4 {
    type lanswitch
    network-config {
	hostname NB
	!
    }
    canvas c1
    iconcoords {631.0 185.0}
    labelcoords {631.0 209.0}
    interface-peer {e0 n2}
    interface-peer {e1 n6}
}

node n5 {
    type router
    model host
    network-config {
	hostname n5
	!
	interface eth0
	!
    }
    canvas c1
    iconcoords {79.0 335.0}
    labelcoords {79.0 367.0}
    interface-peer {eth0 n3}
    custom-config {
	custom-config-id service:UserDefined
	custom-command UserDefined
	config {
	files=('start.sh', )
	cmdup=('sh start.sh', )
	}
    }
    custom-config {
	custom-config-id service:UserDefined:start.sh
	custom-command start.sh
	config {
	#!/bin/sh
	
	ifconfig eth0 up
	vconfig add eth0 5
	vconfig add eth0 7
	
	ifconfig eth0.5 up
	ifconfig eth0.7 up
	
	ifconfig eth0.5 172.17.87.1/16
	ifconfig eth0.7 10.87.3.1/24
	
	ip route add default via 172.17.87.5
	}
    }
    custom-config {
	custom-config-id service:StaticRoute
	custom-command StaticRoute
	config {
	files=('staticroute.sh', )
	}
    }
    custom-config {
	custom-config-id service:StaticRoute:staticroute.sh
	custom-command staticroute.sh
	config {
	#!/bin/sh
	# auto-generated by StaticRoute service (utility.py)
	#
	# NOTE: this service must be customized to be of any use
	#       Below are samples that you can uncomment and edit.
	#
	
	ip route add default via 172.17.87.5
	
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute
	custom-command DefaultRoute
	config {
	files=('defaultroute.sh', )
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute:defaultroute.sh
	custom-command defaultroute.sh
	config {
	#!/bin/sh
	# auto-generated by DefaultRoute service (utility.py)
	ip route add default via 172.17.87.5
	}
    }
    services {IPForward SSH UserDefined}
}

node n6 {
    type router
    model host
    network-config {
	hostname n6
	!
	interface eth0
	!
    }
    canvas c1
    iconcoords {676.0 311.0}
    labelcoords {676.0 343.0}
    interface-peer {eth0 n4}
    custom-config {
	custom-config-id service:UserDefined
	custom-command UserDefined
	config {
	files=('start.sh', )
	cmdup=('sh start.sh', )
	}
    }
    custom-config {
	custom-config-id service:UserDefined:start.sh
	custom-command start.sh
	config {
	#!/bin/sh
	
	ifconfig eth0 up
	ifconfig eth0 10.87.4.1/24
	
	ip route add default via 10.87.4.15
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute
	custom-command DefaultRoute
	config {
	files=('defaultroute.sh', )
	}
    }
    custom-config {
	custom-config-id service:DefaultRoute:defaultroute.sh
	custom-command defaultroute.sh
	config {
	#!/bin/sh
	# auto-generated by DefaultRoute service (utility.py)
	}
    }
    services {IPForward SSH UserDefined}
}

link l1 {
    nodes {n1 n2}
    bandwidth 0
}

link l2 {
    nodes {n1 n3}
    bandwidth 0
}

link l3 {
    nodes {n3 n5}
    bandwidth 0
}

link l4 {
    nodes {n2 n4}
    bandwidth 0
}

link l5 {
    nodes {n4 n6}
    bandwidth 0
}

annotation a1 {
    iconcoords {275.0 145.0}
    type text
    label {eth0}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a2 {
    type text
    iconcoords {280.0 149.0}
    label {}
    canvas c1
}

annotation a3 {
    iconcoords {214.0 218.0}
    type text
    label {eth1}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a4 {
    iconcoords {103.0 334.0}
    type text
    label {eth0}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a5 {
    iconcoords {442.0 145.0}
    type text
    label {eth0}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a6 {
    iconcoords {520.0 191.0}
    type text
    label {eth1}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a7 {
    type text
    iconcoords {461.0 147.0}
    label {}
    canvas c1
}

annotation a8 {
    iconcoords {695.0 319.0}
    type text
    label {eth0}
    labelcolor black
    fontfamily {Arial}
    fontsize {12}
    canvas c1
}

annotation a9 {
    type text
    iconcoords {107.0 359.0}
    label {}
    canvas c1
}

annotation a10 {
    iconcoords {141.0 381.0}
    type text
    label {Zona con le VLAN}
    labelcolor black
    fontfamily {Arial}
    fontsize 12
    canvas c1
}

annotation a11 {
    iconcoords {519.0 372.0}
    type text
    label {Zona tutta untagged}
    labelcolor black
    fontfamily {Arial}
    fontsize 12
    canvas c1
}

annotation a12 {
    iconcoords {328.0 84.0}
    type text
    label {eth0 = WLAN}
    labelcolor black
    fontfamily {Arial}
    fontsize 12
    canvas c1
}

annotation a13 {
    type text
    iconcoords {384.0 101.0}
    label {}
    canvas c1
}

annotation a14 {
    iconcoords {337.0 107.0}
    type text
    label {eth1 = LAN}
    labelcolor black
    fontfamily {Arial}
    fontsize 12
    canvas c1
}

annotation a15 {
    type text
    iconcoords {383.0 216.0}
    label {}
    canvas c1
}

canvas c1 {
    name {Canvas1}
    wallpaper-style {upperleft}
    wallpaper {}
}

option global {
    interface_names no
    ip_addresses yes
    ipv6_addresses yes
    node_labels yes
    link_labels yes
    show_api no
    background_images no
    annotations yes
    grid no
    traffic_start 0
}

option session {
}

-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  836 bytes
Descrizione: OpenPGP digital signature
URL:         <http://ml.ninux.org/pipermail/calabria/attachments/20131219/f48cead7/attachment-0001.sig>


Maggiori informazioni sulla lista Calabria