@irs 

Architecture Intégrée de Réseaux et Services

DRIVERS UDLR-IPv6

Architecture intégrée de réseaux et de services

Links vers sous-projets


 

Contact: 
       Rafael Rizo
       Walid Dabbous
 

 


Plate-forme d' experimentation 
 

La station de réception est composée des éléments suivants: 

  • Antenne TVRO: Parabole 80cm pour télé numérique avec LNB universel (longitude <100m) 

  • L'antenne est pointée sur le satellite Eutelsat W2 16 degrés.
     
  • Décodeur DVB : carte comatlas CAS2033A :
    • SCPC/MCPC demodulateur (2-30 MSymb)
    • Réception IP sur  DVB/MPEG 2 transport stream
    • Multiprotocol Encapsulation compatible
    • Débit trafic IP traffic  5 Mbps
    • ISA Bus
    • Connecteur  antenne Type F (classique) 
         La carte CAS2033A ne fait pas de filtrage hardware, il est donc conseillé d'utiliser un CPU assez rapide et un peu de 
    mémoire RAM (on a un très bon fonctionnement avec un Pentium Pro 200Mhz et 64Mb de RAM) .  INRIA supporte autres 
    cartes DVB :  Broadlogic et HDS - Cyberstream 040 model (Harmonic data systems)vous trouverez plus d'information 
    sur les drivers UDLR dans la page Web d'Emmanuel Duros.
     
  • PC:  Operating system: FreeBSD Release 2.2.8 
    •  
        Pour les personnes sans expérience avec FreeBSD: vous trouverez ici  un complet manuel d'intallation.et aussi la 
    doumentattion pas à pas pour l'intallation des relases 2.2.7/ 3.1/4.0 .  Vous trouverez ici les  ftp's pour  la release  
    FreeBSD 2.2.8 
     
  • Pile KAME (release 8/9/99). 

  •    La release qu'a été testé est : Kame  stable 8/09/1999   (download) .
    Pour l'installation suivre les instructions dans le  fichier INSTALL dans le répertoire "kame"
    Vous pouvez aussi installer la dernière version: kame 4/07/2000   (mais il n'a pas  été testé)
     

  •  Connectivité Internet, ATM ou ISDN terrestre pour la voie de retour "UDLR".


 

DRIVERS UDLR-IPv6 :

 

   Pour avoir plus d'informations sur UDLR et les drivers IPv4  pour différents types des cartes DVB  je vous 
recommande la consultation de la page web d 'Emmanuel Duros .
 

Information Général :

     Les drivers DVB ont été développés  dans l'environnement FreeBSD 2.2.x.  la carte est configurable à niveau IP 
avec la commande " ifconfig ". 
   Les paquets envoyées à la carte DVB provenant de la souche IP  sont passés au dispositif " link layer tunneling 
mechanism pseudo device (lltm)".
Pseodo-device (lltm) :    Le pseudo-device "lltm" intercepte les paquets destinés à la carte DVB. Fondamentalement, 
il copie tous les paquets  ne pouvant pas être envoyées sur la carte dans le dispositif "/dev/ul0".  La daemon " dvtunneld
réalise la lecture en bloque du dispositif "/dev/ul0". Chaque paquet lu est encapsulé derrière un en-tête IP avec adresse 
destination l'adresse bidirectionnel de l'émetteur ("feed)". Le paquet est envoyé sur l'interface terrestre. (Le mécanisme 
est décrit dans le draft UDLR ).
  Le code MPE contient une série de fonctions pour l'encapsulation/décapsulation  des paquets IP du paquet "multiprotocol 
encapsulation".
  La commande " dvconfig " configure la carte DVB à niveau physique (fréquence du tuner , fréquence symboles....…)

      Vous deviez avoir une adresse Ipv4/Ipv6 affecte à l'interface satellite (dv0). Vérifier le plan d'adressage AIRS et me 
contacter pour l'affectation des adresses Ipv4 (Ipv6 en auto-conf) 


INSTALLATION
 

     La partie suivante suppose que vous aviez installé FreeBSD et la souche KAME correctement dans votre récepteur.
Il est très recommandable vérifier que dans votre kernel vous aviez les lignes :

                                            options         MROUTING                # Multicast routing
                                            pseudo-device   bpfilter        2       # Berkeley packet filter

  L'architecture de la carte n'était pas bien désignée, la CPU gaspille le temps en attendent sur le bus ISA pour charger 
les donnés de la carte. Pour ce motif si vous aviez un driver IDE il est très recommandable l'utilisation du maximum débit  
possible entre le contrôleur et le driver avec les flags  0xe0ffe0ff :

                                            controller    wdc0   at isa? port "IO_WD1" bio irq 14 flags 0xe0ffe0ff vector wdintr
                                           
Aussi assurez-vous que vous aviez configuré le host comme " gateway " dans " /etc/rc.conf " 

                                            gateway_enable="YES"            # Set to YES if this host will be a gateway.


Préparation
 

Vérifier que vous aviez l'arbre des  répertoires suivants :
      • dvb-ipv6-1.0:           if_dv.c      if_dvreg.h   
      • dvconfig-ipv6-1.0:   dvb.cfg    dvconfig*
      • dvtunneld-ipv6:        dvtunneld*      dvtunneld.cfg 
      • lltm-ipv6-1.0:          ul.c         ul_share.h   ulio.h
      • mpe-ipv6-1.0:  crc32.c      fpid.h       mpe_in.c     mpeg2_in.c 
          •  filter.h     mpe.h        mpeg2.h      rdtsc.h
  • Maintenant vous deviez copier les packages dans le répertoire final :

  • Copier les fichiers :   
    • dvb-ipv6-1.0/*                          /sys/i386/isa 
    • dvconfig-ipv6-1.0/dvconfig       /sbin 
    • dvconfig-ipv6-1.0/dvb.cfg        /etc 
    •  mpe-ipv6-1.0/*                        /sys/net/ 
    • dvtunneld-ipv6/dvtunneld         /sbin 
    • dvtunneld-ipv6/dvtunneld.cfg    /etc 
    •  lltm-ipv6-1.0/ul.c                      /sys/dev/ 
    •  lltm-ipv6-1.0/ul_share.h          /sys/dev/ 
    •  lltm-ipv6-1.0/ulio.h                  /sys/sys/ 


Nouveau noyau  
 
 
  • Ajouter dans  /sys/conf/files 

  •        net/mpe_in.c            optional mpe 
           net/crc32.c             optional mpe 
           net/mpeg2_in.c          optional mpe 
     

  • Ajouter dans /sys/i386/conf/files.i386 

  •        i386/isa/if_dv.c                optional        dv      device-driver 
           dev/ul.c                        optional        ul      device-driver 

         Dans votre fichier de configuration du kernel ajouter:
       
      pseudo-device   mpe
      pseudo-device   ul      1
      device dv0 at isa? port 0x310 net irq 11 vector dv_fifo_intr


    Note: Pour choisir le IRQ et le port adresse regarder la page de configuration des interrupteurs 
    del la carte sur la page web d'Emmanuel Duros (votre BIOS doit être configuré pour réserver le IRQ 
    au bus ISA)
     
     
     

  •  Les données sont chargées utilisant: les modes: niveau d'interrupt et pour "pooling ": Nous avons  

  • besoin de 10ms à niveau d'interruption horloge. 
    Dans /sys/i386/isa/clock.c add ajouter l'appel à dv_clkintr() dans clkintr():

    static void
    clkintr(struct clockframe frame)
    {

            dv_clkintr(); /* Only one function added here - No other modif.      */
                          /* comment out when not compiling the reception driver */
            timer_func(&frame);
            switch (timer0_state) {
            ...
            ...
     
     

  • Création du "node " pour le pseudo dispositif  lltm :
    •  
      mknod /dev/ul0 c 20 0
  • Compile le nouveau noyau. Reboot et vous aviez fini ! 

DVCONFIG
 

     Lancer 'dvconfig -f' pour configurer la carte et vérifier avec la commande 'dvconfig' que vous étiez 
"locked" sur le signal porteur .  Le message suivant doit apparaître :

$> dvconfig
Satellite parameters read from card dv0
Tuner frequency = 2023.7 MHz
LNB power supply = 14 V + 22 KHz
Symbol frequency = 2.222 MHz
Pid is 0x03

PID0 = 0x0300  PID1 = 0xFFFF  PID2 = 0xFFFF  PID3 = 0xFFFF  PID4 = 0xFFFF
14:47:12 - Carr off = +77 KHz CBER = 1.9E-04 VBER = 0.0E+00
14:47:14 - Carr off = +77 KHz CBER = 1.4E-04 VBER = 0.0E+00
...
 

Si l'offset du signal est plus grand que  +/- 200 KHz votre carte n'est pas bien configuré. Pour régler le problème 
éditer le fichier "/etc/dvb.cfg "et modifier le paramètre "TUNER_FREQ " de la forme suivante :
Soustraire le résultat obtenu d'Offset au paramètre TUNE_FREQ. (par exemple si l'offset est -272 KHz
(avec r'ef'erence +272 KHz) ajouter 0.272 MHz a la fréquence du tuner.


Comme exemple voir le fichier de conf. De " pecman " :

 # Configuration of the DVB receiver
# Bugs and comments to Emmanuel Duros
# Email: eduros@sophia.inria.fr
# Email: rrizo@sophia.inria.fr

TUNER_FREQ:     2023.7     # Tuner frequency

SYMBOL_FREQ:    2.222        # Symbol frequency

# PID listen to

PID0:           0x0300      # IPv6
PID1:           0xFFFF      # NULL PIDs
PID2:           0xFFFF      # 
PID3:           0xFFFF
PID4:           0xFFFF

LNB_CONF:       0xC0        # LNB configuration
                            # 14V only    : 0xE0
                            # 14V + 22 KHz: 0xC0
                            # 18V only    : 0xF0
                            # 18V + 22 KHz: 0xD0 
 


Lancer  'dvconfig -f' à nouveau et vérifier l'offset avec 'dvconfig'.
 

  • ( 'dvconfig -h' pour des infromations sur dvconfig ) 


     

    DVTUNNELD DAEMON

          La daemon  dvtunneld met en ouvre le protocole "Dynamic Tunneling Configuration Protocol" décrit dans 
    le draft  UDLR . Quand la daemon  dvtunneld est lancé il envoi un message de "joint" sur l'adresse multicast 
    224.0.1.124 sur l'interface dv0 interface. La route multicast dois être mise en place sur l'interface dv0 : dans
    le fichier /etc/rc.conf vérifier que vous avez la ligne suivante :
      static_routes="multicast" # Set to static route list (or leave empty).
      route_multicast="224.0.0.0 -netmask 0xf0000000 -interface dv0"
    Une foi la carte est configuré lancer la daemon dvtunneld : 
    $> dvtunneld &
    Il détecte automatiquement la présence d'émetteurs. Pour vérifier que vous receviez les messages HELLO :
     
    $> tail -f /var/log/messages
      ...
      Oct  6 18:39:32 pocman dvtunneld: New active feed: UDL IP=x.x.x.x
      Oct  6 18:39:32 pocman dvtunneld:                  BDL IP=x.x.x.x
    Maintenant vous pouvez pinger notre émetteur satellite
    $> ping(6) star0 
    Configuration Final Quand tout est correctement installé vous pouvez ajouter les lignes suivantes dans votre fichier de configuration /etc/rc.local

    # put your local stuff here
    /sbin/dvconfig -f
    /sbin/dvtunneld &
     

    Anything went wrong ? Go to the FAQ !


       
      Abréviations
      AF        Assured Forwarding
      AH        Authentication Header
      ATM     Asynchronous Transfer Mode 
      DVB Direct Video Broadcasting
      EF      Expedited Forwarding
      GRE      Generic Routing Encapsulation 
      IETF Internet Engineering Task Force
      IP Internet Protocol
      IPng Internet Protocol next generation
      IPv6 Internet Protocol version 6
      IPv4 Internet Protocol version 4
      ISP Internet Service Provider
      LAN Local Area Network
      MAC      Medium Access Control
      MARS Multicast Address Resolution Server
      MPEG II     Moving Pictures Experts Group Layer 2
      MPE      Multi-Protocol Encapsulation
      MTU      Maximum Transmit Unit
      PID      Program IDentifier 
      PVC Permanent Virtual Circuit
      QoS Quality of Service
      RFC Request For Comments
      RM Reliable Multicast
      UDLR      Uni-Directional Link Routing 
      VC Virtual Circuit
      WAN Wide Area Network



       
      Références


      [UDLR]      : "A Link Layer Tunneling Mechanism for Unidirectional Links "   W. Dabbous, Y. Zhang, E. Duros, N. Fujii.
       

      [DVB]   :Digital Video Broadcast (DVB). ETSI EN 301 192 V1.1.1 

      [MPEG-2]  :MPEG-2. ISO IEC 13818.

      [GRE] :'Generic Routing Encapsulation (GRE)',rfc 2784 D. Farinacci, T. Li, S. Hanks, D. Meyer, P. Traina. Draft IETF.
       



       
       
       


    Derniére modification:  14 septembre  2000
    Editeur en chef :Rafael Rizo

    WebMaster : WebMaster