<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>20044</bug_id>
          
          <creation_ts>2009-05-15 09:50:50 +0400</creation_ts>
          <short_desc>bridge + dhcp - не хватает setfd 0</short_desc>
          <delta_ts>2009-05-24 20:39:09 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>etcnet</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Lykov">combr</reporter>
          <assigned_to name="Mikhail Efremov">sem</assigned_to>
          <cc>erthad</cc>
    
    <cc>ldv</cc>
    
    <cc>rider</cc>
    
    <cc>sem</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91196</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lykov">combr</who>
    <bug_when>2009-05-15 09:50:50 +0400</bug_when>
    <thetext>в версии до 0.9.9 dhcp пытался запуститься еще до конфигурации bridge.
в этой версии поправили:
23 апреля 2009 Denis Ovsienko &lt;pilot at altlinux.ru&gt; 0.9.9-alt1
      + rearrange bridge processing code to resolve DHCP and STP issues

но проблема осталась в том, что интерфейс не сразу входит в режим передачи пакетов forwarding, поэтому это изменение не помогает, dhcpcd все равно успевает показать timeout.

пример:
в нынешней конфигурации по умолчанию для 0.9.9

May 15 10:34:15 combr kernel: [ 6543.519867] br0: port 2(tap0) entering listening state
May 15 10:34:15 combr kernel: [ 6543.519878] br0: port 1(eth0) entering listening state
May 15 10:34:15 combr dhcpcd[25095]: br0: dhcpcd 3.0.17 starting
May 15 10:34:15 combr dhcpcd[25095]: br0: hardware address = 00:a0:d1:8e:b3:09
May 15 10:34:15 combr dhcpcd[25095]: br0: broadcasting for a lease
May 15 10:34:30 combr kernel: [ 6558.516039] br0: port 2(tap0) entering learning state
May 15 10:34:30 combr kernel: [ 6558.516053] br0: port 1(eth0) entering learning state
May 15 10:34:45 combr kernel: [ 6573.517045] br0: topology change detected, propagating
May 15 10:34:45 combr kernel: [ 6573.517067] br0: port 2(tap0) entering forwarding state
May 15 10:34:45 combr kernel: [ 6573.517073] br0: topology change detected, propagating
May 15 10:34:45 combr kernel: [ 6573.517080] br0: port 1(eth0) entering forwarding state
May 15 10:34:45 combr dhcpcd[25095]: br0: timed out

dhcpd запускается теперь после запуска br0, это верно. но сам br0 требует 30 секунд для перехода по состояниям.

если же в файле brctl добавить
setfd AUTO 0

то выходит такое:
May 15 10:37:38 combr kernel: [ 6747.061404] device eth0 entered promiscuous mode
May 15 10:37:38 combr kernel: [ 6747.062635] device tap0 entered promiscuous mode
May 15 10:37:38 combr kernel: [ 6747.081013] br0: topology change detected, propagating
May 15 10:37:38 combr kernel: [ 6747.081026] br0: port 2(tap0) entering forwarding state
May 15 10:37:38 combr kernel: [ 6747.081029] br0: topology change detected, propagating
May 15 10:37:38 combr kernel: [ 6747.081031] br0: port 1(eth0) entering forwarding state
May 15 10:37:38 combr dhcpcd[25695]: br0: dhcpcd 3.0.17 starting
May 15 10:37:38 combr dhcpcd[25695]: br0: hardware address = 00:a0:d1:8e:b3:09
May 15 10:37:38 combr dhcpcd[25695]: br0: broadcasting for a lease
May 15 10:37:38 combr dhcpcd[25695]: br0: offered 10.1.1.14 from 10.1.10.240
May 15 10:37:38 combr dhcpcd[25695]: br0: leased 10.1.1.14 for 43200 seconds
May 15 10:37:38 combr dhcpcd[25695]: br0: adding IP address 10.1.1.14/16
May 15 10:37:38 combr dhcpcd[25695]: br0: adding route to 10.1.0.0 (255.255.0.0) via 0.0.0.0 metric 1
May 15 10:37:38 combr dhcpcd[25695]: br0: removing route to 10.1.0.0 (255.255.0.0) via 0.0.0.0 metric 0
May 15 10:37:38 combr dhcpcd[25695]: br0: adding default route via 10.1.5.155 metric 1
May 15 10:37:39 combr dhcpcd.sh: interface br0 has been configured with new IP=10.1.1.14

т.е. все происходит за одну секунду и успешно.

но при этом такая конфигурация с временем 0 подходит не всем и всегда, это проблема. с другой стороны, ждать и потом вручную запускать dhcpcd для получения адреса - тоже проблема.

надо что-то придумать ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91726</commentid>
    <comment_count>1</comment_count>
    <who name="Denis Ovsienko">pilot</who>
    <bug_when>2009-05-24 20:38:21 +0400</bug_when>
    <thetext>Я поясню. Вы настраиваете 2-портовый мост между двумя сетйми: локальной и удалённой. Если вы наверняка знаете, что этот мост навсегда останется единственноым средством сообщения между этими двумя сетями на 2-м сетевом уровне, то от использования STP можно отказаться:
echo &quot;stp AUTO off&quot; &gt;&gt; /etc/net/ifaces/br0/brctl

Если же петли коммутации возможны, то так делать нельзя. В Linux вашим единственным выбором является STP, с которым честно добиться низкого Forward delay вы не сможете (впрочем, работоспособность RSTP на TAP-интерфейсах я вообще поставлю под сомнение). В этом случае единственный надёжный способ --- увеличить таймаут:
echo &quot;DHCP_TIMEOUT=90&quot; &gt;&gt; /etc/net/ifaces/br0/options

Закрываю.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>