vlan möglichkeiten der 7170 / 7140

Hallo,

ich hab mir grad mal die Switch-Treiber bei openwrt für den ADM6996 angeschaut: eigentlich müsste man doch nur rausbekommen, welche GPIO-Leitungen zu dem Switch-Baustein gehen, oder? Habe leider (noch) keine 7170, könnte jmd versuchen, das rauszubekommen? Das Modul dann in einen dsmod-Kernel einzubauen sollte dann das kleinere Problem sein... (nehme ich jetzt ganz naiv mal an :) )

Mein Ziel wäre, dass ich je 2 Switch-Ports in ein VLAN stecke und da reicht ja einfach nur das 8021Q-Modul nicht aus, wenn ich jetzt keinen Denkfehler drin habe, oder?

Gruß, Michael
 
Wie mach ich denn das? Und wie überprüfe ich ob es funktioniert hat?
Code:
/var/mod/root $ vconfig
BusyBox v1.4.0 (2007-01-24 23:06:31 CET) multi-call binary
Usage: vconfig COMMAND [OPTIONS] ...
Create and remove virtual ethernet devices
Options:
        add             [interface-name] [vlan_id]
        rem             [vlan-name]
        set_flag        [interface-name] [flag-num]       [0 | 1]
        set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
        set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
        set_name_type   [name-type]
/var/mod/root $
MfG Oliver
 
Ok, man sollte erst lesen, dann denken und dann erst posten. Will sagen, ich hab mir grad mal bisschen die Quellen von avm_cpmac angeschaut (ds-0.2.9_26-13/source/ref-8mb_26-04.29/kernel/kernel_8mb_26_build/kernel/linux-2.6.13.1/drivers/net/avm_cpmac) . Dort gibt ne linux_avm_cpmac.h, mit der man den kompletten Switch via ioctl-Calls konfigurieren kann. Sprich: man braucht nix von openwrt rüberzuholen und auch den ganzen hardware-nahen GPIO-Kram hat uns AVM schon abgenommen. Wenn das nicht rosige Aussichten sind?!
Jetzt bräuchte man nur noch nen findigen Linux-Programmier, der da ein nettes Frontend dafür zusammenbaut. Ich bin leider kein guter Programmierer und hab auch nur ne 7141...

Zu der Geschichte mit dem vconfig: Also ich verstehe das so, dass es quasi 2 (mehr oder weniger völlig) unabhängige Varianten gibt, der FritzBox VLANs beizubringen:

Variante 1: Man nimmt das Interface von AVM's cpmac-Treiber und generiert damit virtuelle Interfaces eth0, eth1... und konfiguriert parallel dazu den ADM6996, der dann an den physikalischen Ports den VLAN-Tag auch wegschneiden kann. Sprich: man könnte jeden einzelnen Port konfigurieren, ob der tagged, untagged oder ne Kombination sein soll.
Das bräuchte ich z.B.: 2x untagged-Ports VLAN 1 + 2x untagged Ports VLAN 2, in der Fritzbox kommt dann VLAN 1 via eth0 und VLAN 2 via eth1 an.

Variante 2: Man nimmt das vconfig und das 8021Q und setzt auf ein eth0 o.ä. virtuelle VLAN-Interfaces eth0.1, eth0.2... drauf, von denen der AVM-Treiber aber nix mitbekommt und die auch der Switch unbehandelt passieren lässt. Daher würde an allen 4 Ports dann max. ein untagged VLAN und beliebig viele tagged-VLANs rauskommen.

Möglich wäre vermutlich auch jede wilde Kombination von 1 & 2.

Hab ich irgendwo nen Denkfehler drin?
 
Soo, selber machen ist immer am besten ;-):
http://www.heimpold.de/dsmod/cpmaccfg
Code:
Usage: ./cpmaccfg [OPTIONS]... COMMAND [ARGS]

Show/change VLAN configuration of avm_cpmac driver.

  Options:
    -h,--help         show this help text
    -i,--iface        interface to operate on (default: eth0)

  Commands:
  info                    print count of internal and external ports

  get_switch_mode|gsm     print current switch mode and VLAN IDs passed to WAN

  set_switch_mode|ssm newmode     set switch mode to newmode
    Implemented modes are (as stated in linux_avm_cpmac.h):
      mode        7170             VDSL             ProfiVoIP
      normal      eth0             eth0, wan        eth0
      ata         eth0, wan        eth0, wan        eth0, wan
      split       eth0-eth3        eth0-eth3, wan   eth0-eth4
      split_ata   eth0-eth2, wan   eth0-eth2, wan   eth0-eth3, wan
      all_ports   eth0             eth0             eth0
      special     ???              ???              ???
    By default mode special is a placeholder which have to be filled by issuing
    a set_switch_mode_special command first which a custom configuration.

  set_switch_mode_special|ssms    set a special switch mode configuration
    (currently groups port 1 & 2 and port 3 & 4 to two VLANs eth0 and eth1)

Wie gesagt, erster Versuch. Auf meiner 7141 geht nur der info Befehl, bei den anderen kommt: ioctl: invalid argument, bedeutet wohl, dass im Treiber der Befehl nicht implementiert ist. Ich hab aber auch den Standardkernel von AVM drinne, nicht etwas replace kernel gewählt.

DISCLAIMER: Obwohl das Tool nur definierte, veröffentlichte Schnittstellen verwendet, kann ich nicht ausschließen, dass es irgendwelche Nebenwirkungen hat. Daher auf eigene Gefahr anwenden!

EDIT: Quelltexte sind hier.
 
Zuletzt bearbeitet:
Hier mal das ergebnis auf einer 7170 V2 mit "replace Kernel" :

Code:
/var/tmp $ ./cpmaccfg get_switch_mode
Current mode: (null)
VLAN IDs passed through WAN: (none)

bei Info bekomme ich :
Code:
/var/tmp $ ./cpmaccfg info
ioctl: Operation not supported
 
Gleiches Bild auf einer 7170 (ohne replace kernel) zu der ich aber leider nur Layer 8-Zugang habe ;-).

ABER: Bei
Code:
./cpmaccfg ssm ata
ist die Verbindung zum COmputer, der über Port 1 angeschlossen war weggeschmiert, musste sich auf Port 2 neu anstöpseln! Klingt doch gut. Und danach gab es ein Interface cpmac0, was vorher vermutlich noch nicht da war...zumindest ist es mir noch nicht aufgefallen gewesen.
Leider war die Zeit zum Testen begrenzt, und wenn man nicht direkt davor sitzt ist das auch erheblich schwieriger...

Was man für ne sinnvolle "Weiterentwicklung" bzw. fürs Debugging bräuchte, wären z.B. Kernel-Logs, die Device-Liste (ifconfig oder /proc- bzw. /sys-Filesystem) vor und nach Anwendung von Befehlen etc...

So, ich ärgere mich erstmal, dass ich nur ne 7141 gekauft habe ;-)
 
7170, Netze trennen (sollen intern nicht gebridged sein)

[Edit wichard: Dieses Posting war ursprünglich die Eröffnung eines neuen Threads, der nun mit diesem zusammengeführt wurde.]

Guten Morgen,

mit der Suche bin ich zwar fuer die 7050 fast fuendig geworden. Fuer die 7170 haperts aber noch an meinem Verstaendnis und ich hoffe ihr koennt mir auf die Spruenge helfen.

Folgender Setup bisher im Einsatz:
FB 7170 mit 29.04.30, LAN und WAN fuer's Heimnetz genutzt.

Da ne DSL-Flat vorhanden ist und ich ein netter Mensch bin moechte ich meiner Nachbarschaft mit Freifunk ein bisschen auf die Spruenge helfen. Dafuer wird ein weiterer WLAN-Router Type WHRG54S verwendet.

Der Haken an der Sache: Ich moechte nicht das Nutzer des WHRG54S Zugriffe auf mein Heimnetz haben. Die WHRG54S Nutzer sollen jedoch Internetzugriff haben koennen.

Geht sowas ohne einen dritten Router (zur Trennung von Heimnetz und Freifunk) direkt hinter der 7170 einzusetzen ? Die 7170 soll auf jeden Fall die DSL-Einwahl vornehmen da sie auch fuer OpenVPN genutzt wird.

Vor der ar7cfg habe ich keine Scheu, jedoch zu wenig Ahnung wie ich da ansetzen kann.

Bin fuer jeden Hinweis dankbar. Gerne auch Links wenn das Thema schon mal behandelt wurde.

Gruss Frank
 
Mir schwebt das gleiche Szenario vor, auch für Freifunk :)
Das Stichwort lautet hier VLANs auf der Fritzbox zum laufen zu bekommen, siehe diesen Thread.

Ziel ist es, beliebig viele Switchports zu beliebigen Gruppen zusammenzufassen, so dass z.B. Port 1 - 3 mit dem WLAN gebridged wird und Port 4 ein völlig seperates Netz mit anderer IP/Netmask wird. Dann kannst Du nach Belieben mit iptables zwischen diesen Subnetzen Traffic erlauben oder auch nicht.

Leider hab ich selbst (noch) keine 7170, so dass ich mit dem Testen grad bisschen auf dem Schlauch stehe...
 
Ich bin an der gleichen Thematik interessiert, bei mir läuft eine FritzBox 7170, in der Schublade habe ich noch einen Netgear FWG114P und eine Fonera ist bestellt.

Ich habe noch diverse x86 Hardware inklusive mehrerer Netzwerkkarten in der Schublade liegen, aber würde gerne darauf verzichten (auch im Hinblick auf Stromverbrauch).
 
Ihr könntet folgende Befehle mal versuchen via telnet einzutippen und schauen, was passiert. Der Computer von dem aus ihr das macht, sollte am ersten oder zweiten Port angeschlossen sein (wobei ich ehrlich gesagt nicht genau weiß, wie die nummeriert sind - hoffe jetzt einfach mal, dass AVM da nix unlogisches gemacht hat).

Code:
cd /tmp
wget http://www.heimpold.de/dsmod/cpmaccfg
chmod +x cpmaccfg
./cpmaccfg ssms
ifconfig cpmac0 192.168.50.254

Das konfiguriert Port 1 + 2 zu einem Netz und Port 3 + 4 zu einem. Die Fritzbox sollte danach noch ping-bar sein. Wenn man den Rechner dann an Port 3 oder 4 ansteckt, sollte die Konfiguration des Netzwerkes via DHCP (ev. LAN-Schnittstelle mal kurz de- und wieder aktivieren) fehlschlagen. Bei Vergabe einer manuellen IP-ADresse (z.B. 192.168.50.10) sollte die Fritzbox dann über die 192.168.50.254 wieder anpingbar sein.

Wenn die Port-Nummerierung verdreht ist, müsste es andersrum klappen.
Wenn was schief geht, Fritzbox einfach vom Stromnetz trennen, es wird nix dauerhaftes geändert. (Trotzdem: Auf eigene Gefahr *g*)
 
Code:
/var/tmp $ ./cpmaccfg ssms
Segmentation fault
Und anschließender Reboot der Box...

MfG Oliver
 
derheimi schrieb:
. . .
Code:
ifconfig cpmac0 192.168.50.254
. . .

Die cpmac0 scheint mir der WAN-Port zu sein . . . oder bin ich da auf dem Holzweg ?
 

Anhänge

  • ifc.txt
    4.3 KB · Aufrufe: 29
Ok, hab mir mal vorübergehend Zugang auf ner 7170 verschafft und kann jetzt bisschen mitreden/mittesten. Folgende Erkenntnisse bis jetzt:
- also bei cpmac0 lag ich falsch, das Device scheint es immer zu geben
- "cpmaccfg info" bringt ne fehlermeldung: ok, nicht soo wichtig.
- "cpmaccfg gsm" zeigt mir als mode "normal" an
- "cpmaccfg ssm ata": an port 1 und 3 bekommt windows keine IP-Adresse mehr, port 2 und 4 gehen wie gewohnt. "ifconfig wan" funktioniert jetzt, sprich das Device war vorher noch nicht da. Man kann dem Device ne IP zuweisen, aber es war mir nicht möglich, den angeschlossenen Rechner an POrt 1 anzupingen (am Win-PC war aber keine Firewall aktiv!) ?! Hm, Port 3 hab ich nicht versucht -fällt mir grad auf- --> doof. Erwartet hätte ich, dass ich an Port 1 nen neues Netz aufmachen kann. Das mit POrt 3 ist völlig unklar.
- "cpmaccfg gsm" zeigt mir jetzt als mode "ata" an
- versuche zurück auf "normal" zu schalten via "cpmaccfg ssm normal":
das WAN-Interface bleibt komischerweise erhalten, hätte erwartet, dass das verschwindet; "cpmaccfg gsm" zeigt aber wieder "normal" an

@olistudent:
Da hab ich garantiert nen Zeiger-Problem in C, werd mich aber auch die Kernelmodul-Quellen nochmal angucken und rauszufinden, ob da vielleicht doch andere Datenstrukturen erwartet werden...

EDIT 2007-01-27 18:05:
Hab mal die cpmaccfg neu übersetzt, nachdem ich rausgefunden habe, dass die ioctls doch andere Datenstrukturen erwarten. Komme erst später dazu, dass nochmal zu testen...
 
Zuletzt bearbeitet:
*raetselratemodus an*
Beim ATA-Mode wuerde ich stark vermuten das es sich um die Variante fuer den Internet-Anschluss ohne Modem, als hinter einem Router, handelt. Also dasseelbe wie "Internetzugang ueber LAN1" im Webmenue.
*raetselratemodus aus*

Werde das heute Nacht mal ausprobieren . . .
 
Hast du schon was geändert? Ich bekomm keinen Segfault mehr.
strace-Output:
Code:
execve("./cpmaccfg", ["./cpmaccfg", "ssms"], [/* 100 vars */]) = 0
uname({sys="Linux", node="fritz.box", ...}) = 0
brk(0) = 0x10006000
brk(0x10027000) = 0x10027000
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
ioctl(3, 0x89f3, 0x7f9a0208) = -1 EOPNOTSUPP (Operation not supported)
dup(2) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat64(4, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
old_mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaa8000
_llseek(4, 0, 0x7f9a0028, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "ioctl: Operation not supported\n", 31) = 31
close(4) = 0
munmap(0x2aaa8000, 65536) = 0
SYS_4246( <unfinished ... exit status 1>
MfG Oliver
 
Ich habe versucht, die ioctls in den Treibersourcen nachzuvollziehen und hab da halt gesehen, in welche jeweiligen structs die Zeiger dort gecastet werden. Daher bin ich mir jetzt relativ sicher, dass die Parameterübergabe in den Kernel klappt, will sagen, die Box sollte zumindest nicht mehr rebooten.
Ich habe jetzt zusätzlihc noch den Parameter get_switch_mode_current implementiert.

Mich würde interessieren, was bei Euch "info", "gsm" und "gsmc" bringen. Im Treiber werden ja verschiedene Hardware-Revs berücksichtigt, was wohl mit mit dem hier schon irgendwo erwähnten Hardware-Bug zusammenhängen könnte. Von daher gibts höchstwahrscheinlich Boxen, wo der Treiber VLANs von sich aus deaktiviert...
 
Code:
/var/mod/root $ ./cpmaccfg info
ioctl: Operation not supported
/var/mod/root $ ./cpmaccfg gsm
ioctl: Operation not supported
/var/mod/root $
MfG Oliver
 
Welche HWRevision hat Deine Box? Hast Du "replace kernel" drin?
 
HWRevision 94.1.1.0 und eigener Kernel

MfG Oliver
 
Mit dieser HWRev müsste es eigentlich gehen.
Ich brauch noch mehr Debug-Infos. Hilfreich wären z.B. noch die Info-Messages des cpmac-Treibers, die allerdings per default nicht mit rein compiliert werden. Dazu müsste man in der source/ref-8mb_26-04.29/kernel/linux/drivers/net/avm_cpm/cpmac_debug.h folgendes ändern:
Code:
41c41
< #define DEB_INFO(a...)
---
> #define DEB_INFO(a...) printk (KERN_WARNING "[cpmac] " a);
44c44
< #define DEB_TRC(a...)
---
> #define DEB_TRC(a...) printk (KERN_WARNING "[cpmac-trc] " a);
Die Ausgaben müssten dann -glaub ich- via dmesg zu sehen sein...

Was mir grad auch noch unklar ist:
Code:
/var/tmp $ ./cpmaccfg -i cpmac0 info
ioctl: No such device
/var/tmp $ ./cpmaccfg -i eth0 info
ioctl: Operation not supported
Obwohl cpmac0 in der Liste bei ifconfig auftaucht...

Meine 7170 ist übrigens bestellt.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.